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: 64c3fe9275057b54a9c430d74589a490b737edf2 (plain)
1
{"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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"}