diff options
Diffstat (limited to 'js/src')
| -rw-r--r-- | js/src/alert.js | 2 | ||||
| -rw-r--r-- | js/src/base-component.js | 8 | ||||
| -rw-r--r-- | js/src/button.js | 2 | ||||
| -rw-r--r-- | js/src/carousel.js | 18 | ||||
| -rw-r--r-- | js/src/collapse.js | 39 | ||||
| -rw-r--r-- | js/src/dom/data.js | 2 | ||||
| -rw-r--r-- | js/src/dom/event-handler.js | 22 | ||||
| -rw-r--r-- | js/src/dom/manipulator.js | 15 | ||||
| -rw-r--r-- | js/src/dom/selector-engine.js | 2 | ||||
| -rw-r--r-- | js/src/dropdown.js | 21 | ||||
| -rw-r--r-- | js/src/modal.js | 7 | ||||
| -rw-r--r-- | js/src/offcanvas.js | 10 | ||||
| -rw-r--r-- | js/src/popover.js | 2 | ||||
| -rw-r--r-- | js/src/scrollspy.js | 53 | ||||
| -rw-r--r-- | js/src/tab.js | 7 | ||||
| -rw-r--r-- | js/src/toast.js | 2 | ||||
| -rw-r--r-- | js/src/tooltip.js | 24 | ||||
| -rw-r--r-- | js/src/util/backdrop.js | 2 | ||||
| -rw-r--r-- | js/src/util/component-functions.js | 2 | ||||
| -rw-r--r-- | js/src/util/focustrap.js | 2 | ||||
| -rw-r--r-- | js/src/util/index.js | 14 | ||||
| -rw-r--r-- | js/src/util/sanitizer.js | 20 | ||||
| -rw-r--r-- | js/src/util/scrollbar.js | 6 |
23 files changed, 143 insertions, 139 deletions
diff --git a/js/src/alert.js b/js/src/alert.js index 97b305138..9b4cba4cf 100644 --- a/js/src/alert.js +++ b/js/src/alert.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): alert.js + * Bootstrap (v5.1.2): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/base-component.js b/js/src/base-component.js index cb65bed8e..0a1c17357 100644 --- a/js/src/base-component.js +++ b/js/src/base-component.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): base-component.js + * Bootstrap (v5.1.2): base-component.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -18,7 +18,7 @@ import EventHandler from './dom/event-handler' * ------------------------------------------------------------------------ */ -const VERSION = '5.1.1' +const VERSION = '5.1.2' class BaseComponent { constructor(element) { @@ -36,9 +36,9 @@ class BaseComponent { Data.remove(this._element, this.constructor.DATA_KEY) EventHandler.off(this._element, this.constructor.EVENT_KEY) - Object.getOwnPropertyNames(this).forEach(propertyName => { + for (const propertyName of Object.getOwnPropertyNames(this)) { this[propertyName] = null - }) + } } _queueCallback(callback, element, isAnimated = true) { diff --git a/js/src/button.js b/js/src/button.js index 0578ed6b9..c4e7c296d 100644 --- a/js/src/button.js +++ b/js/src/button.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): button.js + * Bootstrap (v5.1.2): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/carousel.js b/js/src/carousel.js index 86daa0795..3f49ded40 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): carousel.js + * Bootstrap (v5.1.2): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -304,9 +304,9 @@ class Carousel extends BaseComponent { } } - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => { + for (const itemImg of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault()) - }) + } if (this._pointerEvent) { EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event)) @@ -366,10 +366,10 @@ class Carousel extends BaseComponent { const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement) - for (let i = 0; i < indicators.length; i++) { - if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { - indicators[i].classList.add(CLASS_NAME_ACTIVE) - indicators[i].setAttribute('aria-current', 'true') + for (const indicator of indicators) { + if (Number.parseInt(indicator.getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { + indicator.classList.add(CLASS_NAME_ACTIVE) + indicator.setAttribute('aria-current', 'true') break } } @@ -574,8 +574,8 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.da EventHandler.on(window, EVENT_LOAD_DATA_API, () => { const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE) - for (let i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])) + for (const carousel of carousels) { + Carousel.carouselInterface(carousel, Carousel.getInstance(carousel)) } }) diff --git a/js/src/collapse.js b/js/src/collapse.js index edfc7ea85..b7f200d56 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): collapse.js + * Bootstrap (v5.1.2): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -75,8 +75,7 @@ class Collapse extends BaseComponent { const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE) - for (let i = 0, len = toggleList.length; i < len; i++) { - const elem = toggleList[i] + for (const elem of toggleList) { const selector = getSelectorFromElement(elem) const filterElement = SelectorEngine.find(selector) .filter(foundElem => foundElem === this._element) @@ -128,7 +127,8 @@ class Collapse extends BaseComponent { if (this._config.parent) { const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent) - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth + // remove children if greater depth + actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) } const container = SelectorEngine.findOne(this._selector) @@ -146,7 +146,7 @@ class Collapse extends BaseComponent { return } - actives.forEach(elemActive => { + for (const elemActive of actives) { if (container !== elemActive) { Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide() } @@ -154,7 +154,7 @@ class Collapse extends BaseComponent { if (!activesData) { Data.set(elemActive, DATA_KEY, null) } - }) + } const dimension = this._getDimension() @@ -203,9 +203,7 @@ class Collapse extends BaseComponent { this._element.classList.add(CLASS_NAME_COLLAPSING) this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW) - const triggerArrayLength = this._triggerArray.length - for (let i = 0; i < triggerArrayLength; i++) { - const trigger = this._triggerArray[i] + for (const trigger of this._triggerArray) { const elem = getElementFromSelector(trigger) if (elem && !this._isShown(elem)) { @@ -255,14 +253,15 @@ class Collapse extends BaseComponent { } const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent) - SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)) - .forEach(element => { - const selected = getElementFromSelector(element) + const elements = SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)) - if (selected) { - this._addAriaAndCollapsedClass([element], this._isShown(selected)) - } - }) + for (const element of elements) { + const selected = getElementFromSelector(element) + + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)) + } + } } _addAriaAndCollapsedClass(triggerArray, isOpen) { @@ -270,7 +269,7 @@ class Collapse extends BaseComponent { return } - triggerArray.forEach(elem => { + for (const elem of triggerArray) { if (isOpen) { elem.classList.remove(CLASS_NAME_COLLAPSED) } else { @@ -278,7 +277,7 @@ class Collapse extends BaseComponent { } elem.setAttribute('aria-expanded', isOpen) - }) + } } // Static @@ -318,9 +317,9 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( const selector = getSelectorFromElement(this) const selectorElements = SelectorEngine.find(selector) - selectorElements.forEach(element => { + for (const element of selectorElements) { Collapse.getOrCreateInstance(element, { toggle: false }).toggle() - }) + } }) /** diff --git a/js/src/dom/data.js b/js/src/dom/data.js index ee5b2c37d..5dbb87754 100644 --- a/js/src/dom/data.js +++ b/js/src/dom/data.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): dom/data.js + * Bootstrap (v5.1.2): dom/data.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/dom/event-handler.js b/js/src/dom/event-handler.js index bf895dc6e..e2fdbd52c 100644 --- a/js/src/dom/event-handler.js +++ b/js/src/dom/event-handler.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): dom/event-handler.js + * Bootstrap (v5.1.2): dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -129,8 +129,8 @@ function bootstrapDelegationHandler(element, selector, fn) { function findHandler(events, handler, delegationSelector = null) { const uidEventList = Object.keys(events) - for (let i = 0, len = uidEventList.length; i < len; i++) { - const event = events[uidEventList[i]] + for (const uidEvent of uidEventList) { + const event = events[uidEvent] if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { return event @@ -221,13 +221,13 @@ function removeHandler(element, events, typeEvent, handler, delegationSelector) function removeNamespacedHandlers(element, events, typeEvent, namespace) { const storeElementEvent = events[typeEvent] || {} - Object.keys(storeElementEvent).forEach(handlerKey => { + for (const handlerKey of Object.keys(storeElementEvent)) { if (handlerKey.includes(namespace)) { const event = storeElementEvent[handlerKey] removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector) } - }) + } } function getTypeEvent(event) { @@ -266,13 +266,13 @@ const EventHandler = { } if (isNamespace) { - Object.keys(events).forEach(elementEvent => { + for (const elementEvent of Object.keys(events)) { removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)) - }) + } } const storeElementEvent = events[typeEvent] || {} - Object.keys(storeElementEvent).forEach(keyHandlers => { + for (const keyHandlers of Object.keys(storeElementEvent)) { const handlerKey = keyHandlers.replace(stripUidRegex, '') if (!inNamespace || originalTypeEvent.includes(handlerKey)) { @@ -280,7 +280,7 @@ const EventHandler = { removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector) } - }) + } }, trigger(element, event, args) { @@ -320,13 +320,13 @@ const EventHandler = { // merge custom information in our event if (typeof args !== 'undefined') { - Object.keys(args).forEach(key => { + for (const key of Object.keys(args)) { Object.defineProperty(evt, key, { get() { return args[key] } }) - }) + } } if (defaultPrevented) { diff --git a/js/src/dom/manipulator.js b/js/src/dom/manipulator.js index 1be3a793f..219727d7c 100644 --- a/js/src/dom/manipulator.js +++ b/js/src/dom/manipulator.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): dom/manipulator.js + * Bootstrap (v5.1.2): dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -44,14 +44,13 @@ const Manipulator = { } const attributes = {} + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs')) - Object.keys(element.dataset) - .filter(key => key.startsWith('bs')) - .forEach(key => { - let pureKey = key.replace(/^bs/, '') - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length) - attributes[pureKey] = normalizeData(element.dataset[key]) - }) + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, '') + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length) + attributes[pureKey] = normalizeData(element.dataset[key]) + } return attributes }, diff --git a/js/src/dom/selector-engine.js b/js/src/dom/selector-engine.js index 19e45c205..9fc0e4b0e 100644 --- a/js/src/dom/selector-engine.js +++ b/js/src/dom/selector-engine.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): dom/selector-engine.js + * Bootstrap (v5.1.2): dom/selector-engine.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 874cf907b..32b587bf1 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): dropdown.js + * Bootstrap (v5.1.2): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -151,10 +151,10 @@ class Dropdown extends BaseComponent { // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - if ('ontouchstart' in document.documentElement && - !parent.closest(SELECTOR_NAVBAR_NAV)) { - [].concat(...document.body.children) - .forEach(elem => EventHandler.on(elem, 'mouseover', noop)) + if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) { + for (const elem of [].concat(...document.body.children)) { + EventHandler.on(elem, 'mouseover', noop) + } } this._element.focus() @@ -203,8 +203,9 @@ class Dropdown extends BaseComponent { // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children) - .forEach(elem => EventHandler.off(elem, 'mouseover', noop)) + for (const elem of [].concat(...document.body.children)) { + EventHandler.off(elem, 'mouseover', noop) + } } if (this._popper) { @@ -341,7 +342,7 @@ class Dropdown extends BaseComponent { } _selectMenuItem({ key, target }) { - const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible) + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(el => isVisible(el)) if (!items.length) { return @@ -377,8 +378,8 @@ class Dropdown extends BaseComponent { const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE) - for (let i = 0, len = toggles.length; i < len; i++) { - const context = Dropdown.getInstance(toggles[i]) + for (const toggle of toggles) { + const context = Dropdown.getInstance(toggle) if (!context || context._config.autoClose === false) { continue } diff --git a/js/src/modal.js b/js/src/modal.js index b4700f02a..b0ee089de 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): modal.js + * Bootstrap (v5.1.2): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -175,8 +175,9 @@ class Modal extends BaseComponent { } dispose() { - [window, this._dialog] - .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY)) + for (const htmlElement of [window, this._dialog]) { + EventHandler.off(htmlElement, EVENT_KEY) + } this._backdrop.dispose() this._focustrap.deactivate() diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js index ba809cdf2..28fd49f06 100644 --- a/js/src/offcanvas.js +++ b/js/src/offcanvas.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): offcanvas.js + * Bootstrap (v5.1.2): offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -256,9 +256,11 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( data.toggle(this) }) -EventHandler.on(window, EVENT_LOAD_DATA_API, () => - SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()) -) +EventHandler.on(window, EVENT_LOAD_DATA_API, () => { + for (const el of SelectorEngine.find(OPEN_SELECTOR)) { + Offcanvas.getOrCreateInstance(el).show() + } +}) enableDismissTrigger(Offcanvas) /** diff --git a/js/src/popover.js b/js/src/popover.js index 71c50daf9..d499bedf1 100644 --- a/js/src/popover.js +++ b/js/src/popover.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): popover.js + * Bootstrap (v5.1.2): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index 6ac00fedd..df9a14e22 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): scrollspy.js + * Bootstrap (v5.1.2): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -111,7 +111,7 @@ class ScrollSpy extends BaseComponent { const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target) - targets.map(element => { + for (const item of targets.map(element => { const targetSelector = getSelectorFromElement(element) const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null @@ -128,11 +128,10 @@ class ScrollSpy extends BaseComponent { return null }) .filter(item => item) - .sort((a, b) => a[0] - b[0]) - .forEach(item => { - this._offsets.push(item[0]) - this._targets.push(item[1]) - }) + .sort((a, b) => a[0] - b[0])) { + this._offsets.push(item[0]) + this._targets.push(item[1]) + } } dispose() { @@ -226,20 +225,20 @@ class ScrollSpy extends BaseComponent { SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)) .classList.add(CLASS_NAME_ACTIVE) } else { - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP) - .forEach(listGroup => { - // Set triggered links parents as active - // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor - SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`) - .forEach(item => item.classList.add(CLASS_NAME_ACTIVE)) - - // Handle special case when .nav-link is inside .nav-item - SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS) - .forEach(navItem => { - SelectorEngine.children(navItem, SELECTOR_NAV_LINKS) - .forEach(item => item.classList.add(CLASS_NAME_ACTIVE)) - }) - }) + for (const listGroup of SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)) { + // Set triggered links parents as active + // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor + for (const item of SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)) { + item.classList.add(CLASS_NAME_ACTIVE) + } + + // Handle special case when .nav-link is inside .nav-item + for (const navItem of SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)) { + for (const item of SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)) { + item.classList.add(CLASS_NAME_ACTIVE) + } + } + } } EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, { @@ -248,9 +247,12 @@ class ScrollSpy extends BaseComponent { } _clear() { - SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target) + const activeNodes = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target) .filter(node => node.classList.contains(CLASS_NAME_ACTIVE)) - .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE)) + + for (const node of activeNodes) { + node.classList.remove(CLASS_NAME_ACTIVE) + } } // Static @@ -279,8 +281,9 @@ class ScrollSpy extends BaseComponent { */ EventHandler.on(window, EVENT_LOAD_DATA_API, () => { - SelectorEngine.find(SELECTOR_DATA_SPY) - .forEach(spy => new ScrollSpy(spy)) + for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { + new ScrollSpy(spy) // eslint-disable-line no-new + } }) /** diff --git a/js/src/tab.js b/js/src/tab.js index 161bccbca..dd62df505 100644 --- a/js/src/tab.js +++ b/js/src/tab.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): tab.js + * Bootstrap (v5.1.2): tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -164,8 +164,9 @@ class Tab extends BaseComponent { const dropdownElement = element.closest(SELECTOR_DROPDOWN) if (dropdownElement) { - SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement) - .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE)) + for (const dropdown of SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)) { + dropdown.classList.add(CLASS_NAME_ACTIVE) + } } element.setAttribute('aria-expanded', true) diff --git a/js/src/toast.js b/js/src/toast.js index 8a7fcdc71..0faecb8e4 100644 --- a/js/src/toast.js +++ b/js/src/toast.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): toast.js + * Bootstrap (v5.1.2): toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 747555411..afd17da53 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): tooltip.js + * Bootstrap (v5.1.2): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -285,9 +285,9 @@ class Tooltip extends BaseComponent { // only needed because of broken event delegation on iOS // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children).forEach(element => { + for (const element of [].concat(...document.body.children)) { EventHandler.on(element, 'mouseover', noop) - }) + } } const complete = () => { @@ -337,8 +337,9 @@ class Tooltip extends BaseComponent { // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children) - .forEach(element => EventHandler.off(element, 'mouseover', noop)) + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop) + } } this._activeTrigger[TRIGGER_CLICK] = false @@ -527,7 +528,7 @@ class Tooltip extends BaseComponent { _setListeners() { const triggers = this._config.trigger.split(' ') - triggers.forEach(trigger => { + for (const trigger of triggers) { if (trigger === 'click') { EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event)) } else if (trigger !== TRIGGER_MANUAL) { @@ -541,7 +542,7 @@ class Tooltip extends BaseComponent { EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event)) EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event)) } - }) + } this._hideModalHandler = () => { if (this._element) { @@ -648,11 +649,11 @@ class Tooltip extends BaseComponent { _getConfig(config) { const dataAttributes = Manipulator.getDataAttributes(this._element) - Object.keys(dataAttributes).forEach(dataAttr => { + for (const dataAttr of Object.keys(dataAttributes)) { if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { delete dataAttributes[dataAttr] } - }) + } config = { ...this.constructor.Default, @@ -706,8 +707,9 @@ class Tooltip extends BaseComponent { const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g') const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex) if (tabClass !== null && tabClass.length > 0) { - tabClass.map(token => token.trim()) - .forEach(tClass => tip.classList.remove(tClass)) + for (const tClass of tabClass.map(token => token.trim())) { + tip.classList.remove(tClass) + } } } diff --git a/js/src/util/backdrop.js b/js/src/util/backdrop.js index 80628c38d..e5ca0c860 100644 --- a/js/src/util/backdrop.js +++ b/js/src/util/backdrop.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/backdrop.js + * Bootstrap (v5.1.2): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/util/component-functions.js b/js/src/util/component-functions.js index ff9d87ee6..c678ecadf 100644 --- a/js/src/util/component-functions.js +++ b/js/src/util/component-functions.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/component-functions.js + * Bootstrap (v5.1.2): util/component-functions.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/util/focustrap.js b/js/src/util/focustrap.js index d51942246..500a5b3bc 100644 --- a/js/src/util/focustrap.js +++ b/js/src/util/focustrap.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/focustrap.js + * Bootstrap (v5.1.2): util/focustrap.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/js/src/util/index.js b/js/src/util/index.js index a4ad9c941..0ac4ed263 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -1,11 +1,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/index.js + * Bootstrap (v5.1.2): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -const MAX_UID = 1000000 +const MAX_UID = 1_000_000 const MILLISECONDS_MULTIPLIER = 1000 const TRANSITION_END = 'transitionend' @@ -15,7 +15,7 @@ const toType = obj => { return `${obj}` } - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase() + return Object.prototype.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase() } /** @@ -125,7 +125,7 @@ const getElement = obj => { } const typeCheckConfig = (componentName, config, configTypes) => { - Object.keys(configTypes).forEach(property => { + for (const property of Object.keys(configTypes)) { const expectedTypes = configTypes[property] const value = config[property] const valueType = value && isElement(value) ? 'element' : toType(value) @@ -135,7 +135,7 @@ const typeCheckConfig = (componentName, config, configTypes) => { `${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` ) } - }) + } } const isVisible = element => { @@ -217,7 +217,9 @@ const onDOMContentLoaded = callback => { // add listener on the first call when the document is in loading state if (!DOMContentLoadedCallbacks.length) { document.addEventListener('DOMContentLoaded', () => { - DOMContentLoadedCallbacks.forEach(callback => callback()) + for (const callback of DOMContentLoadedCallbacks) { + callback() + } }) } diff --git a/js/src/util/sanitizer.js b/js/src/util/sanitizer.js index 17b925a8c..f5a8287cd 100644 --- a/js/src/util/sanitizer.js +++ b/js/src/util/sanitizer.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/sanitizer.js + * Bootstrap (v5.1.2): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -43,16 +43,9 @@ const allowedAttribute = (attribute, allowedAttributeList) => { return true } - const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp) - // Check if a regular expression validates the attribute. - for (let i = 0, len = regExp.length; i < len; i++) { - if (regExp[i].test(attributeName)) { - return true - } - } - - return false + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp) + .every(regex => regex.test(attributeName)) } export const DefaultAllowlist = { @@ -102,8 +95,7 @@ export function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html') const elements = [].concat(...createdDocument.body.querySelectorAll('*')) - for (let i = 0, len = elements.length; i < len; i++) { - const element = elements[i] + for (const element of elements) { const elementName = element.nodeName.toLowerCase() if (!Object.keys(allowList).includes(elementName)) { @@ -115,11 +107,11 @@ export function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { const attributeList = [].concat(...element.attributes) const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []) - attributeList.forEach(attribute => { + for (const attribute of attributeList) { if (!allowedAttribute(attribute, allowedAttributes)) { element.removeAttribute(attribute.nodeName) } - }) + } } return createdDocument.body.innerHTML diff --git a/js/src/util/scrollbar.js b/js/src/util/scrollbar.js index 73c28254e..f9a2d992d 100644 --- a/js/src/util/scrollbar.js +++ b/js/src/util/scrollbar.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.1): util/scrollBar.js + * Bootstrap (v5.1.2): util/scrollBar.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -85,7 +85,9 @@ class ScrollBarHelper { if (isElement(selector)) { callBack(selector) } else { - SelectorEngine.find(selector, this._element).forEach(callBack) + for (const sel of SelectorEngine.find(selector, this._element)) { + callBack(sel) + } } } |
