Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dropdown.js.map « dist « js - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c19fcb55c9511826a943020ba1fe449052005373 (plain)
1
{"version":3,"file":"dropdown.js","sources":["../src/util/index.js","../src/dropdown.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n  let called = false\n  const durationPadding = 5\n  const emulatedDuration = duration + durationPadding\n\n  function listener() {\n    called = true\n    element.removeEventListener(TRANSITION_END, listener)\n  }\n\n  element.addEventListener(TRANSITION_END, listener)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(element)\n    }\n  }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!element) {\n    return false\n  }\n\n  if (element.style && element.parentNode && element.parentNode.style) {\n    const elementStyle = getComputedStyle(element)\n    const parentNodeStyle = getComputedStyle(element.parentNode)\n\n    return elementStyle.display !== 'none' &&\n      parentNodeStyle.display !== 'none' &&\n      elementStyle.visibility !== 'hidden'\n  }\n\n  return false\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nexport {\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  emulateTransitionEnd,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isElement,\n  isVisible,\n  isRTL,\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 SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\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_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\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 = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\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 Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  // Public\n\n  toggle() {\n    if (isDisabled(this._element)) {\n      return\n    }\n\n    const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n    if (isActive) {\n      this.hide()\n      return\n    }\n\n    this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_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(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\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 (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      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      }\n\n      const popperConfig = this._getPopperConfig()\n      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n      this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n      if (isDisplayStatic) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n      }\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)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.toggle(CLASS_NAME_SHOW)\n    this._element.classList.toggle(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._menu = null\n\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_CLICK, event => {\n      event.preventDefault()\n      this.toggle()\n    })\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\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      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem(event) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    let index = items.indexOf(event.target)\n\n    // Up\n    if (event.key === ARROW_UP_KEY && index > 0) {\n      index--\n    }\n\n    // Down\n    if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n      index++\n    }\n\n    // index is -1 if the first keydown is an ArrowUp\n    index = index === -1 ? 0 : index\n\n    items[index].focus()\n  }\n\n  // Static\n\n  static dropdownInterface(element, config) {\n    let data = Data.get(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) {\n      if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n        return\n      }\n\n      if (/input|select|option|textarea|form/i.test(event.target.tagName)) {\n        return\n      }\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Data.get(toggles[i], DATA_KEY)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu shouldn't close the menu\n        if (event.type === 'keyup' && event.key === TAB_KEY && context._menu.contains(event.target)) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || 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.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n    if (event.key === ESCAPE_KEY) {\n      getToggleButton().focus()\n      Dropdown.clearMenus()\n      return\n    }\n\n    if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n      getToggleButton().click()\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n      return\n    }\n\n    Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\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  Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","getComputedStyle","parentNodeStyle","display","visibility","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","noop","getjQuery","jQuery","window","body","onDOMContentLoaded","callback","readyState","addEventListener","isRTL","documentElement","dir","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default","offset","boundary","reference","popperConfig","autoClose","DefaultType","Dropdown","BaseComponent","constructor","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","toggle","_element","isActive","hide","show","parent","getParentFromElement","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","Manipulator","setDataAttribute","Popper","referenceElement","jquery","_getPopperConfig","isDisplayStatic","modifiers","find","modifier","enabled","createPopper","closest","concat","children","elem","on","focus","setAttribute","_completeHide","dispose","destroy","update","event","preventDefault","hideEvent","off","remove","removeDataAttribute","getDataAttributes","getBoundingClientRect","SelectorEngine","next","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","map","val","Number","parseInt","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","filter","length","index","indexOf","target","key","dropdownInterface","data","Data","get","each","clearMenus","button","type","tagName","toggles","i","len","context","composedPath","isMenuTarget","clickEvent","dataApiKeydownHandler","stopPropagation","getToggleButton","matches","prev","click","getInstance"],"mappings":"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"}