let imageModalOverlay = null; function openImageModal(imageSrc, imageAlt) { // Create modal overlay imageModalOverlay = document.createElement('div'); imageModalOverlay.className = 'fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 p-4'; imageModalOverlay.style.cursor = 'zoom-out'; // Create image container const imageContainer = document.createElement('div'); imageContainer.className = 'relative max-w-full max-h-full'; // Create enlarged image const enlargedImage = document.createElement('img'); enlargedImage.src = imageSrc; enlargedImage.alt = imageAlt; enlargedImage.className = 'max-w-full max-h-full object-contain rounded-lg shadow-2xl'; // Create close button const closeButton = document.createElement('button'); closeButton.innerHTML = ''; closeButton.className = 'absolute -top-4 -right-4 bg-white text-gray-800 w-10 h-10 rounded-full shadow-lg hover:bg-gray-100 transition-colors duration-200 flex items-center justify-center text-xl'; closeButton.onclick = closeImageModal; // Add zoom indicator const zoomIndicator = document.createElement('div'); zoomIndicator.innerHTML = 'Натисніть, щоб закрити'; zoomIndicator.className = 'absolute bottom-4 left-1/2 transform -translate-x-1/2 bg-black bg-opacity-50 text-white px-4 py-2 rounded-lg text-sm'; imageContainer.appendChild(enlargedImage); imageContainer.appendChild(closeButton); imageContainer.appendChild(zoomIndicator); imageModalOverlay.appendChild(imageContainer); // Close on overlay click imageModalOverlay.addEventListener('click', function(e) { if (e.target === imageModalOverlay) { closeImageModal(); } }); // Close on ESC key document.addEventListener('keydown', handleEscKey); document.body.appendChild(imageModalOverlay); document.body.style.overflow = 'hidden'; } function closeImageModal() { if (imageModalOverlay) { document.body.removeChild(imageModalOverlay); imageModalOverlay = null; document.body.style.overflow = ''; document.removeEventListener('keydown', handleEscKey); } } function handleEscKey(e) { if (e.key === 'Escape') { closeImageModal(); } } function handleImageClick(e) { const imageSrc = e.target.src; const imageAlt = e.target.alt; openImageModal(imageSrc, imageAlt); } function init() { // Add zoom functionality to the price list image const priceImage = document.querySelector('[data-media*="прейскурант"]'); if (priceImage) { priceImage.style.cursor = 'zoom-in'; priceImage.addEventListener('click', handleImageClick); // Add hover effect to indicate it's clickable priceImage.addEventListener('mouseenter', function() { this.style.transform = 'scale(1.02)'; this.style.transition = 'transform 0.2s ease'; }); priceImage.addEventListener('mouseleave', function() { this.style.transform = 'scale(1)'; }); } } function teardown() { // Remove event listeners const priceImage = document.querySelector('[data-media*="прейскурант"]'); if (priceImage) { priceImage.removeEventListener('click', handleImageClick); priceImage.style.cursor = ''; priceImage.style.transform = ''; priceImage.removeEventListener('mouseenter', function() {}); priceImage.removeEventListener('mouseleave', function() {}); } // Close modal if open if (imageModalOverlay) { closeImageModal(); } document.removeEventListener('keydown', handleEscKey); } export { init, teardown };