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: 0f8e851297cc850f1a964f050c5f78a5e73154d8 (plain)
1
{"version":3,"sources":["../src/dropdown.js"],"names":["Dropdown","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ESCAPE_KEYCODE","SPACE_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","RegExp","Event","HIDE","HIDDEN","SHOW","SHOWN","CLICK","CLICK_DATA_API","FOCUSIN_DATA_API","KEYDOWN_DATA_API","ClassName","BACKDROP","DISABLED","Selector","DATA_TOGGLE","FORM_CHILD","ROLE_MENU","ROLE_LISTBOX","NAVBAR_NAV","VISIBLE_ITEMS","element","_element","_addEventListeners","toggle","disabled","hasClass","parent","_getParentFromElement","isActive","_clearMenus","relatedTarget","showEvent","trigger","isDefaultPrevented","document","documentElement","closest","length","dropdown","createElement","className","insertBefore","on","focus","setAttribute","toggleClass","dispose","removeData","off","_jQueryInterface","config","each","data","undefined","Error","call","event","which","toggles","makeArray","i","type","test","target","tagName","contains","hideEvent","backdrop","find","parentNode","removeChild","removeClass","selector","Util","getSelectorFromElement","_dataApiKeydownHandler","preventDefault","stopPropagation","items","get","index","indexOf","prototype","e","Constructor","noConflict","jQuery"],"mappings":"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","file":"dropdown.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                     = 'dropdown'\n  const VERSION                  = '4.0.0-alpha.6'\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 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}|${SPACE_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    FOCUSIN_DATA_API : `focusin${EVENT_KEY}${DATA_API_KEY}`,\n    KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    BACKDROP : 'dropdown-backdrop',\n    DISABLED : 'disabled',\n    SHOW     : 'show'\n  }\n\n  const Selector = {\n    BACKDROP      : '.dropdown-backdrop',\n    DATA_TOGGLE   : '[data-toggle=\"dropdown\"]',\n    FORM_CHILD    : '.dropdown form',\n    ROLE_MENU     : '[role=\"menu\"]',\n    ROLE_LISTBOX  : '[role=\"listbox\"]',\n    NAVBAR_NAV    : '.navbar-nav',\n    VISIBLE_ITEMS : '[role=\"menu\"] li:not(.disabled) a, '\n                  + '[role=\"listbox\"] li:not(.disabled) a'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Dropdown {\n\n    constructor(element) {\n      this._element = element\n\n      this._addEventListeners()\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n\n    // public\n\n    toggle() {\n      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n        return false\n      }\n\n      const parent   = Dropdown._getParentFromElement(this)\n      const isActive = $(parent).hasClass(ClassName.SHOW)\n\n      Dropdown._clearMenus()\n\n      if (isActive) {\n        return false\n      }\n\n      const relatedTarget = {\n        relatedTarget : this\n      }\n      const showEvent     = $.Event(Event.SHOW, relatedTarget)\n\n      $(parent).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented()) {\n        return false\n      }\n\n      // set the backdrop only if the dropdown menu will be opened\n      if ('ontouchstart' in document.documentElement &&\n         !$(parent).closest(Selector.NAVBAR_NAV).length) {\n\n        // if mobile we use a backdrop because click events don't delegate\n        const dropdown     = document.createElement('div')\n        dropdown.className = ClassName.BACKDROP\n        $(dropdown).insertBefore(this)\n        $(dropdown).on('click', Dropdown._clearMenus)\n      }\n\n      this.focus()\n      this.setAttribute('aria-expanded', true)\n\n      $(parent).toggleClass(ClassName.SHOW)\n      $(parent).trigger($.Event(Event.SHOWN, relatedTarget))\n\n      return false\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._element).off(EVENT_KEY)\n      this._element = null\n    }\n\n\n    // private\n\n    _addEventListeners() {\n      $(this._element).on(Event.CLICK, this.toggle)\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n\n        if (!data) {\n          data = new Dropdown(this)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (data[config] === undefined) {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config].call(this)\n        }\n      })\n    }\n\n    static _clearMenus(event) {\n      if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {\n        return\n      }\n\n      const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n\n      for (let i = 0; i < toggles.length; i++) {\n        const parent        = Dropdown._getParentFromElement(toggles[i])\n        const relatedTarget = {\n          relatedTarget : toggles[i]\n        }\n\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 === 'focusin')\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        // remove backdrop only if the dropdown menu will be hidden\n        const backdrop = $(parent).find(Selector.BACKDROP)[0]\n        if (backdrop) {\n          backdrop.parentNode.removeChild(backdrop)\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false')\n\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 = $(selector)[0]\n      }\n\n      return parent || element.parentNode\n    }\n\n    static _dataApiKeydownHandler(event) {\n      if (!REGEXP_KEYDOWN.test(event.which) ||\n         /input|textarea/i.test(event.target.tagName)) {\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 ||\n           isActive && event.which === ESCAPE_KEYCODE) {\n\n        if (event.which === ESCAPE_KEYCODE) {\n          const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n          $(toggle).trigger('focus')\n        }\n\n        $(this).trigger('click')\n        return\n      }\n\n      const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\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  }\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.ROLE_MENU,    Dropdown._dataApiKeydownHandler)\n    .on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler)\n    .on(`${Event.CLICK_DATA_API} ${Event.FOCUSIN_DATA_API}`, Dropdown._clearMenus)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)\n    .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n      e.stopPropagation()\n    })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Dropdown._jQueryInterface\n  $.fn[NAME].Constructor = Dropdown\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Dropdown._jQueryInterface\n  }\n\n  return Dropdown\n\n})(jQuery)\n\nexport default Dropdown\n"]}