diff --git a/amd/build/aria.min.js b/amd/build/aria.min.js new file mode 100644 index 0000000..c4263ca --- /dev/null +++ b/amd/build/aria.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/aria",["exports","jquery","core/pending"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}var e=function(){var a=!1,d=function(){a=!0},e=function(){var b=a;a=!1;return b};document.addEventListener("keydown",function(a){if(a.target.matches("[data-toggle=\"dropdown\"]")){var b=a.key;if("ArrowUp"==b){d()}if(" "==b||"Enter"==b){a.preventDefault();a.target.click()}}});var f=function(a){setTimeout(function delayedFocus(b){a.focus();b.resolve()},50,new c.default("core/aria:delayed-focus"))};(0,b.default)(".dropdown").on("shown.bs.dropdown",function(a){var b=a.target.querySelector("[role=\"menu\"]"),c=!1,d=!1;if(b){c=b.querySelectorAll("[role=\"menuitem\"]")}if(c&&0.\n\n/**\n * Enhancements to Bootstrap components for accessibility.\n *\n * @module theme_ilb/aria\n * @copyright 2018 Damyon Wiese \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport Pending from 'core/pending';\n\n/**\n * Drop downs from bootstrap don't support keyboard accessibility by default.\n */\nconst dropdownFix = () => {\n let focusEnd = false;\n const setFocusEnd = () => {\n focusEnd = true;\n };\n const getFocusEnd = () => {\n const result = focusEnd;\n focusEnd = false;\n return result;\n };\n\n // Special handling for \"up\" keyboard control.\n document.addEventListener('keydown', e => {\n if (e.target.matches('[data-toggle=\"dropdown\"]')) {\n const trigger = e.key;\n\n // Up key opens the menu at the end.\n if (trigger == 'ArrowUp') {\n // Focus the end of the menu, not the beginning.\n setFocusEnd();\n }\n\n // Space key or Enter key opens the menu.\n if (trigger == ' ' || trigger == 'Enter') {\n // Cancel random scroll.\n e.preventDefault();\n // Open the menu instead.\n e.target.click();\n }\n }\n });\n\n // Special handling for navigation keys when menu is open.\n const shiftFocus = element => {\n const delayedFocus = pendingPromise => {\n element.focus();\n pendingPromise.resolve();\n };\n setTimeout(delayedFocus, 50, new Pending('core/aria:delayed-focus'));\n };\n\n $('.dropdown').on('shown.bs.dropdown', e => {\n // We need to focus on the first menuitem.\n const menu = e.target.querySelector('[role=\"menu\"]');\n let menuItems = false;\n let foundMenuItem = false;\n\n if (menu) {\n menuItems = menu.querySelectorAll('[role=\"menuitem\"]');\n }\n if (menuItems && menuItems.length > 0) {\n if (getFocusEnd()) {\n foundMenuItem = menuItems[menuItems.length - 1];\n } else {\n // The first menu entry, pretty reasonable.\n foundMenuItem = menuItems[0];\n }\n }\n if (foundMenuItem) {\n shiftFocus(foundMenuItem);\n }\n });\n // Search for menu items by finding the first item that has\n // text starting with the typed character (case insensitive).\n document.addEventListener('keypress', e => {\n if (e.target.matches('.dropdown [role=\"menu\"] [role=\"menuitem\"]')) {\n const menu = e.target.closest('[role=\"menu\"]');\n if (!menu) {\n return;\n }\n const menuItems = menu.querySelectorAll('[role=\"menuitem\"]');\n if (!menuItems) {\n return;\n }\n\n const trigger = e.key.toLowerCase();\n\n for (let i = 0; i < menuItems.length; i++) {\n const item = menuItems[i];\n const itemText = item.text.trim().toLowerCase();\n if (itemText.indexOf(trigger) == 0) {\n shiftFocus(item);\n break;\n }\n }\n }\n });\n\n // Keyboard navigation for arrow keys, home and end keys.\n document.addEventListener('keydown', e => {\n if (e.target.matches('.dropdown [role=\"menu\"] [role=\"menuitem\"]')) {\n const trigger = e.key;\n let next = false;\n const menu = e.target.closest('[role=\"menu\"]');\n\n if (!menu) {\n return;\n }\n const menuItems = menu.querySelectorAll('[role=\"menuitem\"]');\n if (!menuItems) {\n return;\n }\n // Down key.\n if (trigger == 'ArrowDown') {\n for (let i = 0; i < menuItems.length - 1; i++) {\n if (menuItems[i] == e.target) {\n next = menuItems[i + 1];\n break;\n }\n }\n if (!next) {\n // Wrap to first item.\n next = menuItems[0];\n }\n\n } else if (trigger == 'ArrowUp') {\n // Up key.\n for (let i = 1; i < menuItems.length; i++) {\n if (menuItems[i] == e.target) {\n next = menuItems[i - 1];\n break;\n }\n }\n if (!next) {\n // Wrap to last item.\n next = menuItems[menuItems.length - 1];\n }\n\n } else if (trigger == 'Home') {\n // Home key.\n next = menuItems[0];\n\n } else if (trigger == 'End') {\n // End key.\n next = menuItems[menuItems.length - 1];\n }\n // Variable next is set if we do want to act on the keypress.\n if (next) {\n e.preventDefault();\n shiftFocus(next);\n }\n return;\n }\n });\n\n $('.dropdown').on('hidden.bs.dropdown', e => {\n // We need to focus on the menu trigger.\n const trigger = e.target.querySelector('[data-toggle=\"dropdown\"]');\n if (trigger) {\n shiftFocus(trigger);\n }\n });\n};\n\n/**\n * After page load, focus on any element with special autofocus attribute.\n */\nconst autoFocus = () => {\n window.addEventListener(\"load\", () => {\n const alerts = document.querySelectorAll('[data-aria-autofocus=\"true\"][role=\"alert\"]');\n Array.prototype.forEach.call(alerts, autofocusElement => {\n // According to the specification an role=\"alert\" region is only read out on change to the content\n // of that region.\n autofocusElement.innerHTML += ' ';\n autofocusElement.removeAttribute('data-aria-autofocus');\n });\n });\n};\n\n/**\n * Changes the focus to the correct tab based on the key that is pressed.\n * @param {KeyboardEvent} e\n */\nconst updateTabFocus = e => {\n const tabList = e.target.closest('[role=\"tablist\"]');\n const vertical = tabList.getAttribute('aria-orientation') == 'vertical';\n const rtl = window.right_to_left();\n const arrowNext = vertical ? 'ArrowDown' : (rtl ? 'ArrowLeft' : 'ArrowRight');\n const arrowPrevious = vertical ? 'ArrowUp' : (rtl ? 'ArrowRight' : 'ArrowLeft');\n const tabs = Array.prototype.filter.call(\n tabList.querySelectorAll('[role=\"tab\"]'),\n tab => getComputedStyle(tab).display !== 'none'); // We only work with the visible tabs.\n\n for (let i = 0; i < tabs.length; i++) {\n tabs[i].index = i;\n }\n\n switch (e.key) {\n case arrowNext:\n e.preventDefault();\n if (e.target.index !== undefined && tabs[e.target.index + 1]) {\n tabs[e.target.index + 1].focus();\n } else {\n tabs[0].focus();\n }\n break;\n case arrowPrevious:\n e.preventDefault();\n if (e.target.index !== undefined && tabs[e.target.index - 1]) {\n tabs[e.target.index - 1].focus();\n } else {\n tabs[tabs.length - 1].focus();\n }\n break;\n case 'Home':\n e.preventDefault();\n tabs[0].focus();\n break;\n case 'End':\n e.preventDefault();\n tabs[tabs.length - 1].focus();\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n $(e.target).tab('show');\n tabs.forEach(tab => {\n tab.tabIndex = -1;\n });\n e.target.tabIndex = 0;\n }\n};\n\n/**\n * Fix accessibility issues regarding tab elements focus and their tab order in Bootstrap navs.\n */\nconst tabElementFix = () => {\n document.addEventListener('keydown', e => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'Enter', ' '].includes(e.key)) {\n if (e.target.matches('[role=\"tablist\"] [role=\"tab\"]')) {\n updateTabFocus(e);\n }\n }\n });\n\n document.addEventListener('click', e => {\n if (e.target.matches('[role=\"tablist\"] [role=\"tab\"]')) {\n const tabs = e.target.closest('[role=\"tablist\"]').querySelectorAll('[role=\"tab\"]');\n e.preventDefault();\n $(e.target).tab('show');\n tabs.forEach(tab => {\n tab.tabIndex = -1;\n });\n e.target.tabIndex = 0;\n }\n });\n};\n\nexport const init = () => {\n dropdownFix();\n autoFocus();\n tabElementFix();\n};\n"],"file":"aria.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/alert.min.js b/amd/build/bootstrap/alert.min.js new file mode 100644 index 0000000..61b9b76 --- /dev/null +++ b/amd/build/bootstrap/alert.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/alert",["exports","jquery","./util"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function f(a,b){for(var c=0,d;c this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n"],"file":"alert.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/button.min.js b/amd/build/bootstrap/button.min.js new file mode 100644 index 0000000..5ff2740 --- /dev/null +++ b/amd/build/bootstrap/button.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/button",["exports","jquery"],function(a,b){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=function(a){return a&&a.__esModule?a:{default:a}}(b);function c(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function d(a,b){for(var c=0,d;c {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n"],"file":"button.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/carousel.min.js b/amd/build/bootstrap/carousel.min.js new file mode 100644 index 0000000..0d70a3f --- /dev/null +++ b/amd/build/bootstrap/carousel.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/carousel",["exports","jquery","./util"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){e=function(a){return typeof a}}else{e=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return e(a)}function f(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function g(a){for(var b=1,c;bthis._items.length-1||0>a){return}if(this._isSliding){(0,b.default)(this._element).one(u,function(){return c.to(a)});return}if(d===a){this.pause();this.cycle();return}var e=a>d?r:s;this._slide(e,this._items[a])}},{key:"dispose",value:function dispose(){(0,b.default)(this._element).off(m);b.default.removeData(this._element,l);this._items=null;this._config=null;this._element=null;this._interval=null;this._isPaused=null;this._isSliding=null;this._activeElement=null;this._indicatorsElement=null}},{key:"_getConfig",value:function _getConfig(a){a=g({},p,{},a);c.default.typeCheckConfig("carousel",a,q);return a}},{key:"_handleSwipe",value:function _handleSwipe(){var a=Math.abs(this.touchDeltaX);if(a<=40){return}var b=a/this.touchDeltaX;this.touchDeltaX=0;if(0b){this.next()}}},{key:"_addEventListeners",value:function _addEventListeners(){var a=this;if(this._config.keyboard){(0,b.default)(this._element).on(v,function(b){return a._keydown(b)})}if("hover"===this._config.pause){(0,b.default)(this._element).on(w,function(b){return a.pause(b)}).on(x,function(b){return a.cycle(b)})}if(this._config.touch){this._addTouchEventListeners()}}},{key:"_addTouchEventListeners",value:function _addTouchEventListeners(){var a=this;if(!this._touchSupported){return}var c=function(b){if(a._pointerEvent&&I[b.originalEvent.pointerType.toUpperCase()]){a.touchStartX=b.originalEvent.clientX}else if(!a._pointerEvent){a.touchStartX=b.originalEvent.touches[0].clientX}},d=function(b){if(b.originalEvent.touches&&1 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n const $element = $(this._element)\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, event => this.pause(event))\n .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, e => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n $(this._element).on(EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n if (!element) {\n return\n }\n\n const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n"],"file":"carousel.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/collapse.min.js b/amd/build/bootstrap/collapse.min.js new file mode 100644 index 0000000..869d238 --- /dev/null +++ b/amd/build/bootstrap/collapse.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/collapse",["exports","jquery","./util"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){e=function(a){return typeof a}}else{e=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return e(a)}function f(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function g(a){for(var b=1,c;b foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$element.data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $element.data(DATA_KEY, data)\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\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n"],"file":"collapse.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/dropdown.min.js b/amd/build/bootstrap/dropdown.min.js new file mode 100644 index 0000000..56d5642 --- /dev/null +++ b/amd/build/bootstrap/dropdown.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/dropdown",["exports","jquery","core/popper","./util"],function(a,b,c,d){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=e(b);c=e(c);d=e(d);function e(a){return a&&a.__esModule?a:{default:a}}function f(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){f=function(a){return typeof a}}else{f=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return f(a)}function g(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function h(a){for(var b=1,c;bg){g=0}f[g].focus()}},{key:"VERSION",get:function get(){return"4.6.0"}},{key:"Default",get:function get(){return J}},{key:"DefaultType",get:function get(){return K}}]);return a}();(0,b.default)(document).on(C,H,L._dataApiKeydownHandler).on(C,I,L._dataApiKeydownHandler).on("".concat(B," ").concat(D),L._clearMenus).on(B,H,function(a){a.preventDefault();a.stopPropagation();L._jQueryInterface.call((0,b.default)(this),"toggle")}).on(B,".dropdown form",function(a){a.stopPropagation()});b.default.fn.dropdown=L._jQueryInterface;b.default.fn.dropdown.Constructor=L;b.default.fn.dropdown.noConflict=function(){b.default.fn.dropdown=p;return L._jQueryInterface};a.default=L;return a.default}); +//# sourceMappingURL=dropdown.min.js.map diff --git a/amd/build/bootstrap/dropdown.min.js.map b/amd/build/bootstrap/dropdown.min.js.map new file mode 100644 index 0000000..d537222 --- /dev/null +++ b/amd/build/bootstrap/dropdown.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/bootstrap/dropdown.js"],"names":["DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","$","fn","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","REGEXP_KEYDOWN","RegExp","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW","CLASS_NAME_MENURIGHT","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","Default","offset","flip","boundary","reference","display","popperConfig","DefaultType","Dropdown","element","config","_element","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","disabled","hasClass","isActive","_clearMenus","show","usePopper","relatedTarget","showEvent","Event","parent","_getParentFromElement","trigger","isDefaultPrevented","Popper","TypeError","referenceElement","Util","isElement","jquery","addClass","_getPopperConfig","document","documentElement","closest","length","body","children","on","noop","focus","setAttribute","toggleClass","hideEvent","destroy","removeData","off","scheduleUpdate","event","preventDefault","stopPropagation","toggle","constructor","data","typeCheckConfig","querySelector","$parentDropdown","parentNode","placement","offsets","_getPlacement","modifiers","_getOffset","enabled","preventOverflow","boundariesElement","applyStyle","each","which","type","toggles","slice","call","querySelectorAll","i","len","context","clickEvent","dropdownMenu","test","target","tagName","contains","removeClass","selector","getSelectorFromElement","items","filter","item","is","index","indexOf","_dataApiKeydownHandler","_jQueryInterface","e","Constructor","noConflict"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'core/popper'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\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 = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n PLACEMENT_TOPEND :\n PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...(this._config.offset(data.offsets, this._element) || {})\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\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 static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter(item => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n"],"file":"dropdown.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/modal.min.js b/amd/build/bootstrap/modal.min.js new file mode 100644 index 0000000..8284d8a --- /dev/null +++ b/amd/build/bootstrap/modal.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/modal",["exports","jquery","./util"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){e=function(a){return typeof a}}else{e=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return e(a)}function f(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function g(a){for(var b=1,c;bdocument.documentElement.clientHeight;if(!e){this._element.style.overflowY="hidden"}this._element.classList.add(G);var f=c.default.getTransitionDurationFromElement(this._dialog);(0,b.default)(this._element).off(c.default.TRANSITION_END);(0,b.default)(this._element).one(c.default.TRANSITION_END,function(){a._element.classList.remove(G);if(!e){(0,b.default)(a._element).one(c.default.TRANSITION_END,function(){a._element.style.overflowY=""}).emulateTransitionEnd(a._element,f)}}).emulateTransitionEnd(f);this._element.focus()}},{key:"_showElement",value:function _showElement(a){var d=this,e=(0,b.default)(this._element).hasClass(E),f=this._dialog?this._dialog.querySelector(".modal-body"):null;if(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE){document.body.appendChild(this._element)}this._element.style.display="block";this._element.removeAttribute("aria-hidden");this._element.setAttribute("aria-modal",!0);this._element.setAttribute("role","dialog");if((0,b.default)(this._dialog).hasClass("modal-dialog-scrollable")&&f){f.scrollTop=0}else{this._element.scrollTop=0}if(e){c.default.reflow(this._element)}(0,b.default)(this._element).addClass(F);if(this._config.focus){this._enforceFocus()}var g=b.default.Event(v,{relatedTarget:a}),h=function(){if(d._config.focus){d._element.focus()}d._isTransitioning=!1;(0,b.default)(d._element).trigger(g)};if(e){var i=c.default.getTransitionDurationFromElement(this._dialog);(0,b.default)(this._dialog).one(c.default.TRANSITION_END,h).emulateTransitionEnd(i)}else{h()}}},{key:"_enforceFocus",value:function _enforceFocus(){var a=this;(0,b.default)(document).off(w).on(w,function(c){if(document!==c.target&&a._element!==c.target&&0===(0,b.default)(a._element).has(c.target).length){a._element.focus()}})}},{key:"_setEscapeEvent",value:function _setEscapeEvent(){var a=this;if(this._isShown){(0,b.default)(this._element).on(z,function(b){if(a._config.keyboard&&b.which===o){b.preventDefault();a.hide()}else if(!a._config.keyboard&&b.which===o){a._triggerBackdropTransition()}})}else if(!this._isShown){(0,b.default)(this._element).off(z)}}},{key:"_setResizeEvent",value:function _setResizeEvent(){var a=this;if(this._isShown){(0,b.default)(window).on(x,function(b){return a.handleUpdate(b)})}else{(0,b.default)(window).off(x)}}},{key:"_hideModal",value:function _hideModal(){var a=this;this._element.style.display="none";this._element.setAttribute("aria-hidden",!0);this._element.removeAttribute("aria-modal");this._element.removeAttribute("role");this._isTransitioning=!1;this._showBackdrop(function(){(0,b.default)(document.body).removeClass(D);a._resetAdjustments();a._resetScrollbar();(0,b.default)(a._element).trigger(t)})}},{key:"_removeBackdrop",value:function _removeBackdrop(){if(this._backdrop){(0,b.default)(this._backdrop).remove();this._backdrop=null}}},{key:"_showBackdrop",value:function _showBackdrop(a){var d=this,e=(0,b.default)(this._element).hasClass(E)?E:"";if(this._isShown&&this._config.backdrop){this._backdrop=document.createElement("div");this._backdrop.className="modal-backdrop";if(e){this._backdrop.classList.add(e)}(0,b.default)(this._backdrop).appendTo(document.body);(0,b.default)(this._element).on(y,function(a){if(d._ignoreBackdropClick){d._ignoreBackdropClick=!1;return}if(a.target!==a.currentTarget){return}if("static"===d._config.backdrop){d._triggerBackdropTransition()}else{d.hide()}});if(e){c.default.reflow(this._backdrop)}(0,b.default)(this._backdrop).addClass(F);if(!a){return}if(!e){a();return}var f=c.default.getTransitionDurationFromElement(this._backdrop);(0,b.default)(this._backdrop).one(c.default.TRANSITION_END,a).emulateTransitionEnd(f)}else if(!this._isShown&&this._backdrop){(0,b.default)(this._backdrop).removeClass(F);var g=function(){d._removeBackdrop();if(a){a()}};if((0,b.default)(this._element).hasClass(E)){var h=c.default.getTransitionDurationFromElement(this._backdrop);(0,b.default)(this._backdrop).one(c.default.TRANSITION_END,g).emulateTransitionEnd(h)}else{g()}}else if(a){a()}}},{key:"_adjustDialog",value:function _adjustDialog(){var a=this._element.scrollHeight>document.documentElement.clientHeight;if(!this._isBodyOverflowing&&a){this._element.style.paddingLeft="".concat(this._scrollbarWidth,"px")}if(this._isBodyOverflowing&&!a){this._element.style.paddingRight="".concat(this._scrollbarWidth,"px")}}},{key:"_resetAdjustments",value:function _resetAdjustments(){this._element.style.paddingLeft="";this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function _checkScrollbar(){var a=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(a.left+a.right) this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, event => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.isDefaultPrevented()) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\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](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY) ?\n 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, showEvent => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n"],"file":"modal.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/popover.min.js b/amd/build/bootstrap/popover.min.js new file mode 100644 index 0000000..4623ad1 --- /dev/null +++ b/amd/build/bootstrap/popover.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/popover",["exports","jquery","./tooltip"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){e=function(a){return typeof a}}else{e=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return e(a)}function f(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function g(a,b){for(var c=0,d;c

"}),z=r({},c.default.DefaultType,{content:"(string|element|function)"}),A={HIDE:"hide".concat(u),HIDDEN:"hidden".concat(u),SHOW:"show".concat(u),SHOWN:"shown".concat(u),INSERTED:"inserted".concat(u),CLICK:"click".concat(u),FOCUSIN:"focusin".concat(u),FOCUSOUT:"focusout".concat(u),MOUSEENTER:"mouseenter".concat(u),MOUSELEAVE:"mouseleave".concat(u)},B=function(a){i(c,a);var d=k(c);function c(){f(this,c);return d.apply(this,arguments)}h(c,[{key:"isWithContent",value:function isWithContent(){return this.getTitle()||this._getContent()}},{key:"addAttachmentClass",value:function addAttachmentClass(a){(0,b.default)(this.getTipElement()).addClass("".concat(w,"-").concat(a))}},{key:"getTipElement",value:function getTipElement(){this.tip=this.tip||(0,b.default)(this.config.template)[0];return this.tip}},{key:"setContent",value:function setContent(){var a=(0,b.default)(this.getTipElement());this.setElementContent(a.find(".popover-header"),this.getTitle());var c=this._getContent();if("function"==typeof c){c=c.call(this.element)}this.setElementContent(a.find(".popover-body"),c);a.removeClass("".concat("fade"," ").concat("show"))}},{key:"_getContent",value:function _getContent(){return this.element.getAttribute("data-content")||this.config.content}},{key:"_cleanTipClass",value:function _cleanTipClass(){var a=(0,b.default)(this.getTipElement()),c=a.attr("class").match(x);if(null!==c&&0' +\n '
' +\n '

' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\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 * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n"],"file":"popover.min.js"} \ No newline at end of file diff --git a/amd/build/bootstrap/scrollspy.min.js b/amd/build/bootstrap/scrollspy.min.js new file mode 100644 index 0000000..a42f431 --- /dev/null +++ b/amd/build/bootstrap/scrollspy.min.js @@ -0,0 +1,2 @@ +define ("theme_ilb/bootstrap/scrollspy",["exports","jquery","./util"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=d(b);c=d(c);function d(a){return a&&a.__esModule?a:{default:a}}function e(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){e=function(a){return typeof a}}else{e=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return e(a)}function f(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function g(a){for(var b=1,c;b=c){var d=this._targets[this._targets.length-1];if(this._activeTarget!==d){this._activate(d)}return}if(this._activeTarget&&a=this._offsets[e]&&("undefined"==typeof this._offsets[e+1]||a this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map(element => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().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 $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\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' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset : 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 : 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' ||\n 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\n .split(',')\n .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both