File size: 1,132 Bytes
8e11898
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
36
37
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v5.1.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
}