mirror of
https://github.com/tabler/tabler.git
synced 2025-12-23 10:24:24 +04:00
40 lines
940 B
JavaScript
40 lines
940 B
JavaScript
import { Dropdown } from 'bootstrap';
|
|
|
|
/*
|
|
Core dropdowns
|
|
*/
|
|
let dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]'));
|
|
dropdownTriggerList.map(function (dropdownTriggerEl) {
|
|
return new Dropdown(dropdownTriggerEl);
|
|
});
|
|
|
|
|
|
/*
|
|
Nested dropdowns
|
|
*/
|
|
const selectors = '.dropdown, .dropup, .dropend, .dropstart',
|
|
dropdowns = document.querySelectorAll(selectors);
|
|
|
|
let currentTarget = undefined;
|
|
|
|
dropdowns.forEach(dropdown => {
|
|
dropdown.addEventListener('mousedown', (e) => {
|
|
e.stopPropagation();
|
|
|
|
if (e.target.dataset.bsToggle && e.target.dataset.bsToggle === 'dropdown') {
|
|
currentTarget = e.currentTarget;
|
|
}
|
|
});
|
|
|
|
dropdown.addEventListener('hide.bs.dropdown', (e) => {
|
|
e.stopPropagation();
|
|
|
|
const parent = currentTarget ? currentTarget.parentElement.closest(selectors) : undefined;
|
|
|
|
if (parent && parent === dropdown) {
|
|
e.preventDefault();
|
|
}
|
|
|
|
currentTarget = undefined;
|
|
});
|
|
}); |