{"version":3,"file":"dropdown.js","sources":["../src/dropdown.js"],"sourcesContent":["import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const 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\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const 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\n const 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\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n }\n\n const 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\n class 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(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(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 = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\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 dropdown 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 (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(ClassName.POSITION_STATIC)\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(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, 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 if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\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.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\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 return popperConfig\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 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 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(ClassName.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 $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.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 event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\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\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n"],"names":["Dropdown","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","RegExp","Event","HIDE","HIDDEN","SHOW","SHOWN","CLICK","CLICK_DATA_API","KEYDOWN_DATA_API","KEYUP_DATA_API","ClassName","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","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","element","config","_element","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","toggle","disabled","hasClass","parent","_getParentFromElement","isActive","_clearMenus","relatedTarget","showEvent","trigger","isDefaultPrevented","Popper","TypeError","referenceElement","Util","isElement","jquery","addClass","_getPopperConfig","document","documentElement","closest","length","body","children","on","noop","focus","setAttribute","toggleClass","dispose","removeData","off","destroy","update","scheduleUpdate","event","preventDefault","stopPropagation","constructor","data","typeCheckConfig","querySelector","_getPlacement","$parentDropdown","parentNode","placement","offsetConf","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","_jQueryInterface","each","which","type","toggles","slice","call","querySelectorAll","i","len","context","clickEvent","dropdownMenu","test","target","tagName","contains","hideEvent","removeClass","selector","getSelectorFromElement","_dataApiKeydownHandler","items","index","indexOf","e","Constructor","noConflict"],"mappings":"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"}