UNPKG

@ribajs/bs5

Version:

Bootstrap 5 module for Riba.js

65 lines 6.14 kB
import { Binder } from "@ribajs/core"; import { EventDispatcher } from "@ribajs/events"; import { TOGGLE_BUTTON, TOGGLE_ATTRIBUTE } from "../constants/index.js"; export class ToggleAttributeBinder extends Binder { static key = "bs5-toggle-attribute-*"; toggleButtonEvents; state = "off"; _triggerState() { this.toggleButtonEvents?.trigger(TOGGLE_BUTTON.eventNames.state, this.state); } triggerState = this._triggerState.bind(this); _onToggle() { this.toggle.bind(this)(this.el); } onToggle = this._onToggle.bind(this); toggle(el) { if (this.state === "removed") { this.add.bind(this)(el); } else { this.remove.bind(this)(el); } } remove(el) { const attributeName = this.args[0]; el.removeAttribute(attributeName); this.state = "removed"; el.dispatchEvent(new CustomEvent(TOGGLE_ATTRIBUTE.elEventNames.removed, { detail: { attributeName }, })); this.triggerState(); } add(el) { const attributeName = this.args[0]; el.setAttribute(attributeName, attributeName); this.state = "added"; el.dispatchEvent(new CustomEvent(TOGGLE_ATTRIBUTE.elEventNames.added, { detail: { attributeName }, })); this.triggerState(); } bind(el) { const attributeName = this.args[0]; this.state = el.hasAttribute(attributeName) ? "added" : "removed"; } unbind() { this.toggleButtonEvents?.off(TOGGLE_BUTTON.eventNames.toggle, this.onToggle, this); this.toggleButtonEvents?.off(TOGGLE_BUTTON.eventNames.init, this.triggerState, this); } routine(el, newId) { const oldId = this._getValue(el); let toggleButton = this.toggleButtonEvents; if (oldId && toggleButton) { toggleButton.off(TOGGLE_BUTTON.eventNames.toggle, this.onToggle, this); toggleButton.off(TOGGLE_BUTTON.eventNames.init, this.triggerState, this); } if (!this.toggleButtonEvents) { this.toggleButtonEvents = new EventDispatcher(TOGGLE_BUTTON.nsPrefix + newId); toggleButton = this.toggleButtonEvents; toggleButton.on(TOGGLE_BUTTON.eventNames.toggle, this.onToggle, this); toggleButton.on(TOGGLE_BUTTON.eventNames.init, this.triggerState, this); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWF0dHJpYnV0ZS5iaW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluZGVycy90b2dnbGUtYXR0cmlidXRlLmJpbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTeEUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLE1BQTJCO0lBQ3BFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsd0JBQXdCLENBQUM7SUFFOUIsa0JBQWtCLENBQW1CO0lBQ3JDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFZCxhQUFhO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQzlCLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUM5QixJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdDLFNBQVM7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyQyxNQUFNLENBQUMsRUFBZTtRQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENB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