Skip to content

Commit 0ee981b

Browse files
committed
refactor: Drawer and clickOutside action
1 parent 456e4de commit 0ee981b

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed

infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,6 @@ $effect(() => {
5353
5454
return () => pane.destroy();
5555
});
56-
57-
$effect(() => {
58-
if (isPaneOpen) {
59-
pane.present({ animate: true });
60-
} else {
61-
pane.destroy({ animate: true });
62-
}
63-
drawerElem.addEventListener("click_outside", () => {
64-
handleClickOutside();
65-
});
66-
});
6756
</script>
6857

6958
<div
@@ -74,7 +63,7 @@ $effect(() => {
7463
})}
7564
onswipe={() => handleSwipe?.(isPaneOpen)}
7665
bind:this={drawerElem}
77-
use:clickOutside
66+
use:clickOutside={handleClickOutside}
7867
class={cn(restProps.class)}
7968
>
8069
<div class="px-6">

infrastructure/eid-wallet/src/lib/utils/clickOutside.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/** Dispatch event on click outside of node */
2-
export const clickOutside = (node: HTMLElement) => {
2+
export const clickOutside = (node: HTMLElement, callback: () => void) => {
33
const handleClick = (event: Event) => {
4-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
5-
// @ts-ignore
6-
if (node && !node.contains(event.target) && !event.defaultPrevented) {
7-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
8-
// @ts-ignore
9-
node.dispatchEvent(new CustomEvent("click_outside", node));
4+
if (
5+
node &&
6+
!node.contains(event.target as Node) &&
7+
!event.defaultPrevented
8+
) {
9+
callback(); // Call the provided callback
10+
node.dispatchEvent(new CustomEvent("click_outside"));
1011
}
1112
};
1213

0 commit comments

Comments
 (0)