/
githubmirror
/
tabler
Обзор
Документация
Войти
/
githubmirror
/
tabler
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
core/js/src/bootstrap/base-component.ts
81 строка
2 KB
Paweł Kuna
Unify workspace lint, format, and type-check quality gates (#2732)
30 июл 2026, 20:36
Не верифицирован
30 июл 2026, 20:36
6db32ea
Код
Авторство
О чём код?
/** * -------------------------------------------------------------------------- * Bootstrap base-component.ts * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ import Data from './dom/data.js' import EventHandler from './dom/event-handler.js' import Config from './util/config' import { executeAfterTransition, getElement } from './util/index.js' import type { BaseComponentStatic, ComponentConfig, ElementSelector } from './types' const VERSION = '5.3.8' class BaseComponent extends Config { _element!: HTMLElement _config!: ComponentConfig constructor(element: ElementSelector, config?: ComponentConfig) { super() const resolved = getElement(element) if (!resolved) { return } this._element = resolved this._config = this._getConfig(config) const ctor = this.constructor as unknown as BaseComponentStatic Data.set(this._element, ctor.DATA_KEY, this) } dispose(): void { const ctor = this.constructor as unknown as BaseComponentStatic Data.remove(this._element, ctor.DATA_KEY) EventHandler.off(this._element, ctor.EVENT_KEY) for (const propertyName of Object.getOwnPropertyNames(this)) { ;(this as Record<string, unknown>)[propertyName] = null } } _queueCallback(callback: () => void, element: HTMLElement, isAnimated = true): void { executeAfterTransition(callback, element, isAnimated) } _getConfig(config?: ComponentConfig): ComponentConfig { config = this._mergeConfigObj(config, this._element) config = this._configAfterMerge(config) this._typeCheckConfig(config) return config } static getInstance(element: ElementSelector): BaseComponent | null { return Data.get(getElement(element)!, this.DATA_KEY) } static getOrCreateInstance(element: ElementSelector, config: ComponentConfig = {}): BaseComponent { return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null) } static get VERSION(): string { return VERSION } static get DATA_KEY(): string { return `bs.${this.NAME}` } static get EVENT_KEY(): string { return `.${this.DATA_KEY}` } static eventName(name: string): string { return `${name}${this.EVENT_KEY}` } } export default BaseComponent