Skip to content

Commit 4a5a2a4

Browse files
committed
fix: nav menu group hover problem
1 parent e4d0ab6 commit 4a5a2a4

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

src/theme-default/components/Nav/NavMenuGroup.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { DefaultTheme } from 'shared/types';
22
import Down from './icons/down.svg';
33
import Right from './icons/right.svg';
44
import { Link } from '../Link/index';
5-
import styles from './index.module.scss';
5+
import { useState } from 'react';
66

77
export interface NavMenuGroupItem {
88
text?: string | React.ReactElement;
@@ -12,14 +12,16 @@ export interface NavMenuGroupItem {
1212

1313
export function NavMenuGroup(item: NavMenuGroupItem) {
1414
const { activeIndex } = item;
15+
1516
return (
16-
<div relative="" className={`${styles.menuGroup} pointer-events-auto`}>
17+
<div relative="" className="nav-menu-group">
1718
<button
1819
flex="center"
1920
nav-h="mobile sm:desktop"
2021
font="medium"
2122
text="sm text-1 hover:text-2"
2223
transition="color duration-200"
24+
className="nav-menu-group-button"
2325
>
2426
<span mr="1" text="sm" font="medium">
2527
{item.text}
@@ -32,7 +34,7 @@ export function NavMenuGroup(item: NavMenuGroupItem) {
3234
m="x-0.8"
3335
opacity="0"
3436
transition="opacity duration-300"
35-
className={styles.menuGroupContent}
37+
className="nav-menu-group-content"
3638
>
3739
<div
3840
p="3"

src/theme-default/components/Nav/index.module.scss

-6
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,3 @@
5555
.container :deep(*) {
5656
pointer-events: all;
5757
}
58-
59-
.menu-group:hover {
60-
& .menu-group-content {
61-
opacity: 1;
62-
}
63-
}

src/theme-default/logic/sideEffects.ts

+24
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,29 @@ export function bindingAsideScroll() {
200200
};
201201
}
202202

203+
function bindingMenuGroupToggle() {
204+
const menuGroups = document.getElementsByClassName('nav-menu-group');
205+
206+
Array.from(menuGroups).forEach((menuGroup) => {
207+
const menuButton = menuGroup.getElementsByClassName(
208+
'nav-menu-group-button'
209+
)[0] as HTMLButtonElement;
210+
const menuContent = menuGroup.getElementsByClassName(
211+
'nav-menu-group-content'
212+
)[0] as HTMLDivElement;
213+
menuButton.addEventListener('mouseenter', () => {
214+
console.log(111);
215+
216+
menuContent.style.opacity = '1';
217+
menuContent.style.visibility = 'visible';
218+
});
219+
menuGroup.addEventListener('mouseleave', () => {
220+
menuContent.style.opacity = '0';
221+
menuContent.style.visibility = 'hidden';
222+
});
223+
});
224+
}
225+
203226
export function setupEffects() {
204227
if (!inBrowser()) {
205228
return;
@@ -210,5 +233,6 @@ export function setupEffects() {
210233
bindingAsideScroll();
211234
}
212235
bindingWindowScroll();
236+
bindingMenuGroupToggle();
213237
setupCopyCodeButton();
214238
}

0 commit comments

Comments
 (0)