@sorens/artist-svelte
Version:
an opinionated and clean UI framework for SvelteKit with theme support built-in
20 lines (19 loc) • 566 B
JavaScript
export const keydown = (close) => (e) => {
e.stopPropagation();
/* istanbul ignore else */
if (e.key === 'Escape') {
close();
}
};
export const modalInit = (modalNodeList, close) => (node) => {
const returnFn = [];
const closeOnEsc = (event) => keydown(close)(event);
document.body.addEventListener('keydown', closeOnEsc);
modalNodeList.push(node);
returnFn.push(() => {
document.body.removeEventListener('keydown', closeOnEsc);
});
return {
destroy: () => returnFn.forEach((fn) => fn())
};
};