All files / src/util component-functions.js

100% Statements 11/11
100% Branches 7/7
100% Functions 2/2
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                    5x 8x 8x   8x 18x 6x     18x 1x     17x 17x     17x              
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v5.2.3): util/component-functions.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * --------------------------------------------------------------------------
 */
 
import EventHandler from '../dom/event-handler'
import { getElementFromSelector, isDisabled } from './index'
 
const enableDismissTrigger = (component, method = 'hide') => {
  const clickEvent = `click.dismiss${component.EVENT_KEY}`
  const name = component.NAME
 
  EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
    if (['A', 'AREA'].includes(this.tagName)) {
      event.preventDefault()
    }
 
    if (isDisabled(this)) {
      return
    }
 
    const target = getElementFromSelector(this) || this.closest(`.${name}`)
    const instance = component.getOrCreateInstance(target)
 
    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
    instance[method]()
  })
}
 
export {
  enableDismissTrigger
}