46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { register as register_baseurl } from "./components/baseurl";
|
|
import { register as register_checklist } from "./components/checklist";
|
|
import { register as register_clipboard } from "./components/clipboard";
|
|
import { register as register_date } from "./components/date";
|
|
import { register as register_modal } from "./components/modal";
|
|
import { register as register_dropdown } from "./components/dropdown";
|
|
|
|
function add_dropdowns() {
|
|
document.querySelectorAll(".dropdown").forEach((element) => {
|
|
element.addEventListener("click", (event) => {
|
|
element.querySelector("ul").classList.toggle("invisible");
|
|
// element.classList.toggle("open");
|
|
event.stopPropagation();
|
|
});
|
|
});
|
|
|
|
document.addEventListener("click", (event) => {
|
|
if ((event.target as HTMLElement).closest(".dropdown")) {
|
|
return;
|
|
}
|
|
|
|
document.querySelectorAll(".dropdown > ul").forEach((element) => {
|
|
element.classList.add("invisible");
|
|
});
|
|
});
|
|
}
|
|
|
|
function init() {
|
|
if (window.customElements) {
|
|
console.log("Web components are supported");
|
|
document.body.classList.add("has-web-components");
|
|
} else {
|
|
console.warn("Web components are not supported");
|
|
}
|
|
|
|
register_baseurl();
|
|
register_checklist();
|
|
register_clipboard();
|
|
register_date();
|
|
register_modal();
|
|
register_dropdown();
|
|
add_dropdowns();
|
|
}
|
|
|
|
init();
|