28 lines
827 B
JavaScript
28 lines
827 B
JavaScript
/**
|
|
* Focus input field automatically upon openning modal, collapse, offcanvas, dropdown or window
|
|
*/
|
|
|
|
export default (() => {
|
|
const autofocus = document.querySelectorAll('[data-autofocus]')
|
|
|
|
if (autofocus.length === 0) return
|
|
|
|
autofocus.forEach((input) => {
|
|
const containerType = input.dataset.autofocus // modal / collapse / offcanvas / dropdown / window
|
|
|
|
if (
|
|
containerType === 'modal' ||
|
|
containerType === 'collapse' ||
|
|
containerType === 'offcanvas' ||
|
|
containerType === 'dropdown'
|
|
) {
|
|
const container = input.closest('.' + containerType)
|
|
container.addEventListener(`shown.bs.${containerType}`, () => {
|
|
input.focus()
|
|
})
|
|
} else {
|
|
input.focus()
|
|
}
|
|
})
|
|
})()
|