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.bundle.js | 4362 ++++++++++++++++++----------------- dist/js/bootstrap.bundle.js.map | 2 +- dist/js/bootstrap.bundle.min.js | 4 +- dist/js/bootstrap.bundle.min.js.map | 2 +- dist/js/bootstrap.esm.js | 4038 ++++++++++++++++---------------- dist/js/bootstrap.esm.js.map | 2 +- dist/js/bootstrap.esm.min.js | 4 +- dist/js/bootstrap.esm.min.js.map | 2 +- dist/js/bootstrap.js | 4060 ++++++++++++++++---------------- dist/js/bootstrap.js.map | 2 +- dist/js/bootstrap.min.js | 4 +- dist/js/bootstrap.min.js.map | 2 +- 12 files changed, 6315 insertions(+), 6169 deletions(-) (limited to 'dist/js') diff --git a/dist/js/bootstrap.bundle.js b/dist/js/bootstrap.bundle.js index 1678cd21a7..92968f2f8d 100644 --- a/dist/js/bootstrap.bundle.js +++ b/dist/js/bootstrap.bundle.js @@ -1,5 +1,5 @@ /*! - * 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) */ @@ -9,69 +9,19 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory()); }(this, (function () { 'use strict'; - 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(); @@ -83,7 +33,7 @@ */ - var getUID = function getUID(prefix) { + const getUID = prefix => { do { prefix += Math.floor(Math.random() * MAX_UID); } while (document.getElementById(prefix)); @@ -91,11 +41,11 @@ 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 @@ -115,8 +65,8 @@ 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; @@ -125,23 +75,23 @@ 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; @@ -153,18 +103,16 @@ 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$1 = 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; @@ -172,47 +120,63 @@ } 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$1(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; } @@ -228,17 +192,14 @@ 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; @@ -247,7 +208,7 @@ return null; }; - var onDOMContentLoaded = function onDOMContentLoaded(callback) { + const onDOMContentLoaded = callback => { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', callback); } else { @@ -255,19 +216,19 @@ } }; - 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; }; @@ -277,7 +238,7 @@ /** * -------------------------------------------------------------------------- - * 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) * -------------------------------------------------------------------------- */ @@ -287,64 +248,51 @@ * 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) * -------------------------------------------------------------------------- */ @@ -354,17 +302,17 @@ * ------------------------------------------------------------------------ */ - 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 @@ -372,11 +320,11 @@ */ 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]; @@ -396,10 +344,12 @@ 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; @@ -418,15 +368,11 @@ }; } - 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; @@ -437,17 +383,17 @@ } 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; @@ -466,22 +412,18 @@ 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; @@ -491,7 +433,7 @@ } function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var fn = findHandler(events[typeEvent], handler, delegationSelector); + const fn = findHandler(events[typeEvent], handler, delegationSelector); if (!fn) { return; @@ -502,35 +444,33 @@ } 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. @@ -543,35 +483,36 @@ } 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); @@ -586,18 +527,19 @@ 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]; } + }); }); } @@ -616,86 +558,92 @@ 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); + } - return BaseComponent; - }(); + static get VERSION() { + return VERSION; + } + + } + /** + * -------------------------------------------------------------------------- + * 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); + class Alert extends BaseComponent { + // Getters + static get DATA_KEY() { + return DATA_KEY$b; + } // Public - function Alert() { - return _BaseComponent.apply(this, arguments) || this; - } - - 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; @@ -703,46 +651,42 @@ 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); @@ -752,9 +696,9 @@ data[config](this); } }); - }; + } - Alert.handleDismiss = function handleDismiss(alertInstance) { + static handleDismiss(alertInstance) { return function (event) { if (event) { event.preventDefault(); @@ -762,18 +706,9 @@ alertInstance.close(this); }; - }; - - _createClass(Alert, null, [{ - key: "DATA_KEY", - get: // Getters - function get() { - return DATA_KEY; - } - }]); + } - return Alert; - }(BaseComponent); + } /** * ------------------------------------------------------------------------ * Data Api implementation @@ -781,7 +716,7 @@ */ - 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 @@ -789,46 +724,49 @@ * 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); + class Button extends BaseComponent { + // Getters + static get DATA_KEY() { + return DATA_KEY$a; + } // Public - function Button() { - return _BaseComponent.apply(this, arguments) || this; - } - - 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); @@ -838,18 +776,9 @@ data[config](); } }); - }; - - _createClass(Button, null, [{ - key: "DATA_KEY", - get: // Getters - function get() { - return DATA_KEY$1; - } - }]); + } - return Button; - }(BaseComponent); + } /** * ------------------------------------------------------------------------ * Data Api implementation @@ -857,10 +786,10 @@ */ - 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); @@ -875,11 +804,11 @@ * 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) * -------------------------------------------------------------------------- */ @@ -904,54 +833,56 @@ } 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) * -------------------------------------------------------------------------- */ @@ -961,34 +892,23 @@ * 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)) { @@ -1000,8 +920,9 @@ return parents; }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; + + prev(element, selector) { + let previous = element.previousElementSibling; while (previous) { if (previous.matches(selector)) { @@ -1013,8 +934,9 @@ return []; }, - next: function next(element, selector) { - var next = element.nextElementSibling; + + next(element, selector) { + let next = element.nextElementSibling; while (next) { if (next.matches(selector)) { @@ -1026,24 +948,31 @@ 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, @@ -1051,7 +980,7 @@ wrap: true, touch: true }; - var DefaultType = { + const DefaultType$8 = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', @@ -1059,98 +988,98 @@ 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; } @@ -1162,9 +1091,9 @@ clearInterval(this._interval); this._interval = null; - }; + } - _proto.cycle = function cycle(event) { + cycle(event) { if (!event) { this._isPaused = false; } @@ -1179,23 +1108,19 @@ 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; } @@ -1205,15 +1130,13 @@ return; } - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - - this._slide(direction, this._items[index]); - }; + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; - _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; @@ -1221,94 +1144,72 @@ 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; @@ -1316,47 +1217,33 @@ // (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; } @@ -1364,83 +1251,75 @@ 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; @@ -1448,30 +1327,32 @@ } else { this._config.interval = this._config.defaultInterval || this._config.interval; } - }; + } + + _slide(directionOrOrder, element) { + const order = this._directionToOrder(directionOrOrder); - _proto._slide = function _slide(direction, element) { - var _this5 = this; + const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + const activeElementIndex = this._getItemIndex(activeElement); - var activeElementIndex = this._getItemIndex(activeElement); + const nextElement = element || this._getItemByOrder(order, activeElement); - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + const nextElementIndex = this._getItemIndex(nextElement); - var nextElementIndex = this._getItemIndex(nextElement); + 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; - 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 eventDirectionName = this._orderToDirection(order); - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) { + 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; @@ -1497,14 +1378,14 @@ 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, @@ -1514,8 +1395,8 @@ }); 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, @@ -1528,19 +1409,46 @@ 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); @@ -1550,7 +1458,7 @@ 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](); @@ -1558,24 +1466,25 @@ 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; @@ -1584,26 +1493,13 @@ 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 @@ -1611,12 +1507,12 @@ */ - 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)); } }); /** @@ -1626,110 +1522,112 @@ * 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); @@ -1740,38 +1638,36 @@ } } - 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); @@ -1780,7 +1676,7 @@ 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); }); @@ -1788,56 +1684,52 @@ this.setTransitioning(true); - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_COLLAPSING); + const complete = () => { + this._element.classList.remove(CLASS_NAME_COLLAPSING); - _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$1); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - _this2._element.style[dimension] = ''; - - _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"; - }; + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } - _proto.hide = function hide() { - var _this3 = this; - - 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); } @@ -1846,54 +1738,55 @@ 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)) { + if (isElement$1(parent)) { // it's a jQuery object if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { parent = parent[0]; @@ -1902,22 +1795,22 @@ 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 { @@ -1927,12 +1820,14 @@ 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; @@ -1944,33 +1839,20 @@ 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 @@ -1978,18 +1860,18 @@ */ - 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 @@ -2013,7 +1895,7 @@ * add .Collapse to jQuery only if jQuery is present */ - defineJQueryPlugin(NAME$3, Collapse); + defineJQueryPlugin(NAME$8, Collapse); var top = 'top'; var bottom = 'bottom'; @@ -2051,10 +1933,11 @@ return element ? (element.nodeName || '').toLowerCase() : null; } - /*:: import type { Window } from '../types'; */ - - /*:: declare function getWindow(node: Node | Window): Window; */ function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== '[object Window]') { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; @@ -2063,26 +1946,22 @@ return node; } - /*:: declare function isElement(node: mixed): boolean %checks(node instanceof - Element); */ - - function isElement$1(node) { + function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } - /*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof - HTMLElement); */ - function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } - /*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof - ShadowRoot); */ - function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } @@ -2116,7 +1995,7 @@ }); } - function effect(_ref2) { + function effect$2(_ref2) { var state = _ref2.state; var initialStyles = { popper: { @@ -2131,6 +2010,7 @@ reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); @@ -2165,7 +2045,7 @@ enabled: true, phase: 'write', fn: applyStyles, - effect: effect, + effect: effect$2, requires: ['computeStyles'] }; @@ -2173,14 +2053,42 @@ return placement.split('-')[0]; } - // Returns the layout rect of an element relative to its offsetParent. Layout + function getBoundingClientRect(element) { + var rect = element.getBoundingClientRect(); + return { + width: rect.width, + height: rect.height, + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + x: rect.left, + y: rect.top + }; + } + // means it doesn't take into account transforms. + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { x: element.offsetLeft, y: element.offsetTop, - width: element.offsetWidth, - height: element.offsetHeight + width: width, + height: height }; } @@ -2217,7 +2125,7 @@ function getDocumentElement(element) { // $FlowFixMe[incompatible-return]: assume body is always available - return ((isElement$1(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] element.document) || window.document).documentElement; } @@ -2230,9 +2138,8 @@ // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || // DOM Element detected - // $FlowFixMe[incompatible-return]: need a better way to handle this... - element.host || // ShadowRoot detected + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) // fallback @@ -2245,29 +2152,21 @@ return null; } - var offsetParent = element.offsetParent; - - if (offsetParent) { - var html = getDocumentElement(offsetParent); - - if (getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && getComputedStyle$1(html).position !== 'static') { - return html; - } - } - - return offsetParent; + return element.offsetParent; } // `.offsetParent` reports `null` for fixed elements, while absolute elements // return the containing block function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; var currentNode = getParentNode(element); while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') { + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { return currentNode; } else { currentNode = currentNode.parentNode; @@ -2287,7 +2186,7 @@ offsetParent = getTrueOffsetParent(offsetParent); } - if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static') { + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { return window; } @@ -2298,8 +2197,12 @@ return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } - function within(min, value, max) { - return Math.max(min, Math.min(value, max)); + var max = Math.max; + var min = Math.min; + var round = Math.round; + + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); } function getFreshSideObject() { @@ -2312,7 +2215,7 @@ } function mergePaddingObject(paddingObject) { - return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject); + return Object.assign({}, getFreshSideObject(), paddingObject); } function expandToHashMap(value, keys) { @@ -2322,11 +2225,19 @@ }, {}); } + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, - name = _ref.name; + name = _ref.name, + options = _ref.options; var arrowElement = state.elements.arrow; var popperOffsets = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); @@ -2338,7 +2249,7 @@ return; } - var paddingObject = state.modifiersData[name + "#persistent"].padding; + var paddingObject = toPaddingObject(options.padding, state); var arrowRect = getLayoutRect(arrowElement); var minProp = axis === 'y' ? top : left; var maxProp = axis === 'y' ? bottom : right; @@ -2360,12 +2271,9 @@ function effect$1(_ref2) { var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; + options = _ref2.options; var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element, - _options$padding = options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; if (arrowElement == null) { return; @@ -2386,9 +2294,6 @@ } state.elements.arrow = arrowElement; - state.modifiersData[name + "#persistent"] = { - padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)) - }; } // eslint-disable-next-line import/no-unused-modules @@ -2417,8 +2322,8 @@ var win = window; var dpr = win.devicePixelRatio || 1; return { - x: Math.round(x * dpr) / dpr || 0, - y: Math.round(y * dpr) / dpr || 0 + x: round(round(x * dpr) / dpr) || 0, + y: round(round(y * dpr) / dpr) || 0 }; } @@ -2434,7 +2339,7 @@ adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets; - var _ref3 = roundOffsets ? roundOffsetsByDPR(offsets) : offsets, + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, @@ -2448,23 +2353,32 @@ if (adaptive) { var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; if (offsetParent === getWindow(popper)) { offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - /*:: offsetParent = (offsetParent: Element); */ + offsetParent = offsetParent; if (placement === top) { - sideY = bottom; - y -= offsetParent.clientHeight - popperRect.height; + sideY = bottom; // $FlowFixMe[prop-missing] + + y -= offsetParent[heightProp] - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left) { - sideX = right; - x -= offsetParent.clientWidth - popperRect.width; + sideX = right; // $FlowFixMe[prop-missing] + + x -= offsetParent[widthProp] - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } @@ -2476,10 +2390,10 @@ if (gpuAcceleration) { var _Object$assign; - return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } - return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } function computeStyles(_ref4) { @@ -2500,7 +2414,7 @@ }; if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive: adaptive, @@ -2509,7 +2423,7 @@ } if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.arrow, position: 'absolute', adaptive: false, @@ -2517,7 +2431,7 @@ }))); } - state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { + state.attributes.popper = Object.assign({}, state.attributes.popper, { 'data-popper-placement': state.placement }); } // eslint-disable-next-line import/no-unused-modules @@ -2535,7 +2449,7 @@ passive: true }; - function effect$2(_ref) { + function effect(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; @@ -2575,11 +2489,11 @@ enabled: true, phase: 'write', fn: function fn() {}, - effect: effect$2, + effect: effect, data: {} }; - var hash = { + var hash$1 = { left: 'right', right: 'left', bottom: 'top', @@ -2587,34 +2501,20 @@ }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; + return hash$1[matched]; }); } - var hash$1 = { + var hash = { start: 'end', end: 'start' }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function (matched) { - return hash$1[matched]; + return hash[matched]; }); } - function getBoundingClientRect(element) { - var rect = element.getBoundingClientRect(); - return { - width: rect.width, - height: rect.height, - top: rect.top, - right: rect.right, - bottom: rect.bottom, - left: rect.left, - x: rect.left, - y: rect.top - }; - } - function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; @@ -2677,16 +2577,18 @@ // of the `` and `` rect bounds if horizontally scrollable function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); var winScroll = getWindowScroll(element); - var body = element.ownerDocument.body; - var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x = -winScroll.scrollLeft + getWindowScrollBarX(element); var y = -winScroll.scrollTop; if (getComputedStyle$1(body || html).direction === 'rtl') { - x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width; + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { @@ -2728,12 +2630,14 @@ */ function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); - var isBody = getNodeName(scrollParent) === 'body'; + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); var win = getWindow(scrollParent); var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; var updatedList = list.concat(target); @@ -2742,7 +2646,7 @@ } function rectToClientRect(rect) { - return Object.assign(Object.assign({}, rect), {}, { + return Object.assign({}, rect, { left: rect.x, top: rect.y, right: rect.x + rect.width, @@ -2775,13 +2679,13 @@ var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - if (!isElement$1(clipperElement)) { + if (!isElement(clipperElement)) { return []; } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 return clippingParents.filter(function (clippingParent) { - return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; }); } // Gets the maximum area that the element is visible in due to any number of // clipping parents @@ -2793,10 +2697,10 @@ var firstClippingParent = clippingParents[0]; var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = Math.max(rect.top, accRect.top); - accRect.right = Math.min(rect.right, accRect.right); - accRect.bottom = Math.min(rect.bottom, accRect.bottom); - accRect.left = Math.max(rect.left, accRect.left); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); return accRect; }, getClientRectFromMixedType(element, firstClippingParent)); clippingRect.width = clippingRect.right - clippingRect.left; @@ -2898,7 +2802,7 @@ var referenceElement = state.elements.reference; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); var referenceClientRect = getBoundingClientRect(referenceElement); var popperOffsets = computeOffsets({ reference: referenceClientRect, @@ -2906,7 +2810,7 @@ strategy: 'absolute', placement: placement }); - var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets)); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect // 0 or negative = within the clipping rect @@ -2930,9 +2834,6 @@ return overflowOffsets; } - /*:: type OverflowsMap = { [ComputedPlacement]: number }; */ - - /*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */ function computeAutoPlacement(state, options) { if (options === void 0) { options = {}; @@ -3135,7 +3036,7 @@ }); } - function hide(_ref) { + function hide$1(_ref) { var state = _ref.state, name = _ref.name; var referenceRect = state.rects.reference; @@ -3157,26 +3058,26 @@ isReferenceHidden: isReferenceHidden, hasPopperEscaped: hasPopperEscaped }; - state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { + state.attributes.popper = Object.assign({}, state.attributes.popper, { 'data-popper-reference-hidden': isReferenceHidden, 'data-popper-escaped': hasPopperEscaped }); } // eslint-disable-next-line import/no-unused-modules - var hide$1 = { + var hide$2 = { name: 'hide', enabled: true, phase: 'main', requiresIfExists: ['preventOverflow'], - fn: hide + fn: hide$1 }; function distanceAndSkiddingToXY(placement, rects, offset) { var basePlacement = getBasePlacement(placement); var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; - var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, { + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { placement: placement })) : offset, skidding = _ref[0], @@ -3282,7 +3183,7 @@ var popperOffsets = state.modifiersData.popperOffsets; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, { + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; var data = { @@ -3294,13 +3195,13 @@ return; } - if (checkMainAxis) { + if (checkMainAxis || checkAltAxis) { var mainSide = mainAxis === 'y' ? top : left; var altSide = mainAxis === 'y' ? bottom : right; var len = mainAxis === 'y' ? 'height' : 'width'; var offset = popperOffsets[mainAxis]; - var min = popperOffsets[mainAxis] + overflow[mainSide]; - var max = popperOffsets[mainAxis] - overflow[altSide]; + var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; + var max$1 = popperOffsets[mainAxis] - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go @@ -3327,26 +3228,29 @@ var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; - var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - if (checkAltAxis) { - var _mainSide = mainAxis === 'x' ? top : left; + if (checkMainAxis) { + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _mainSide = mainAxis === 'x' ? top : left; - var _altSide = mainAxis === 'x' ? bottom : right; + var _altSide = mainAxis === 'x' ? bottom : right; - var _offset = popperOffsets[altAxis]; + var _offset = popperOffsets[altAxis]; - var _min = _offset + overflow[_mainSide]; + var _min = _offset + overflow[_mainSide]; - var _max = _offset - overflow[_altSide]; + var _max = _offset - overflow[_altSide]; - var _preventedOffset = within(_min, _offset, _max); + var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } } state.modifiersData[name] = data; @@ -3480,9 +3384,9 @@ function mergeByName(modifiers) { var merged = modifiers.reduce(function (merged, current) { var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, { - options: Object.assign(Object.assign({}, existing.options), current.options), - data: Object.assign(Object.assign({}, existing.data), current.data) + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) }) : current; return merged; }, {}); // IE11 does not support Object.values @@ -3526,7 +3430,7 @@ var state = { placement: 'bottom', orderedModifiers: [], - options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions), + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), modifiersData: {}, elements: { reference: reference, @@ -3541,9 +3445,9 @@ state: state, setOptions: function setOptions(options) { cleanupModifierEffects(); - state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options); + state.options = Object.assign({}, defaultOptions, state.options, options); state.scrollParents = { - reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], popper: listScrollParents(popper) }; // Orders the modifiers based on their dependencies and `phase` // properties @@ -3682,24 +3586,24 @@ return instance; }; } - var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules - var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; var createPopper$1 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers + defaultModifiers: defaultModifiers$1 }); // eslint-disable-next-line import/no-unused-modules - var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; - var createPopper$2 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers$1 + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$2]; + var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers }); // eslint-disable-next-line import/no-unused-modules var Popper = /*#__PURE__*/Object.freeze({ __proto__: null, popperGenerator: popperGenerator, detectOverflow: detectOverflow, - createPopperBase: createPopper, - createPopper: createPopper$2, + createPopperBase: createPopper$2, + createPopper: createPopper, createPopperLite: createPopper$1, top: top, bottom: bottom, @@ -3730,66 +3634,69 @@ computeStyles: computeStyles$1, eventListeners: eventListeners, flip: flip$1, - hide: hide$1, + hide: hide$2, offset: offset$1, popperOffsets: popperOffsets$1, preventOverflow: preventOverflow$1 }); + /** + * -------------------------------------------------------------------------- + * 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', @@ -3801,33 +3708,37 @@ * ------------------------------------------------------------------------ */ - 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(); @@ -3836,18 +3747,18 @@ } 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; @@ -3861,11 +3772,11 @@ 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; - } else if (isElement(this._config.reference)) { + } else if (isElement$1(this._config.reference)) { referenceElement = this._config.reference; // Check if it's jQuery element if (typeof this._config.reference.jquery !== 'undefined') { @@ -3875,12 +3786,10 @@ 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$2(referenceElement, this._menu, popperConfig); + const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); + this._popper = createPopper(referenceElement, this._menu, popperConfig); if (isDisplayStatic) { Manipulator.setDataAttribute(this._menu, 'popper', 'static'); @@ -3892,33 +3801,29 @@ 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; @@ -3928,18 +3833,16 @@ 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) { @@ -3947,46 +3850,47 @@ 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') { + if (typeof config.reference === 'object' && !isElement$1(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; @@ -3997,46 +3901,41 @@ } // 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 } }, { @@ -4054,14 +3953,16 @@ }]; } - 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); @@ -4069,29 +3970,35 @@ 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] }; @@ -4103,17 +4010,25 @@ 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; @@ -4122,11 +4037,7 @@ 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'); @@ -4135,18 +4046,18 @@ 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: @@ -4154,7 +4065,7 @@ // - 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; } @@ -4165,21 +4076,19 @@ 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; } @@ -4188,13 +4097,13 @@ 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--; @@ -4208,27 +4117,9 @@ 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 @@ -4236,17 +4127,13 @@ */ - 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); }); /** * ------------------------------------------------------------------------ @@ -4255,98 +4142,103 @@ * 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; + } + + static get DATA_KEY() { + return DATA_KEY$6; + } // Public - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - _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) { @@ -4365,25 +4257,19 @@ 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(); } @@ -4392,7 +4278,7 @@ return; } - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); if (hideEvent.defaultPrevented) { return; @@ -4400,9 +4286,9 @@ this._isShown = false; - var transition = this._element.classList.contains(CLASS_NAME_FADE$1); + const isAnimated = this._isAnimated(); - if (transition) { + if (isAnimated) { this._isTransitioning = true; } @@ -4410,38 +4296,32 @@ 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; @@ -4450,25 +4330,25 @@ 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 @@ -4489,81 +4369,70 @@ 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; + } - EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop + _enforceFocus() { + EventHandler.off(document, EVENT_FOCUSIN$1); // 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); @@ -4574,40 +4443,38 @@ 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; } @@ -4615,59 +4482,60 @@ 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'; @@ -4675,16 +4543,16 @@ 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); @@ -4693,71 +4561,67 @@ } // ---------------------------------------------------------------------- // 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] = ''; @@ -4766,24 +4630,26 @@ 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); @@ -4791,28 +4657,15 @@ 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 @@ -4820,32 +4673,31 @@ */ - 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); } @@ -4858,33 +4710,359 @@ * add .Modal to jQuery only if jQuery is present */ - defineJQueryPlugin(NAME$5, Modal); + defineJQueryPlugin(NAME$6, Modal); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta2): util/sanitizer.js + * Bootstrap (v5.0.0-beta3): util/scrollBar.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 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, Offcanvas); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.0-beta3): util/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + 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)) { @@ -4894,11 +5072,9 @@ 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; } @@ -4907,7 +5083,7 @@ 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'], @@ -4941,8 +5117,6 @@ ul: [] }; function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - var _ref; - if (!unsafeHtml.length) { return unsafeHtml; } @@ -4951,55 +5125,51 @@ 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)', @@ -5018,14 +5188,14 @@ 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', @@ -5044,83 +5214,99 @@ 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; @@ -5130,7 +5316,7 @@ 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; @@ -5138,12 +5324,12 @@ 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); @@ -5161,13 +5347,10 @@ 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'); } @@ -5176,16 +5359,16 @@ 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); @@ -5193,32 +5376,35 @@ 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 = createPopper(this._element, tip, this._getPopperConfig(attachment)); } - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - this._popper = createPopper$2(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 @@ -5226,82 +5412,78 @@ 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 { @@ -5309,42 +5491,42 @@ } 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; } - if (typeof content === 'object' && isElement(content)) { + if (typeof content === 'object' && isElement$1(content)) { if (content.jquery) { content = content[0]; } // content is a DOM node or a jQuery @@ -5371,19 +5553,19 @@ } 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'; } @@ -5394,44 +5576,38 @@ 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', @@ -5452,88 +5628,80 @@ }, { 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; } - if (isElement(this.config.container)) { + if (isElement$1(this.config.container)) { return this.config.container; } 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 || ''); @@ -5544,16 +5712,16 @@ 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; } @@ -5566,18 +5734,18 @@ 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()) { @@ -5592,26 +5760,26 @@ 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]; } @@ -5621,7 +5789,10 @@ 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 = { @@ -5638,20 +5809,20 @@ 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]; } @@ -5659,23 +5830,21 @@ } 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; @@ -5687,13 +5856,13 @@ 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; @@ -5705,48 +5874,15 @@ 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 @@ -5755,111 +5891,127 @@ */ - 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; + } - function Popover() { - return _Tooltip.apply(this, arguments) || this; + static get NAME() { + return NAME$3; } - var _proto = Popover.prototype; + static get DATA_KEY() { + return DATA_KEY$3; + } + + static get Event() { + return Event$1; + } + + static get EVENT_KEY() { + return EVENT_KEY$3; + } + + 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; @@ -5867,54 +6019,20 @@ 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 @@ -5923,93 +6041,94 @@ */ - 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]; @@ -6017,21 +6136,16 @@ } 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; @@ -6040,51 +6154,55 @@ this._activeTarget = null; this._scrollHeight = null; } // Private - ; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); - if (typeof config.target !== 'string' && isElement(config.target)) { - var id = config.target.id; + _getConfig(config) { + config = { ...Default$1, + ...(typeof config === 'object' && config ? config : {}) + }; + + if (typeof config.target !== 'string' && isElement$1(config.target)) { + 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); @@ -6101,43 +6219,37 @@ 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