mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-01 13:24:25 +01:00
1 line
38 KiB
Plaintext
1 line
38 KiB
Plaintext
{"version":3,"file":"dropdown.js","sources":["../src/util/index.js","../src/dropdown.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\nconst { jQuery } = window\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => ({}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase())\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelectorFromElement = element => {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (error) {\n return null\n }\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = 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 (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n const evt = document.createEvent('HTMLEvents')\n\n evt.initEvent(TRANSITION_END, true, true)\n element.dispatchEvent(evt)\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 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)\n .forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst makeArray = nodeList => {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n return element.style.display !== 'none' &&\n element.parentNode.style.display !== 'none' &&\n element.style.visibility !== 'hidden'\n }\n\n return 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\n// eslint-disable-next-line no-empty-function\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nexport {\n jQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n makeArray,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n jQuery as $,\n getSelectorFromElement,\n isElement,\n makeArray,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport Popper from 'popper.js'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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 = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API: `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API: `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n POSITION_STATIC: 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n}\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic'\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string'\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 Data.setData(element, DATA_KEY, this)\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.classList.contains(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = this._menu.classList.contains(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = EventHandler.trigger(parent, Event.SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\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.js (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (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.classList.add(ClassName.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 !makeArray(SelectorEngine.closest(parent, Selector.NAVBAR_NAV)).length) {\n makeArray(document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.SHOW)\n EventHandler.trigger(parent, Event.SHOWN, relatedTarget)\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(ClassName.DISABLED) || this._menu.classList.contains(ClassName.SHOW)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(parent, Event.SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.SHOW)\n EventHandler.trigger(parent, Event.SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(ClassName.DISABLED) || !this._menu.classList.contains(ClassName.SHOW)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, Event.HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n Manipulator.toggleClass(this._menu, ClassName.SHOW)\n Manipulator.toggleClass(parent, ClassName.SHOW)\n EventHandler.trigger(parent, Event.HIDDEN, relatedTarget)\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n EventHandler.off(this._element, 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 EventHandler.on(this._element, 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 ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n 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 = SelectorEngine.findOne(Selector.MENU, parent)\n }\n }\n\n return this._menu\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if (parentDropdown.classList.contains(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if (this._menu.classList.contains(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if (parentDropdown.classList.contains(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if (parentDropdown.classList.contains(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if (this._menu.classList.contains(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return Boolean(SelectorEngine.closest(this._element, '.navbar'))\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.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _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 static _jQueryInterface(config) {\n return this.each(function () {\n Dropdown._dropdownInterface(this, config)\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 = makeArray(SelectorEngine.find(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], 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.classList.contains(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) ||\n event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n parent.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, Event.HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\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 makeArray(document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n dropdownMenu.classList.remove(ClassName.SHOW)\n parent.classList.remove(ClassName.SHOW)\n EventHandler.trigger(parent, Event.HIDDEN, relatedTarget)\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = getSelectorFromElement(element)\n\n if (selector) {\n parent = SelectorEngine.findOne(selector)\n }\n\n return parent || element.parentNode\n }\n\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 SelectorEngine.closest(event.target, Selector.MENU)) :\n !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = parent.classList.contains(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n EventHandler.trigger(SelectorEngine.findOne(Selector.DATA_TOGGLE, parent), 'focus')\n }\n\n Dropdown._clearMenus()\n return\n }\n\n const items = makeArray(SelectorEngine.find(Selector.VISIBLE_ITEMS, parent))\n\n if (!items.length) {\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 static _getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\nEventHandler.on(document, Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\nEventHandler.on(document, Event.CLICK_DATA_API, Dropdown._clearMenus)\nEventHandler.on(document, Event.KEYUP_DATA_API, Dropdown._clearMenus)\nEventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._dropdownInterface(this, 'toggle')\n})\nEventHandler\n .on(document, Event.CLICK_DATA_API, Selector.FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .dropdown to jQuery only if jQuery is present\n */\n\nif (typeof $ !== 'undefined') {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\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}\n\nexport default Dropdown\n"],"names":["window","jQuery","toType","obj","toString","call","match","toLowerCase","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","document","querySelector","error","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","makeArray","nodeList","slice","noop","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","Event","HIDE","HIDDEN","SHOW","SHOWN","CLICK","CLICK_DATA_API","KEYDOWN_DATA_API","KEYUP_DATA_API","ClassName","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","POSITION_STATIC","Selector","DATA_TOGGLE","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHT","RIGHTEND","LEFT","LEFTEND","Default","offset","flip","boundary","reference","display","DefaultType","Dropdown","_element","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","Data","setData","toggle","disabled","classList","contains","parent","_getParentFromElement","isActive","_clearMenus","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","Popper","TypeError","referenceElement","jquery","add","_getPopperConfig","documentElement","SelectorEngine","closest","length","body","children","elem","on","focus","setAttribute","Manipulator","toggleClass","show","hide","hideEvent","dispose","removeData","off","destroy","update","scheduleUpdate","event","preventDefault","stopPropagation","constructor","getDataAttributes","findOne","_getPlacement","parentDropdown","parentNode","placement","Boolean","_getOffset","fn","data","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","_dropdownInterface","getData","_jQueryInterface","each","which","type","toggles","find","i","len","context","clickEvent","dropdownMenu","target","tagName","remove","_dataApiKeydownHandler","items","index","indexOf","_getInstance","e","$","JQUERY_NO_CONFLICT","Constructor","noConflict"],"mappings":"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"} |