blob: 1bf66b5ca241c5445f3e6b56f07e5a667b2fa2ac [file] [log] [blame]
{"version":3,"sources":["../src/collapse.js"],"names":["Collapse","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","Default","toggle","parent","DefaultType","Event","SHOW","SHOWN","HIDE","HIDDEN","CLICK_DATA_API","ClassName","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","Selector","ACTIVES","DATA_TOGGLE","element","config","_isTransitioning","_element","_config","_getConfig","_triggerArray","makeArray","id","tabToggles","i","length","elem","selector","Util","getSelectorFromElement","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hasClass","hide","show","actives","activesData","find","not","data","startEvent","trigger","isDefaultPrevented","_jQueryInterface","call","dimension","_getDimension","removeClass","addClass","style","attr","setTransitioning","complete","capitalizedDimension","toUpperCase","slice","scrollSize","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","getBoundingClientRect","reflow","$elem","isTransitioning","dispose","removeData","Boolean","typeCheckConfig","hasWidth","isElement","jquery","each","_getTargetFromElement","triggerArray","isOpen","toggleClass","$this","test","TypeError","document","on","event","currentTarget","tagName","preventDefault","$trigger","$target","Constructor","noConflict"],"mappings":"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","sourcesContent":["import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.1.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const 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\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\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 VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.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 Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && 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(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\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(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.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n"],"file":"collapse.js"}