mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-10 22:24:19 +01:00
1 line
33 KiB
Plaintext
1 line
33 KiB
Plaintext
{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/collapse.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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 => ({}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase())\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-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 {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = 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 (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n const evt = document.createEvent('HTMLEvents')\n\n evt.initEvent(TRANSITION_END, true, true)\n element.dispatchEvent(evt)\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 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)\n .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 makeArray = nodeList => {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\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-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nexport {\n getjQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n makeArray,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n makeArray,\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'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\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 = {\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n}\n\nconst Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n}\n\nconst Selector = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = makeArray(SelectorEngine.find(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = makeArray(SelectorEngine.find(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = makeArray(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 Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = makeArray(SelectorEngine.find(Selector.ACTIVES, this._parent))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.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.filter(elem => container !== elem)\n activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], 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(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(ClassName.COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.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 ||\n !this._element.classList.contains(ClassName.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(ClassName.COLLAPSING)\n this._element.classList.remove(ClassName.COLLAPSE)\n this._element.classList.remove(ClassName.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(ClassName.SHOW)) {\n trigger.classList.add(ClassName.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(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.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 Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = 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 const hasWidth = this._element.classList.contains(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.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 = `[data-toggle=\"collapse\"][data-parent=\"${parent}\"]`\n\n makeArray(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) {\n const isOpen = element.classList.contains(ClassName.SHOW)\n\n if (triggerArray.length) {\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(ClassName.COLLAPSED)\n } else {\n elem.classList.add(ClassName.COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\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 && /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 static getInstance(element) {\n return Data.getData(element, DATA_KEY)\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 = makeArray(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\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .collapse to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\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\nexport default Collapse\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","evt","createEvent","initEvent","dispatchEvent","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","makeArray","nodeList","slice","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","toggle","parent","DefaultType","Event","SHOW","SHOWN","HIDE","HIDDEN","CLICK_DATA_API","ClassName","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","Selector","ACTIVES","DATA_TOGGLE","Collapse","_isTransitioning","_element","_config","_getConfig","_triggerArray","SelectorEngine","find","id","toggleList","i","len","length","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","Data","setData","classList","contains","hide","show","actives","activesData","container","findOne","tempActiveData","getData","startEvent","EventHandler","trigger","defaultPrevented","elemActive","collapseInterface","dimension","_getDimension","remove","add","style","setAttribute","setTransitioning","complete","capitalizedDimension","scrollSize","one","getBoundingClientRect","triggerArrayLength","isTransitioning","dispose","removeData","Boolean","hasWidth","jquery","selected","triggerArray","isOpen","data","Manipulator","getDataAttributes","TypeError","jQueryInterface","each","getInstance","on","event","target","tagName","preventDefault","triggerData","selectorElements","$","JQUERY_NO_CONFLICT","fn","Constructor","noConflict"],"mappings":"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"} |