UNPKG

@ribajs/bs4

Version:

Bootstrap 4 module for Riba.js

38 lines (30 loc) 1.12 kB
import { Binder } from "@ribajs/core"; import { scrollTo } from "@ribajs/utils/src/dom.js"; export class ScrollToOnEventBinder extends Binder<string, HTMLInputElement> { static key = "scroll-to-on-*"; private target?: HTMLElement; private _onEvent(event: Event) { const offset = Number(this.el.dataset.offset || 0); const scrollElement = this.el.dataset.scrollElement ? document.querySelector<HTMLElement>(this.el.dataset.scrollElement) : window; if (this.target) { scrollTo(this.target, offset, scrollElement); event.preventDefault(); } } private onEvent = this._onEvent.bind(this); bind(el: HTMLUnknownElement) { this.onEvent = this.onEvent.bind(this); const eventName = this.args[0] as string; el.addEventListener(eventName, this.onEvent, { passive: true }); } routine(el: HTMLUnknownElement, targetSelector: string) { this.target = document.querySelector<HTMLElement>(targetSelector) || undefined; } unbind(el: HTMLElement) { const eventName = this.args[0] as string; el.removeEventListener(eventName, this.onEvent); } }