import { createFragment } from "../lib/skeleton/index.js"; import { animate, slideYIn } from "../lib/animate.js"; import assert from "../lib/assert.js"; import { loadCSS } from "../helpers/loader.js"; export default class ComponentDropdown extends HTMLElement { constructor() { super(); this.render(); } async connectedCallback() { await loadCSS(import.meta.url, "./dropdown.css"); } static get observedAttributes() { return ["options"]; } render() { this.classList.add("component_dropdown", "view", "sort"); this.appendChild(createFragment(`
`)); this.appendChild(createFragment(` `)); const setActive = () => this.classList.toggle("active"); assert.type(this.querySelector(".dropdown_button"), HTMLElement).onclick = () => { setActive(); animate(assert.type(this.querySelector(".dropdown_container"), HTMLElement), { time: 100, keyframes: slideYIn(2), }); }; } } if (!customElements.get("component-dropdown")) customElements.define("component-dropdown", ComponentDropdown);