From becf0f27a8501306016ce6958fb3d48c37a35d9c Mon Sep 17 00:00:00 2001 From: Harald Fair Date: Sat, 2 Mar 2024 16:52:32 -0600 Subject: [PATCH] resolve nuclear visualizer overlay opacity issue --- .../components/VisualizerOverlay/index.tsx | 68 +++++++++++++------ .../components/VisualizerOverlay/styles.scss | 15 ++-- 2 files changed, 53 insertions(+), 30 deletions(-) diff --git a/packages/ui/lib/components/VisualizerOverlay/index.tsx b/packages/ui/lib/components/VisualizerOverlay/index.tsx index 24a0f83444..ecab240eb3 100644 --- a/packages/ui/lib/components/VisualizerOverlay/index.tsx +++ b/packages/ui/lib/components/VisualizerOverlay/index.tsx @@ -1,4 +1,4 @@ -import React, { SyntheticEvent } from 'react'; +import React, { useState, useEffect, SyntheticEvent } from 'react'; import { Button, Dropdown } from '../..'; @@ -21,32 +21,56 @@ const VisualizerOverlay: React.FC = ({ exitFullscreenLabel, isFullscreen = false }) => { - const presetOptions = presets.map(preset => ({ + // State for managing overlay opacity + const [isHovered, setIsHovered] = useState(false); + + // Establish timer for overlay opacity + useEffect(() => { + let timeoutId: NodeJS.Timeout; + if (isHovered) { + // Set the timeout to remove the hover effect after 3 seconds + timeoutId = setTimeout(() => { + setIsHovered(false); + }, 3000); + } + return () => clearTimeout(timeoutId); // Clear the timeout if the component unmounts or if isHovered changes + }, [isHovered]); + + // Handler definitions for relevant mouse events + const handleMouseEnter = () => setIsHovered(true); + const handleMouseMove = () => setIsHovered(true); + const handleMouseLeave = () => setIsHovered(false); + + const presetOptions = presets.map((preset) => ({ text: preset, value: preset })); - return
- - { - isFullscreen - ?

{exitFullscreenLabel}

- : ( -
; + return ( +
+ + {isFullscreen ? ( +

{exitFullscreenLabel}

+ ) : ( +
+ ); }; + VisualizerOverlay.displayName = 'VisualizerOverlay'; export default VisualizerOverlay; diff --git a/packages/ui/lib/components/VisualizerOverlay/styles.scss b/packages/ui/lib/components/VisualizerOverlay/styles.scss index c5ea705579..856ac67049 100644 --- a/packages/ui/lib/components/VisualizerOverlay/styles.scss +++ b/packages/ui/lib/components/VisualizerOverlay/styles.scss @@ -1,4 +1,4 @@ -@import "../../common.scss"; +@import '../../common.scss'; .visualizer_overlay { position: absolute; @@ -27,13 +27,6 @@ } } - &:hover { - background: rgba($background3, 0.75); - & > * { - opacity: 1; - } - } - button { margin: 0 !important; } @@ -41,4 +34,10 @@ p { line-height: 2.71428571em; } + &.hover { + background: rgba($background3, 0.75); + & > * { + opacity: 1; + } + } }