123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- (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.Alert = 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 getSelector = element => {
- let selector = element.getAttribute('data-bs-target');
- if (!selector || selector === '#') {
- let hrefAttr = element.getAttribute('href');
-
-
-
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
- return null;
- }
- if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
- hrefAttr = `#${hrefAttr.split('#')[1]}`;
- }
- selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
- }
- return selector;
- };
- const getElementFromSelector = element => {
- const selector = getSelector(element);
- return selector ? document.querySelector(selector) : null;
- };
- 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 = 'alert';
- const DATA_KEY = 'bs.alert';
- const EVENT_KEY = `.${DATA_KEY}`;
- const DATA_API_KEY = '.data-api';
- const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
- const EVENT_CLOSE = `close${EVENT_KEY}`;
- const EVENT_CLOSED = `closed${EVENT_KEY}`;
- const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
- const CLASS_NAME_ALERT = 'alert';
- const CLASS_NAME_FADE = 'fade';
- const CLASS_NAME_SHOW = 'show';
-
- class Alert extends BaseComponent__default['default'] {
-
- static get NAME() {
- return NAME;
- }
- close(element) {
- const rootElement = element ? this._getRootElement(element) : this._element;
- const customEvent = this._triggerCloseEvent(rootElement);
- if (customEvent === null || customEvent.defaultPrevented) {
- return;
- }
- this._removeElement(rootElement);
- }
- _getRootElement(element) {
- return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
- }
- _triggerCloseEvent(element) {
- return EventHandler__default['default'].trigger(element, EVENT_CLOSE);
- }
- _removeElement(element) {
- element.classList.remove(CLASS_NAME_SHOW);
- const isAnimated = element.classList.contains(CLASS_NAME_FADE);
- this._queueCallback(() => this._destroyElement(element), element, isAnimated);
- }
- _destroyElement(element) {
- element.remove();
- EventHandler__default['default'].trigger(element, EVENT_CLOSED);
- }
- static jQueryInterface(config) {
- return this.each(function () {
- const data = Alert.getOrCreateInstance(this);
- if (config === 'close') {
- data[config](this);
- }
- });
- }
- static handleDismiss(alertInstance) {
- return function (event) {
- if (event) {
- event.preventDefault();
- }
- alertInstance.close(this);
- };
- }
- }
-
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
-
- defineJQueryPlugin(Alert);
- return Alert;
- })));
|