Files
2024-04-26 13:18:06 +02:00

29 lines
659 B
JavaScript

const elementDataMap = new WeakMap();
export default {
mounted(el, binding) {
let open = false;
elementDataMap.set(el, evt => {
if (!open)
return;
if (el.contains(evt.target))
return;
const collapse = bootstrap.Collapse.getInstance(el)
if (collapse)
collapse.hide();
});
el.addEventListener('shown.bs.collapse', () => {
open = true;
});
el.addEventListener('hide.bs.collapse', () => {
open = false;
});
document.addEventListener('click', elementDataMap.get(el), true);
},
beforeUnmount(el, binding) {
document.removeEventListener('click', elementDataMap.get(el));
delete el.collapsibleAutoHideFunc;
}
}