123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
- typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.EventHandler, global.Base));
- }(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict';
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
- var EventHandler__default = _interopDefaultLegacy(EventHandler);
- var BaseComponent__default = _interopDefaultLegacy(BaseComponent);
- const getjQuery = () => {
- const {
- jQuery
- } = window;
- if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
- return jQuery;
- }
- return null;
- };
- const DOMContentLoadedCallbacks = [];
- const onDOMContentLoaded = callback => {
- if (document.readyState === 'loading') {
-
- if (!DOMContentLoadedCallbacks.length) {
- document.addEventListener('DOMContentLoaded', () => {
- DOMContentLoadedCallbacks.forEach(callback => callback());
- });
- }
- DOMContentLoadedCallbacks.push(callback);
- } else {
- callback();
- }
- };
- const defineJQueryPlugin = plugin => {
- onDOMContentLoaded(() => {
- const $ = getjQuery();
-
- if ($) {
- const name = plugin.NAME;
- const JQUERY_NO_CONFLICT = $.fn[name];
- $.fn[name] = plugin.jQueryInterface;
- $.fn[name].Constructor = plugin;
- $.fn[name].noConflict = () => {
- $.fn[name] = JQUERY_NO_CONFLICT;
- return plugin.jQueryInterface;
- };
- }
- });
- };
-
-
- const NAME = 'button';
- const DATA_KEY = 'bs.button';
- const EVENT_KEY = `.${DATA_KEY}`;
- const DATA_API_KEY = '.data-api';
- const CLASS_NAME_ACTIVE = 'active';
- const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
- const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
-
- class Button extends BaseComponent__default['default'] {
-
- static get NAME() {
- return NAME;
- }
- toggle() {
-
- this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
- }
- static jQueryInterface(config) {
- return this.each(function () {
- const data = Button.getOrCreateInstance(this);
- if (config === 'toggle') {
- data[config]();
- }
- });
- }
- }
-
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
- event.preventDefault();
- const button = event.target.closest(SELECTOR_DATA_TOGGLE);
- const data = Button.getOrCreateInstance(button);
- data.toggle();
- });
-
- defineJQueryPlugin(Button);
- return Button;
- })));
|