From 220139a89ffc3864bbb6e1b35471667318eadc1f Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 23 Mar 2021 18:26:54 +0200 Subject: Release v5.0.0-beta3 (#33439) --- dist/js/bootstrap.esm.js | 4038 +++++++++++++++++++++++----------------------- 1 file changed, 2039 insertions(+), 1999 deletions(-) (limited to 'dist/js/bootstrap.esm.js') diff --git a/dist/js/bootstrap.esm.js b/dist/js/bootstrap.esm.js index 638fee1f83..3ca4ebc8f1 100644 --- a/dist/js/bootstrap.esm.js +++ b/dist/js/bootstrap.esm.js @@ -1,74 +1,23 @@ /*! - * Bootstrap v5.0.0-beta2 (https://getbootstrap.com/) + * Bootstrap v5.0.0-beta3 (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) */ import * as Popper from '@popperjs/core'; -import { createPopper } from '@popperjs/core'; - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - - _setPrototypeOf(subClass, superClass); -} - -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): util/index.js + * Bootstrap (v5.0.0-beta3): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -var MAX_UID = 1000000; -var MILLISECONDS_MULTIPLIER = 1000; -var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) +const MAX_UID = 1000000; +const MILLISECONDS_MULTIPLIER = 1000; +const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) -var toType = function toType(obj) { +const toType = obj => { if (obj === null || obj === undefined) { - return "" + obj; + return `${obj}`; } return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); @@ -80,7 +29,7 @@ var toType = function toType(obj) { */ -var getUID = function getUID(prefix) { +const getUID = prefix => { do { prefix += Math.floor(Math.random() * MAX_UID); } while (document.getElementById(prefix)); @@ -88,11 +37,11 @@ var getUID = function getUID(prefix) { return prefix; }; -var getSelector = function getSelector(element) { - var selector = element.getAttribute('data-bs-target'); +const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); if (!selector || selector === '#') { - var hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, + 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 @@ -112,8 +61,8 @@ var getSelector = function getSelector(element) { return selector; }; -var getSelectorFromElement = function getSelectorFromElement(element) { - var selector = getSelector(element); +const getSelectorFromElement = element => { + const selector = getSelector(element); if (selector) { return document.querySelector(selector) ? selector : null; @@ -122,23 +71,23 @@ var getSelectorFromElement = function getSelectorFromElement(element) { return null; }; -var getElementFromSelector = function getElementFromSelector(element) { - var selector = getSelector(element); +const getElementFromSelector = element => { + const selector = getSelector(element); return selector ? document.querySelector(selector) : null; }; -var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) { +const getTransitionDurationFromElement = element => { if (!element) { return 0; } // Get transition-duration of the element - var _window$getComputedSt = window.getComputedStyle(element), - transitionDuration = _window$getComputedSt.transitionDuration, - transitionDelay = _window$getComputedSt.transitionDelay; - - var floatTransitionDuration = Number.parseFloat(transitionDuration); - var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found if (!floatTransitionDuration && !floatTransitionDelay) { return 0; @@ -150,18 +99,16 @@ var getTransitionDurationFromElement = function getTransitionDurationFromElement return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; }; -var triggerTransitionEnd = function triggerTransitionEnd(element) { +const triggerTransitionEnd = element => { element.dispatchEvent(new Event(TRANSITION_END)); }; -var isElement = function isElement(obj) { - return (obj[0] || obj).nodeType; -}; +const isElement = obj => (obj[0] || obj).nodeType; -var emulateTransitionEnd = function emulateTransitionEnd(element, duration) { - var called = false; - var durationPadding = 5; - var emulatedDuration = duration + durationPadding; +const emulateTransitionEnd = (element, duration) => { + let called = false; + const durationPadding = 5; + const emulatedDuration = duration + durationPadding; function listener() { called = true; @@ -169,47 +116,63 @@ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) { } element.addEventListener(TRANSITION_END, listener); - setTimeout(function () { + setTimeout(() => { if (!called) { triggerTransitionEnd(element); } }, emulatedDuration); }; -var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) { - Object.keys(configTypes).forEach(function (property) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && isElement(value) ? 'element' : toType(value); +const typeCheckConfig = (componentName, config, configTypes) => { + Object.keys(configTypes).forEach(property => { + const expectedTypes = configTypes[property]; + const value = config[property]; + const valueType = value && isElement(value) ? 'element' : toType(value); if (!new RegExp(expectedTypes).test(valueType)) { - throw new TypeError(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`); } }); }; -var isVisible = function isVisible(element) { +const isVisible = element => { if (!element) { return false; } if (element.style && element.parentNode && element.parentNode.style) { - var elementStyle = getComputedStyle(element); - var parentNodeStyle = getComputedStyle(element.parentNode); + const elementStyle = getComputedStyle(element); + const parentNodeStyle = getComputedStyle(element.parentNode); return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; } return false; }; -var findShadowRoot = function findShadowRoot(element) { +const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; +}; + +const findShadowRoot = element => { if (!document.documentElement.attachShadow) { return null; } // Can find the shadow root otherwise it'll return the document if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); + const root = element.getRootNode(); return root instanceof ShadowRoot ? root : null; } @@ -225,17 +188,14 @@ var findShadowRoot = function findShadowRoot(element) { return findShadowRoot(element.parentNode); }; -var noop = function noop() { - return function () {}; -}; +const noop = () => function () {}; -var reflow = function reflow(element) { - return element.offsetHeight; -}; +const reflow = element => element.offsetHeight; -var getjQuery = function getjQuery() { - var _window = window, - jQuery = _window.jQuery; +const getjQuery = () => { + const { + jQuery + } = window; if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { return jQuery; @@ -244,7 +204,7 @@ var getjQuery = function getjQuery() { return null; }; -var onDOMContentLoaded = function onDOMContentLoaded(callback) { +const onDOMContentLoaded = callback => { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', callback); } else { @@ -252,19 +212,19 @@ var onDOMContentLoaded = function onDOMContentLoaded(callback) { } }; -var isRTL = document.documentElement.dir === 'rtl'; +const isRTL = () => document.documentElement.dir === 'rtl'; -var defineJQueryPlugin = function defineJQueryPlugin(name, plugin) { - onDOMContentLoaded(function () { - var $ = getjQuery(); +const defineJQueryPlugin = (name, plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); /* istanbul ignore if */ if ($) { - var JQUERY_NO_CONFLICT = $.fn[name]; + const JQUERY_NO_CONFLICT = $.fn[name]; $.fn[name] = plugin.jQueryInterface; $.fn[name].Constructor = plugin; - $.fn[name].noConflict = function () { + $.fn[name].noConflict = () => { $.fn[name] = JQUERY_NO_CONFLICT; return plugin.jQueryInterface; }; @@ -274,7 +234,7 @@ var defineJQueryPlugin = function defineJQueryPlugin(name, plugin) { /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): dom/data.js + * Bootstrap (v5.0.0-beta3): dom/data.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -284,64 +244,51 @@ var defineJQueryPlugin = function defineJQueryPlugin(name, plugin) { * Constants * ------------------------------------------------------------------------ */ -var mapData = function () { - var storeData = {}; - var id = 1; - return { - set: function set(element, key, data) { - if (typeof element.bsKey === 'undefined') { - element.bsKey = { - key: key, - id: id - }; - id++; - } +const elementMap = new Map(); +var Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } - storeData[element.bsKey.id] = data; - }, - get: function get(element, key) { - if (!element || typeof element.bsKey === 'undefined') { - return null; - } + const instanceMap = elementMap.get(element); // make it clear we only want one instance per element + // can be removed later when multiple key/instances are fine to be used - var keyProperties = element.bsKey; + if (!instanceMap.has(key) && instanceMap.size !== 0) { + // eslint-disable-next-line no-console + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } - if (keyProperties.key === key) { - return storeData[keyProperties.id]; - } + instanceMap.set(key, instance); + }, - return null; - }, - delete: function _delete(element, key) { - if (typeof element.bsKey === 'undefined') { - return; - } + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } - var keyProperties = element.bsKey; + return null; + }, - if (keyProperties.key === key) { - delete storeData[keyProperties.id]; - delete element.bsKey; - } + remove(element, key) { + if (!elementMap.has(element)) { + return; } - }; -}(); -var Data = { - setData: function setData(instance, key, data) { - mapData.set(instance, key, data); - }, - getData: function getData(instance, key) { - return mapData.get(instance, key); - }, - removeData: function removeData(instance, key) { - mapData.delete(instance, key); + const instanceMap = elementMap.get(element); + instanceMap.delete(key); // free up element references if there are no instances left for an element + + if (instanceMap.size === 0) { + elementMap.delete(element); + } } + }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): dom/event-handler.js + * Bootstrap (v5.0.0-beta3): dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -351,17 +298,17 @@ var Data = { * ------------------------------------------------------------------------ */ -var namespaceRegex = /[^.]*(?=\..*)\.|.*/; -var stripNameRegex = /\..*/; -var stripUidRegex = /::\d+$/; -var eventRegistry = {}; // Events storage +const namespaceRegex = /[^.]*(?=\..*)\.|.*/; +const stripNameRegex = /\..*/; +const stripUidRegex = /::\d+$/; +const eventRegistry = {}; // Events storage -var uidEvent = 1; -var customEvents = { +let uidEvent = 1; +const customEvents = { mouseenter: 'mouseover', mouseleave: 'mouseout' }; -var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); +const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); /** * ------------------------------------------------------------------------ * Private methods @@ -369,11 +316,11 @@ var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contex */ function getUidEvent(element, uid) { - return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++; + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; } function getEvent(element) { - var uid = getUidEvent(element); + const uid = getUidEvent(element); element.uidEvent = uid; eventRegistry[uid] = eventRegistry[uid] || {}; return eventRegistry[uid]; @@ -393,10 +340,12 @@ function bootstrapHandler(element, fn) { function bootstrapDelegationHandler(element, selector, fn) { return function handler(event) { - var domElements = element.querySelectorAll(selector); + const domElements = element.querySelectorAll(selector); - for (var target = event.target; target && target !== this; target = target.parentNode) { - for (var i = domElements.length; i--;) { + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (let i = domElements.length; i--;) { if (domElements[i] === target) { event.delegateTarget = target; @@ -415,15 +364,11 @@ function bootstrapDelegationHandler(element, selector, fn) { }; } -function findHandler(events, handler, delegationSelector) { - if (delegationSelector === void 0) { - delegationSelector = null; - } - - var uidEventList = Object.keys(events); +function findHandler(events, handler, delegationSelector = null) { + const uidEventList = Object.keys(events); - for (var i = 0, len = uidEventList.length; i < len; i++) { - var event = events[uidEventList[i]]; + for (let i = 0, len = uidEventList.length; i < len; i++) { + const event = events[uidEventList[i]]; if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { return event; @@ -434,17 +379,17 @@ function findHandler(events, handler, delegationSelector) { } function normalizeParams(originalTypeEvent, handler, delegationFn) { - var delegation = typeof handler === 'string'; - var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + const delegation = typeof handler === 'string'; + const originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - var typeEvent = originalTypeEvent.replace(stripNameRegex, ''); - var custom = customEvents[typeEvent]; + let typeEvent = originalTypeEvent.replace(stripNameRegex, ''); + const custom = customEvents[typeEvent]; if (custom) { typeEvent = custom; } - var isNative = nativeEvents.has(typeEvent); + const isNative = nativeEvents.has(typeEvent); if (!isNative) { typeEvent = originalTypeEvent; @@ -463,22 +408,18 @@ function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { delegationFn = null; } - var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams[0], - originalHandler = _normalizeParams[1], - typeEvent = _normalizeParams[2]; - - var events = getEvent(element); - var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); + const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); + const events = getEvent(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); if (previousFn) { previousFn.oneOff = previousFn.oneOff && oneOff; return; } - var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); + const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); + const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); fn.delegationSelector = delegation ? handler : null; fn.originalHandler = originalHandler; fn.oneOff = oneOff; @@ -488,7 +429,7 @@ function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { } function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var fn = findHandler(events[typeEvent], handler, delegationSelector); + const fn = findHandler(events[typeEvent], handler, delegationSelector); if (!fn) { return; @@ -499,35 +440,33 @@ function removeHandler(element, events, typeEvent, handler, delegationSelector) } function removeNamespacedHandlers(element, events, typeEvent, namespace) { - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (handlerKey) { + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(handlerKey => { if (handlerKey.includes(namespace)) { - var event = storeElementEvent[handlerKey]; + const event = storeElementEvent[handlerKey]; removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); } }); } -var EventHandler = { - on: function on(element, event, handler, delegationFn) { +const EventHandler = { + on(element, event, handler, delegationFn) { addHandler(element, event, handler, delegationFn, false); }, - one: function one(element, event, handler, delegationFn) { + + one(element, event, handler, delegationFn) { addHandler(element, event, handler, delegationFn, true); }, - off: function off(element, originalTypeEvent, handler, delegationFn) { + + off(element, originalTypeEvent, handler, delegationFn) { if (typeof originalTypeEvent !== 'string' || !element) { return; } - var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams2[0], - originalHandler = _normalizeParams2[1], - typeEvent = _normalizeParams2[2]; - - var inNamespace = typeEvent !== originalTypeEvent; - var events = getEvent(element); - var isNamespace = originalTypeEvent.startsWith('.'); + const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getEvent(element); + const isNamespace = originalTypeEvent.startsWith('.'); if (typeof originalHandler !== 'undefined') { // Simplest case: handler is passed, remove that listener ONLY. @@ -540,35 +479,36 @@ var EventHandler = { } if (isNamespace) { - Object.keys(events).forEach(function (elementEvent) { + Object.keys(events).forEach(elementEvent => { removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); }); } - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (keyHandlers) { - var handlerKey = keyHandlers.replace(stripUidRegex, ''); + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(keyHandlers => { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - var event = storeElementEvent[keyHandlers]; + const event = storeElementEvent[keyHandlers]; removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); } }); }, - trigger: function trigger(element, event, args) { + + trigger(element, event, args) { if (typeof event !== 'string' || !element) { return null; } - var $ = getjQuery(); - var typeEvent = event.replace(stripNameRegex, ''); - var inNamespace = event !== typeEvent; - var isNative = nativeEvents.has(typeEvent); - var jQueryEvent; - var bubbles = true; - var nativeDispatch = true; - var defaultPrevented = false; - var evt = null; + const $ = getjQuery(); + const typeEvent = event.replace(stripNameRegex, ''); + const inNamespace = event !== typeEvent; + const isNative = nativeEvents.has(typeEvent); + let jQueryEvent; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + let evt = null; if (inNamespace && $) { jQueryEvent = $.Event(event, args); @@ -583,18 +523,19 @@ var EventHandler = { evt.initEvent(typeEvent, bubbles, true); } else { evt = new CustomEvent(event, { - bubbles: bubbles, + bubbles, cancelable: true }); } // merge custom information in our event if (typeof args !== 'undefined') { - Object.keys(args).forEach(function (key) { + Object.keys(args).forEach(key => { Object.defineProperty(evt, key, { - get: function get() { + get() { return args[key]; } + }); }); } @@ -613,86 +554,92 @@ var EventHandler = { return evt; } + }; +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): base-component.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var VERSION = '5.0.0-beta2'; +const VERSION = '5.0.0-beta3'; + +class BaseComponent { + constructor(element) { + element = typeof element === 'string' ? document.querySelector(element) : element; -var BaseComponent = /*#__PURE__*/function () { - function BaseComponent(element) { if (!element) { return; } this._element = element; - Data.setData(element, this.constructor.DATA_KEY, this); + Data.set(this._element, this.constructor.DATA_KEY, this); } - var _proto = BaseComponent.prototype; - - _proto.dispose = function dispose() { - Data.removeData(this._element, this.constructor.DATA_KEY); + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); this._element = null; } /** Static */ - ; - BaseComponent.getInstance = function getInstance(element) { - return Data.getData(element, this.DATA_KEY); - }; - _createClass(BaseComponent, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); + static getInstance(element) { + return Data.get(element, this.DATA_KEY); + } + + static get VERSION() { + return VERSION; + } - return BaseComponent; -}(); +} +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME = 'alert'; -var DATA_KEY = 'bs.alert'; -var EVENT_KEY = "." + DATA_KEY; -var DATA_API_KEY = '.data-api'; -var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; -var EVENT_CLOSE = "close" + EVENT_KEY; -var EVENT_CLOSED = "closed" + EVENT_KEY; -var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; -var CLASS_NAME_ALERT = 'alert'; -var CLASS_NAME_FADE = 'fade'; -var CLASS_NAME_SHOW = 'show'; +const NAME$b = 'alert'; +const DATA_KEY$b = 'bs.alert'; +const EVENT_KEY$b = `.${DATA_KEY$b}`; +const DATA_API_KEY$8 = '.data-api'; +const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; +const EVENT_CLOSE = `close${EVENT_KEY$b}`; +const EVENT_CLOSED = `closed${EVENT_KEY$b}`; +const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$b}${DATA_API_KEY$8}`; +const CLASS_NAME_ALERT = 'alert'; +const CLASS_NAME_FADE$5 = 'fade'; +const CLASS_NAME_SHOW$8 = 'show'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Alert = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Alert, _BaseComponent); - - function Alert() { - return _BaseComponent.apply(this, arguments) || this; - } +class Alert extends BaseComponent { + // Getters + static get DATA_KEY() { + return DATA_KEY$b; + } // Public - var _proto = Alert.prototype; - // Public - _proto.close = function close(element) { - var rootElement = element ? this._getRootElement(element) : this._element; + close(element) { + const rootElement = element ? this._getRootElement(element) : this._element; - var customEvent = this._triggerCloseEvent(rootElement); + const customEvent = this._triggerCloseEvent(rootElement); if (customEvent === null || customEvent.defaultPrevented) { return; @@ -700,46 +647,42 @@ var Alert = /*#__PURE__*/function (_BaseComponent) { this._removeElement(rootElement); } // Private - ; - _proto._getRootElement = function _getRootElement(element) { - return getElementFromSelector(element) || element.closest("." + CLASS_NAME_ALERT); - }; - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - return EventHandler.trigger(element, EVENT_CLOSE); - }; + _getRootElement(element) { + return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`); + } - _proto._removeElement = function _removeElement(element) { - var _this = this; + _triggerCloseEvent(element) { + return EventHandler.trigger(element, EVENT_CLOSE); + } - element.classList.remove(CLASS_NAME_SHOW); + _removeElement(element) { + element.classList.remove(CLASS_NAME_SHOW$8); - if (!element.classList.contains(CLASS_NAME_FADE)) { + if (!element.classList.contains(CLASS_NAME_FADE$5)) { this._destroyElement(element); return; } - var transitionDuration = getTransitionDurationFromElement(element); - EventHandler.one(element, 'transitionend', function () { - return _this._destroyElement(element); - }); + const transitionDuration = getTransitionDurationFromElement(element); + EventHandler.one(element, 'transitionend', () => this._destroyElement(element)); emulateTransitionEnd(element, transitionDuration); - }; + } - _proto._destroyElement = function _destroyElement(element) { + _destroyElement(element) { if (element.parentNode) { element.parentNode.removeChild(element); } EventHandler.trigger(element, EVENT_CLOSED); } // Static - ; - Alert.jQueryInterface = function jQueryInterface(config) { + + static jQueryInterface(config) { return this.each(function () { - var data = Data.getData(this, DATA_KEY); + let data = Data.get(this, DATA_KEY$b); if (!data) { data = new Alert(this); @@ -749,9 +692,9 @@ var Alert = /*#__PURE__*/function (_BaseComponent) { data[config](this); } }); - }; + } - Alert.handleDismiss = function handleDismiss(alertInstance) { + static handleDismiss(alertInstance) { return function (event) { if (event) { event.preventDefault(); @@ -759,18 +702,9 @@ var Alert = /*#__PURE__*/function (_BaseComponent) { alertInstance.close(this); }; - }; - - _createClass(Alert, null, [{ - key: "DATA_KEY", - get: // Getters - function get() { - return DATA_KEY; - } - }]); + } - return Alert; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -778,7 +712,7 @@ var Alert = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); +EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); /** * ------------------------------------------------------------------------ * jQuery @@ -786,46 +720,49 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDi * add .Alert to jQuery only if jQuery is present */ -defineJQueryPlugin(NAME, Alert); +defineJQueryPlugin(NAME$b, Alert); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$1 = 'button'; -var DATA_KEY$1 = 'bs.button'; -var EVENT_KEY$1 = "." + DATA_KEY$1; -var DATA_API_KEY$1 = '.data-api'; -var CLASS_NAME_ACTIVE = 'active'; -var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'; -var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; +const NAME$a = 'button'; +const DATA_KEY$a = 'bs.button'; +const EVENT_KEY$a = `.${DATA_KEY$a}`; +const DATA_API_KEY$7 = '.data-api'; +const CLASS_NAME_ACTIVE$3 = 'active'; +const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; +const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$7}`; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Button = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Button, _BaseComponent); - - function Button() { - return _BaseComponent.apply(this, arguments) || this; - } +class Button extends BaseComponent { + // Getters + static get DATA_KEY() { + return DATA_KEY$a; + } // Public - var _proto = Button.prototype; - // Public - _proto.toggle = function toggle() { + toggle() { // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)); + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); } // Static - ; - Button.jQueryInterface = function jQueryInterface(config) { + + static jQueryInterface(config) { return this.each(function () { - var data = Data.getData(this, DATA_KEY$1); + let data = Data.get(this, DATA_KEY$a); if (!data) { data = new Button(this); @@ -835,18 +772,9 @@ var Button = /*#__PURE__*/function (_BaseComponent) { data[config](); } }); - }; - - _createClass(Button, null, [{ - key: "DATA_KEY", - get: // Getters - function get() { - return DATA_KEY$1; - } - }]); + } - return Button; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -854,10 +782,10 @@ var Button = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) { +EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { event.preventDefault(); - var button = event.target.closest(SELECTOR_DATA_TOGGLE); - var data = Data.getData(button, DATA_KEY$1); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + let data = Data.get(button, DATA_KEY$a); if (!data) { data = new Button(button); @@ -872,11 +800,11 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function * add .Button to jQuery only if jQuery is present */ -defineJQueryPlugin(NAME$1, Button); +defineJQueryPlugin(NAME$a, Button); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): dom/manipulator.js + * Bootstrap (v5.0.0-beta3): dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -901,54 +829,56 @@ function normalizeData(val) { } function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-" + chr.toLowerCase(); - }); + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); } -var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-" + normalizeDataKey(key), value); +const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-" + normalizeDataKey(key)); + + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); }, - getDataAttributes: function getDataAttributes(element) { + + getDataAttributes(element) { if (!element) { return {}; } - var attributes = {}; - Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs'); - }).forEach(function (key) { - var pureKey = key.replace(/^bs/, ''); + const attributes = {}; + Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => { + let pureKey = key.replace(/^bs/, ''); pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); attributes[pureKey] = normalizeData(element.dataset[key]); }); return attributes; }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); + + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); }, - offset: function offset(element) { - var rect = element.getBoundingClientRect(); + + offset(element) { + const rect = element.getBoundingClientRect(); return { top: rect.top + document.body.scrollTop, left: rect.left + document.body.scrollLeft }; }, - position: function position(element) { + + position(element) { return { top: element.offsetTop, left: element.offsetLeft }; } + }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): dom/selector-engine.js + * Bootstrap (v5.0.0-beta3): dom/selector-engine.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -958,34 +888,23 @@ var Manipulator = { * Constants * ------------------------------------------------------------------------ */ -var NODE_TEXT = 3; -var SelectorEngine = { - find: function find(selector, element) { - var _ref; - - if (element === void 0) { - element = document.documentElement; - } - - return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector)); +const NODE_TEXT = 3; +const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); }, - findOne: function findOne(selector, element) { - if (element === void 0) { - element = document.documentElement; - } + findOne(selector, element = document.documentElement) { return Element.prototype.querySelector.call(element, selector); }, - children: function children(element, selector) { - var _ref2; - return (_ref2 = []).concat.apply(_ref2, element.children).filter(function (child) { - return child.matches(selector); - }); + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); }, - parents: function parents(element, selector) { - var parents = []; - var ancestor = element.parentNode; + + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode; while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { if (ancestor.matches(selector)) { @@ -997,8 +916,9 @@ var SelectorEngine = { return parents; }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; + + prev(element, selector) { + let previous = element.previousElementSibling; while (previous) { if (previous.matches(selector)) { @@ -1010,8 +930,9 @@ var SelectorEngine = { return []; }, - next: function next(element, selector) { - var next = element.nextElementSibling; + + next(element, selector) { + let next = element.nextElementSibling; while (next) { if (next.matches(selector)) { @@ -1023,24 +944,31 @@ var SelectorEngine = { return []; } + }; +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$2 = 'carousel'; -var DATA_KEY$2 = 'bs.carousel'; -var EVENT_KEY$2 = "." + DATA_KEY$2; -var DATA_API_KEY$2 = '.data-api'; -var ARROW_LEFT_KEY = 'ArrowLeft'; -var ARROW_RIGHT_KEY = 'ArrowRight'; -var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch +const NAME$9 = 'carousel'; +const DATA_KEY$9 = 'bs.carousel'; +const EVENT_KEY$9 = `.${DATA_KEY$9}`; +const DATA_API_KEY$6 = '.data-api'; +const ARROW_LEFT_KEY = 'ArrowLeft'; +const ARROW_RIGHT_KEY = 'ArrowRight'; +const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch -var SWIPE_THRESHOLD = 40; -var Default = { +const SWIPE_THRESHOLD = 40; +const Default$8 = { interval: 5000, keyboard: true, slide: false, @@ -1048,7 +976,7 @@ var Default = { wrap: true, touch: true }; -var DefaultType = { +const DefaultType$8 = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', @@ -1056,98 +984,98 @@ var DefaultType = { wrap: 'boolean', touch: 'boolean' }; -var DIRECTION_NEXT = 'next'; -var DIRECTION_PREV = 'prev'; -var DIRECTION_LEFT = 'left'; -var DIRECTION_RIGHT = 'right'; -var EVENT_SLIDE = "slide" + EVENT_KEY$2; -var EVENT_SLID = "slid" + EVENT_KEY$2; -var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; -var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; -var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; -var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; -var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; -var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; -var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; -var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; -var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; -var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2; -var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; -var CLASS_NAME_CAROUSEL = 'carousel'; -var CLASS_NAME_ACTIVE$1 = 'active'; -var CLASS_NAME_SLIDE = 'slide'; -var CLASS_NAME_END = 'carousel-item-end'; -var CLASS_NAME_START = 'carousel-item-start'; -var CLASS_NAME_NEXT = 'carousel-item-next'; -var CLASS_NAME_PREV = 'carousel-item-prev'; -var CLASS_NAME_POINTER_EVENT = 'pointer-event'; -var SELECTOR_ACTIVE = '.active'; -var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; -var SELECTOR_ITEM = '.carousel-item'; -var SELECTOR_ITEM_IMG = '.carousel-item img'; -var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; -var SELECTOR_INDICATORS = '.carousel-indicators'; -var SELECTOR_INDICATOR = '[data-bs-target]'; -var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; -var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; -var POINTER_TYPE_TOUCH = 'touch'; -var POINTER_TYPE_PEN = 'pen'; +const ORDER_NEXT = 'next'; +const ORDER_PREV = 'prev'; +const DIRECTION_LEFT = 'left'; +const DIRECTION_RIGHT = 'right'; +const EVENT_SLIDE = `slide${EVENT_KEY$9}`; +const EVENT_SLID = `slid${EVENT_KEY$9}`; +const EVENT_KEYDOWN = `keydown${EVENT_KEY$9}`; +const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$9}`; +const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$9}`; +const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; +const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; +const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; +const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; +const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; +const EVENT_DRAG_START = `dragstart${EVENT_KEY$9}`; +const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$9}${DATA_API_KEY$6}`; +const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$9}${DATA_API_KEY$6}`; +const CLASS_NAME_CAROUSEL = 'carousel'; +const CLASS_NAME_ACTIVE$2 = 'active'; +const CLASS_NAME_SLIDE = 'slide'; +const CLASS_NAME_END = 'carousel-item-end'; +const CLASS_NAME_START = 'carousel-item-start'; +const CLASS_NAME_NEXT = 'carousel-item-next'; +const CLASS_NAME_PREV = 'carousel-item-prev'; +const CLASS_NAME_POINTER_EVENT = 'pointer-event'; +const SELECTOR_ACTIVE$1 = '.active'; +const SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; +const SELECTOR_ITEM = '.carousel-item'; +const SELECTOR_ITEM_IMG = '.carousel-item img'; +const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; +const SELECTOR_INDICATORS = '.carousel-indicators'; +const SELECTOR_INDICATOR = '[data-bs-target]'; +const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; +const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; +const POINTER_TYPE_TOUCH = 'touch'; +const POINTER_TYPE_PEN = 'pen'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Carousel = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Carousel, _BaseComponent); - - function Carousel(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._items = null; - _this._interval = null; - _this._activeElement = null; - _this._isPaused = false; - _this._isSliding = false; - _this.touchTimeout = null; - _this.touchStartX = 0; - _this.touchDeltaX = 0; - _this._config = _this._getConfig(config); - _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element); - _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - _this._pointerEvent = Boolean(window.PointerEvent); - - _this._addEventListeners(); - - return _this; +class Carousel extends BaseComponent { + constructor(element, config) { + super(element); + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this.touchStartX = 0; + this.touchDeltaX = 0; + this._config = this._getConfig(config); + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + this._pointerEvent = Boolean(window.PointerEvent); + + this._addEventListeners(); } // Getters - var _proto = Carousel.prototype; + static get Default() { + return Default$8; + } + + static get DATA_KEY() { + return DATA_KEY$9; + } // Public + - // Public - _proto.next = function next() { + next() { if (!this._isSliding) { - this._slide(DIRECTION_NEXT); + this._slide(ORDER_NEXT); } - }; + } - _proto.nextWhenVisible = function nextWhenVisible() { + nextWhenVisible() { // Don't call next when the page isn't visible // or the carousel or its parent isn't visible if (!document.hidden && isVisible(this._element)) { this.next(); } - }; + } - _proto.prev = function prev() { + prev() { if (!this._isSliding) { - this._slide(DIRECTION_PREV); + this._slide(ORDER_PREV); } - }; + } - _proto.pause = function pause(event) { + pause(event) { if (!event) { this._isPaused = true; } @@ -1159,9 +1087,9 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { clearInterval(this._interval); this._interval = null; - }; + } - _proto.cycle = function cycle(event) { + cycle(event) { if (!event) { this._isPaused = false; } @@ -1176,23 +1104,19 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); } - }; - - _proto.to = function to(index) { - var _this2 = this; + } + to(index) { this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - var activeIndex = this._getItemIndex(this._activeElement); + const activeIndex = this._getItemIndex(this._activeElement); if (index > this._items.length - 1 || index < 0) { return; } if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this2.to(index); - }); + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); return; } @@ -1202,15 +1126,13 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { return; } - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); + this._slide(order, this._items[index]); + } - EventHandler.off(this._element, EVENT_KEY$2); + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); this._items = null; this._config = null; this._interval = null; @@ -1218,94 +1140,72 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { this._isSliding = null; this._activeElement = null; this._indicatorsElement = null; + super.dispose(); } // Private - ; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - typeCheckConfig(NAME$2, config, DefaultType); + + _getConfig(config) { + config = { ...Default$8, + ...config + }; + typeCheckConfig(NAME$9, config, DefaultType$8); return config; - }; + } - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); + _handleSwipe() { + const absDeltax = Math.abs(this.touchDeltaX); if (absDeltax <= SWIPE_THRESHOLD) { return; } - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; // swipe left - - if (direction > 0) { - if (isRTL) { - this.next(); - } else { - this.prev(); - } - } // swipe right + const direction = absDeltax / this.touchDeltaX; + this.touchDeltaX = 0; - - if (direction < 0) { - if (isRTL) { - this.prev(); - } else { - this.next(); - } + if (!direction) { + return; } - }; - _proto._addEventListeners = function _addEventListeners() { - var _this3 = this; + this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT); + } + _addEventListeners() { if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, function (event) { - return _this3._keydown(event); - }); + EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); } if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) { - return _this3.pause(event); - }); - EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) { - return _this3.cycle(event); - }); + EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event)); + EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event)); } if (this._config.touch && this._touchSupported) { this._addTouchEventListeners(); } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this4 = this; + } - var start = function start(event) { - if (_this4._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { - _this4.touchStartX = event.clientX; - } else if (!_this4._pointerEvent) { - _this4.touchStartX = event.touches[0].clientX; + _addTouchEventListeners() { + const start = event => { + if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + this.touchStartX = event.clientX; + } else if (!this._pointerEvent) { + this.touchStartX = event.touches[0].clientX; } }; - var move = function move(event) { + const move = event => { // ensure swiping with one touch and not pinching - if (event.touches && event.touches.length > 1) { - _this4.touchDeltaX = 0; - } else { - _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX; - } + this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX; }; - var end = function end(event) { - if (_this4._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { - _this4.touchDeltaX = event.clientX - _this4.touchStartX; + const end = event => { + if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + this.touchDeltaX = event.clientX - this.touchStartX; } - _this4._handleSwipe(); + this._handleSwipe(); - if (_this4._config.pause === 'hover') { + if (this._config.pause === 'hover') { // If it's a touch-enabled device, mouseenter/leave are fired as // part of the mouse compatibility events on first tap - the carousel // would stop cycling until user tapped out of it; @@ -1313,47 +1213,33 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { // (as if it's the second time we tap on it, mouseenter compat event // is NOT fired) and after a timeout (to allow for mouse compatibility // events to fire) we explicitly restart cycling - _this4.pause(); + this.pause(); - if (_this4.touchTimeout) { - clearTimeout(_this4.touchTimeout); + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); } - _this4.touchTimeout = setTimeout(function (event) { - return _this4.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval); + this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval); } }; - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) { - EventHandler.on(itemImg, EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); + SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => { + EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault()); }); if (this._pointerEvent) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return end(event); - }); + EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => end(event)); this._element.classList.add(CLASS_NAME_POINTER_EVENT); } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return end(event); - }); + EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event)); } - }; + } - _proto._keydown = function _keydown(event) { + _keydown(event) { if (/input|textarea/i.test(event.target.tagName)) { return; } @@ -1361,83 +1247,75 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { if (event.key === ARROW_LEFT_KEY) { event.preventDefault(); - if (isRTL) { - this.next(); - } else { - this.prev(); - } + this._slide(DIRECTION_LEFT); } else if (event.key === ARROW_RIGHT_KEY) { event.preventDefault(); - if (isRTL) { - this.prev(); - } else { - this.next(); - } + this._slide(DIRECTION_RIGHT); } - }; + } - _proto._getItemIndex = function _getItemIndex(element) { + _getItemIndex(element) { this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; return this._items.indexOf(element); - }; + } - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; + _getItemByOrder(order, activeElement) { + const isNext = order === ORDER_NEXT; + const isPrev = order === ORDER_PREV; - var activeIndex = this._getItemIndex(activeElement); + const activeIndex = this._getItemIndex(activeElement); - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + const lastItemIndex = this._items.length - 1; + const isGoingToWrap = isPrev && activeIndex === 0 || isNext && activeIndex === lastItemIndex; if (isGoingToWrap && !this._config.wrap) { return activeElement; } - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; + const delta = isPrev ? -1 : 1; + const itemIndex = (activeIndex + delta) % this._items.length; return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; + } - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); + _triggerSlideEvent(relatedTarget, eventDirectionName) { + const targetIndex = this._getItemIndex(relatedTarget); - var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); + const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget: relatedTarget, + relatedTarget, direction: eventDirectionName, from: fromIndex, to: targetIndex }); - }; + } - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + _setActiveIndicatorElement(element) { if (this._indicatorsElement) { - var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); - activeIndicator.classList.remove(CLASS_NAME_ACTIVE$1); + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); activeIndicator.removeAttribute('aria-current'); - var indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement); + const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement); - for (var i = 0; i < indicators.length; i++) { + for (let i = 0; i < indicators.length; i++) { if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { - indicators[i].classList.add(CLASS_NAME_ACTIVE$1); + indicators[i].classList.add(CLASS_NAME_ACTIVE$2); indicators[i].setAttribute('aria-current', 'true'); break; } } } - }; + } - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + _updateInterval() { + const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); if (!element) { return; } - var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); if (elementInterval) { this._config.defaultInterval = this._config.defaultInterval || this._config.interval; @@ -1445,30 +1323,32 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { } else { this._config.interval = this._config.defaultInterval || this._config.interval; } - }; + } - _proto._slide = function _slide(direction, element) { - var _this5 = this; + _slide(directionOrOrder, element) { + const order = this._directionToOrder(directionOrOrder); - var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - var activeElementIndex = this._getItemIndex(activeElement); + const activeElementIndex = this._getItemIndex(activeElement); - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + const nextElement = element || this._getItemByOrder(order, activeElement); - var nextElementIndex = this._getItemIndex(nextElement); + const nextElementIndex = this._getItemIndex(nextElement); - var isCycling = Boolean(this._interval); - var directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END; - var orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV; - var eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT; + const isCycling = Boolean(this._interval); + const isNext = order === ORDER_NEXT; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) { + const eventDirectionName = this._orderToDirection(order); + + if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) { this._isSliding = false; return; } - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); if (slideEvent.defaultPrevented) { return; @@ -1494,14 +1374,14 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { reflow(nextElement); activeElement.classList.add(directionalClassName); nextElement.classList.add(directionalClassName); - var transitionDuration = getTransitionDurationFromElement(activeElement); - EventHandler.one(activeElement, 'transitionend', function () { + const transitionDuration = getTransitionDurationFromElement(activeElement); + EventHandler.one(activeElement, 'transitionend', () => { nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName); - _this5._isSliding = false; - setTimeout(function () { - EventHandler.trigger(_this5._element, EVENT_SLID, { + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + setTimeout(() => { + EventHandler.trigger(this._element, EVENT_SLID, { relatedTarget: nextElement, direction: eventDirectionName, from: activeElementIndex, @@ -1511,8 +1391,8 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { }); emulateTransitionEnd(activeElement, transitionDuration); } else { - activeElement.classList.remove(CLASS_NAME_ACTIVE$1); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); this._isSliding = false; EventHandler.trigger(this._element, EVENT_SLID, { relatedTarget: nextElement, @@ -1525,19 +1405,46 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { if (isCycling) { this.cycle(); } + } + + _directionToOrder(direction) { + if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) { + return direction; + } + + if (isRTL()) { + return direction === DIRECTION_RIGHT ? ORDER_PREV : ORDER_NEXT; + } + + return direction === DIRECTION_RIGHT ? ORDER_NEXT : ORDER_PREV; + } + + _orderToDirection(order) { + if (![ORDER_NEXT, ORDER_PREV].includes(order)) { + return order; + } + + if (isRTL()) { + return order === ORDER_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + + return order === ORDER_NEXT ? DIRECTION_RIGHT : DIRECTION_LEFT; } // Static - ; - Carousel.carouselInterface = function carouselInterface(element, config) { - var data = Data.getData(element, DATA_KEY$2); - var _config = _extends({}, Default, Manipulator.getDataAttributes(element)); + static carouselInterface(element, config) { + let data = Data.get(element, DATA_KEY$9); + let _config = { ...Default$8, + ...Manipulator.getDataAttributes(element) + }; if (typeof config === 'object') { - _config = _extends({}, _config, config); + _config = { ..._config, + ...config + }; } - var action = typeof config === 'string' ? config : _config.slide; + const action = typeof config === 'string' ? config : _config.slide; if (!data) { data = new Carousel(element, _config); @@ -1547,7 +1454,7 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { data.to(config); } else if (typeof action === 'string') { if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); + throw new TypeError(`No method named "${action}"`); } data[action](); @@ -1555,24 +1462,25 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { data.pause(); data.cycle(); } - }; + } - Carousel.jQueryInterface = function jQueryInterface(config) { + static jQueryInterface(config) { return this.each(function () { Carousel.carouselInterface(this, config); }); - }; + } - Carousel.dataApiClickHandler = function dataApiClickHandler(event) { - var target = getElementFromSelector(this); + static dataApiClickHandler(event) { + const target = getElementFromSelector(this); if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { return; } - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - var slideIndex = this.getAttribute('data-bs-slide-to'); + const config = { ...Manipulator.getDataAttributes(target), + ...Manipulator.getDataAttributes(this) + }; + const slideIndex = this.getAttribute('data-bs-slide-to'); if (slideIndex) { config.interval = false; @@ -1581,26 +1489,13 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { Carousel.carouselInterface(target, config); if (slideIndex) { - Data.getData(target, DATA_KEY$2).to(slideIndex); + Data.get(target, DATA_KEY$9).to(slideIndex); } event.preventDefault(); - }; - - _createClass(Carousel, null, [{ - key: "Default", - get: function get() { - return Default; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$2; - } - }]); + } - return Carousel; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -1608,12 +1503,12 @@ var Carousel = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); -EventHandler.on(window, EVENT_LOAD_DATA_API, function () { - var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); +EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); +EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - for (var i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); + for (let i = 0, len = carousels.length; i < len; i++) { + Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY$9)); } }); /** @@ -1623,110 +1518,112 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, function () { * add .Carousel to jQuery only if jQuery is present */ -defineJQueryPlugin(NAME$2, Carousel); +defineJQueryPlugin(NAME$9, Carousel); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$3 = 'collapse'; -var DATA_KEY$3 = 'bs.collapse'; -var EVENT_KEY$3 = "." + DATA_KEY$3; -var DATA_API_KEY$3 = '.data-api'; -var Default$1 = { +const NAME$8 = 'collapse'; +const DATA_KEY$8 = 'bs.collapse'; +const EVENT_KEY$8 = `.${DATA_KEY$8}`; +const DATA_API_KEY$5 = '.data-api'; +const Default$7 = { toggle: true, parent: '' }; -var DefaultType$1 = { +const DefaultType$7 = { toggle: 'boolean', parent: '(string|element)' }; -var EVENT_SHOW = "show" + EVENT_KEY$3; -var EVENT_SHOWN = "shown" + EVENT_KEY$3; -var EVENT_HIDE = "hide" + EVENT_KEY$3; -var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; -var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; -var CLASS_NAME_SHOW$1 = 'show'; -var CLASS_NAME_COLLAPSE = 'collapse'; -var CLASS_NAME_COLLAPSING = 'collapsing'; -var CLASS_NAME_COLLAPSED = 'collapsed'; -var WIDTH = 'width'; -var HEIGHT = 'height'; -var SELECTOR_ACTIVES = '.show, .collapsing'; -var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]'; +const EVENT_SHOW$5 = `show${EVENT_KEY$8}`; +const EVENT_SHOWN$5 = `shown${EVENT_KEY$8}`; +const EVENT_HIDE$5 = `hide${EVENT_KEY$8}`; +const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$8}`; +const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; +const CLASS_NAME_SHOW$7 = 'show'; +const CLASS_NAME_COLLAPSE = 'collapse'; +const CLASS_NAME_COLLAPSING = 'collapsing'; +const CLASS_NAME_COLLAPSED = 'collapsed'; +const WIDTH = 'width'; +const HEIGHT = 'height'; +const SELECTOR_ACTIVES = '.show, .collapsing'; +const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Collapse = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Collapse, _BaseComponent); - - function Collapse(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._isTransitioning = false; - _this._config = _this._getConfig(config); - _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]")); - var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1); +class Collapse extends BaseComponent { + constructor(element, config) { + super(element); + this._isTransitioning = false; + this._config = this._getConfig(config); + this._triggerArray = SelectorEngine.find(`${SELECTOR_DATA_TOGGLE$4}[href="#${this._element.id}"],` + `${SELECTOR_DATA_TOGGLE$4}[data-bs-target="#${this._element.id}"]`); + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElem) { - return foundElem === element; - }); + for (let i = 0, len = toggleList.length; i < len; i++) { + const elem = toggleList[i]; + const selector = getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element); if (selector !== null && filterElement.length) { - _this._selector = selector; + this._selector = selector; - _this._triggerArray.push(elem); + this._triggerArray.push(elem); } } - _this._parent = _this._config.parent ? _this._getParent() : null; + this._parent = this._config.parent ? this._getParent() : null; - if (!_this._config.parent) { - _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); } - if (_this._config.toggle) { - _this.toggle(); + if (this._config.toggle) { + this.toggle(); } - - return _this; } // Getters - var _proto = Collapse.prototype; + static get Default() { + return Default$7; + } + + static get DATA_KEY() { + return DATA_KEY$8; + } // Public + - // Public - _proto.toggle = function toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW$1)) { + toggle() { + if (this._element.classList.contains(CLASS_NAME_SHOW$7)) { this.hide(); } else { this.show(); } - }; - - _proto.show = function show() { - var _this2 = this; + } - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW$1)) { + show() { + if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW$7)) { return; } - var actives; - var activesData; + let actives; + let activesData; if (this._parent) { - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) { - if (typeof _this2._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === _this2._config.parent; + actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(elem => { + if (typeof this._config.parent === 'string') { + return elem.getAttribute('data-bs-parent') === this._config.parent; } return elem.classList.contains(CLASS_NAME_COLLAPSE); @@ -1737,38 +1634,36 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { } } - var container = SelectorEngine.findOne(this._selector); + const container = SelectorEngine.findOne(this._selector); if (actives) { - var tempActiveData = actives.find(function (elem) { - return container !== elem; - }); - activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null; + const tempActiveData = actives.find(elem => container !== elem); + activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY$8) : null; if (activesData && activesData._isTransitioning) { return; } } - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW); + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5); if (startEvent.defaultPrevented) { return; } if (actives) { - actives.forEach(function (elemActive) { + actives.forEach(elemActive => { if (container !== elemActive) { Collapse.collapseInterface(elemActive, 'hide'); } if (!activesData) { - Data.setData(elemActive, DATA_KEY$3, null); + Data.set(elemActive, DATA_KEY$8, null); } }); } - var dimension = this._getDimension(); + const dimension = this._getDimension(); this._element.classList.remove(CLASS_NAME_COLLAPSE); @@ -1777,7 +1672,7 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { this._element.style[dimension] = 0; if (this._triggerArray.length) { - this._triggerArray.forEach(function (element) { + this._triggerArray.forEach(element => { element.classList.remove(CLASS_NAME_COLLAPSED); element.setAttribute('aria-expanded', true); }); @@ -1785,56 +1680,52 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { this.setTransitioning(true); - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$1); + const complete = () => { + this._element.classList.remove(CLASS_NAME_COLLAPSING); - _this2._element.style[dimension] = ''; + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - _this2.setTransitioning(false); - - EventHandler.trigger(_this2._element, EVENT_SHOWN); + this._element.style[dimension] = ''; + this.setTransitioning(false); + EventHandler.trigger(this._element, EVENT_SHOWN$5); }; - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = getTransitionDurationFromElement(this._element); + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + const transitionDuration = getTransitionDurationFromElement(this._element); EventHandler.one(this._element, 'transitionend', complete); emulateTransitionEnd(this._element, transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this3 = this; + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW$1)) { + hide() { + if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW$7)) { return; } - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE); + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5); if (startEvent.defaultPrevented) { return; } - var dimension = this._getDimension(); + const dimension = this._getDimension(); - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; reflow(this._element); this._element.classList.add(CLASS_NAME_COLLAPSING); - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$1); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - var triggerArrayLength = this._triggerArray.length; + const triggerArrayLength = this._triggerArray.length; if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var elem = getElementFromSelector(trigger); + for (let i = 0; i < triggerArrayLength; i++) { + const trigger = this._triggerArray[i]; + const elem = getElementFromSelector(trigger); - if (elem && !elem.classList.contains(CLASS_NAME_SHOW$1)) { + if (elem && !elem.classList.contains(CLASS_NAME_SHOW$7)) { trigger.classList.add(CLASS_NAME_COLLAPSED); trigger.setAttribute('aria-expanded', false); } @@ -1843,52 +1734,53 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { this.setTransitioning(true); - var complete = function complete() { - _this3.setTransitioning(false); + const complete = () => { + this.setTransitioning(false); - _this3._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSING); - _this3._element.classList.add(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSE); - EventHandler.trigger(_this3._element, EVENT_HIDDEN); + EventHandler.trigger(this._element, EVENT_HIDDEN$5); }; this._element.style[dimension] = ''; - var transitionDuration = getTransitionDurationFromElement(this._element); + const transitionDuration = getTransitionDurationFromElement(this._element); EventHandler.one(this._element, 'transitionend', complete); emulateTransitionEnd(this._element, transitionDuration); - }; + } - _proto.setTransitioning = function setTransitioning(isTransitioning) { + setTransitioning(isTransitioning) { this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); + } + dispose() { + super.dispose(); this._config = null; this._parent = null; this._triggerArray = null; this._isTransitioning = null; } // Private - ; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); + + _getConfig(config) { + config = { ...Default$7, + ...config + }; config.toggle = Boolean(config.toggle); // Coerce string values - typeCheckConfig(NAME$3, config, DefaultType$1); + typeCheckConfig(NAME$8, config, DefaultType$7); return config; - }; + } - _proto._getDimension = function _getDimension() { + _getDimension() { return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this4 = this; + } - var parent = this._config.parent; + _getParent() { + let { + parent + } = this._config; if (isElement(parent)) { // it's a jQuery object @@ -1899,22 +1791,22 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { parent = SelectorEngine.findOne(parent); } - var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]"; - SelectorEngine.find(selector, parent).forEach(function (element) { - var selected = getElementFromSelector(element); + const selector = `${SELECTOR_DATA_TOGGLE$4}[data-bs-parent="${parent}"]`; + SelectorEngine.find(selector, parent).forEach(element => { + const selected = getElementFromSelector(element); - _this4._addAriaAndCollapsedClass(selected, [element]); + this._addAriaAndCollapsedClass(selected, [element]); }); return parent; - }; + } - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + _addAriaAndCollapsedClass(element, triggerArray) { if (!element || !triggerArray.length) { return; } - var isOpen = element.classList.contains(CLASS_NAME_SHOW$1); - triggerArray.forEach(function (elem) { + const isOpen = element.classList.contains(CLASS_NAME_SHOW$7); + triggerArray.forEach(elem => { if (isOpen) { elem.classList.remove(CLASS_NAME_COLLAPSED); } else { @@ -1924,12 +1816,14 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { elem.setAttribute('aria-expanded', isOpen); }); } // Static - ; - Collapse.collapseInterface = function collapseInterface(element, config) { - var data = Data.getData(element, DATA_KEY$3); - var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); + static collapseInterface(element, config) { + let data = Data.get(element, DATA_KEY$8); + const _config = { ...Default$7, + ...Manipulator.getDataAttributes(element), + ...(typeof config === 'object' && config ? config : {}) + }; if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { _config.toggle = false; @@ -1941,33 +1835,20 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + throw new TypeError(`No method named "${config}"`); } data[config](); } - }; + } - Collapse.jQueryInterface = function jQueryInterface(config) { + static jQueryInterface(config) { return this.each(function () { Collapse.collapseInterface(this, config); }); - }; - - _createClass(Collapse, null, [{ - key: "Default", - get: function get() { - return Default$1; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$3; - } - }]); + } - return Collapse; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -1975,18 +1856,18 @@ var Collapse = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { +EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { // preventDefault only for elements (which change the URL) not inside the collapsible element if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { event.preventDefault(); } - var triggerData = Manipulator.getDataAttributes(this); - var selector = getSelectorFromElement(this); - var selectorElements = SelectorEngine.find(selector); - selectorElements.forEach(function (element) { - var data = Data.getData(element, DATA_KEY$3); - var config; + const triggerData = Manipulator.getDataAttributes(this); + const selector = getSelectorFromElement(this); + const selectorElements = SelectorEngine.find(selector); + selectorElements.forEach(element => { + const data = Data.get(element, DATA_KEY$8); + let config; if (data) { // update parent attribute @@ -2010,62 +1891,65 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, functi * add .Collapse to jQuery only if jQuery is present */ -defineJQueryPlugin(NAME$3, Collapse); +defineJQueryPlugin(NAME$8, Collapse); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$4 = 'dropdown'; -var DATA_KEY$4 = 'bs.dropdown'; -var EVENT_KEY$4 = "." + DATA_KEY$4; -var DATA_API_KEY$4 = '.data-api'; -var ESCAPE_KEY = 'Escape'; -var SPACE_KEY = 'Space'; -var TAB_KEY = 'Tab'; -var ARROW_UP_KEY = 'ArrowUp'; -var ARROW_DOWN_KEY = 'ArrowDown'; -var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - -var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY); -var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; -var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; -var EVENT_SHOW$1 = "show" + EVENT_KEY$4; -var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; -var EVENT_CLICK = "click" + EVENT_KEY$4; -var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; -var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; -var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; -var CLASS_NAME_DISABLED = 'disabled'; -var CLASS_NAME_SHOW$2 = 'show'; -var CLASS_NAME_DROPUP = 'dropup'; -var CLASS_NAME_DROPEND = 'dropend'; -var CLASS_NAME_DROPSTART = 'dropstart'; -var CLASS_NAME_NAVBAR = 'navbar'; -var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]'; -var SELECTOR_FORM_CHILD = '.dropdown form'; -var SELECTOR_MENU = '.dropdown-menu'; -var SELECTOR_NAVBAR_NAV = '.navbar-nav'; -var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; -var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'; -var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'; -var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'; -var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'; -var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'; -var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'; -var Default$2 = { +const NAME$7 = 'dropdown'; +const DATA_KEY$7 = 'bs.dropdown'; +const EVENT_KEY$7 = `.${DATA_KEY$7}`; +const DATA_API_KEY$4 = '.data-api'; +const ESCAPE_KEY$2 = 'Escape'; +const SPACE_KEY = 'Space'; +const TAB_KEY = 'Tab'; +const ARROW_UP_KEY = 'ArrowUp'; +const ARROW_DOWN_KEY = 'ArrowDown'; +const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button + +const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`); +const EVENT_HIDE$4 = `hide${EVENT_KEY$7}`; +const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$7}`; +const EVENT_SHOW$4 = `show${EVENT_KEY$7}`; +const EVENT_SHOWN$4 = `shown${EVENT_KEY$7}`; +const EVENT_CLICK = `click${EVENT_KEY$7}`; +const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; +const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$7}${DATA_API_KEY$4}`; +const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$7}${DATA_API_KEY$4}`; +const CLASS_NAME_DISABLED = 'disabled'; +const CLASS_NAME_SHOW$6 = 'show'; +const CLASS_NAME_DROPUP = 'dropup'; +const CLASS_NAME_DROPEND = 'dropend'; +const CLASS_NAME_DROPSTART = 'dropstart'; +const CLASS_NAME_NAVBAR = 'navbar'; +const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]'; +const SELECTOR_MENU = '.dropdown-menu'; +const SELECTOR_NAVBAR_NAV = '.navbar-nav'; +const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; +const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; +const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; +const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; +const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; +const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; +const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; +const Default$6 = { offset: [0, 2], - flip: true, boundary: 'clippingParents', reference: 'toggle', display: 'dynamic', popperConfig: null }; -var DefaultType$2 = { +const DefaultType$6 = { offset: '(array|string|function)', - flip: 'boolean', boundary: '(string|element)', reference: '(string|element|object)', display: 'string', @@ -2077,33 +1961,37 @@ var DefaultType$2 = { * ------------------------------------------------------------------------ */ -var Dropdown = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Dropdown, _BaseComponent); +class Dropdown extends BaseComponent { + constructor(element, config) { + super(element); + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); - function Dropdown(element, config) { - var _this; + this._addEventListeners(); + } // Getters - _this = _BaseComponent.call(this, element) || this; - _this._popper = null; - _this._config = _this._getConfig(config); - _this._menu = _this._getMenuElement(); - _this._inNavbar = _this._detectNavbar(); - _this._addEventListeners(); + static get Default() { + return Default$6; + } - return _this; - } // Getters + static get DefaultType() { + return DefaultType$6; + } + static get DATA_KEY() { + return DATA_KEY$7; + } // Public - var _proto = Dropdown.prototype; - // Public - _proto.toggle = function toggle() { + toggle() { if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) { return; } - var isActive = this._element.classList.contains(CLASS_NAME_SHOW$2); + const isActive = this._element.classList.contains(CLASS_NAME_SHOW$6); Dropdown.clearMenus(); @@ -2112,18 +2000,18 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { } this.show(); - }; + } - _proto.show = function show() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$2)) { + show() { + if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$6)) { return; } - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { + const parent = Dropdown.getParentFromElement(this._element); + const relatedTarget = { relatedTarget: this._element }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget); + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget); if (showEvent.defaultPrevented) { return; @@ -2137,7 +2025,7 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); } - var referenceElement = this._element; + let referenceElement = this._element; if (this._config.reference === 'parent') { referenceElement = parent; @@ -2151,12 +2039,10 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { referenceElement = this._config.reference; } - var popperConfig = this._getPopperConfig(); + const popperConfig = this._getPopperConfig(); - var isDisplayStatic = popperConfig.modifiers.find(function (modifier) { - return modifier.name === 'applyStyles' && modifier.enabled === false; - }); - this._popper = createPopper(referenceElement, this._menu, popperConfig); + const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); + this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig); if (isDisplayStatic) { Manipulator.setDataAttribute(this._menu, 'popper', 'static'); @@ -2168,33 +2054,29 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) { - return EventHandler.on(elem, 'mouseover', null, noop()); - }); + [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', null, noop())); } this._element.focus(); this._element.setAttribute('aria-expanded', true); - this._menu.classList.toggle(CLASS_NAME_SHOW$2); + this._menu.classList.toggle(CLASS_NAME_SHOW$6); - this._element.classList.toggle(CLASS_NAME_SHOW$2); + this._element.classList.toggle(CLASS_NAME_SHOW$6); - EventHandler.trigger(this._element, EVENT_SHOWN$1, relatedTarget); - }; + EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget); + } - _proto.hide = function hide() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$2)) { + hide() { + if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$6)) { return; } - var relatedTarget = { + const relatedTarget = { relatedTarget: this._element }; - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$1, relatedTarget); + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget); if (hideEvent.defaultPrevented) { return; @@ -2204,18 +2086,16 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { this._popper.destroy(); } - this._menu.classList.toggle(CLASS_NAME_SHOW$2); + this._menu.classList.toggle(CLASS_NAME_SHOW$6); - this._element.classList.toggle(CLASS_NAME_SHOW$2); + this._element.classList.toggle(CLASS_NAME_SHOW$6); Manipulator.removeDataAttribute(this._menu, 'popper'); - EventHandler.trigger(this._element, EVENT_HIDDEN$1, relatedTarget); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); + EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget); + } - EventHandler.off(this._element, EVENT_KEY$4); + dispose() { + EventHandler.off(this._element, EVENT_KEY$7); this._menu = null; if (this._popper) { @@ -2223,46 +2103,47 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { this._popper = null; } - }; - _proto.update = function update() { + super.dispose(); + } + + update() { this._inNavbar = this._detectNavbar(); if (this._popper) { this._popper.update(); } } // Private - ; - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - EventHandler.on(this._element, EVENT_CLICK, function (event) { + _addEventListeners() { + EventHandler.on(this._element, EVENT_CLICK, event => { event.preventDefault(); - event.stopPropagation(); - - _this2.toggle(); + this.toggle(); }); - }; + } - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); - typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + _getConfig(config) { + config = { ...this.constructor.Default, + ...Manipulator.getDataAttributes(this._element), + ...config + }; + typeCheckConfig(NAME$7, config, this.constructor.DefaultType); if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { // Popper virtual elements require a getBoundingClientRect method - throw new TypeError(NAME$4.toUpperCase() + ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method."); + throw new TypeError(`${NAME$7.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); } return config; - }; + } - _proto._getMenuElement = function _getMenuElement() { + _getMenuElement() { return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; - }; + } - _proto._getPlacement = function _getPlacement() { - var parentDropdown = this._element.parentNode; + _getPlacement() { + const parentDropdown = this._element.parentNode; if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { return PLACEMENT_RIGHT; @@ -2273,46 +2154,41 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { } // We need to trim the value because custom properties can also include spaces - var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; } return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - }; - - _proto._detectNavbar = function _detectNavbar() { - return this._element.closest("." + CLASS_NAME_NAVBAR) !== null; - }; + } - _proto._getOffset = function _getOffset() { - var _this3 = this; + _detectNavbar() { + return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null; + } - var offset = this._config.offset; + _getOffset() { + const { + offset + } = this._config; if (typeof offset === 'string') { - return offset.split(',').map(function (val) { - return Number.parseInt(val, 10); - }); + return offset.split(',').map(val => Number.parseInt(val, 10)); } if (typeof offset === 'function') { - return function (popperData) { - return offset(popperData, _this3._element); - }; + return popperData => offset(popperData, this._element); } return offset; - }; + } - _proto._getPopperConfig = function _getPopperConfig() { - var defaultBsPopperConfig = { + _getPopperConfig() { + const defaultBsPopperConfig = { placement: this._getPlacement(), modifiers: [{ name: 'preventOverflow', options: { - altBoundary: this._config.flip, boundary: this._config.boundary } }, { @@ -2330,14 +2206,16 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { }]; } - return _extends({}, defaultBsPopperConfig, typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig); + return { ...defaultBsPopperConfig, + ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) + }; } // Static - ; - Dropdown.dropdownInterface = function dropdownInterface(element, config) { - var data = Data.getData(element, DATA_KEY$4); - var _config = typeof config === 'object' ? config : null; + static dropdownInterface(element, config) { + let data = Data.get(element, DATA_KEY$7); + + const _config = typeof config === 'object' ? config : null; if (!data) { data = new Dropdown(element, _config); @@ -2345,29 +2223,35 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + throw new TypeError(`No method named "${config}"`); } data[config](); } - }; + } - Dropdown.jQueryInterface = function jQueryInterface(config) { + static jQueryInterface(config) { return this.each(function () { Dropdown.dropdownInterface(this, config); }); - }; + } - Dropdown.clearMenus = function clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) { - return; + static clearMenus(event) { + if (event) { + if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY) { + return; + } + + if (/input|select|textarea|form/i.test(event.target.tagName)) { + return; + } } - var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2); + const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3); - for (var i = 0, len = toggles.length; i < len; i++) { - var context = Data.getData(toggles[i], DATA_KEY$4); - var relatedTarget = { + for (let i = 0, len = toggles.length; i < len; i++) { + const context = Data.get(toggles[i], DATA_KEY$7); + const relatedTarget = { relatedTarget: toggles[i] }; @@ -2379,17 +2263,25 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { continue; } - var dropdownMenu = context._menu; + const dropdownMenu = context._menu; - if (!toggles[i].classList.contains(CLASS_NAME_SHOW$2)) { + if (!toggles[i].classList.contains(CLASS_NAME_SHOW$6)) { continue; } - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) { - continue; + if (event) { + // Don't close the menu if the clicked element or one of its parents is the dropdown button + if ([context._element].some(element => event.composedPath().includes(element))) { + continue; + } // Tab navigation through the dropdown menu shouldn't close the menu + + + if (event.type === 'keyup' && event.key === TAB_KEY && dropdownMenu.contains(event.target)) { + continue; + } } - var hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE$1, relatedTarget); + const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE$4, relatedTarget); if (hideEvent.defaultPrevented) { continue; @@ -2398,11 +2290,7 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) { - return EventHandler.off(elem, 'mouseover', null, noop()); - }); + [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', null, noop())); } toggles[i].setAttribute('aria-expanded', 'false'); @@ -2411,18 +2299,18 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { context._popper.destroy(); } - dropdownMenu.classList.remove(CLASS_NAME_SHOW$2); - toggles[i].classList.remove(CLASS_NAME_SHOW$2); + dropdownMenu.classList.remove(CLASS_NAME_SHOW$6); + toggles[i].classList.remove(CLASS_NAME_SHOW$6); Manipulator.removeDataAttribute(dropdownMenu, 'popper'); - EventHandler.trigger(toggles[i], EVENT_HIDDEN$1, relatedTarget); + EventHandler.trigger(toggles[i], EVENT_HIDDEN$4, relatedTarget); } - }; + } - Dropdown.getParentFromElement = function getParentFromElement(element) { + static getParentFromElement(element) { return getElementFromSelector(element) || element.parentNode; - }; + } - Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) { + static dataApiKeydownHandler(event) { // If not input/textarea: // - And not a key in REGEXP_KEYDOWN => not a dropdown command // If input/textarea: @@ -2430,7 +2318,7 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { // - If key is other than escape // - If key is not up or down => not a dropdown command // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { + if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { return; } @@ -2441,21 +2329,19 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { return; } - var parent = Dropdown.getParentFromElement(this); - var isActive = this.classList.contains(CLASS_NAME_SHOW$2); + const parent = Dropdown.getParentFromElement(this); + const isActive = this.classList.contains(CLASS_NAME_SHOW$6); - if (event.key === ESCAPE_KEY) { - var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0]; + if (event.key === ESCAPE_KEY$2) { + const button = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0]; button.focus(); Dropdown.clearMenus(); return; } if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) { - var _button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0]; - - _button.click(); - + const button = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0]; + button.click(); return; } @@ -2464,13 +2350,13 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { return; } - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible); + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible); if (!items.length) { return; } - var index = items.indexOf(event.target); // Up + let index = items.indexOf(event.target); // Up if (event.key === ARROW_UP_KEY && index > 0) { index--; @@ -2484,27 +2370,9 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { index = index === -1 ? 0 : index; items[index].focus(); - }; - - _createClass(Dropdown, null, [{ - key: "Default", - get: function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$4; - } - }]); + } - return Dropdown; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -2512,17 +2380,13 @@ var Dropdown = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler); +EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus); +EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { +EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { event.preventDefault(); - event.stopPropagation(); - Dropdown.dropdownInterface(this, 'toggle'); -}); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - return e.stopPropagation(); + Dropdown.dropdownInterface(this); }); /** * ------------------------------------------------------------------------ @@ -2531,98 +2395,103 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function * add .Dropdown to jQuery only if jQuery is present */ -defineJQueryPlugin(NAME$4, Dropdown); +defineJQueryPlugin(NAME$7, Dropdown); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$5 = 'modal'; -var DATA_KEY$5 = 'bs.modal'; -var EVENT_KEY$5 = "." + DATA_KEY$5; -var DATA_API_KEY$5 = '.data-api'; -var ESCAPE_KEY$1 = 'Escape'; -var Default$3 = { +const NAME$6 = 'modal'; +const DATA_KEY$6 = 'bs.modal'; +const EVENT_KEY$6 = `.${DATA_KEY$6}`; +const DATA_API_KEY$3 = '.data-api'; +const ESCAPE_KEY$1 = 'Escape'; +const Default$5 = { backdrop: true, keyboard: true, focus: true }; -var DefaultType$3 = { +const DefaultType$5 = { backdrop: '(boolean|string)', keyboard: 'boolean', focus: 'boolean' }; -var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; -var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; -var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; -var EVENT_SHOW$2 = "show" + EVENT_KEY$5; -var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; -var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; -var EVENT_RESIZE = "resize" + EVENT_KEY$5; -var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; -var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; -var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; -var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; -var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; -var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; -var CLASS_NAME_BACKDROP = 'modal-backdrop'; -var CLASS_NAME_OPEN = 'modal-open'; -var CLASS_NAME_FADE$1 = 'fade'; -var CLASS_NAME_SHOW$3 = 'show'; -var CLASS_NAME_STATIC = 'modal-static'; -var SELECTOR_DIALOG = '.modal-dialog'; -var SELECTOR_MODAL_BODY = '.modal-body'; -var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]'; -var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; -var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; -var SELECTOR_STICKY_CONTENT = '.sticky-top'; +const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`; +const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`; +const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`; +const EVENT_SHOW$3 = `show${EVENT_KEY$6}`; +const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`; +const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$6}`; +const EVENT_RESIZE = `resize${EVENT_KEY$6}`; +const EVENT_CLICK_DISMISS$2 = `click.dismiss${EVENT_KEY$6}`; +const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$6}`; +const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`; +const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`; +const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; +const CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; +const CLASS_NAME_BACKDROP = 'modal-backdrop'; +const CLASS_NAME_OPEN = 'modal-open'; +const CLASS_NAME_FADE$4 = 'fade'; +const CLASS_NAME_SHOW$5 = 'show'; +const CLASS_NAME_STATIC = 'modal-static'; +const SELECTOR_DIALOG = '.modal-dialog'; +const SELECTOR_MODAL_BODY = '.modal-body'; +const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; +const SELECTOR_DATA_DISMISS$2 = '[data-bs-dismiss="modal"]'; +const SELECTOR_FIXED_CONTENT$1 = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; +const SELECTOR_STICKY_CONTENT$1 = '.sticky-top'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Modal = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Modal, _BaseComponent); - - function Modal(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element); - _this._backdrop = null; - _this._isShown = false; - _this._isBodyOverflowing = false; - _this._ignoreBackdropClick = false; - _this._isTransitioning = false; - _this._scrollbarWidth = 0; - return _this; +class Modal extends BaseComponent { + constructor(element, config) { + super(element); + this._config = this._getConfig(config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollbarWidth = 0; } // Getters - var _proto = Modal.prototype; + static get Default() { + return Default$5; + } - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; + static get DATA_KEY() { + return DATA_KEY$6; + } // Public - _proto.show = function show(relatedTarget) { - var _this2 = this; + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { if (this._isShown || this._isTransitioning) { return; } - if (this._element.classList.contains(CLASS_NAME_FADE$1)) { + if (this._isAnimated()) { this._isTransitioning = true; } - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { - relatedTarget: relatedTarget + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget }); if (this._isShown || showEvent.defaultPrevented) { @@ -2641,25 +2510,19 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._setResizeEvent(); - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this2.hide(event); - }); - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { - EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) { - if (event.target === _this2._element) { - _this2._ignoreBackdropClick = true; + EventHandler.on(this._element, EVENT_CLICK_DISMISS$2, SELECTOR_DATA_DISMISS$2, event => this.hide(event)); + EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { + EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => { + if (event.target === this._element) { + this._ignoreBackdropClick = true; } }); }); - this._showBackdrop(function () { - return _this2._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this3 = this; + this._showBackdrop(() => this._showElement(relatedTarget)); + } + hide(event) { if (event) { event.preventDefault(); } @@ -2668,7 +2531,7 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { return; } - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); if (hideEvent.defaultPrevented) { return; @@ -2676,9 +2539,9 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._isShown = false; - var transition = this._element.classList.contains(CLASS_NAME_FADE$1); + const isAnimated = this._isAnimated(); - if (transition) { + if (isAnimated) { this._isTransitioning = true; } @@ -2686,38 +2549,32 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._setResizeEvent(); - EventHandler.off(document, EVENT_FOCUSIN); + EventHandler.off(document, EVENT_FOCUSIN$1); - this._element.classList.remove(CLASS_NAME_SHOW$3); + this._element.classList.remove(CLASS_NAME_SHOW$5); - EventHandler.off(this._element, EVENT_CLICK_DISMISS); + EventHandler.off(this._element, EVENT_CLICK_DISMISS$2); EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, 'transitionend', function (event) { - return _this3._hideModal(event); - }); + if (isAnimated) { + const transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, 'transitionend', event => this._hideModal(event)); emulateTransitionEnd(this._element, transitionDuration); } else { this._hideModal(); } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return EventHandler.off(htmlElement, EVENT_KEY$5); - }); + } - _BaseComponent.prototype.dispose.call(this); + dispose() { + [window, this._element, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6)); + super.dispose(); /** * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` * Do not move `document` in `htmlElements` array * It will remove `EVENT_CLICK_DATA_API` event that should remain */ - - EventHandler.off(document, EVENT_FOCUSIN); + EventHandler.off(document, EVENT_FOCUSIN$1); this._config = null; this._dialog = null; this._backdrop = null; @@ -2726,25 +2583,25 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._ignoreBackdropClick = null; this._isTransitioning = null; this._scrollbarWidth = null; - }; + } - _proto.handleUpdate = function handleUpdate() { + handleUpdate() { this._adjustDialog(); } // Private - ; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; + _getConfig(config) { + config = { ...Default$5, + ...config + }; + typeCheckConfig(NAME$6, config, DefaultType$5); + return config; + } - var transition = this._element.classList.contains(CLASS_NAME_FADE$1); + _showElement(relatedTarget) { + const isAnimated = this._isAnimated(); - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { // Don't move modal's DOM position @@ -2765,81 +2622,70 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { modalBody.scrollTop = 0; } - if (transition) { + if (isAnimated) { reflow(this._element); } - this._element.classList.add(CLASS_NAME_SHOW$3); + this._element.classList.add(CLASS_NAME_SHOW$5); if (this._config.focus) { this._enforceFocus(); } - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); + const transitionComplete = () => { + if (this._config.focus) { + this._element.focus(); } - _this4._isTransitioning = false; - EventHandler.trigger(_this4._element, EVENT_SHOWN$2, { - relatedTarget: relatedTarget + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget }); }; - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._dialog); + if (isAnimated) { + const transitionDuration = getTransitionDurationFromElement(this._dialog); EventHandler.one(this._dialog, 'transitionend', transitionComplete); emulateTransitionEnd(this._dialog, transitionDuration); } else { transitionComplete(); } - }; + } - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; + _enforceFocus() { + EventHandler.off(document, EVENT_FOCUSIN$1); // guard against infinite focus loop - EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) { - _this5._element.focus(); + EventHandler.on(document, EVENT_FOCUSIN$1, event => { + if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) { + this._element.focus(); } }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; + } + _setEscapeEvent() { if (this._isShown) { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (this._config.keyboard && event.key === ESCAPE_KEY$1) { event.preventDefault(); - - _this6.hide(); - } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - _this6._triggerBackdropTransition(); + this.hide(); + } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) { + this._triggerBackdropTransition(); } }); } else { EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS); } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; + } + _setResizeEvent() { if (this._isShown) { - EventHandler.on(window, EVENT_RESIZE, function () { - return _this7._adjustDialog(); - }); + EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog()); } else { EventHandler.off(window, EVENT_RESIZE); } - }; - - _proto._hideModal = function _hideModal() { - var _this8 = this; + } + _hideModal() { this._element.style.display = 'none'; this._element.setAttribute('aria-hidden', true); @@ -2850,40 +2696,38 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._isTransitioning = false; - this._showBackdrop(function () { + this._showBackdrop(() => { document.body.classList.remove(CLASS_NAME_OPEN); - _this8._resetAdjustments(); + this._resetAdjustments(); - _this8._resetScrollbar(); + this._resetScrollbar(); - EventHandler.trigger(_this8._element, EVENT_HIDDEN$2); + EventHandler.trigger(this._element, EVENT_HIDDEN$3); }); - }; + } - _proto._removeBackdrop = function _removeBackdrop() { + _removeBackdrop() { this._backdrop.parentNode.removeChild(this._backdrop); this._backdrop = null; - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; + } - var animate = this._element.classList.contains(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : ''; + _showBackdrop(callback) { + const isAnimated = this._isAnimated(); if (this._isShown && this._config.backdrop) { this._backdrop = document.createElement('div'); this._backdrop.className = CLASS_NAME_BACKDROP; - if (animate) { - this._backdrop.classList.add(animate); + if (isAnimated) { + this._backdrop.classList.add(CLASS_NAME_FADE$4); } document.body.appendChild(this._backdrop); - EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; + EventHandler.on(this._element, EVENT_CLICK_DISMISS$2, event => { + if (this._ignoreBackdropClick) { + this._ignoreBackdropClick = false; return; } @@ -2891,59 +2735,60 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { return; } - if (_this9._config.backdrop === 'static') { - _this9._triggerBackdropTransition(); + if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); } else { - _this9.hide(); + this.hide(); } }); - if (animate) { + if (isAnimated) { reflow(this._backdrop); } - this._backdrop.classList.add(CLASS_NAME_SHOW$3); + this._backdrop.classList.add(CLASS_NAME_SHOW$5); - if (!animate) { + if (!isAnimated) { callback(); return; } - var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); + const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); EventHandler.one(this._backdrop, 'transitionend', callback); emulateTransitionEnd(this._backdrop, backdropTransitionDuration); } else if (!this._isShown && this._backdrop) { - this._backdrop.classList.remove(CLASS_NAME_SHOW$3); + this._backdrop.classList.remove(CLASS_NAME_SHOW$5); - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); + const callbackRemove = () => { + this._removeBackdrop(); callback(); }; - if (this._element.classList.contains(CLASS_NAME_FADE$1)) { - var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - + if (isAnimated) { + const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); EventHandler.one(this._backdrop, 'transitionend', callbackRemove); - emulateTransitionEnd(this._backdrop, _backdropTransitionDuration); + emulateTransitionEnd(this._backdrop, backdropTransitionDuration); } else { callbackRemove(); } } else { callback(); } - }; + } - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this10 = this; + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$4); + } - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); if (hideEvent.defaultPrevented) { return; } - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; if (!isModalOverflowing) { this._element.style.overflowY = 'hidden'; @@ -2951,16 +2796,16 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { this._element.classList.add(CLASS_NAME_STATIC); - var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); + const modalTransitionDuration = getTransitionDurationFromElement(this._dialog); EventHandler.off(this._element, 'transitionend'); - EventHandler.one(this._element, 'transitionend', function () { - _this10._element.classList.remove(CLASS_NAME_STATIC); + EventHandler.one(this._element, 'transitionend', () => { + this._element.classList.remove(CLASS_NAME_STATIC); if (!isModalOverflowing) { - EventHandler.one(_this10._element, 'transitionend', function () { - _this10._element.style.overflowY = ''; + EventHandler.one(this._element, 'transitionend', () => { + this._element.style.overflowY = ''; }); - emulateTransitionEnd(_this10._element, modalTransitionDuration); + emulateTransitionEnd(this._element, modalTransitionDuration); } }); emulateTransitionEnd(this._element, modalTransitionDuration); @@ -2969,71 +2814,67 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { } // ---------------------------------------------------------------------- // the following methods are used to handle overflowing modals // ---------------------------------------------------------------------- - ; - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing && !isRTL() || this._isBodyOverflowing && !isModalOverflowing && isRTL()) { + this._element.style.paddingLeft = `${this._scrollbarWidth}px`; } - if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; + if (this._isBodyOverflowing && !isModalOverflowing && !isRTL() || !this._isBodyOverflowing && isModalOverflowing && isRTL()) { + this._element.style.paddingRight = `${this._scrollbarWidth}px`; } - }; + } - _proto._resetAdjustments = function _resetAdjustments() { + _resetAdjustments() { this._element.style.paddingLeft = ''; this._element.style.paddingRight = ''; - }; + } - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); + _checkScrollbar() { + const rect = document.body.getBoundingClientRect(); this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this11 = this; + } + _setScrollbar() { if (this._isBodyOverflowing) { - this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', function (calculatedValue) { - return calculatedValue + _this11._scrollbarWidth; - }); + this._setElementAttributes(SELECTOR_FIXED_CONTENT$1, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth); - this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', function (calculatedValue) { - return calculatedValue - _this11._scrollbarWidth; - }); + this._setElementAttributes(SELECTOR_STICKY_CONTENT$1, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth); - this._setElementAttributes('body', 'paddingRight', function (calculatedValue) { - return calculatedValue + _this11._scrollbarWidth; - }); + this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth); } document.body.classList.add(CLASS_NAME_OPEN); - }; + } - _proto._setElementAttributes = function _setElementAttributes(selector, styleProp, callback) { - SelectorEngine.find(selector).forEach(function (element) { - var actualValue = element.style[styleProp]; - var calculatedValue = window.getComputedStyle(element)[styleProp]; + _setElementAttributes(selector, styleProp, callback) { + SelectorEngine.find(selector).forEach(element => { + if (element !== document.body && window.innerWidth > element.clientWidth + this._scrollbarWidth) { + return; + } + + const actualValue = element.style[styleProp]; + const calculatedValue = window.getComputedStyle(element)[styleProp]; Manipulator.setDataAttribute(element, styleProp, actualValue); element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'; }); - }; + } - _proto._resetScrollbar = function _resetScrollbar() { - this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); + _resetScrollbar() { + this._resetElementAttributes(SELECTOR_FIXED_CONTENT$1, 'paddingRight'); - this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); + this._resetElementAttributes(SELECTOR_STICKY_CONTENT$1, 'marginRight'); this._resetElementAttributes('body', 'paddingRight'); - }; + } - _proto._resetElementAttributes = function _resetElementAttributes(selector, styleProp) { - SelectorEngine.find(selector).forEach(function (element) { - var value = Manipulator.getDataAttribute(element, styleProp); + _resetElementAttributes(selector, styleProp) { + SelectorEngine.find(selector).forEach(element => { + const value = Manipulator.getDataAttribute(element, styleProp); if (typeof value === 'undefined' && element === document.body) { element.style[styleProp] = ''; @@ -3042,24 +2883,26 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { element.style[styleProp] = value; } }); - }; + } - _proto._getScrollbarWidth = function _getScrollbarWidth() { + _getScrollbarWidth() { // thx d.walsh - var scrollDiv = document.createElement('div'); + const scrollDiv = document.createElement('div'); scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; document.body.removeChild(scrollDiv); return scrollbarWidth; } // Static - ; - Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$5); - var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + let data = Data.get(this, DATA_KEY$6); + const _config = { ...Default$5, + ...Manipulator.getDataAttributes(this), + ...(typeof config === 'object' && config ? config : {}) + }; if (!data) { data = new Modal(this, _config); @@ -3067,28 +2910,15 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + throw new TypeError(`No method named "${config}"`); } data[config](relatedTarget); } }); - }; - - _createClass(Modal, null, [{ - key: "Default", - get: function get() { - return Default$3; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$5; - } - }]); + } - return Modal; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * Data Api implementation @@ -3096,32 +2926,31 @@ var Modal = /*#__PURE__*/function (_BaseComponent) { */ -EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) { - var _this12 = this; - - var target = getElementFromSelector(this); +EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = getElementFromSelector(this); if (this.tagName === 'A' || this.tagName === 'AREA') { event.preventDefault(); } - EventHandler.one(target, EVENT_SHOW$2, function (showEvent) { + EventHandler.one(target, EVENT_SHOW$3, showEvent => { if (showEvent.defaultPrevented) { // only register focus restorer if modal will actually get shown return; } - EventHandler.one(target, EVENT_HIDDEN$2, function () { - if (isVisible(_this12)) { - _this12.focus(); + EventHandler.one(target, EVENT_HIDDEN$3, () => { + if (isVisible(this)) { + this.focus(); } }); }); - var data = Data.getData(target, DATA_KEY$5); + let data = Data.get(target, DATA_KEY$6); if (!data) { - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - + const config = { ...Manipulator.getDataAttributes(target), + ...Manipulator.getDataAttributes(this) + }; data = new Modal(target, config); } @@ -3131,36 +2960,362 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, functi * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present + * add .Modal to jQuery only if jQuery is present + */ + +defineJQueryPlugin(NAME$6, Modal); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): util/scrollBar.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ +const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed'; +const SELECTOR_STICKY_CONTENT = '.sticky-top'; + +const getWidth = () => { + // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); +}; + +const hide = (width = getWidth()) => { + document.body.style.overflow = 'hidden'; + + _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); + + _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); + + _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width); +}; + +const _setElementAttributes = (selector, styleProp, callback) => { + const scrollbarWidth = getWidth(); + SelectorEngine.find(selector).forEach(element => { + if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + + const actualValue = element.style[styleProp]; + const calculatedValue = window.getComputedStyle(element)[styleProp]; + Manipulator.setDataAttribute(element, styleProp, actualValue); + element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'; + }); +}; + +const reset = () => { + document.body.style.overflow = 'auto'; + + _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); + + _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); + + _resetElementAttributes('body', 'paddingRight'); +}; + +const _resetElementAttributes = (selector, styleProp) => { + SelectorEngine.find(selector).forEach(element => { + const value = Manipulator.getDataAttribute(element, styleProp); + + if (typeof value === 'undefined' && element === document.body) { + element.style.removeProperty(styleProp); + } else { + Manipulator.removeDataAttribute(element, styleProp); + element.style[styleProp] = value; + } + }); +}; + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): offcanvas.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$5 = 'offcanvas'; +const DATA_KEY$5 = 'bs.offcanvas'; +const EVENT_KEY$5 = `.${DATA_KEY$5}`; +const DATA_API_KEY$2 = '.data-api'; +const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`; +const ESCAPE_KEY = 'Escape'; +const Default$4 = { + backdrop: true, + keyboard: true, + scroll: false +}; +const DefaultType$4 = { + backdrop: 'boolean', + keyboard: 'boolean', + scroll: 'boolean' +}; +const CLASS_NAME_BACKDROP_BODY = 'offcanvas-backdrop'; +const CLASS_NAME_SHOW$4 = 'show'; +const CLASS_NAME_TOGGLING = 'offcanvas-toggling'; +const OPEN_SELECTOR = '.offcanvas.show'; +const ACTIVE_SELECTOR = `${OPEN_SELECTOR}, .${CLASS_NAME_TOGGLING}`; +const EVENT_SHOW$2 = `show${EVENT_KEY$5}`; +const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`; +const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`; +const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`; +const EVENT_FOCUSIN = `focusin${EVENT_KEY$5}`; +const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`; +const EVENT_CLICK_DISMISS$1 = `click.dismiss${EVENT_KEY$5}`; +const SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="offcanvas"]'; +const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; +/** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element); + this._config = this._getConfig(config); + this._isShown = false; + + this._addEventListeners(); + } // Getters + + + static get Default() { + return Default$4; + } + + static get DATA_KEY() { + return DATA_KEY$5; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown) { + return; + } + + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { + relatedTarget + }); + + if (showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + this._element.style.visibility = 'visible'; + + if (this._config.backdrop) { + document.body.classList.add(CLASS_NAME_BACKDROP_BODY); + } + + if (!this._config.scroll) { + hide(); + } + + this._element.classList.add(CLASS_NAME_TOGGLING); + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + this._element.classList.add(CLASS_NAME_SHOW$4); + + const completeCallBack = () => { + this._element.classList.remove(CLASS_NAME_TOGGLING); + + EventHandler.trigger(this._element, EVENT_SHOWN$2, { + relatedTarget + }); + + this._enforceFocusOnElement(this._element); + }; + + setTimeout(completeCallBack, getTransitionDurationFromElement(this._element)); + } + + hide() { + if (!this._isShown) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); + + if (hideEvent.defaultPrevented) { + return; + } + + this._element.classList.add(CLASS_NAME_TOGGLING); + + EventHandler.off(document, EVENT_FOCUSIN); + + this._element.blur(); + + this._isShown = false; + + this._element.classList.remove(CLASS_NAME_SHOW$4); + + const completeCallback = () => { + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + this._element.style.visibility = 'hidden'; + + if (this._config.backdrop) { + document.body.classList.remove(CLASS_NAME_BACKDROP_BODY); + } + + if (!this._config.scroll) { + reset(); + } + + EventHandler.trigger(this._element, EVENT_HIDDEN$2); + + this._element.classList.remove(CLASS_NAME_TOGGLING); + }; + + setTimeout(completeCallback, getTransitionDurationFromElement(this._element)); + } // Private + + + _getConfig(config) { + config = { ...Default$4, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$5, config, DefaultType$4); + return config; + } + + _enforceFocusOnElement(element) { + EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop + + EventHandler.on(document, EVENT_FOCUSIN, event => { + if (document !== event.target && element !== event.target && !element.contains(event.target)) { + element.focus(); + } + }); + element.focus(); + } + + _addEventListeners() { + EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, () => this.hide()); + EventHandler.on(document, 'keydown', event => { + if (this._config.keyboard && event.key === ESCAPE_KEY) { + this.hide(); + } + }); + EventHandler.on(document, EVENT_CLICK_DATA_API$1, event => { + const target = SelectorEngine.findOne(getSelectorFromElement(event.target)); + + if (!this._element.contains(event.target) && target !== this._element) { + this.hide(); + } + }); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Data.get(this, DATA_KEY$5) || new Offcanvas(this, typeof config === 'object' ? config : {}); + + if (typeof config !== 'string') { + return; + } + + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](this); + }); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = getElementFromSelector(this); + + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + EventHandler.one(target, EVENT_HIDDEN$2, () => { + // focus on trigger when it is closed + if (isVisible(this)) { + this.focus(); + } + }); // avoid conflict when clicking a toggler of an offcanvas, while another is open + + const allReadyOpen = SelectorEngine.findOne(ACTIVE_SELECTOR); + + if (allReadyOpen && allReadyOpen !== target) { + return; + } + + const data = Data.get(target, DATA_KEY$5) || new Offcanvas(target); + data.toggle(this); +}); +EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { + SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY$5) || new Offcanvas(el)).show()); +}); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ */ -defineJQueryPlugin(NAME$5, Modal); +defineJQueryPlugin(NAME$5, Offcanvas); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): util/sanitizer.js + * Bootstrap (v5.0.0-beta3): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); -var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; +const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); +const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; /** * A pattern that recognizes a commonly useful subset of URLs that are safe. * * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts */ -var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; +const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i; /** * A pattern that matches safe data URLs. Only matches image, video and audio types. * * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts */ -var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; +const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; -var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); +const allowedAttribute = (attr, allowedAttributeList) => { + const attrName = attr.nodeName.toLowerCase(); if (allowedAttributeList.includes(attrName)) { if (uriAttrs.has(attrName)) { @@ -3170,11 +3325,9 @@ var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { return true; } - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. + const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute. - for (var i = 0, len = regExp.length; i < len; i++) { + for (let i = 0, len = regExp.length; i < len; i++) { if (regExp[i].test(attrName)) { return true; } @@ -3183,7 +3336,7 @@ var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { return false; }; -var DefaultAllowlist = { +const DefaultAllowlist = { // Global attributes allowed on any supplied element below. '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], a: ['target', 'href', 'title', 'rel'], @@ -3217,8 +3370,6 @@ var DefaultAllowlist = { ul: [] }; function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - var _ref; - if (!unsafeHtml.length) { return unsafeHtml; } @@ -3227,55 +3378,51 @@ function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { return sanitizeFn(unsafeHtml); } - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var allowlistKeys = Object.keys(allowList); + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const allowlistKeys = Object.keys(allowList); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); - var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*')); - - var _loop = function _loop(i, len) { - var _ref2; - - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); + for (let i = 0, len = elements.length; i < len; i++) { + const el = elements[i]; + const elName = el.nodeName.toLowerCase(); if (!allowlistKeys.includes(elName)) { el.parentNode.removeChild(el); - return "continue"; + continue; } - var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes); - - var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []); - attributeList.forEach(function (attr) { + const attributeList = [].concat(...el.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []); + attributeList.forEach(attr => { if (!allowedAttribute(attr, allowedAttributes)) { el.removeAttribute(attr.nodeName); } }); - }; - - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); - - if (_ret === "continue") continue; } return createdDocument.body.innerHTML; } +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$6 = 'tooltip'; -var DATA_KEY$6 = 'bs.tooltip'; -var EVENT_KEY$6 = "." + DATA_KEY$6; -var CLASS_PREFIX = 'bs-tooltip'; -var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); -var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); -var DefaultType$4 = { +const NAME$4 = 'tooltip'; +const DATA_KEY$4 = 'bs.tooltip'; +const EVENT_KEY$4 = `.${DATA_KEY$4}`; +const CLASS_PREFIX$1 = 'bs-tooltip'; +const BSCLS_PREFIX_REGEX$1 = new RegExp(`(^|\\s)${CLASS_PREFIX$1}\\S+`, 'g'); +const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); +const DefaultType$3 = { animation: 'boolean', template: 'string', title: '(string|element|function)', @@ -3294,14 +3441,14 @@ var DefaultType$4 = { allowList: 'object', popperConfig: '(null|object|function)' }; -var AttachmentMap = { +const AttachmentMap = { AUTO: 'auto', TOP: 'top', - RIGHT: isRTL ? 'left' : 'right', + RIGHT: isRTL() ? 'left' : 'right', BOTTOM: 'bottom', - LEFT: isRTL ? 'right' : 'left' + LEFT: isRTL() ? 'right' : 'left' }; -var Default$4 = { +const Default$3 = { animation: true, template: '', trigger: 'hover focus', @@ -3320,83 +3467,99 @@ var Default$4 = { allowList: DefaultAllowlist, popperConfig: null }; -var Event$1 = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 +const Event$2 = { + HIDE: `hide${EVENT_KEY$4}`, + HIDDEN: `hidden${EVENT_KEY$4}`, + SHOW: `show${EVENT_KEY$4}`, + SHOWN: `shown${EVENT_KEY$4}`, + INSERTED: `inserted${EVENT_KEY$4}`, + CLICK: `click${EVENT_KEY$4}`, + FOCUSIN: `focusin${EVENT_KEY$4}`, + FOCUSOUT: `focusout${EVENT_KEY$4}`, + MOUSEENTER: `mouseenter${EVENT_KEY$4}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$4}` }; -var CLASS_NAME_FADE$2 = 'fade'; -var CLASS_NAME_MODAL = 'modal'; -var CLASS_NAME_SHOW$4 = 'show'; -var HOVER_STATE_SHOW = 'show'; -var HOVER_STATE_OUT = 'out'; -var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; -var TRIGGER_HOVER = 'hover'; -var TRIGGER_FOCUS = 'focus'; -var TRIGGER_CLICK = 'click'; -var TRIGGER_MANUAL = 'manual'; +const CLASS_NAME_FADE$3 = 'fade'; +const CLASS_NAME_MODAL = 'modal'; +const CLASS_NAME_SHOW$3 = 'show'; +const HOVER_STATE_SHOW = 'show'; +const HOVER_STATE_OUT = 'out'; +const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; +const TRIGGER_HOVER = 'hover'; +const TRIGGER_FOCUS = 'focus'; +const TRIGGER_CLICK = 'click'; +const TRIGGER_MANUAL = 'manual'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Tooltip = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tooltip, _BaseComponent); - - function Tooltip(element, config) { - var _this; - +class Tooltip extends BaseComponent { + constructor(element, config) { if (typeof Popper === 'undefined') { throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); } - _this = _BaseComponent.call(this, element) || this; // private - - _this._isEnabled = true; - _this._timeout = 0; - _this._hoverState = ''; - _this._activeTrigger = {}; - _this._popper = null; // Protected + super(element); // private - _this.config = _this._getConfig(config); - _this.tip = null; + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected - _this._setListeners(); + this.config = this._getConfig(config); + this.tip = null; - return _this; + this._setListeners(); } // Getters - var _proto = Tooltip.prototype; + static get Default() { + return Default$3; + } + + static get NAME() { + return NAME$4; + } + + static get DATA_KEY() { + return DATA_KEY$4; + } + + static get Event() { + return Event$2; + } + + static get EVENT_KEY() { + return EVENT_KEY$4; + } + + static get DefaultType() { + return DefaultType$3; + } // Public + - // Public - _proto.enable = function enable() { + enable() { this._isEnabled = true; - }; + } - _proto.disable = function disable() { + disable() { this._isEnabled = false; - }; + } - _proto.toggleEnabled = function toggleEnabled() { + toggleEnabled() { this._isEnabled = !this._isEnabled; - }; + } - _proto.toggle = function toggle(event) { + toggle(event) { if (!this._isEnabled) { return; } if (event) { - var context = this._initializeOnDelegatedTarget(event); + const context = this._initializeOnDelegatedTarget(event); context._activeTrigger.click = !context._activeTrigger.click; @@ -3406,7 +3569,7 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { context._leave(null, context); } } else { - if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$4)) { + if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) { this._leave(null, this); return; @@ -3414,12 +3577,12 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { this._enter(null, this); } - }; + } - _proto.dispose = function dispose() { + dispose() { clearTimeout(this._timeout); EventHandler.off(this._element, this.constructor.EVENT_KEY); - EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); + EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler); if (this.tip && this.tip.parentNode) { this.tip.parentNode.removeChild(this.tip); @@ -3437,13 +3600,10 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { this._popper = null; this.config = null; this.tip = null; + super.dispose(); + } - _BaseComponent.prototype.dispose.call(this); - }; - - _proto.show = function show() { - var _this2 = this; - + show() { if (this._element.style.display === 'none') { throw new Error('Please use show on visible elements'); } @@ -3452,16 +3612,16 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { return; } - var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); - var shadowRoot = findShadowRoot(this._element); - var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); + const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); if (showEvent.defaultPrevented || !isInTheDom) { return; } - var tip = this.getTipElement(); - var tipId = getUID(this.constructor.NAME); + const tip = this.getTipElement(); + const tipId = getUID(this.constructor.NAME); tip.setAttribute('id', tipId); this._element.setAttribute('aria-describedby', tipId); @@ -3469,32 +3629,35 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { this.setContent(); if (this.config.animation) { - tip.classList.add(CLASS_NAME_FADE$2); + tip.classList.add(CLASS_NAME_FADE$3); } - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement; + const placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement; - var attachment = this._getAttachment(placement); + const attachment = this._getAttachment(placement); this._addAttachmentClass(attachment); - var container = this._getContainer(); + const container = this._getContainer(); - Data.setData(tip, this.constructor.DATA_KEY, this); + Data.set(tip, this.constructor.DATA_KEY, this); if (!this._element.ownerDocument.documentElement.contains(this.tip)) { container.appendChild(tip); + EventHandler.trigger(this._element, this.constructor.Event.INSERTED); + } + + if (this._popper) { + this._popper.update(); + } else { + this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); } - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment)); - tip.classList.add(CLASS_NAME_SHOW$4); - var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass; + tip.classList.add(CLASS_NAME_SHOW$3); + const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass; if (customClass) { - var _tip$classList; - - (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' ')); + tip.classList.add(...customClass.split(' ')); } // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS @@ -3502,82 +3665,78 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { if ('ontouchstart' in document.documentElement) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) { + [].concat(...document.body.children).forEach(element => { EventHandler.on(element, 'mouseover', noop()); }); } - var complete = function complete() { - var prevHoverState = _this2._hoverState; - _this2._hoverState = null; - EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN); + const complete = () => { + const prevHoverState = this._hoverState; + this._hoverState = null; + EventHandler.trigger(this._element, this.constructor.Event.SHOWN); if (prevHoverState === HOVER_STATE_OUT) { - _this2._leave(null, _this2); + this._leave(null, this); } }; - if (this.tip.classList.contains(CLASS_NAME_FADE$2)) { - var transitionDuration = getTransitionDurationFromElement(this.tip); + if (this.tip.classList.contains(CLASS_NAME_FADE$3)) { + const transitionDuration = getTransitionDurationFromElement(this.tip); EventHandler.one(this.tip, 'transitionend', complete); emulateTransitionEnd(this.tip, transitionDuration); } else { complete(); } - }; - - _proto.hide = function hide() { - var _this3 = this; + } + hide() { if (!this._popper) { return; } - var tip = this.getTipElement(); + const tip = this.getTipElement(); + + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } - var complete = function complete() { - if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { + if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { tip.parentNode.removeChild(tip); } - _this3._cleanTipClass(); + this._cleanTipClass(); - _this3._element.removeAttribute('aria-describedby'); + this._element.removeAttribute('aria-describedby'); - EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN); + EventHandler.trigger(this._element, this.constructor.Event.HIDDEN); - if (_this3._popper) { - _this3._popper.destroy(); + if (this._popper) { + this._popper.destroy(); - _this3._popper = null; + this._popper = null; } }; - var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); + const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); if (hideEvent.defaultPrevented) { return; } - tip.classList.remove(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra + tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) { - return EventHandler.off(element, 'mouseover', noop); - }); + [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop)); } this._activeTrigger[TRIGGER_CLICK] = false; this._activeTrigger[TRIGGER_FOCUS] = false; this._activeTrigger[TRIGGER_HOVER] = false; - if (this.tip.classList.contains(CLASS_NAME_FADE$2)) { - var transitionDuration = getTransitionDurationFromElement(tip); + if (this.tip.classList.contains(CLASS_NAME_FADE$3)) { + const transitionDuration = getTransitionDurationFromElement(tip); EventHandler.one(tip, 'transitionend', complete); emulateTransitionEnd(tip, transitionDuration); } else { @@ -3585,37 +3744,37 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { } this._hoverState = ''; - }; + } - _proto.update = function update() { + update() { if (this._popper !== null) { this._popper.update(); } } // Protected - ; - _proto.isWithContent = function isWithContent() { + + isWithContent() { return Boolean(this.getTitle()); - }; + } - _proto.getTipElement = function getTipElement() { + getTipElement() { if (this.tip) { return this.tip; } - var element = document.createElement('div'); + const element = document.createElement('div'); element.innerHTML = this.config.template; this.tip = element.children[0]; return this.tip; - }; + } - _proto.setContent = function setContent() { - var tip = this.getTipElement(); + setContent() { + const tip = this.getTipElement(); this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()); - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4); - }; + tip.classList.remove(CLASS_NAME_FADE$3, CLASS_NAME_SHOW$3); + } - _proto.setElementContent = function setElementContent(element, content) { + setElementContent(element, content) { if (element === null) { return; } @@ -3647,19 +3806,19 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { } else { element.textContent = content; } - }; + } - _proto.getTitle = function getTitle() { - var title = this._element.getAttribute('data-bs-original-title'); + getTitle() { + let title = this._element.getAttribute('data-bs-original-title'); if (!title) { title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title; } return title; - }; + } - _proto.updateAttachment = function updateAttachment(attachment) { + updateAttachment(attachment) { if (attachment === 'right') { return 'end'; } @@ -3670,44 +3829,38 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { return attachment; } // Private - ; - _proto._initializeOnDelegatedTarget = function _initializeOnDelegatedTarget(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); + + _initializeOnDelegatedTarget(event, context) { + const dataKey = this.constructor.DATA_KEY; + context = context || Data.get(event.delegateTarget, dataKey); if (!context) { context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); + Data.set(event.delegateTarget, dataKey, context); } return context; - }; - - _proto._getOffset = function _getOffset() { - var _this4 = this; + } - var offset = this.config.offset; + _getOffset() { + const { + offset + } = this.config; if (typeof offset === 'string') { - return offset.split(',').map(function (val) { - return Number.parseInt(val, 10); - }); + return offset.split(',').map(val => Number.parseInt(val, 10)); } if (typeof offset === 'function') { - return function (popperData) { - return offset(popperData, _this4._element); - }; + return popperData => offset(popperData, this._element); } return offset; - }; - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this5 = this; + } - var defaultBsPopperConfig = { + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { placement: attachment, modifiers: [{ name: 'flip', @@ -3728,30 +3881,30 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { }, { name: 'arrow', options: { - element: "." + this.constructor.NAME + "-arrow" + element: `.${this.constructor.NAME}-arrow` } }, { name: 'onChange', enabled: true, phase: 'afterWrite', - fn: function fn(data) { - return _this5._handlePopperPlacementChange(data); - } + fn: data => this._handlePopperPlacementChange(data) }], - onFirstUpdate: function onFirstUpdate(data) { + onFirstUpdate: data => { if (data.options.placement !== data.placement) { - _this5._handlePopperPlacementChange(data); + this._handlePopperPlacementChange(data); } } }; - return _extends({}, defaultBsPopperConfig, typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig); - }; + return { ...defaultBsPopperConfig, + ...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig) + }; + } - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment)); - }; + _addAttachmentClass(attachment) { + this.getTipElement().classList.add(`${CLASS_PREFIX$1}-${this.updateAttachment(attachment)}`); + } - _proto._getContainer = function _getContainer() { + _getContainer() { if (this.config.container === false) { return document.body; } @@ -3761,55 +3914,47 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { } return SelectorEngine.findOne(this.config.container); - }; + } - _proto._getAttachment = function _getAttachment(placement) { + _getAttachment(placement) { return AttachmentMap[placement.toUpperCase()]; - }; - - _proto._setListeners = function _setListeners() { - var _this6 = this; + } - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { + _setListeners() { + const triggers = this.config.trigger.split(' '); + triggers.forEach(trigger => { if (trigger === 'click') { - EventHandler.on(_this6._element, _this6.constructor.Event.CLICK, _this6.config.selector, function (event) { - return _this6.toggle(event); - }); + EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)); } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this6.constructor.Event.MOUSEENTER : _this6.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this6.constructor.Event.MOUSELEAVE : _this6.constructor.Event.FOCUSOUT; - EventHandler.on(_this6._element, eventIn, _this6.config.selector, function (event) { - return _this6._enter(event); - }); - EventHandler.on(_this6._element, eventOut, _this6.config.selector, function (event) { - return _this6._leave(event); - }); + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN; + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT; + EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event)); + EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event)); } }); - this._hideModalHandler = function () { - if (_this6._element) { - _this6.hide(); + this._hideModalHandler = () => { + if (this._element) { + this.hide(); } }; - EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); + EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler); if (this.config.selector) { - this.config = _extends({}, this.config, { + this.config = { ...this.config, trigger: 'manual', selector: '' - }); + }; } else { this._fixTitle(); } - }; + } - _proto._fixTitle = function _fixTitle() { - var title = this._element.getAttribute('title'); + _fixTitle() { + const title = this._element.getAttribute('title'); - var originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); + const originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); if (title || originalTitleType !== 'string') { this._element.setAttribute('data-bs-original-title', title || ''); @@ -3820,16 +3965,16 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { this._element.setAttribute('title', ''); } - }; + } - _proto._enter = function _enter(event, context) { + _enter(event, context) { context = this._initializeOnDelegatedTarget(event, context); if (event) { context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; } - if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) { + if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { context._hoverState = HOVER_STATE_SHOW; return; } @@ -3842,18 +3987,18 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { return; } - context._timeout = setTimeout(function () { + context._timeout = setTimeout(() => { if (context._hoverState === HOVER_STATE_SHOW) { context.show(); } }, context.config.delay.show); - }; + } - _proto._leave = function _leave(event, context) { + _leave(event, context) { context = this._initializeOnDelegatedTarget(event, context); if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); } if (context._isWithActiveTrigger()) { @@ -3868,26 +4013,26 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { return; } - context._timeout = setTimeout(function () { + context._timeout = setTimeout(() => { if (context._hoverState === HOVER_STATE_OUT) { context.hide(); } }, context.config.delay.hide); - }; + } - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { + _isWithActiveTrigger() { + for (const trigger in this._activeTrigger) { if (this._activeTrigger[trigger]) { return true; } } return false; - }; + } - _proto._getConfig = function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - Object.keys(dataAttributes).forEach(function (dataAttr) { + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + Object.keys(dataAttributes).forEach(dataAttr => { if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { delete dataAttributes[dataAttr]; } @@ -3897,7 +4042,10 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { config.container = config.container[0]; } - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); + config = { ...this.constructor.Default, + ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; if (typeof config.delay === 'number') { config.delay = { @@ -3914,20 +4062,20 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { config.content = config.content.toString(); } - typeCheckConfig(NAME$6, config, this.constructor.DefaultType); + typeCheckConfig(NAME$4, config, this.constructor.DefaultType); if (config.sanitize) { config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); } return config; - }; + } - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; + _getDelegateConfig() { + const config = {}; if (this.config) { - for (var key in this.config) { + for (const key in this.config) { if (this.constructor.Default[key] !== this.config[key]) { config[key] = this.config[key]; } @@ -3935,23 +4083,21 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { } return config; - }; + } - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); + _cleanTipClass() { + const tip = this.getTipElement(); + const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); + tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); } - }; + } - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - var state = popperData.state; + _handlePopperPlacementChange(popperData) { + const { + state + } = popperData; if (!state) { return; @@ -3963,13 +4109,13 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { this._addAttachmentClass(this._getAttachment(state.placement)); } // Static - ; - Tooltip.jQueryInterface = function jQueryInterface(config) { + + static jQueryInterface(config) { return this.each(function () { - var data = Data.getData(this, DATA_KEY$6); + let data = Data.get(this, DATA_KEY$4); - var _config = typeof config === 'object' && config; + const _config = typeof config === 'object' && config; if (!data && /dispose|hide/.test(config)) { return; @@ -3981,48 +4127,15 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + throw new TypeError(`No method named "${config}"`); } data[config](); } }); - }; - - _createClass(Tooltip, null, [{ - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$6; - } - }, { - key: "Event", - get: function get() { - return Event$1; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }]); + } - return Tooltip; -}(BaseComponent); +} /** * ------------------------------------------------------------------------ * jQuery @@ -4031,111 +4144,127 @@ var Tooltip = /*#__PURE__*/function (_BaseComponent) { */ -defineJQueryPlugin(NAME$6, Tooltip); +defineJQueryPlugin(NAME$4, Tooltip); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$7 = 'popover'; -var DATA_KEY$7 = 'bs.popover'; -var EVENT_KEY$7 = "." + DATA_KEY$7; -var CLASS_PREFIX$1 = 'bs-popover'; -var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); - -var Default$5 = _extends({}, Tooltip.Default, { +const NAME$3 = 'popover'; +const DATA_KEY$3 = 'bs.popover'; +const EVENT_KEY$3 = `.${DATA_KEY$3}`; +const CLASS_PREFIX = 'bs-popover'; +const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g'); +const Default$2 = { ...Tooltip.Default, placement: 'right', offset: [0, 8], trigger: 'click', content: '', template: '' -}); - -var DefaultType$5 = _extends({}, Tooltip.DefaultType, { +}; +const DefaultType$2 = { ...Tooltip.DefaultType, content: '(string|element|function)' -}); - -var Event$2 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 }; -var CLASS_NAME_FADE$3 = 'fade'; -var CLASS_NAME_SHOW$5 = 'show'; -var SELECTOR_TITLE = '.popover-header'; -var SELECTOR_CONTENT = '.popover-body'; +const Event$1 = { + HIDE: `hide${EVENT_KEY$3}`, + HIDDEN: `hidden${EVENT_KEY$3}`, + SHOW: `show${EVENT_KEY$3}`, + SHOWN: `shown${EVENT_KEY$3}`, + INSERTED: `inserted${EVENT_KEY$3}`, + CLICK: `click${EVENT_KEY$3}`, + FOCUSIN: `focusin${EVENT_KEY$3}`, + FOCUSOUT: `focusout${EVENT_KEY$3}`, + MOUSEENTER: `mouseenter${EVENT_KEY$3}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$3}` +}; +const CLASS_NAME_FADE$2 = 'fade'; +const CLASS_NAME_SHOW$2 = 'show'; +const SELECTOR_TITLE = '.popover-header'; +const SELECTOR_CONTENT = '.popover-body'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var Popover = /*#__PURE__*/function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); +class Popover extends Tooltip { + // Getters + static get Default() { + return Default$2; + } + + static get NAME() { + return NAME$3; + } + + static get DATA_KEY() { + return DATA_KEY$3; + } + + static get Event() { + return Event$1; + } - function Popover() { - return _Tooltip.apply(this, arguments) || this; + static get EVENT_KEY() { + return EVENT_KEY$3; } - var _proto = Popover.prototype; + static get DefaultType() { + return DefaultType$2; + } // Overrides + - // Overrides - _proto.isWithContent = function isWithContent() { + isWithContent() { return this.getTitle() || this._getContent(); - }; + } - _proto.setContent = function setContent() { - var tip = this.getTipElement(); // we use append for html objects to maintain js events + setContent() { + const tip = this.getTipElement(); // we use append for html objects to maintain js events this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle()); - var content = this._getContent(); + let content = this._getContent(); if (typeof content === 'function') { content = content.call(this._element); } this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content); - tip.classList.remove(CLASS_NAME_FADE$3, CLASS_NAME_SHOW$5); + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); } // Private - ; - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment)); - }; - _proto._getContent = function _getContent() { + _addAttachmentClass(attachment) { + this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`); + } + + _getContent() { return this._element.getAttribute('data-bs-content') || this.config.content; - }; + } - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); + _cleanTipClass() { + const tip = this.getTipElement(); + const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); + tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); } } // Static - ; - Popover.jQueryInterface = function jQueryInterface(config) { + + static jQueryInterface(config) { return this.each(function () { - var data = Data.getData(this, DATA_KEY$7); + let data = Data.get(this, DATA_KEY$3); - var _config = typeof config === 'object' ? config : null; + const _config = typeof config === 'object' ? config : null; if (!data && /dispose|hide/.test(config)) { return; @@ -4143,54 +4272,20 @@ var Popover = /*#__PURE__*/function (_Tooltip) { if (!data) { data = new Popover(this, _config); - Data.setData(this, DATA_KEY$7, data); + Data.set(this, DATA_KEY$3, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + throw new TypeError(`No method named "${config}"`); } data[config](); } }); - }; + } - _createClass(Popover, null, [{ - key: "Default", - get: // Getters - function get() { - return Default$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$7; - } - }, { - key: "Event", - get: function get() { - return Event$2; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - }]); - - return Popover; -}(Tooltip); +} /** * ------------------------------------------------------------------------ * jQuery @@ -4199,93 +4294,94 @@ var Popover = /*#__PURE__*/function (_Tooltip) { */ -defineJQueryPlugin(NAME$7, Popover); +defineJQueryPlugin(NAME$3, Popover); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ -var NAME$8 = 'scrollspy'; -var DATA_KEY$8 = 'bs.scrollspy'; -var EVENT_KEY$8 = "." + DATA_KEY$8; -var DATA_API_KEY$6 = '.data-api'; -var Default$6 = { +const NAME$2 = 'scrollspy'; +const DATA_KEY$2 = 'bs.scrollspy'; +const EVENT_KEY$2 = `.${DATA_KEY$2}`; +const DATA_API_KEY$1 = '.data-api'; +const Default$1 = { offset: 10, method: 'auto', target: '' }; -var DefaultType$6 = { +const DefaultType$1 = { offset: 'number', method: 'string', target: '(string|element)' }; -var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; -var EVENT_SCROLL = "scroll" + EVENT_KEY$8; -var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; -var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; -var CLASS_NAME_ACTIVE$2 = 'active'; -var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; -var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; -var SELECTOR_NAV_LINKS = '.nav-link'; -var SELECTOR_NAV_ITEMS = '.nav-item'; -var SELECTOR_LIST_ITEMS = '.list-group-item'; -var SELECTOR_DROPDOWN = '.dropdown'; -var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; -var METHOD_OFFSET = 'offset'; -var METHOD_POSITION = 'position'; +const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; +const EVENT_SCROLL = `scroll${EVENT_KEY$2}`; +const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`; +const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; +const CLASS_NAME_ACTIVE$1 = 'active'; +const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; +const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; +const SELECTOR_NAV_LINKS = '.nav-link'; +const SELECTOR_NAV_ITEMS = '.nav-item'; +const SELECTOR_LIST_ITEMS = '.list-group-item'; +const SELECTOR_DROPDOWN$1 = '.dropdown'; +const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; +const METHOD_OFFSET = 'offset'; +const METHOD_POSITION = 'position'; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ -var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(ScrollSpy, _BaseComponent); - - function ScrollSpy(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._scrollElement = element.tagName === 'BODY' ? window : element; - _this._config = _this._getConfig(config); - _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM; - _this._offsets = []; - _this._targets = []; - _this._activeTarget = null; - _this._scrollHeight = 0; - EventHandler.on(_this._scrollElement, EVENT_SCROLL, function () { - return _this._process(); - }); - - _this.refresh(); - - _this._process(); +class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element); + this._scrollElement = this._element.tagName === 'BODY' ? window : this._element; + this._config = this._getConfig(config); + this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process()); + this.refresh(); - return _this; + this._process(); } // Getters - var _proto = ScrollSpy.prototype; + static get Default() { + return Default$1; + } + + static get DATA_KEY() { + return DATA_KEY$2; + } // Public - // Public - _proto.refresh = function refresh() { - var _this2 = this; - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; + refresh() { + const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; + const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; this._offsets = []; this._targets = []; this._scrollHeight = this._getScrollHeight(); - var targets = SelectorEngine.find(this._selector); - targets.map(function (element) { - var targetSelector = getSelectorFromElement(element); - var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; + const targets = SelectorEngine.find(this._selector); + targets.map(element => { + const targetSelector = getSelectorFromElement(element); + const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; if (target) { - var targetBCR = target.getBoundingClientRect(); + const targetBCR = target.getBoundingClientRect(); if (targetBCR.width || targetBCR.height) { return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; @@ -4293,21 +4389,16 @@ var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { } return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); - }; + }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => { + this._offsets.push(item[0]); - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); + this._targets.push(item[1]); + }); + } - EventHandler.off(this._scrollElement, EVENT_KEY$8); + dispose() { + super.dispose(); + EventHandler.off(this._scrollElement, EVENT_KEY$2); this._scrollElement = null; this._config = null; this._selector = null; @@ -4316,51 +4407,55 @@ var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { this._activeTarget = null; this._scrollHeight = null; } // Private - ; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); + + _getConfig(config) { + config = { ...Default$1, + ...(typeof config === 'object' && config ? config : {}) + }; if (typeof config.target !== 'string' && isElement(config.target)) { - var id = config.target.id; + let { + id + } = config.target; if (!id) { - id = getUID(NAME$8); + id = getUID(NAME$2); config.target.id = id; } - config.target = "#" + id; + config.target = `#${id}`; } - typeCheckConfig(NAME$8, config, DefaultType$6); + typeCheckConfig(NAME$2, config, DefaultType$1); return config; - }; + } - _proto._getScrollTop = function _getScrollTop() { + _getScrollTop() { return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; + } - _proto._getScrollHeight = function _getScrollHeight() { + _getScrollHeight() { return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; + } - _proto._getOffsetHeight = function _getOffsetHeight() { + _getOffsetHeight() { return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; + } - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; + _process() { + const scrollTop = this._getScrollTop() + this._config.offset; - var scrollHeight = this._getScrollHeight(); + const scrollHeight = this._getScrollHeight(); - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); if (this._scrollHeight !== scrollHeight) { this.refresh(); } if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; + const target = this._targets[this._targets.length - 1]; if (this._activeTarget !== target) { this._activate(target); @@ -4377,43 +4472,37 @@ var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { return; } - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + for (let i = this._offsets.length; i--;) { + const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); if (isActiveTarget) { this._activate(this._targets[i]); } } - }; + } - _proto._activate = function _activate(target) { + _activate(target) { this._activeTarget = target; this._clear(); - var queries = this._selector.split(',').map(function (selector) { - return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; - }); + const queries = this._selector.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`); - var link = SelectorEngine.findOne(queries.join(',')); + const link = SelectorEngine.findOne(queries.join(',')); if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2); - link.classList.add(CLASS_NAME_ACTIVE$2); + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1); + link.classList.add(CLASS_NAME_ACTIVE$1); } else { // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE$2); - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) { + link.classList.add(CLASS_NAME_ACTIVE$1); + SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => { // Set triggered links parents as active // With both