class ArtworkModal extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = ` `; this.closeButton = this.shadowRoot.querySelector('.close-button'); this.closeButton.addEventListener('click', () => this.close()); this.shadowRoot.querySelector('.modal-backdrop').addEventListener('click', () => this.close()); } open(artworkData) { const image = this.shadowRoot.querySelector('.modal-image'); const title = this.shadowRoot.querySelector('.artwork-title'); const meta = this.shadowRoot.querySelector('.artwork-meta'); const desc = this.shadowRoot.querySelector('.artwork-description'); image.style.backgroundImage = `url(${artworkData.image})`; title.textContent = artworkData.title; meta.textContent = `${artworkData.medium} | ${artworkData.year}`; desc.textContent = artworkData.description; this.setAttribute('open', ''); document.body.style.overflow = 'hidden'; feather.replace(); } close() { this.removeAttribute('open'); document.body.style.overflow = ''; } } customElements.define('artwork-modal', ArtworkModal);