123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- /*!
- * Bootstrap alert.js v5.0.2 (https://getbootstrap.com/)
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */
- (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 = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
- var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
- const getSelector = element => {
- let selector = element.getAttribute('data-bs-target');
- if (!selector || selector === '#') {
- let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
- // `document.querySelector` will rightfully complain it is invalid.
- // See https://github.com/twbs/bootstrap/issues/32273
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
- return null;
- } // Just in case some CMS puts out a full URL with the anchor appended
- 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') {
- // add listener on the first call when the document is in loading state
- if (!DOMContentLoadedCallbacks.length) {
- document.addEventListener('DOMContentLoaded', () => {
- DOMContentLoadedCallbacks.forEach(callback => callback());
- });
- }
- DOMContentLoadedCallbacks.push(callback);
- } else {
- callback();
- }
- };
- const defineJQueryPlugin = plugin => {
- onDOMContentLoaded(() => {
- const $ = getjQuery();
- /* istanbul ignore if */
- 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;
- };
- }
- });
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.0.2): alert.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- 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 Definition
- * ------------------------------------------------------------------------
- */
- class Alert extends BaseComponent__default['default'] {
- // Getters
- static get NAME() {
- return NAME;
- } // Public
- close(element) {
- const rootElement = element ? this._getRootElement(element) : this._element;
- const customEvent = this._triggerCloseEvent(rootElement);
- if (customEvent === null || customEvent.defaultPrevented) {
- return;
- }
- this._removeElement(rootElement);
- } // Private
- _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
- 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);
- };
- }
- }
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- * add .Alert to jQuery only if jQuery is present
- */
- defineJQueryPlugin(Alert);
- return Alert;
- })));
- //# sourceMappingURL=alert.js.map
|