Refine mobile dropdown close behavior

This commit is contained in:
TerryM
2026-05-28 22:41:23 +08:00
parent b24529afc4
commit b59fd82006
2 changed files with 31 additions and 4 deletions

View File

@@ -64,6 +64,8 @@ function navClassName(active: boolean) {
const dropdownAnimationClass =
"animate__animated animate__fadeInDown ark-dropdown-enter";
const publicMenuOpenChangeEvent = "ark:public-menu-open-change";
type LanguageDropdownProps = {
lang: Lang;
setLang: (lang: Lang) => void;
@@ -294,6 +296,12 @@ export function PublicLayout() {
setMobileSearchOpen(false);
};
useEffect(() => {
window.dispatchEvent(
new CustomEvent<boolean>(publicMenuOpenChangeEvent, { detail: open }),
);
}, [open]);
useEffect(() => {
if (!open) return;
@@ -312,11 +320,11 @@ export function PublicLayout() {
document.addEventListener("mousedown", closeOnOutside);
document.addEventListener("touchstart", closeOnOutside);
window.addEventListener("scroll", closeOnScroll, true);
window.addEventListener("scroll", closeOnScroll);
return () => {
document.removeEventListener("mousedown", closeOnOutside);
document.removeEventListener("touchstart", closeOnOutside);
window.removeEventListener("scroll", closeOnScroll, true);
window.removeEventListener("scroll", closeOnScroll);
};
}, [open]);