You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.1 KiB
58 lines
2.1 KiB
import "./common.js";
|
|
import "./pagination.js";
|
|
//#region js/faq.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 activateFaqTab($btn) {
|
|
$btn.addClass("is-active").attr("aria-selected", "true");
|
|
$btn.siblings(".f-tabs__item").removeClass("is-active").attr("aria-selected", "false");
|
|
}
|
|
function getActiveTabId() {
|
|
return $(".f-tabs__item.is-active").attr("data-tab") || "";
|
|
}
|
|
function activateTabById(tabId) {
|
|
if (!tabId) return;
|
|
const $target = $(`.f-tabs__item[data-tab="${tabId}"]`).first();
|
|
if ($target.length) activateFaqTab($target);
|
|
}
|
|
function initTabKeywordsSearch() {
|
|
const runSearch = (tabId = getActiveTabId()) => {
|
|
const params = new URLSearchParams();
|
|
const keywords = $("[data-tab-search] [name='keywords']").val().trim();
|
|
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;
|
|
};
|
|
$("[data-tab-search]").on("submit", function(event) {
|
|
event.preventDefault();
|
|
runSearch();
|
|
});
|
|
$(".f-tabs__item").on("click", function() {
|
|
activateFaqTab($(this));
|
|
runSearch($(this).attr("data-tab") || "");
|
|
});
|
|
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();
|
|
$(".f-item__trigger").on("click", function() {
|
|
const $item = $(this).closest(".f-item");
|
|
const willOpen = !$item.hasClass("is-open");
|
|
$(".f-item.is-open").not($item).removeClass("is-open").find(".f-item__trigger").attr("aria-expanded", "false");
|
|
$item.toggleClass("is-open", willOpen);
|
|
$(this).attr("aria-expanded", willOpen ? "true" : "false");
|
|
});
|
|
initTabKeywordsSearch();
|
|
});
|
|
//#endregion
|