UNPKG

@ribajs/bs4

Version:

Bootstrap 4 module for Riba.js

65 lines 6.12 kB
import { Binder } from "@ribajs/core"; import { EventDispatcher } from "@ribajs/events"; import { TOGGLE_BUTTON, TOGGLE_CLASS } from "../constants/index.js"; export class ToggleClassBinder extends Binder { static key = "bs4-toggle-class-*"; 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 className = this.args[0]; el.classList.remove(className); this.state = "removed"; el.dispatchEvent(new CustomEvent(TOGGLE_CLASS.elEventNames.removed, { detail: { className }, })); this.triggerState(); } add(el) { const className = this.args[0]; el.classList.add(className, className); this.state = "added"; el.dispatchEvent(new CustomEvent(TOGGLE_CLASS.elEventNames.added, { detail: { className }, })); this.triggerState(); } bind(el) { const className = this.args[0]; this.state = el.classList.contains(className) ? "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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWNsYXNzLmJpbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kZXJzL3RvZ2dsZS1jbGFzcy5iaW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVNwRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsTUFBaUM7SUFDdEUsTUFBTSxDQUFDLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQztJQUUxQixrQkFBa0IsQ0FBbUI7SUFDckMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVkLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FDOUIsYUFBYSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQzlCLElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFN0MsU0FBUztRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxFQUFxQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxD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