0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-01 13:24:25 +01:00
Bootstrap/js/dist/collapse.js.map
2020-12-07 18:18:16 +02:00

1 line
34 KiB
Plaintext

{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/base-component.js","../src/collapse.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): collapse.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 getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\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 = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(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 Collapse.collapseInterface(this, config)\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 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse 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] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","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","Default","toggle","parent","DefaultType","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_config","_getConfig","_triggerArray","SelectorEngine","find","id","toggleList","i","len","length","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","classList","contains","hide","show","actives","activesData","container","findOne","tempActiveData","startEvent","EventHandler","trigger","defaultPrevented","elemActive","collapseInterface","dimension","_getDimension","remove","add","style","setAttribute","setTransitioning","complete","capitalizedDimension","slice","scrollSize","one","getBoundingClientRect","triggerArrayLength","isTransitioning","Boolean","jquery","selected","triggerArray","isOpen","data","Manipulator","getDataAttributes","TypeError","jQueryInterface","each","on","event","target","tagName","preventDefault","triggerData","selectorElements","$","JQUERY_NO_CONFLICT","fn","Constructor","noConflict"],"mappings":"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"}