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);