@ribajs/bs5
Version:
Bootstrap 5 module for Riba.js
65 lines • 5.07 kB
JavaScript
import { Binder } from "@ribajs/core";
import { Popover } from "@ribajs/bs5";
export class PopoverBinder extends Binder {
static key = "bs5-popover";
popover;
listeners = {};
routine(el, optionsOrContent) {
let options = {};
if (typeof optionsOrContent === "string") {
options.content = optionsOrContent;
}
else if (typeof optionsOrContent === "object") {
options = { ...optionsOrContent };
}
options.placement = options.placement || "auto";
const popover = new Popover(el, {
...Popover.Default,
...options,
});
if (this.popover) {
this.popover.dispose();
}
this.popover = popover;
const methodNames = [
"show",
"hide",
"toggle",
"dispose",
"enable",
"disable",
"update",
];
if (this.listeners) {
for (const [trigger, listener] of Object.entries(this.listeners)) {
this.el.removeEventListener(trigger, listener);
}
}
this.listeners = Object.create(null);
for (const methodName of methodNames) {
if (popover[methodName] && typeof popover[methodName] === "function") {
const trigger = `trigger-${String(methodName)}`;
const listener = popover[methodName].bind(popover);
this.el.addEventListener(trigger, listener);
this.listeners[trigger] = listener;
}
else {
console.warn("Unknown method " + methodName);
}
}
}
bind(el) {
el.dispatchEvent(new CustomEvent("bound.bs.popover", { bubbles: true, cancelable: true }));
}
unbind() {
if (this.popover) {
this.popover.dispose();
}
if (this.listeners) {
for (const [trigger, listener] of Object.entries(this.listeners)) {
this.el.removeEventListener(trigger, listener);
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnM1LXBvcG92ZXIuYmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmRlcnMvYnM1LXBvcG92ZXIuYmluZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFLdEQsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUEyQjtJQUM1RCxNQUFNLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQztJQUVuQixPQUFPLENBQVc7SUFDbEIsU0FBUyxHQUFxQyxFQUFFLENBQUM7SUFFekQsT0FBTyxDQUFDLEVBQWUsRUFBRSxnQkFBeUM7UUFDaEUsSUFBSSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUUxQyxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekMsT0FBTyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELE9BQU8sR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQztRQUVoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDOUIsR0FBRyxPQUFPLENBQUMsT0FBTztZQUNsQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFHSCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQU92QixNQUFNLFdBQVcsR0FBNkI7WUFDNUMsTUFBTTtZQUNOLE1BQU07WUFDTixRQUFRO1lBQ1IsU0FBUztZQUNULFFBQVE7WUFDUixTQUFTO1lBQ1QsUUFBUTtTQUNULENBQUM7UUFHRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsUUFBeUIsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3JFLE1BQU0sT0FBTyxHQUFHLFdBQVcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sUUFBUSxHQUFJLE9BQU8sQ0FBQyxVQUFVLENBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsRUFBZTtRQUdsQixFQUFFLENBQUMsYUFBYSxDQUNkLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO1FBRUosSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQXlCLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMifQ==