diff options
| author | XhmikosR <[email protected]> | 2019-02-26 13:20:34 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2019-03-11 17:01:28 +0200 |
| commit | 46c037410b8c7eaab3cf50a5cf44093aa2fd41f4 (patch) | |
| tree | cb8c857562c4d3f819a5a8fcc563bc8f2c126e4e /js/src/collapse.js | |
| parent | 44e6abcba50309df4fae56a9c7ef79145b64a356 (diff) | |
| download | bootstrap-46c037410b8c7eaab3cf50a5cf44093aa2fd41f4.tar.xz bootstrap-46c037410b8c7eaab3cf50a5cf44093aa2fd41f4.zip | |
Comply to the new rules.
Diffstat (limited to 'js/src/collapse.js')
| -rw-r--r-- | js/src/collapse.js | 104 |
1 files changed, 53 insertions, 51 deletions
diff --git a/js/src/collapse.js b/js/src/collapse.js index 847062d8d..10f1ec9ba 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -27,45 +27,45 @@ import SelectorEngine from './dom/selectorEngine' * ------------------------------------------------------------------------ */ -const NAME = 'collapse' -const VERSION = '4.3.1' -const DATA_KEY = 'bs.collapse' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' +const NAME = 'collapse' +const VERSION = '4.3.1' +const DATA_KEY = 'bs.collapse' +const EVENT_KEY = `.${DATA_KEY}` +const DATA_API_KEY = '.data-api' const Default = { - toggle : true, - parent : '' + toggle: true, + parent: '' } const DefaultType = { - toggle : 'boolean', - parent : '(string|element)' + toggle: 'boolean', + parent: '(string|element)' } const Event = { - SHOW : `show${EVENT_KEY}`, - SHOWN : `shown${EVENT_KEY}`, - HIDE : `hide${EVENT_KEY}`, - HIDDEN : `hidden${EVENT_KEY}`, - CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + SHOW: `show${EVENT_KEY}`, + SHOWN: `shown${EVENT_KEY}`, + HIDE: `hide${EVENT_KEY}`, + HIDDEN: `hidden${EVENT_KEY}`, + CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}` } const ClassName = { - SHOW : 'show', - COLLAPSE : 'collapse', - COLLAPSING : 'collapsing', - COLLAPSED : 'collapsed' + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' } const Dimension = { - WIDTH : 'width', - HEIGHT : 'height' + WIDTH: 'width', + HEIGHT: 'height' } const Selector = { - ACTIVES : '.show, .collapsing', - DATA_TOGGLE : '[data-toggle="collapse"]' + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' } /** @@ -77,9 +77,9 @@ const Selector = { class Collapse { constructor(element, config) { this._isTransitioning = false - this._element = element - this._config = this._getConfig(config) - this._triggerArray = makeArray(SelectorEngine.find( + this._element = element + this._config = this._getConfig(config) + this._triggerArray = makeArray(SelectorEngine.find( `[data-toggle="collapse"][href="#${element.id}"],` + `[data-toggle="collapse"][data-target="#${element.id}"]` )) @@ -89,7 +89,7 @@ class Collapse { const elem = toggleList[i] const selector = getSelectorFromElement(elem) const filterElement = makeArray(SelectorEngine.find(selector)) - .filter((foundElem) => foundElem === element) + .filter(foundElem => foundElem === element) if (selector !== null && filterElement.length) { this._selector = selector @@ -141,7 +141,7 @@ class Collapse { if (this._parent) { actives = makeArray(SelectorEngine.find(Selector.ACTIVES, this._parent)) - .filter((elem) => { + .filter(elem => { if (typeof this._config.parent === 'string') { return elem.getAttribute('data-parent') === this._config.parent } @@ -156,7 +156,7 @@ class Collapse { const container = SelectorEngine.findOne(this._selector) if (actives) { - const tempActiveData = actives.filter((elem) => container !== elem) + const tempActiveData = actives.filter(elem => container !== elem) activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY) : null if (activesData && activesData._isTransitioning) { @@ -170,7 +170,7 @@ class Collapse { } if (actives) { - actives.forEach((elemActive) => { + actives.forEach(elemActive => { if (container !== elemActive) { Collapse._collapseInterface(elemActive, 'hide') } @@ -189,7 +189,7 @@ class Collapse { this._element.style[dimension] = 0 if (this._triggerArray.length) { - this._triggerArray.forEach((element) => { + this._triggerArray.forEach(element => { element.classList.remove(ClassName.COLLAPSED) element.setAttribute('aria-expanded', true) }) @@ -280,10 +280,10 @@ class Collapse { dispose() { Data.removeData(this._element, DATA_KEY) - this._config = null - this._parent = null - this._element = null - this._triggerArray = null + this._config = null + this._parent = null + this._element = null + this._triggerArray = null this._isTransitioning = null } @@ -308,7 +308,7 @@ class Collapse { let parent if (isElement(this._config.parent)) { - parent = this._config.parent + { parent } = this._config // it's a jQuery object if (typeof this._config.parent.jquery !== 'undefined' || typeof this._config.parent[0] !== 'undefined') { @@ -318,11 +318,10 @@ class Collapse { parent = SelectorEngine.findOne(this._config.parent) } - const selector = - `[data-toggle="collapse"][data-parent="${this._config.parent}"]` + const selector = `[data-toggle="collapse"][data-parent="${parent}"]` makeArray(SelectorEngine.find(selector, parent)) - .forEach((element) => { + .forEach(element => { this._addAriaAndCollapsedClass( Collapse._getTargetFromElement(element), [element] @@ -337,12 +336,13 @@ class Collapse { const isOpen = element.classList.contains(ClassName.SHOW) if (triggerArray.length) { - triggerArray.forEach((elem) => { - if (!isOpen) { - elem.classList.add(ClassName.COLLAPSED) - } else { + triggerArray.forEach(elem => { + if (isOpen) { elem.classList.remove(ClassName.COLLAPSED) + } else { + elem.classList.add(ClassName.COLLAPSED) } + elem.setAttribute('aria-expanded', isOpen) }) } @@ -357,7 +357,7 @@ class Collapse { } static _collapseInterface(element, config) { - let data = Data.getData(element, DATA_KEY) + let data = Data.getData(element, DATA_KEY) const _config = { ...Default, ...Manipulator.getDataAttributes(element), @@ -374,8 +374,9 @@ class Collapse { if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new Error(`No method named "${config}"`) + throw new TypeError(`No method named "${config}"`) } + data[config]() } } @@ -403,11 +404,11 @@ EventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function ( event.preventDefault() } - const triggerData = Manipulator.getDataAttributes(this) - const selector = getSelectorFromElement(this) + const triggerData = Manipulator.getDataAttributes(this) + const selector = getSelectorFromElement(this) const selectorElements = makeArray(SelectorEngine.find(selector)) - selectorElements.forEach((element) => { + selectorElements.forEach(element => { const data = Data.getData(element, DATA_KEY) let config if (data) { @@ -416,6 +417,7 @@ EventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function ( data._config.parent = triggerData.parent data._parent = data._getParent() } + config = 'toggle' } else { config = triggerData @@ -433,10 +435,10 @@ EventHandler.on(document, Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function ( */ if (typeof $ !== 'undefined') { - const JQUERY_NO_CONFLICT = $.fn[NAME] - $.fn[NAME] = Collapse._jQueryInterface - $.fn[NAME].Constructor = Collapse - $.fn[NAME].noConflict = () => { + const JQUERY_NO_CONFLICT = $.fn[NAME] + $.fn[NAME] = Collapse._jQueryInterface + $.fn[NAME].Constructor = Collapse + $.fn[NAME].noConflict = () => { $.fn[NAME] = JQUERY_NO_CONFLICT return Collapse._jQueryInterface } |
