Refine mobile dropdown close behavior
This commit is contained in:
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user