@@ -3,33 +3,49 @@ import styles from './styles.module.css';
3
3
4
4
function detailsToggle ( { children, alt_header = null } ) {
5
5
const [ isOn , setOn ] = useState ( false ) ;
6
- const [ hoverActive , setHoverActive ] = useState ( true ) ;
6
+ const [ isScrolling , setIsScrolling ] = useState ( false ) ; // New state to track scrolling
7
7
const [ hoverTimeout , setHoverTimeout ] = useState ( null ) ;
8
8
9
9
const handleToggleClick = ( ) => {
10
- setHoverActive ( true ) ; // Disable hover when clicked
11
10
setOn ( current => ! current ) ; // Toggle the current state
12
- } ;
13
-
14
- const handleMouseEnter = ( ) => {
15
- if ( isOn ) return ; // Ignore hover if already open
16
- setHoverActive ( true ) ; // Enable hover
17
- const timeout = setTimeout ( ( ) => {
18
- if ( hoverActive ) setOn ( true ) ;
19
- } , 500 ) ;
20
- setHoverTimeout ( timeout ) ;
21
- } ;
22
-
23
- const handleMouseLeave = ( ) => {
24
- if ( ! isOn ) {
11
+ } ;
12
+
13
+ const handleMouseEnter = ( ) => {
14
+ if ( isOn || isScrolling ) return ; // Ignore hover if already open or if scrolling
15
+ const timeout = setTimeout ( ( ) => {
16
+ if ( ! isScrolling ) setOn ( true ) ;
17
+ } , 700 ) ; //
18
+ setHoverTimeout ( timeout ) ;
19
+ } ;
20
+
21
+ const handleMouseLeave = ( ) => {
22
+ if ( ! isOn ) {
25
23
clearTimeout ( hoverTimeout ) ;
26
24
setOn ( false ) ;
27
- }
28
- } ;
25
+ }
26
+ } ;
27
+
28
+ const handleScroll = ( ) => {
29
+ setIsScrolling ( true ) ;
30
+ clearTimeout ( hoverTimeout ) ;
31
+ setOn ( false ) ;
32
+
33
+ // Reset scrolling state after a delay
34
+ setTimeout ( ( ) => {
35
+ setIsScrolling ( false ) ;
36
+ } , 800 ) ;
37
+ } ;
38
+
39
+ useEffect ( ( ) => {
40
+ window . addEventListener ( 'scroll' , handleScroll ) ;
41
+ return ( ) => {
42
+ window . removeEventListener ( 'scroll' , handleScroll ) ;
43
+ } ;
44
+ } , [ ] ) ;
29
45
30
- useEffect ( ( ) => {
31
- return ( ) => clearTimeout ( hoverTimeout ) ;
32
- } , [ hoverTimeout ] ) ;
46
+ useEffect ( ( ) => {
47
+ return ( ) => clearTimeout ( hoverTimeout ) ;
48
+ } , [ hoverTimeout ] ) ;
33
49
34
50
return (
35
51
< div className = 'detailsToggle' >
0 commit comments