import "./common.js"; import "./pagination.js"; //#region js/announce.js function setActiveNav() { const pageNav = document.querySelector("[data-nav]")?.getAttribute("data-nav"); if (!pageNav) return; document.querySelectorAll(".site-header__nav a").forEach((link) => { const active = link.textContent.trim().startsWith(pageNav); link.classList.toggle("is-active", active); }); } function initFilterDropdown() { const $trigger = $("[data-filter-trigger]"); if (!$trigger.length) return; const closeDropdown = () => { $("[data-filter-dropdown]").prop("hidden", true); $("[data-filter-trigger]").removeClass("is-open").attr("aria-expanded", "false"); }; $trigger.on("click", function() { const $btn = $(this); const $dropdown = $btn.next("[data-filter-dropdown]"); if (!$dropdown.prop("hidden")) closeDropdown(); else { closeDropdown(); $btn.addClass("is-open").attr("aria-expanded", "true"); $dropdown.prop("hidden", false); } }); $("[data-filter-dropdown] button").on("click", function() { const $item = $(this); const $dropdown = $item.closest("[data-filter-dropdown]"); const $btn = $dropdown.prev("[data-filter-trigger]"); if ($item.is("[data-filter-clear]")) { $btn.find("span").text(t("filter.by_product")); $btn.removeClass("is-selected"); $dropdown.find(".is-active").removeClass("is-active"); $item.addClass("is-active"); } else { $item.addClass("is-active").siblings().removeClass("is-active"); $btn.find("span").text($item.text()); $btn.addClass("is-selected"); } closeDropdown(); const params = new URLSearchParams(); const keywords = $("[data-tab-search] [name='keywords']").val().trim(); const tabId = $item.attr("data-tab") || ""; if (tabId) params.set("cid", tabId); if (keywords) params.set("keywords", keywords); const query = params.toString(); window.location.href = query ? `${window.location.pathname}?${query}` : window.location.pathname; }); $(document).on("click", function(event) { if (!$(event.target).closest("[data-filter-trigger], [data-filter-dropdown]").length) closeDropdown(); }); } function getActiveTabId() { return $("[data-filter-dropdown] .is-active[data-tab]").attr("data-tab") || ""; } function activateTabById(tabId) { if (!tabId) return; const $item = $(`[data-filter-dropdown] [data-tab="${tabId}"]`).first(); if (!$item.length) return; const $dropdown = $item.closest("[data-filter-dropdown]"); const $btn = $dropdown.prev("[data-filter-trigger]"); $item.addClass("is-active").siblings().removeClass("is-active"); $btn.find("span").text($item.text()); $btn.addClass("is-selected"); } function initTabKeywordsSearch() { $("[data-tab-search]").on("submit", function(event) { event.preventDefault(); const params = new URLSearchParams(); const keywords = $(this).find('[name="keywords"]').val().trim(); const tabId = getActiveTabId(); if (tabId) params.set("cid", tabId); if (keywords) params.set("keywords", keywords); const query = params.toString(); window.location.href = query ? `${window.location.pathname}?${query}` : window.location.pathname; }); const searchParams = new URLSearchParams(window.location.search); const tabParam = searchParams.get("cid"); const keywordsParam = searchParams.get("keywords"); if (keywordsParam) $("[data-tab-search] [name='keywords']").val(keywordsParam); if (tabParam) activateTabById(tabParam); } $(function() { setActiveNav(); initFilterDropdown(); initTabKeywordsSearch(); }); //#endregion