@reshape-biotech/design-system 0.0.41 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
import Button from '../button/Button.svelte';
|
|
3
3
|
import Modal from '../modal/Modal.svelte';
|
|
4
|
-
import ContactSupportModal from './ContactSupportModal.svelte';
|
|
5
4
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
|
+
|
|
6
6
|
const { Story } = defineMeta({
|
|
7
7
|
component: Modal,
|
|
8
8
|
title: 'Design System/Modal',
|
|
9
9
|
tags: ['autodocs']
|
|
10
10
|
});
|
|
11
|
+
|
|
12
|
+
let defaultOpen = $state(true);
|
|
11
13
|
</script>
|
|
12
14
|
|
|
13
15
|
<Story name="Default">
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
</Story>
|
|
25
27
|
|
|
26
28
|
<Story name="Default open">
|
|
27
|
-
<Modal defaultOpen>
|
|
29
|
+
<Modal {defaultOpen} onclose={() => (defaultOpen = false)}>
|
|
28
30
|
{#snippet Trigger({ openModal })}
|
|
29
31
|
<Button onClick={openModal}>Open Modal</Button>
|
|
30
32
|
{/snippet}
|
|
@@ -35,7 +37,3 @@
|
|
|
35
37
|
{/snippet}
|
|
36
38
|
</Modal>
|
|
37
39
|
</Story>
|
|
38
|
-
|
|
39
|
-
<Story name="Contact support">
|
|
40
|
-
<ContactSupportModal />
|
|
41
|
-
</Story>
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
type ModalProps = {
|
|
8
8
|
Trigger?: Snippet<[{ openModal: () => void; closeModal: () => void }]>;
|
|
9
9
|
Content: Snippet;
|
|
10
|
+
onclose?: () => void;
|
|
10
11
|
defaultOpen?: boolean;
|
|
11
12
|
id?: string;
|
|
12
13
|
withClose?: boolean;
|
|
@@ -16,6 +17,7 @@
|
|
|
16
17
|
let {
|
|
17
18
|
Trigger,
|
|
18
19
|
Content,
|
|
20
|
+
onclose,
|
|
19
21
|
defaultOpen = false,
|
|
20
22
|
id = 'modal-' + uuidv4(),
|
|
21
23
|
withClose = true,
|
|
@@ -23,6 +25,7 @@
|
|
|
23
25
|
class: modalClass
|
|
24
26
|
}: ModalProps = $props();
|
|
25
27
|
|
|
28
|
+
const modalOpen = $state(defaultOpen);
|
|
26
29
|
const openModal = () => {
|
|
27
30
|
const dialog = document.getElementById(id) as HTMLDialogElement | null;
|
|
28
31
|
dialog?.showModal();
|
|
@@ -31,13 +34,14 @@
|
|
|
31
34
|
const closeModal = () => {
|
|
32
35
|
const dialog = document.getElementById(id) as HTMLDialogElement | null;
|
|
33
36
|
dialog?.close();
|
|
37
|
+
onclose?.();
|
|
34
38
|
};
|
|
35
39
|
</script>
|
|
36
40
|
|
|
37
41
|
{#if Trigger}
|
|
38
42
|
{@render Trigger({ openModal, closeModal })}
|
|
39
43
|
{/if}
|
|
40
|
-
<dialog {id} class="modal {modalClass}" class:modal-open={
|
|
44
|
+
<dialog {id} class="modal {modalClass}" class:modal-open={modalOpen}>
|
|
41
45
|
<div class="modal-box relative w-fit max-w-full rounded-xl bg-base p-6">
|
|
42
46
|
{#if withClose}
|
|
43
47
|
<div class="absolute right-0 top-0 p-6">
|
|
@@ -50,7 +54,7 @@
|
|
|
50
54
|
</div>
|
|
51
55
|
{#if closeOnClickOutside}
|
|
52
56
|
<form method="dialog" class="modal-backdrop">
|
|
53
|
-
<button>close</button>
|
|
57
|
+
<button onclick={closeModal}>close</button>
|
|
54
58
|
</form>
|
|
55
59
|
{/if}
|
|
56
60
|
</dialog>
|