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.
52 lines
1.7 KiB
52 lines
1.7 KiB
import "./common.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("按产品筛选");
|
|
$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();
|
|
});
|
|
$(document).on("click", function(event) {
|
|
if (!$(event.target).closest("[data-filter-trigger], [data-filter-dropdown]").length) closeDropdown();
|
|
});
|
|
}
|
|
$(function() {
|
|
setActiveNav();
|
|
initFilterDropdown();
|
|
});
|
|
//#endregion
|