Skip to content

Commit de5b01e

Browse files
committed
fix: mobile navbar spacing
1 parent 0b1b07e commit de5b01e

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

src/components/layout/NavDropDown.astro

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,61 @@ const { label, className } = Astro.props;
1212

1313
<div
1414
class={clsx(
15-
"color-gray-200 hover:text-blue-600 dark:hover:text-blue-400 text-sm transition-colors px-2.5 relative inline-block h-full",
15+
"color-gray-200 hover:text-blue-600 dark:hover:text-blue-400 text-sm transition-colors px-2.5 relative inline-block",
1616
className
1717
)}
1818
data-nav-dropdown
1919
>
20-
<span class="flex flex-row items-center gap-1" role="button">
20+
<span
21+
class="flex cursor-pointer flex-row items-center gap-1 select-none"
22+
role="button"
23+
aria-haspopup="menu"
24+
aria-expanded="false"
25+
data-trigger
26+
>
2127
{label}
2228
<Icon name="icons/heroicons/chevron-down" class="h-4 w-4 fill-gray-700 dark:fill-gray-300" />
2329
</span>
30+
2431
<ul
25-
class="bg-background-light-10 dark:bg-background-dark-90 pointer-events-none z-100 mt-2 flex flex-col py-1 opacity-0 transition-all md:absolute md:mt-0 md:rounded-lg md:border md:border-gray-200 md:shadow-md md:dark:border-gray-800"
32+
class="bg-background-light-10 dark:bg-background-dark-90 z-[100] hidden md:absolute md:mt-0 md:min-w-40 md:rounded-lg md:border md:border-gray-200 md:py-1 md:shadow-md md:dark:border-gray-800"
33+
role="menu"
2634
>
2735
<slot />
2836
</ul>
2937
</div>
3038

3139
<script>
40+
const mqDesktop = () => window.matchMedia("(min-width: 768px)").matches;
41+
3242
document.querySelectorAll("[data-nav-dropdown]").forEach((el) => {
33-
const ul = el.querySelector("ul");
43+
const trigger = el.querySelector("[data-trigger]");
44+
const menu = el.querySelector("ul");
45+
46+
const open = () => {
47+
menu?.classList.remove("hidden");
48+
trigger?.setAttribute?.("aria-expanded", "true");
49+
};
50+
const close = () => {
51+
menu?.classList.add("hidden");
52+
trigger?.setAttribute?.("aria-expanded", "false");
53+
};
54+
3455
el.addEventListener("mouseenter", () => {
35-
ul?.classList?.remove("opacity-0", "pointer-events-none");
36-
ul?.classList?.add("opacity-100");
56+
if (mqDesktop()) open();
3757
});
3858
el.addEventListener("mouseleave", () => {
39-
ul?.classList?.remove("opacity-100");
40-
ul?.classList?.add("opacity-0", "pointer-events-none");
59+
if (mqDesktop()) close();
60+
});
61+
62+
trigger?.addEventListener("click", (e) => {
63+
if (!mqDesktop()) {
64+
e.preventDefault();
65+
menu?.classList.toggle("hidden");
66+
trigger?.setAttribute?.("aria-expanded", menu?.classList.contains("hidden") ? "false" : "true");
67+
}
4168
});
69+
70+
close();
4271
});
4372
</script>

0 commit comments

Comments
 (0)