@ribajs/bs5
Version:
Bootstrap 5 module for Riba.js
92 lines • 6.16 kB
JavaScript
import { Component } from "@ribajs/core";
import { Dropdown } from "../../services/dropdown.js";
export class Bs5DropdownComponent extends Component {
static tagName = "bs5-dropdown";
scope = {
toggle: this.toggle,
show: this.show,
hide: this.hide,
update: this.update,
isShown: false,
};
dropdown;
toggler = null;
static get observedAttributes() {
return [
"offset",
"boundary",
"reference",
"display",
"popper-config",
"auto-close",
];
}
constructor() {
super();
}
isShown() {
return this.dropdown?._isShown() || false;
}
toggle(event, ctx, el) {
if (!this.dropdown) {
throw new Error("Dropdown not ready!");
}
if (el !== this.toggler) {
this.dropdown.toggle();
}
}
show() {
if (!this.dropdown) {
throw new Error("Dropdown not ready!");
}
this.dropdown.show();
}
hide() {
if (!this.dropdown) {
throw new Error("Dropdown not ready!");
}
this.dropdown.hide();
}
update() {
if (!this.dropdown) {
throw new Error("Dropdown not ready!");
}
this.dropdown.update();
}
connectedCallback() {
super.connectedCallback();
this.init(Bs5DropdownComponent.observedAttributes);
}
async afterBind() {
this.initDropdown();
this.addEventListeners();
await super.afterBind();
}
initDropdown() {
this.toggler = this.classList.contains("dropdown-toggle")
? this
: this.querySelector(".dropdown-toggle") || this;
this.toggler.dataset.bsToggle = "dropdown";
this.dropdown = new Dropdown(this.toggler, this.scope);
this.dropdown.hide();
this.scope.isShown = this.isShown();
}
_onShown() {
console.debug("onShown");
this.scope.isShown = this.isShown();
}
onShown = this._onShown.bind(this);
_onHidden() {
console.debug("onHidden");
this.scope.isShown = this.isShown();
}
onHidden = this._onHidden.bind(this);
addEventListeners() {
this.toggler?.addEventListener(Dropdown.EVENT_SHOWN, this.onShown);
this.toggler?.addEventListener(Dropdown.EVENT_HIDDEN, this.onHidden);
}
template() {
return null;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnM1LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JzNS1kcm9wZG93bi9iczUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVl0RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsU0FBUztJQUMxQyxNQUFNLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztJQUVoQyxLQUFLLEdBQVU7UUFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7SUFFSyxRQUFRLENBQVk7SUFDakIsT0FBTyxHQUE4QyxJQUFJLENBQUM7SUFFcEUsTUFBTSxLQUFLLGtCQUFrQjtRQUMzQixPQUFPO1lBQ0wsUUFBUTtZQUNSLFVBQVU7WUFDVixXQUFXO1lBQ1gsU0FBUztZQUNULGVBQWU7WUFDZixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVNLE9BQU87UUFFWixPQUFRLElBQUksQ0FBQyxRQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUNyRCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQVksRUFBRSxHQUFVLEVBQUUsRUFBTztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBR0QsSUFBSSxF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