carbon-components-svelte
Version:
Svelte implementation of the Carbon Design System
26 lines (22 loc) • 665 B
JavaScript
/**
* Observe the closest modal ancestor for close events.
* Calls `onClose` when the modal loses the "is-visible" class.
* Returns a cleanup function to disconnect the observer.
* @param {HTMLElement} element
* @param {() => void} onClose
* @returns {() => void}
*/
export function observeModalClose(element, onClose) {
const modal = element.closest(".bx--modal");
if (!modal) return () => {};
const observer = new MutationObserver(() => {
if (!modal.classList.contains("is-visible")) {
onClose();
}
});
observer.observe(modal, {
attributes: true,
attributeFilter: ["class"],
});
return () => observer.disconnect();
}