1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-06 13:46:42 +02:00

keep parent only as element

This commit is contained in:
GeoSot
2021-06-10 02:51:51 +03:00
committed by XhmikosR
parent 4c1f7bb051
commit 6f17e634ce
2 changed files with 15 additions and 19 deletions

View File

@@ -32,12 +32,12 @@ const DATA_API_KEY = '.data-api'
const Default = {
toggle: true,
parent: ''
parent: null
}
const DefaultType = {
toggle: 'boolean',
parent: '(string|element)'
parent: '(null|element)'
}
const EVENT_SHOW = `show${EVENT_KEY}`
@@ -86,7 +86,7 @@ class Collapse extends BaseComponent {
}
}
this._parent = this._config.parent ? this._getParent() : null
this._initializeChildren()
if (!this._config.parent) {
this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())
@@ -125,9 +125,9 @@ class Collapse extends BaseComponent {
let actives = []
let activesData
if (this._parent) {
const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._parent)
actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(elem => !children.includes(elem)) // remove children if greater depth
if (this._config.parent) {
const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)
actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth
}
const container = SelectorEngine.findOne(this._selector)
@@ -239,6 +239,7 @@ class Collapse extends BaseComponent {
...config
}
config.toggle = Boolean(config.toggle) // Coerce string values
config.parent = getElement(config.parent)
typeCheckConfig(NAME, config, DefaultType)
return config
}
@@ -247,14 +248,13 @@ class Collapse extends BaseComponent {
return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT
}
_getParent() {
let { parent } = this._config
_initializeChildren() {
if (!this._config.parent) {
return
}
parent = getElement(parent)
const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent="${parent}"]`
SelectorEngine.find(selector, parent)
const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)
SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))
.forEach(element => {
const selected = getElementFromSelector(element)
@@ -262,8 +262,6 @@ class Collapse extends BaseComponent {
this._addAriaAndCollapsedClass([element], this._isShown(selected))
}
})
return parent
}
_addAriaAndCollapsedClass(triggerArray, isOpen) {