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

tab.js.map « dist « js - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 48c6fcd50614939842ef99357529279f4d28166c (plain)
1
{"version":3,"file":"tab.js","sources":["../src/util/index.js","../src/base-component.js","../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): 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    const hrefAttr = element.getAttribute('href')\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) ?\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 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 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 = () => function () {}\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\nexport {\n  TRANSITION_END,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  emulateTransitionEnd,\n  typeCheckConfig,\n  isVisible,\n  findShadowRoot,\n  noop,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n  constructor(element) {\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.setData(element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.removeData(this._element, this.constructor.DATA_KEY)\n    this._element = null\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.getData(element, this.DATA_KEY)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  getjQuery,\n  onDOMContentLoaded,\n  TRANSITION_END,\n  emulateTransitionEnd,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n      this._element.classList.contains(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    let hideEvent = null\n\n    if (previous) {\n      hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      })\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      const transitionDuration = getTransitionDurationFromElement(active)\n      active.classList.remove(CLASS_NAME_SHOW)\n\n      EventHandler.one(active, TRANSITION_END, complete)\n      emulateTransitionEnd(active, transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Data.getData(this, DATA_KEY) || new Tab(this)\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}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n\n  const data = Data.getData(this, DATA_KEY) || new Tab(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n  const $ = getjQuery()\n  /* istanbul ignore if */\n  if ($) {\n    const JQUERY_NO_CONFLICT = $.fn[NAME]\n    $.fn[NAME] = Tab.jQueryInterface\n    $.fn[NAME].Constructor = Tab\n    $.fn[NAME].noConflict = () => {\n      $.fn[NAME] = JQUERY_NO_CONFLICT\n      return Tab.jQueryInterface\n    }\n  }\n})\n\nexport default Tab\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttr","trim","getElementFromSelector","document","querySelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","documentElement","dir","VERSION","BaseComponent","_element","Data","setData","constructor","DATA_KEY","dispose","removeData","getInstance","getData","NAME","EVENT_KEY","DATA_API_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_DISABLED","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","show","parentNode","nodeType","Node","ELEMENT_NODE","classList","contains","previous","target","listElement","closest","itemSelector","nodeName","SelectorEngine","find","length","hideEvent","EventHandler","trigger","relatedTarget","showEvent","defaultPrevented","_activate","complete","container","activeElements","children","active","isTransitioning","_transitionComplete","remove","one","dropdownChild","findOne","setAttribute","add","dropdownElement","forEach","dropdown","jQueryInterface","config","each","data","TypeError","on","event","preventDefault","$","JQUERY_NO_CONFLICT","fn","Constructor","noConflict"],"mappings":"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"}