dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
site/static/js/mobile.js (1674B)
1(() => {
2 const phone = matchMedia(
3 getComputedStyle(document.documentElement)
4 .getPropertyValue("--phoneWidth")
5 .trim(),
6 );
7 const menus = [
8 [
9 document.querySelector(".menu-trigger"),
10 document.getElementById("mobile-menu"),
11 ],
12 [
13 document.querySelector(".menu-inner-list-more-trigger"),
14 document.getElementById("more-menu"),
15 ],
16 ].filter(([button, panel]) => button && panel);
17
18 function setOpen(button, panel, open) {
19 panel.classList.toggle("hidden", !open);
20 button.setAttribute("aria-expanded", String(open));
21 }
22 for (const [button, panel] of menus) {
23 setOpen(button, panel, false);
24 button.addEventListener("click", () =>
25 setOpen(button, panel, button.getAttribute("aria-expanded") !== "true"),
26 );
27 document.addEventListener("click", (event) => {
28 if (!button.contains(event.target) && !panel.contains(event.target))
29 setOpen(button, panel, false);
30 });
31 document.addEventListener("keydown", (event) => {
32 if (
33 event.key === "Escape" &&
34 button.getAttribute("aria-expanded") === "true"
35 ) {
36 setOpen(button, panel, false);
37 button.focus();
38 }
39 });
40 phone.addEventListener("change", () => setOpen(button, panel, false));
41 }
42 const form = document.querySelector(".pagination__form");
43 if (form)
44 form.addEventListener("submit", (event) => {
45 event.preventDefault();
46 if (!form.reportValidity()) return;
47 const page = Number(form.elements.page.value);
48 location.href =
49 page === 1
50 ? form.action.replace(/page\/$/, "")
51 : `${form.action}${page}/`;
52 });
53})();