administrate-bootstrap-theme 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/administrate-bootstrap-theme/_base.scss +14 -0
- data/app/assets/stylesheets/administrate-bootstrap-theme/components/_form.scss +16 -0
- data/lib/administrate-bootstrap-theme/version.rb +1 -1
- data/node_modules/bootstrap/LICENSE +22 -0
- data/node_modules/bootstrap/README.md +239 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.css +4997 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.rtl.css +4996 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.rtl.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.rtl.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.css +426 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.min.css +8 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.css +423 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.min.css +8 -0
- data/node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.css +4752 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.css +4743 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap.css +10819 -0
- data/node_modules/bootstrap/dist/css/bootstrap.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap.min.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap.rtl.css +10795 -0
- data/node_modules/bootstrap/dist/css/bootstrap.rtl.css.map +1 -0
- data/node_modules/bootstrap/dist/css/bootstrap.rtl.min.css +7 -0
- data/node_modules/bootstrap/dist/css/bootstrap.rtl.min.css.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.bundle.js +6714 -0
- data/node_modules/bootstrap/dist/js/bootstrap.bundle.js.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js +7 -0
- data/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.esm.js +4944 -0
- data/node_modules/bootstrap/dist/js/bootstrap.esm.js.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.esm.min.js +7 -0
- data/node_modules/bootstrap/dist/js/bootstrap.esm.min.js.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.js +4993 -0
- data/node_modules/bootstrap/dist/js/bootstrap.js.map +1 -0
- data/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
- data/node_modules/bootstrap/dist/js/bootstrap.min.js.map +1 -0
- data/node_modules/bootstrap/js/dist/alert.js +264 -0
- data/node_modules/bootstrap/js/dist/alert.js.map +1 -0
- data/node_modules/bootstrap/js/dist/base-component.js +62 -0
- data/node_modules/bootstrap/js/dist/base-component.js.map +1 -0
- data/node_modules/bootstrap/js/dist/button.js +146 -0
- data/node_modules/bootstrap/js/dist/button.js.map +1 -0
- data/node_modules/bootstrap/js/dist/carousel.js +757 -0
- data/node_modules/bootstrap/js/dist/carousel.js.map +1 -0
- data/node_modules/bootstrap/js/dist/collapse.js +551 -0
- data/node_modules/bootstrap/js/dist/collapse.js.map +1 -0
- data/node_modules/bootstrap/js/dist/dom/data.js +69 -0
- data/node_modules/bootstrap/js/dist/dom/data.js.map +1 -0
- data/node_modules/bootstrap/js/dist/dom/event-handler.js +305 -0
- data/node_modules/bootstrap/js/dist/dom/event-handler.js.map +1 -0
- data/node_modules/bootstrap/js/dist/dom/manipulator.js +89 -0
- data/node_modules/bootstrap/js/dist/dom/manipulator.js.map +1 -0
- data/node_modules/bootstrap/js/dist/dom/selector-engine.js +86 -0
- data/node_modules/bootstrap/js/dist/dom/selector-engine.js.map +1 -0
- data/node_modules/bootstrap/js/dist/dropdown.js +662 -0
- data/node_modules/bootstrap/js/dist/dropdown.js.map +1 -0
- data/node_modules/bootstrap/js/dist/modal.js +752 -0
- data/node_modules/bootstrap/js/dist/modal.js.map +1 -0
- data/node_modules/bootstrap/js/dist/offcanvas.js +509 -0
- data/node_modules/bootstrap/js/dist/offcanvas.js.map +1 -0
- data/node_modules/bootstrap/js/dist/popover.js +216 -0
- data/node_modules/bootstrap/js/dist/popover.js.map +1 -0
- data/node_modules/bootstrap/js/dist/scrollspy.js +400 -0
- data/node_modules/bootstrap/js/dist/scrollspy.js.map +1 -0
- data/node_modules/bootstrap/js/dist/tab.js +347 -0
- data/node_modules/bootstrap/js/dist/tab.js.map +1 -0
- data/node_modules/bootstrap/js/dist/toast.js +335 -0
- data/node_modules/bootstrap/js/dist/toast.js.map +1 -0
- data/node_modules/bootstrap/js/dist/tooltip.js +1055 -0
- data/node_modules/bootstrap/js/dist/tooltip.js.map +1 -0
- data/node_modules/bootstrap/js/src/alert.js +141 -0
- data/node_modules/bootstrap/js/src/base-component.js +46 -0
- data/node_modules/bootstrap/js/src/button.js +95 -0
- data/node_modules/bootstrap/js/src/carousel.js +624 -0
- data/node_modules/bootstrap/js/src/collapse.js +410 -0
- data/node_modules/bootstrap/js/src/dom/data.js +57 -0
- data/node_modules/bootstrap/js/src/dom/event-handler.js +331 -0
- data/node_modules/bootstrap/js/src/dom/manipulator.js +80 -0
- data/node_modules/bootstrap/js/src/dom/selector-engine.js +75 -0
- data/node_modules/bootstrap/js/src/dropdown.js +543 -0
- data/node_modules/bootstrap/js/src/modal.js +582 -0
- data/node_modules/bootstrap/js/src/offcanvas.js +279 -0
- data/node_modules/bootstrap/js/src/popover.js +171 -0
- data/node_modules/bootstrap/js/src/scrollspy.js +319 -0
- data/node_modules/bootstrap/js/src/tab.js +220 -0
- data/node_modules/bootstrap/js/src/toast.js +219 -0
- data/node_modules/bootstrap/js/src/tooltip.js +802 -0
- data/node_modules/bootstrap/js/src/util/index.js +253 -0
- data/node_modules/bootstrap/js/src/util/sanitizer.js +127 -0
- data/node_modules/bootstrap/js/src/util/scrollbar.js +70 -0
- data/node_modules/bootstrap/package.json +177 -0
- data/node_modules/bootstrap/scss/_accordion.scss +116 -0
- data/node_modules/bootstrap/scss/_alert.scss +57 -0
- data/node_modules/bootstrap/scss/_badge.scss +29 -0
- data/node_modules/bootstrap/scss/_breadcrumb.scss +28 -0
- data/node_modules/bootstrap/scss/_button-group.scss +139 -0
- data/node_modules/bootstrap/scss/_buttons.scss +111 -0
- data/node_modules/bootstrap/scss/_card.scss +215 -0
- data/node_modules/bootstrap/scss/_carousel.scss +229 -0
- data/node_modules/bootstrap/scss/_close.scss +40 -0
- data/node_modules/bootstrap/scss/_containers.scss +41 -0
- data/node_modules/bootstrap/scss/_dropdown.scss +246 -0
- data/node_modules/bootstrap/scss/_forms.scss +9 -0
- data/node_modules/bootstrap/scss/_functions.scss +205 -0
- data/node_modules/bootstrap/scss/_grid.scss +22 -0
- data/node_modules/bootstrap/scss/_helpers.scss +7 -0
- data/node_modules/bootstrap/scss/_images.scss +42 -0
- data/node_modules/bootstrap/scss/_list-group.scss +174 -0
- data/node_modules/bootstrap/scss/_mixins.scss +41 -0
- data/node_modules/bootstrap/scss/_modal.scss +237 -0
- data/node_modules/bootstrap/scss/_nav.scss +139 -0
- data/node_modules/bootstrap/scss/_navbar.scss +306 -0
- data/node_modules/bootstrap/scss/_offcanvas.scss +77 -0
- data/node_modules/bootstrap/scss/_pagination.scss +64 -0
- data/node_modules/bootstrap/scss/_popover.scss +158 -0
- data/node_modules/bootstrap/scss/_progress.scss +48 -0
- data/node_modules/bootstrap/scss/_reboot.scss +621 -0
- data/node_modules/bootstrap/scss/_root.scss +16 -0
- data/node_modules/bootstrap/scss/_spinners.scss +69 -0
- data/node_modules/bootstrap/scss/_tables.scss +150 -0
- data/node_modules/bootstrap/scss/_toasts.scss +51 -0
- data/node_modules/bootstrap/scss/_tooltip.scss +115 -0
- data/node_modules/bootstrap/scss/_transitions.scss +21 -0
- data/node_modules/bootstrap/scss/_type.scss +104 -0
- data/node_modules/bootstrap/scss/_utilities.scss +594 -0
- data/node_modules/bootstrap/scss/_variables.scss +1464 -0
- data/node_modules/bootstrap/scss/bootstrap-grid.scss +65 -0
- data/node_modules/bootstrap/scss/bootstrap-reboot.scss +15 -0
- data/node_modules/bootstrap/scss/bootstrap-utilities.scss +18 -0
- data/node_modules/bootstrap/scss/bootstrap.scss +52 -0
- data/node_modules/bootstrap/scss/forms/_floating-labels.scss +61 -0
- data/node_modules/bootstrap/scss/forms/_form-check.scss +152 -0
- data/node_modules/bootstrap/scss/forms/_form-control.scss +219 -0
- data/node_modules/bootstrap/scss/forms/_form-range.scss +91 -0
- data/node_modules/bootstrap/scss/forms/_form-select.scss +67 -0
- data/node_modules/bootstrap/scss/forms/_form-text.scss +11 -0
- data/node_modules/bootstrap/scss/forms/_input-group.scss +121 -0
- data/node_modules/bootstrap/scss/forms/_labels.scss +36 -0
- data/node_modules/bootstrap/scss/forms/_validation.scss +12 -0
- data/node_modules/bootstrap/scss/helpers/_clearfix.scss +3 -0
- data/node_modules/bootstrap/scss/helpers/_colored-links.scss +12 -0
- data/node_modules/bootstrap/scss/helpers/_position.scss +30 -0
- data/node_modules/bootstrap/scss/helpers/_ratio.scss +26 -0
- data/node_modules/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- data/node_modules/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- data/node_modules/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- data/node_modules/bootstrap/scss/mixins/_alert.scss +11 -0
- data/node_modules/bootstrap/scss/mixins/_border-radius.scss +78 -0
- data/node_modules/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- data/node_modules/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- data/node_modules/bootstrap/scss/mixins/_buttons.scss +133 -0
- data/node_modules/bootstrap/scss/mixins/_caret.scss +64 -0
- data/node_modules/bootstrap/scss/mixins/_clearfix.scss +9 -0
- data/node_modules/bootstrap/scss/mixins/_container.scss +9 -0
- data/node_modules/bootstrap/scss/mixins/_deprecate.scss +10 -0
- data/node_modules/bootstrap/scss/mixins/_forms.scss +134 -0
- data/node_modules/bootstrap/scss/mixins/_gradients.scss +47 -0
- data/node_modules/bootstrap/scss/mixins/_grid.scss +120 -0
- data/node_modules/bootstrap/scss/mixins/_image.scss +16 -0
- data/node_modules/bootstrap/scss/mixins/_list-group.scss +24 -0
- data/node_modules/bootstrap/scss/mixins/_lists.scss +7 -0
- data/node_modules/bootstrap/scss/mixins/_pagination.scss +31 -0
- data/node_modules/bootstrap/scss/mixins/_reset-text.scss +17 -0
- data/node_modules/bootstrap/scss/mixins/_resize.scss +6 -0
- data/node_modules/bootstrap/scss/mixins/_table-variants.scss +21 -0
- data/node_modules/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- data/node_modules/bootstrap/scss/mixins/_transition.scss +26 -0
- data/node_modules/bootstrap/scss/mixins/_utilities.scss +68 -0
- data/node_modules/bootstrap/scss/mixins/_visually-hidden.scss +29 -0
- data/node_modules/bootstrap/scss/utilities/_api.scss +47 -0
- data/node_modules/bootstrap/scss/vendor/_rfs.scss +312 -0
- metadata +182 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollspy.js","sources":["../src/util/index.js","../src/scrollspy.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, ScrollSpy)\n\nexport default ScrollSpy\n"],"names":["MAX_UID","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","getjQuery","jQuery","window","body","hasAttribute","onDOMContentLoaded","callback","readyState","addEventListener","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","offset","method","target","DefaultType","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","BaseComponent","constructor","_scrollElement","_element","tagName","_config","_getConfig","_selector","_offsets","_targets","_activeTarget","_scrollHeight","EventHandler","on","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","SelectorEngine","find","map","targetSelector","findOne","targetBCR","getBoundingClientRect","width","height","Manipulator","top","filter","item","sort","a","b","push","dispose","off","id","pageYOffset","scrollTop","scrollHeight","max","documentElement","_getOffsetHeight","innerHeight","maxScroll","length","_activate","_clear","i","isActiveTarget","queries","link","join","classList","contains","closest","add","parents","listGroup","prev","navItem","children","trigger","relatedTarget","node","remove","each","data","Data","get","spy","getDataAttributes"],"mappings":"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"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap tab.js v5.0.0-beta3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/selector-engine', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.Data, global.EventHandler, global.SelectorEngine, global.Base));
|
|
10
|
+
}(this, (function (Data, EventHandler, SelectorEngine, BaseComponent) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
15
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
17
|
+
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* Bootstrap (v5.0.0-beta3): util/index.js
|
|
22
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
23
|
+
* --------------------------------------------------------------------------
|
|
24
|
+
*/
|
|
25
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
|
26
|
+
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
27
|
+
|
|
28
|
+
const getSelector = element => {
|
|
29
|
+
let selector = element.getAttribute('data-bs-target');
|
|
30
|
+
|
|
31
|
+
if (!selector || selector === '#') {
|
|
32
|
+
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
|
|
33
|
+
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
|
|
34
|
+
// `document.querySelector` will rightfully complain it is invalid.
|
|
35
|
+
// See https://github.com/twbs/bootstrap/issues/32273
|
|
36
|
+
|
|
37
|
+
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
|
|
38
|
+
return null;
|
|
39
|
+
} // Just in case some CMS puts out a full URL with the anchor appended
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
|
|
43
|
+
hrefAttr = '#' + hrefAttr.split('#')[1];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return selector;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const getElementFromSelector = element => {
|
|
53
|
+
const selector = getSelector(element);
|
|
54
|
+
return selector ? document.querySelector(selector) : null;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const getTransitionDurationFromElement = element => {
|
|
58
|
+
if (!element) {
|
|
59
|
+
return 0;
|
|
60
|
+
} // Get transition-duration of the element
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
let {
|
|
64
|
+
transitionDuration,
|
|
65
|
+
transitionDelay
|
|
66
|
+
} = window.getComputedStyle(element);
|
|
67
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
68
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
69
|
+
|
|
70
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
71
|
+
return 0;
|
|
72
|
+
} // If multiple durations are defined, take the first
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
76
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
77
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const triggerTransitionEnd = element => {
|
|
81
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const emulateTransitionEnd = (element, duration) => {
|
|
85
|
+
let called = false;
|
|
86
|
+
const durationPadding = 5;
|
|
87
|
+
const emulatedDuration = duration + durationPadding;
|
|
88
|
+
|
|
89
|
+
function listener() {
|
|
90
|
+
called = true;
|
|
91
|
+
element.removeEventListener(TRANSITION_END, listener);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
element.addEventListener(TRANSITION_END, listener);
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
if (!called) {
|
|
97
|
+
triggerTransitionEnd(element);
|
|
98
|
+
}
|
|
99
|
+
}, emulatedDuration);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const isDisabled = element => {
|
|
103
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (element.classList.contains('disabled')) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (typeof element.disabled !== 'undefined') {
|
|
112
|
+
return element.disabled;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const reflow = element => element.offsetHeight;
|
|
119
|
+
|
|
120
|
+
const getjQuery = () => {
|
|
121
|
+
const {
|
|
122
|
+
jQuery
|
|
123
|
+
} = window;
|
|
124
|
+
|
|
125
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
126
|
+
return jQuery;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return null;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const onDOMContentLoaded = callback => {
|
|
133
|
+
if (document.readyState === 'loading') {
|
|
134
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
135
|
+
} else {
|
|
136
|
+
callback();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
const defineJQueryPlugin = (name, plugin) => {
|
|
141
|
+
onDOMContentLoaded(() => {
|
|
142
|
+
const $ = getjQuery();
|
|
143
|
+
/* istanbul ignore if */
|
|
144
|
+
|
|
145
|
+
if ($) {
|
|
146
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
147
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
148
|
+
$.fn[name].Constructor = plugin;
|
|
149
|
+
|
|
150
|
+
$.fn[name].noConflict = () => {
|
|
151
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
152
|
+
return plugin.jQueryInterface;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* --------------------------------------------------------------------------
|
|
160
|
+
* Bootstrap (v5.0.0-beta3): tab.js
|
|
161
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
162
|
+
* --------------------------------------------------------------------------
|
|
163
|
+
*/
|
|
164
|
+
/**
|
|
165
|
+
* ------------------------------------------------------------------------
|
|
166
|
+
* Constants
|
|
167
|
+
* ------------------------------------------------------------------------
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
const NAME = 'tab';
|
|
171
|
+
const DATA_KEY = 'bs.tab';
|
|
172
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
173
|
+
const DATA_API_KEY = '.data-api';
|
|
174
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
175
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
176
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
177
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
178
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
179
|
+
const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
|
|
180
|
+
const CLASS_NAME_ACTIVE = 'active';
|
|
181
|
+
const CLASS_NAME_FADE = 'fade';
|
|
182
|
+
const CLASS_NAME_SHOW = 'show';
|
|
183
|
+
const SELECTOR_DROPDOWN = '.dropdown';
|
|
184
|
+
const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
|
|
185
|
+
const SELECTOR_ACTIVE = '.active';
|
|
186
|
+
const SELECTOR_ACTIVE_UL = ':scope > li > .active';
|
|
187
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
|
|
188
|
+
const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
|
|
189
|
+
const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
|
|
190
|
+
/**
|
|
191
|
+
* ------------------------------------------------------------------------
|
|
192
|
+
* Class Definition
|
|
193
|
+
* ------------------------------------------------------------------------
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
class Tab extends BaseComponent__default['default'] {
|
|
197
|
+
// Getters
|
|
198
|
+
static get DATA_KEY() {
|
|
199
|
+
return DATA_KEY;
|
|
200
|
+
} // Public
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
show() {
|
|
204
|
+
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE) || isDisabled(this._element)) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
let previous;
|
|
209
|
+
const target = getElementFromSelector(this._element);
|
|
210
|
+
|
|
211
|
+
const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
|
|
212
|
+
|
|
213
|
+
if (listElement) {
|
|
214
|
+
const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
|
|
215
|
+
previous = SelectorEngine__default['default'].find(itemSelector, listElement);
|
|
216
|
+
previous = previous[previous.length - 1];
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const hideEvent = previous ? EventHandler__default['default'].trigger(previous, EVENT_HIDE, {
|
|
220
|
+
relatedTarget: this._element
|
|
221
|
+
}) : null;
|
|
222
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
|
|
223
|
+
relatedTarget: previous
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
this._activate(this._element, listElement);
|
|
231
|
+
|
|
232
|
+
const complete = () => {
|
|
233
|
+
EventHandler__default['default'].trigger(previous, EVENT_HIDDEN, {
|
|
234
|
+
relatedTarget: this._element
|
|
235
|
+
});
|
|
236
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, {
|
|
237
|
+
relatedTarget: previous
|
|
238
|
+
});
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
if (target) {
|
|
242
|
+
this._activate(target, target.parentNode, complete);
|
|
243
|
+
} else {
|
|
244
|
+
complete();
|
|
245
|
+
}
|
|
246
|
+
} // Private
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
_activate(element, container, callback) {
|
|
250
|
+
const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine__default['default'].find(SELECTOR_ACTIVE_UL, container) : SelectorEngine__default['default'].children(container, SELECTOR_ACTIVE);
|
|
251
|
+
const active = activeElements[0];
|
|
252
|
+
const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
|
|
253
|
+
|
|
254
|
+
const complete = () => this._transitionComplete(element, active, callback);
|
|
255
|
+
|
|
256
|
+
if (active && isTransitioning) {
|
|
257
|
+
const transitionDuration = getTransitionDurationFromElement(active);
|
|
258
|
+
active.classList.remove(CLASS_NAME_SHOW);
|
|
259
|
+
EventHandler__default['default'].one(active, 'transitionend', complete);
|
|
260
|
+
emulateTransitionEnd(active, transitionDuration);
|
|
261
|
+
} else {
|
|
262
|
+
complete();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
_transitionComplete(element, active, callback) {
|
|
267
|
+
if (active) {
|
|
268
|
+
active.classList.remove(CLASS_NAME_ACTIVE);
|
|
269
|
+
const dropdownChild = SelectorEngine__default['default'].findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
|
|
270
|
+
|
|
271
|
+
if (dropdownChild) {
|
|
272
|
+
dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (active.getAttribute('role') === 'tab') {
|
|
276
|
+
active.setAttribute('aria-selected', false);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
element.classList.add(CLASS_NAME_ACTIVE);
|
|
281
|
+
|
|
282
|
+
if (element.getAttribute('role') === 'tab') {
|
|
283
|
+
element.setAttribute('aria-selected', true);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
reflow(element);
|
|
287
|
+
|
|
288
|
+
if (element.classList.contains(CLASS_NAME_FADE)) {
|
|
289
|
+
element.classList.add(CLASS_NAME_SHOW);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
|
|
293
|
+
const dropdownElement = element.closest(SELECTOR_DROPDOWN);
|
|
294
|
+
|
|
295
|
+
if (dropdownElement) {
|
|
296
|
+
SelectorEngine__default['default'].find(SELECTOR_DROPDOWN_TOGGLE).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
element.setAttribute('aria-expanded', true);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (callback) {
|
|
303
|
+
callback();
|
|
304
|
+
}
|
|
305
|
+
} // Static
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
static jQueryInterface(config) {
|
|
309
|
+
return this.each(function () {
|
|
310
|
+
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this);
|
|
311
|
+
|
|
312
|
+
if (typeof config === 'string') {
|
|
313
|
+
if (typeof data[config] === 'undefined') {
|
|
314
|
+
throw new TypeError(`No method named "${config}"`);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
data[config]();
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* ------------------------------------------------------------------------
|
|
325
|
+
* Data Api implementation
|
|
326
|
+
* ------------------------------------------------------------------------
|
|
327
|
+
*/
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
331
|
+
event.preventDefault();
|
|
332
|
+
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this);
|
|
333
|
+
data.show();
|
|
334
|
+
});
|
|
335
|
+
/**
|
|
336
|
+
* ------------------------------------------------------------------------
|
|
337
|
+
* jQuery
|
|
338
|
+
* ------------------------------------------------------------------------
|
|
339
|
+
* add .Tab to jQuery only if jQuery is present
|
|
340
|
+
*/
|
|
341
|
+
|
|
342
|
+
defineJQueryPlugin(NAME, Tab);
|
|
343
|
+
|
|
344
|
+
return Tab;
|
|
345
|
+
|
|
346
|
+
})));
|
|
347
|
+
//# sourceMappingURL=tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.js","sources":["../src/util/index.js","../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isDisabled,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n isDisabled(this._element)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, 'transitionend', complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.get(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tab)\n\nexport default Tab\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","isDisabled","nodeType","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","body","onDOMContentLoaded","callback","readyState","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","BaseComponent","show","_element","parentNode","previous","target","listElement","closest","itemSelector","nodeName","SelectorEngine","find","length","hideEvent","EventHandler","trigger","relatedTarget","showEvent","defaultPrevented","_activate","complete","container","activeElements","children","active","isTransitioning","_transitionComplete","remove","one","dropdownChild","findOne","setAttribute","add","dropdownElement","forEach","dropdown","config","each","data","Data","get","TypeError","on","event","preventDefault"],"mappings":"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"}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap toast.js v5.0.0-beta3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Data, global.EventHandler, global.Manipulator, global.Base));
|
|
10
|
+
}(this, (function (Data, EventHandler, Manipulator, BaseComponent) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
15
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
17
|
+
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* Bootstrap (v5.0.0-beta3): util/index.js
|
|
22
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
23
|
+
* --------------------------------------------------------------------------
|
|
24
|
+
*/
|
|
25
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
|
26
|
+
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
27
|
+
|
|
28
|
+
const toType = obj => {
|
|
29
|
+
if (obj === null || obj === undefined) {
|
|
30
|
+
return `${obj}`;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const getTransitionDurationFromElement = element => {
|
|
37
|
+
if (!element) {
|
|
38
|
+
return 0;
|
|
39
|
+
} // Get transition-duration of the element
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
let {
|
|
43
|
+
transitionDuration,
|
|
44
|
+
transitionDelay
|
|
45
|
+
} = window.getComputedStyle(element);
|
|
46
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
47
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
48
|
+
|
|
49
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
50
|
+
return 0;
|
|
51
|
+
} // If multiple durations are defined, take the first
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
55
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
56
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const triggerTransitionEnd = element => {
|
|
60
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const isElement = obj => (obj[0] || obj).nodeType;
|
|
64
|
+
|
|
65
|
+
const emulateTransitionEnd = (element, duration) => {
|
|
66
|
+
let called = false;
|
|
67
|
+
const durationPadding = 5;
|
|
68
|
+
const emulatedDuration = duration + durationPadding;
|
|
69
|
+
|
|
70
|
+
function listener() {
|
|
71
|
+
called = true;
|
|
72
|
+
element.removeEventListener(TRANSITION_END, listener);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
element.addEventListener(TRANSITION_END, listener);
|
|
76
|
+
setTimeout(() => {
|
|
77
|
+
if (!called) {
|
|
78
|
+
triggerTransitionEnd(element);
|
|
79
|
+
}
|
|
80
|
+
}, emulatedDuration);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const typeCheckConfig = (componentName, config, configTypes) => {
|
|
84
|
+
Object.keys(configTypes).forEach(property => {
|
|
85
|
+
const expectedTypes = configTypes[property];
|
|
86
|
+
const value = config[property];
|
|
87
|
+
const valueType = value && isElement(value) ? 'element' : toType(value);
|
|
88
|
+
|
|
89
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
90
|
+
throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const reflow = element => element.offsetHeight;
|
|
96
|
+
|
|
97
|
+
const getjQuery = () => {
|
|
98
|
+
const {
|
|
99
|
+
jQuery
|
|
100
|
+
} = window;
|
|
101
|
+
|
|
102
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
103
|
+
return jQuery;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return null;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const onDOMContentLoaded = callback => {
|
|
110
|
+
if (document.readyState === 'loading') {
|
|
111
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
112
|
+
} else {
|
|
113
|
+
callback();
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const defineJQueryPlugin = (name, plugin) => {
|
|
118
|
+
onDOMContentLoaded(() => {
|
|
119
|
+
const $ = getjQuery();
|
|
120
|
+
/* istanbul ignore if */
|
|
121
|
+
|
|
122
|
+
if ($) {
|
|
123
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
124
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
125
|
+
$.fn[name].Constructor = plugin;
|
|
126
|
+
|
|
127
|
+
$.fn[name].noConflict = () => {
|
|
128
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
129
|
+
return plugin.jQueryInterface;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* --------------------------------------------------------------------------
|
|
137
|
+
* Bootstrap (v5.0.0-beta3): toast.js
|
|
138
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
139
|
+
* --------------------------------------------------------------------------
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* ------------------------------------------------------------------------
|
|
143
|
+
* Constants
|
|
144
|
+
* ------------------------------------------------------------------------
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
const NAME = 'toast';
|
|
148
|
+
const DATA_KEY = 'bs.toast';
|
|
149
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
150
|
+
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
151
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
152
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
153
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
154
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
155
|
+
const CLASS_NAME_FADE = 'fade';
|
|
156
|
+
const CLASS_NAME_HIDE = 'hide';
|
|
157
|
+
const CLASS_NAME_SHOW = 'show';
|
|
158
|
+
const CLASS_NAME_SHOWING = 'showing';
|
|
159
|
+
const DefaultType = {
|
|
160
|
+
animation: 'boolean',
|
|
161
|
+
autohide: 'boolean',
|
|
162
|
+
delay: 'number'
|
|
163
|
+
};
|
|
164
|
+
const Default = {
|
|
165
|
+
animation: true,
|
|
166
|
+
autohide: true,
|
|
167
|
+
delay: 5000
|
|
168
|
+
};
|
|
169
|
+
const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]';
|
|
170
|
+
/**
|
|
171
|
+
* ------------------------------------------------------------------------
|
|
172
|
+
* Class Definition
|
|
173
|
+
* ------------------------------------------------------------------------
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
class Toast extends BaseComponent__default['default'] {
|
|
177
|
+
constructor(element, config) {
|
|
178
|
+
super(element);
|
|
179
|
+
this._config = this._getConfig(config);
|
|
180
|
+
this._timeout = null;
|
|
181
|
+
|
|
182
|
+
this._setListeners();
|
|
183
|
+
} // Getters
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
static get DefaultType() {
|
|
187
|
+
return DefaultType;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static get Default() {
|
|
191
|
+
return Default;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static get DATA_KEY() {
|
|
195
|
+
return DATA_KEY;
|
|
196
|
+
} // Public
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
show() {
|
|
200
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
|
|
201
|
+
|
|
202
|
+
if (showEvent.defaultPrevented) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
this._clearTimeout();
|
|
207
|
+
|
|
208
|
+
if (this._config.animation) {
|
|
209
|
+
this._element.classList.add(CLASS_NAME_FADE);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const complete = () => {
|
|
213
|
+
this._element.classList.remove(CLASS_NAME_SHOWING);
|
|
214
|
+
|
|
215
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
216
|
+
|
|
217
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
|
|
218
|
+
|
|
219
|
+
if (this._config.autohide) {
|
|
220
|
+
this._timeout = setTimeout(() => {
|
|
221
|
+
this.hide();
|
|
222
|
+
}, this._config.delay);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
this._element.classList.remove(CLASS_NAME_HIDE);
|
|
227
|
+
|
|
228
|
+
reflow(this._element);
|
|
229
|
+
|
|
230
|
+
this._element.classList.add(CLASS_NAME_SHOWING);
|
|
231
|
+
|
|
232
|
+
if (this._config.animation) {
|
|
233
|
+
const transitionDuration = getTransitionDurationFromElement(this._element);
|
|
234
|
+
EventHandler__default['default'].one(this._element, 'transitionend', complete);
|
|
235
|
+
emulateTransitionEnd(this._element, transitionDuration);
|
|
236
|
+
} else {
|
|
237
|
+
complete();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
hide() {
|
|
242
|
+
if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
|
|
247
|
+
|
|
248
|
+
if (hideEvent.defaultPrevented) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const complete = () => {
|
|
253
|
+
this._element.classList.add(CLASS_NAME_HIDE);
|
|
254
|
+
|
|
255
|
+
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
259
|
+
|
|
260
|
+
if (this._config.animation) {
|
|
261
|
+
const transitionDuration = getTransitionDurationFromElement(this._element);
|
|
262
|
+
EventHandler__default['default'].one(this._element, 'transitionend', complete);
|
|
263
|
+
emulateTransitionEnd(this._element, transitionDuration);
|
|
264
|
+
} else {
|
|
265
|
+
complete();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
dispose() {
|
|
270
|
+
this._clearTimeout();
|
|
271
|
+
|
|
272
|
+
if (this._element.classList.contains(CLASS_NAME_SHOW)) {
|
|
273
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);
|
|
277
|
+
super.dispose();
|
|
278
|
+
this._config = null;
|
|
279
|
+
} // Private
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
_getConfig(config) {
|
|
283
|
+
config = { ...Default,
|
|
284
|
+
...Manipulator__default['default'].getDataAttributes(this._element),
|
|
285
|
+
...(typeof config === 'object' && config ? config : {})
|
|
286
|
+
};
|
|
287
|
+
typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
288
|
+
return config;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
_setListeners() {
|
|
292
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide());
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
_clearTimeout() {
|
|
296
|
+
clearTimeout(this._timeout);
|
|
297
|
+
this._timeout = null;
|
|
298
|
+
} // Static
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
static jQueryInterface(config) {
|
|
302
|
+
return this.each(function () {
|
|
303
|
+
let data = Data__default['default'].get(this, DATA_KEY);
|
|
304
|
+
|
|
305
|
+
const _config = typeof config === 'object' && config;
|
|
306
|
+
|
|
307
|
+
if (!data) {
|
|
308
|
+
data = new Toast(this, _config);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (typeof config === 'string') {
|
|
312
|
+
if (typeof data[config] === 'undefined') {
|
|
313
|
+
throw new TypeError(`No method named "${config}"`);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
data[config](this);
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* ------------------------------------------------------------------------
|
|
324
|
+
* jQuery
|
|
325
|
+
* ------------------------------------------------------------------------
|
|
326
|
+
* add .Toast to jQuery only if jQuery is present
|
|
327
|
+
*/
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
defineJQueryPlugin(NAME, Toast);
|
|
331
|
+
|
|
332
|
+
return Toast;
|
|
333
|
+
|
|
334
|
+
})));
|
|
335
|
+
//# sourceMappingURL=toast.js.map
|