diff --git a/packages/frontend/src/components/StyleCustomizer.vue b/packages/frontend/src/components/StyleCustomizer.vue index 65663c8..29255e9 100644 --- a/packages/frontend/src/components/StyleCustomizer.vue +++ b/packages/frontend/src/components/StyleCustomizer.vue @@ -910,12 +910,69 @@ const handleFocusAndSelect = (event: FocusEvent) => { } }; +const modalRootRef = ref(null); + +// Store original styles to revert back +let originalModalRootBackgroundColor: string | null = null; +let originalModalContentOpacity: string | null = null; +let originalModalRootTransition: string | null = null; +let originalModalContentTransition: string | null = null; + +const handlePreviewButtonMouseDown = () => { + if (modalRootRef.value) { + const modalContentElement = modalRootRef.value.firstElementChild as HTMLElement; + + // Save original styles if not already saved (for this mousedown session) + // These are saved once per mousedown-mouseup cycle + if (originalModalRootBackgroundColor === null) { // Check one to assume all are not set + originalModalRootBackgroundColor = window.getComputedStyle(modalRootRef.value).backgroundColor; + originalModalRootTransition = modalRootRef.value.style.transition; // Save inline or computed transition + if (modalContentElement) { + originalModalContentOpacity = window.getComputedStyle(modalContentElement).opacity; + originalModalContentTransition = modalContentElement.style.transition; // Save inline or computed transition + } + } + + // Apply transparency effects + // Make the background overlay (modalRootRef) transparent + modalRootRef.value.style.transition = 'background-color 0.05s ease-out'; + modalRootRef.value.style.backgroundColor = 'transparent'; + + if (modalContentElement) { + // Make the modal content (the box including the button) completely transparent + modalContentElement.style.transition = 'opacity 0.05s ease-out'; + modalContentElement.style.opacity = '0'; // Changed from 0.05 to 0 + } + + const restoreModalAppearance = () => { + if (modalRootRef.value) { + modalRootRef.value.style.backgroundColor = originalModalRootBackgroundColor || ''; // Revert to original or default + modalRootRef.value.style.transition = originalModalRootTransition || ''; // Revert to original or default + } + if (modalContentElement) { + modalContentElement.style.opacity = originalModalContentOpacity || '1'; // Revert to original or default + modalContentElement.style.transition = originalModalContentTransition || ''; // Revert to original or default + } + + // Reset stored original styles for the next interaction cycle + originalModalRootBackgroundColor = null; + originalModalContentOpacity = null; + originalModalRootTransition = null; + originalModalContentTransition = null; + + document.removeEventListener('mouseup', restoreModalAppearance); + }; + // Listen for mouseup anywhere on the document to restore + document.addEventListener('mouseup', restoreModalAppearance, { once: true }); + } +}; +