sveltacular 0.0.76 → 1.0.0
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.
- package/README.md +142 -15
- package/dist/forms/base-input-wrapper.svelte +99 -0
- package/dist/forms/base-input-wrapper.svelte.d.ts +15 -0
- package/dist/forms/bool-box/bool-box.svelte +30 -17
- package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -21
- package/dist/forms/button/button.svelte +153 -89
- package/dist/forms/button/button.svelte.d.ts +25 -29
- package/dist/forms/check-box/check-box-group.svelte +63 -29
- package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -27
- package/dist/forms/check-box/check-box.svelte +57 -33
- package/dist/forms/check-box/check-box.svelte.d.ts +15 -25
- package/dist/forms/check-box/index.d.ts +2 -0
- package/dist/forms/check-box/index.js +2 -0
- package/dist/forms/combo/new-or-existing-combo.svelte +37 -18
- package/dist/forms/combo/new-or-existing-combo.svelte.d.ts +15 -25
- package/dist/forms/combo-box/combo-box.svelte +655 -0
- package/dist/forms/combo-box/combo-box.svelte.d.ts +62 -0
- package/dist/forms/combo-box/index.d.ts +1 -0
- package/dist/forms/combo-box/index.js +1 -0
- package/dist/forms/date-box/date-box.svelte +80 -54
- package/dist/forms/date-box/date-box.svelte.d.ts +21 -32
- package/dist/forms/file-area/file-area.svelte +109 -68
- package/dist/forms/file-area/file-area.svelte.d.ts +12 -22
- package/dist/forms/file-box/file-box.svelte +40 -21
- package/dist/forms/file-box/file-box.svelte.d.ts +14 -25
- package/dist/forms/form-field.svelte +18 -15
- package/dist/forms/form-field.svelte.d.ts +8 -18
- package/dist/forms/form-footer.svelte +6 -3
- package/dist/forms/form-footer.svelte.d.ts +6 -26
- package/dist/forms/form-header.svelte +15 -4
- package/dist/forms/form-header.svelte.d.ts +8 -18
- package/dist/forms/form-label.svelte +15 -6
- package/dist/forms/form-label.svelte.d.ts +8 -19
- package/dist/forms/form-section.svelte +15 -4
- package/dist/forms/form-section.svelte.d.ts +8 -18
- package/dist/forms/form.svelte +30 -13
- package/dist/forms/form.svelte.d.ts +11 -22
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +31 -0
- package/dist/forms/info-box/info-box.svelte +19 -8
- package/dist/forms/info-box/info-box.svelte.d.ts +8 -19
- package/dist/forms/list-box/index.d.ts +2 -0
- package/dist/forms/list-box/index.js +1 -0
- package/dist/forms/list-box/list-box.svelte +190 -118
- package/dist/forms/list-box/list-box.svelte.d.ts +16 -26
- package/dist/forms/money-box/money-box.svelte +223 -190
- package/dist/forms/money-box/money-box.svelte.d.ts +16 -28
- package/dist/forms/number-box/number-box.svelte +84 -67
- package/dist/forms/number-box/number-box.svelte.d.ts +17 -28
- package/dist/forms/phone-box/index.d.ts +1 -0
- package/dist/forms/phone-box/index.js +1 -0
- package/dist/forms/phone-box/phone-box.svelte +152 -122
- package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -20
- package/dist/forms/radio-group/index.d.ts +2 -0
- package/dist/forms/radio-group/index.js +2 -0
- package/dist/forms/radio-group/radio-box.svelte +23 -8
- package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -19
- package/dist/forms/radio-group/radio-group.svelte +27 -13
- package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -21
- package/dist/forms/slider/slider.svelte +210 -0
- package/dist/forms/slider/slider.svelte.d.ts +17 -0
- package/dist/forms/switch-box/switch-box.svelte +35 -21
- package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -20
- package/dist/forms/text-area/text-area.svelte +89 -15
- package/dist/forms/text-area/text-area.svelte.d.ts +15 -23
- package/dist/forms/text-box/text-box.svelte +253 -75
- package/dist/forms/text-box/text-box.svelte.d.ts +28 -36
- package/dist/forms/time-box/time-box.svelte +67 -0
- package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
- package/dist/forms/url-box/url-box.svelte +32 -18
- package/dist/forms/url-box/url-box.svelte.d.ts +9 -20
- package/dist/forms/validation.d.ts +60 -0
- package/dist/forms/validation.js +123 -0
- package/dist/generic/address/address.svelte +22 -13
- package/dist/generic/address/address.svelte.d.ts +9 -19
- package/dist/generic/avatar/avatar.svelte +86 -0
- package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
- package/dist/generic/badge/badge.svelte +82 -0
- package/dist/generic/badge/badge.svelte.d.ts +11 -0
- package/dist/generic/card/card-container.svelte +41 -13
- package/dist/generic/card/card-container.svelte.d.ts +8 -18
- package/dist/generic/card/card.svelte +47 -29
- package/dist/generic/card/card.svelte.d.ts +9 -19
- package/dist/generic/card/index.d.ts +3 -0
- package/dist/generic/card/index.js +2 -0
- package/dist/generic/chip/chip.svelte +90 -0
- package/dist/generic/chip/chip.svelte.d.ts +11 -0
- package/dist/generic/date/date-time.svelte +86 -64
- package/dist/generic/date/date-time.svelte.d.ts +10 -20
- package/dist/generic/divider/divider.svelte.d.ts +22 -19
- package/dist/generic/dot/dot.svelte +13 -4
- package/dist/generic/dot/dot.svelte.d.ts +7 -17
- package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
- package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -21
- package/dist/generic/email/email.svelte +6 -4
- package/dist/generic/email/email.svelte.d.ts +5 -15
- package/dist/generic/empty/empty.svelte +57 -26
- package/dist/generic/empty/empty.svelte.d.ts +11 -21
- package/dist/generic/header/header.svelte +26 -10
- package/dist/generic/header/header.svelte.d.ts +10 -20
- package/dist/generic/index.d.ts +28 -0
- package/dist/generic/index.js +31 -0
- package/dist/generic/link/link.svelte +20 -7
- package/dist/generic/link/link.svelte.d.ts +11 -21
- package/dist/generic/list/index.d.ts +4 -0
- package/dist/generic/list/index.js +3 -0
- package/dist/generic/list/list-item.svelte +17 -13
- package/dist/generic/list/list-item.svelte.d.ts +6 -15
- package/dist/generic/list/list.d.ts +2 -2
- package/dist/generic/list/list.svelte +28 -15
- package/dist/generic/list/list.svelte.d.ts +9 -19
- package/dist/generic/menu/menu.svelte +163 -57
- package/dist/generic/menu/menu.svelte.d.ts +16 -24
- package/dist/generic/notice/notice.svelte +119 -81
- package/dist/generic/notice/notice.svelte.d.ts +17 -26
- package/dist/generic/overlay.svelte +40 -14
- package/dist/generic/overlay.svelte.d.ts +9 -19
- package/dist/generic/panel/panel.svelte +16 -6
- package/dist/generic/panel/panel.svelte.d.ts +8 -18
- package/dist/generic/phone/phone.svelte +30 -24
- package/dist/generic/phone/phone.svelte.d.ts +6 -16
- package/dist/generic/pill/pill.svelte +47 -33
- package/dist/generic/pill/pill.svelte.d.ts +10 -21
- package/dist/generic/popover/popover.svelte +226 -0
- package/dist/generic/popover/popover.svelte.d.ts +15 -0
- package/dist/generic/rating/rating.svelte +85 -0
- package/dist/generic/rating/rating.svelte.d.ts +11 -0
- package/dist/generic/scorecard/scorecard.svelte +34 -21
- package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -19
- package/dist/generic/section/section.svelte +28 -9
- package/dist/generic/section/section.svelte.d.ts +11 -21
- package/dist/generic/spinner/spinner.svelte +64 -0
- package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
- package/dist/generic/theme-provider/index.d.ts +1 -0
- package/dist/generic/theme-provider/index.js +1 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
- package/dist/generic/theme-provider/theme-provider.svelte +83 -0
- package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
- package/dist/generic/toaster/toaster.svelte +31 -6
- package/dist/generic/toaster/toaster.svelte.d.ts +7 -15
- package/dist/generic/tooltip/tooltip.svelte +389 -0
- package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
- package/dist/helpers/ago.d.ts +7 -1
- package/dist/helpers/ago.js +6 -0
- package/dist/helpers/animation-actions.d.ts +124 -0
- package/dist/helpers/animation-actions.js +299 -0
- package/dist/helpers/animations.d.ts +198 -0
- package/dist/helpers/animations.js +280 -0
- package/dist/helpers/announcer.d.ts +118 -0
- package/dist/helpers/announcer.js +250 -0
- package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
- package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
- package/dist/helpers/debounce.d.ts +7 -0
- package/dist/helpers/debounce.js +7 -0
- package/dist/helpers/focus.d.ts +123 -0
- package/dist/helpers/focus.js +335 -0
- package/dist/helpers/fuzzy-search.d.ts +41 -0
- package/dist/helpers/fuzzy-search.js +114 -0
- package/dist/helpers/index.d.ts +24 -0
- package/dist/helpers/index.js +24 -0
- package/dist/helpers/navigate-to.d.ts +4 -0
- package/dist/helpers/navigate-to.js +4 -0
- package/dist/helpers/positioning.d.ts +97 -0
- package/dist/helpers/positioning.js +230 -0
- package/dist/helpers/round-to-decimals.d.ts +7 -5
- package/dist/helpers/round-to-decimals.js +7 -5
- package/dist/helpers/spring.svelte.d.ts +97 -0
- package/dist/helpers/spring.svelte.js +216 -0
- package/dist/helpers/subscribable.d.ts +1 -2
- package/dist/helpers/theme.svelte.d.ts +63 -0
- package/dist/helpers/theme.svelte.js +123 -0
- package/dist/helpers/unique-id.d.ts +4 -0
- package/dist/helpers/unique-id.js +4 -0
- package/dist/helpers/use-position.svelte.d.ts +96 -0
- package/dist/helpers/use-position.svelte.js +189 -0
- package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
- package/dist/helpers/use-virtual-list.svelte.js +239 -0
- package/dist/icons/angle-right-icon.svelte +2 -1
- package/dist/icons/angle-right-icon.svelte.d.ts +16 -12
- package/dist/icons/angle-up-icon.svelte.d.ts +22 -19
- package/dist/icons/check-icon.svelte.d.ts +22 -19
- package/dist/icons/copy-icon.svelte +46 -0
- package/dist/icons/copy-icon.svelte.d.ts +6 -0
- package/dist/icons/envelope-icon.svelte.d.ts +22 -19
- package/dist/icons/folder-open-icon.svelte.d.ts +22 -19
- package/dist/icons/hamburger-icon.svelte.d.ts +22 -19
- package/dist/icons/home-icon.svelte +2 -1
- package/dist/icons/home-icon.svelte.d.ts +16 -12
- package/dist/icons/index.d.ts +13 -0
- package/dist/icons/index.js +13 -0
- package/dist/icons/link-icon.svelte.d.ts +22 -19
- package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -19
- package/dist/icons/phone-icon.svelte.d.ts +22 -19
- package/dist/icons/svg-icon.svelte +46 -12
- package/dist/icons/svg-icon.svelte.d.ts +13 -23
- package/dist/icons/upload-icon.svelte.d.ts +22 -19
- package/dist/images/icon.svelte +9 -3
- package/dist/images/icon.svelte.d.ts +6 -16
- package/dist/images/image.svelte +28 -10
- package/dist/images/image.svelte.d.ts +14 -26
- package/dist/images/index.d.ts +2 -0
- package/dist/images/index.js +2 -0
- package/dist/index.d.ts +13 -122
- package/dist/index.js +27 -135
- package/dist/layout/flex-col.svelte +65 -22
- package/dist/layout/flex-col.svelte.d.ts +12 -22
- package/dist/layout/flex-item.svelte +13 -3
- package/dist/layout/flex-item.svelte.d.ts +8 -18
- package/dist/layout/flex-row.svelte +70 -21
- package/dist/layout/flex-row.svelte.d.ts +14 -24
- package/dist/layout/grid.svelte +7 -1
- package/dist/layout/grid.svelte.d.ts +6 -26
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/modals/alert.svelte +42 -28
- package/dist/modals/alert.svelte.d.ts +13 -24
- package/dist/modals/confirm.svelte +54 -37
- package/dist/modals/confirm.svelte.d.ts +16 -27
- package/dist/modals/dialog-body.svelte +10 -4
- package/dist/modals/dialog-body.svelte.d.ts +6 -26
- package/dist/modals/dialog-close-button.svelte +15 -9
- package/dist/modals/dialog-close-button.svelte.d.ts +6 -17
- package/dist/modals/dialog-footer.svelte +6 -3
- package/dist/modals/dialog-footer.svelte.d.ts +6 -26
- package/dist/modals/dialog-header.svelte +13 -1
- package/dist/modals/dialog-header.svelte.d.ts +7 -26
- package/dist/modals/dialog-window.svelte +42 -14
- package/dist/modals/dialog-window.svelte.d.ts +9 -17
- package/dist/modals/index.d.ts +9 -0
- package/dist/modals/index.js +9 -0
- package/dist/modals/modal.svelte +88 -25
- package/dist/modals/modal.svelte.d.ts +14 -22
- package/dist/modals/prompt.svelte +71 -50
- package/dist/modals/prompt.svelte.d.ts +19 -30
- package/dist/navigation/accordion/accordion.svelte +104 -0
- package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
- package/dist/navigation/app-bar/app-bar.svelte +26 -20
- package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -20
- package/dist/navigation/app-bar/app-branding.svelte +10 -5
- package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -15
- package/dist/navigation/app-bar/app-logo.svelte +20 -5
- package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -19
- package/dist/navigation/app-bar/app-nav-item.svelte +26 -14
- package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -20
- package/dist/navigation/app-bar/app-nav.svelte +39 -12
- package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -18
- package/dist/navigation/app-bar/index.d.ts +5 -0
- package/dist/navigation/app-bar/index.js +5 -0
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -28
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -21
- package/dist/navigation/command-palette/command-palette.svelte +758 -0
- package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
- package/dist/navigation/command-palette/index.d.ts +2 -0
- package/dist/navigation/command-palette/index.js +1 -0
- package/dist/navigation/context-menu/README.md +146 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte +21 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
- package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
- package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
- package/dist/navigation/context-menu/context-menu.svelte +226 -0
- package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
- package/dist/navigation/context-menu/index.d.ts +3 -0
- package/dist/navigation/context-menu/index.js +3 -0
- package/dist/navigation/drawer/drawer.svelte +137 -0
- package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
- package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -20
- package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -20
- package/dist/navigation/index.d.ts +11 -0
- package/dist/navigation/index.js +14 -0
- package/dist/navigation/pagination/pagination.svelte +55 -42
- package/dist/navigation/pagination/pagination.svelte.d.ts +10 -21
- package/dist/navigation/side-bar/side-bar.svelte +18 -9
- package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -17
- package/dist/navigation/tabs/index.d.ts +4 -0
- package/dist/navigation/tabs/index.js +3 -0
- package/dist/navigation/tabs/tab-context.d.ts +12 -6
- package/dist/navigation/tabs/tab-group.svelte +268 -55
- package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -20
- package/dist/navigation/tabs/tab.svelte +64 -34
- package/dist/navigation/tabs/tab.svelte.d.ts +11 -22
- package/dist/navigation/wizard/index.d.ts +3 -0
- package/dist/navigation/wizard/index.js +2 -0
- package/dist/navigation/wizard/wizard-context.d.ts +13 -8
- package/dist/navigation/wizard/wizard-step.svelte +38 -15
- package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -18
- package/dist/navigation/wizard/wizard.svelte +123 -89
- package/dist/navigation/wizard/wizard.svelte.d.ts +15 -26
- package/dist/placeholders/index.d.ts +6 -0
- package/dist/placeholders/index.js +6 -0
- package/dist/placeholders/loading.svelte +39 -23
- package/dist/placeholders/loading.svelte.d.ts +10 -17
- package/dist/placeholders/progress.svelte +7 -6
- package/dist/placeholders/progress.svelte.d.ts +5 -15
- package/dist/placeholders/skeleton-input.svelte +66 -38
- package/dist/placeholders/skeleton-input.svelte.d.ts +5 -15
- package/dist/placeholders/skeleton-paragraph.svelte +25 -0
- package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-table.svelte +75 -0
- package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-text.svelte +46 -16
- package/dist/placeholders/skeleton-text.svelte.d.ts +7 -17
- package/dist/tables/cell-renderers.d.ts +24 -0
- package/dist/tables/cell-renderers.js +228 -0
- package/dist/tables/data-grid.svelte +332 -135
- package/dist/tables/data-grid.svelte.d.ts +34 -33
- package/dist/tables/index.d.ts +10 -0
- package/dist/tables/index.js +12 -0
- package/dist/tables/table-caption.svelte +13 -4
- package/dist/tables/table-caption.svelte.d.ts +8 -18
- package/dist/tables/table-cell.svelte +45 -15
- package/dist/tables/table-cell.svelte.d.ts +10 -19
- package/dist/tables/table-context.svelte.d.ts +32 -0
- package/dist/tables/table-context.svelte.js +160 -0
- package/dist/tables/table-header-cell.svelte +158 -19
- package/dist/tables/table-header-cell.svelte.d.ts +15 -19
- package/dist/tables/table-header.svelte +31 -6
- package/dist/tables/table-header.svelte.d.ts +7 -26
- package/dist/tables/table-row.svelte +87 -7
- package/dist/tables/table-row.svelte.d.ts +10 -26
- package/dist/tables/table.svelte +61 -2
- package/dist/tables/table.svelte.d.ts +13 -26
- package/dist/test-utils/accessibility-helpers.d.ts +80 -0
- package/dist/test-utils/accessibility-helpers.js +220 -0
- package/dist/test-utils/index.d.ts +8 -0
- package/dist/test-utils/index.js +8 -0
- package/dist/test-utils/mock-helpers.d.ts +68 -0
- package/dist/test-utils/mock-helpers.js +165 -0
- package/dist/test-utils/render-helpers.d.ts +55 -0
- package/dist/test-utils/render-helpers.js +114 -0
- package/dist/test-utils/setup.d.ts +5 -0
- package/dist/test-utils/setup.js +91 -0
- package/dist/test-utils/test-data.d.ts +102 -0
- package/dist/test-utils/test-data.js +99 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/timeline-item.svelte +26 -9
- package/dist/timeline/timeline-item.svelte.d.ts +13 -23
- package/dist/timeline/timeline.svelte +12 -6
- package/dist/timeline/timeline.svelte.d.ts +6 -26
- package/dist/types/data.d.ts +61 -0
- package/dist/types/date.d.ts +1 -1
- package/dist/types/form.d.ts +20 -2
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/size.d.ts +22 -0
- package/dist/types/size.js +22 -0
- package/dist/typography/code-block.svelte +89 -10
- package/dist/typography/code-block.svelte.d.ts +7 -17
- package/dist/typography/code.svelte +89 -0
- package/dist/typography/code.svelte.d.ts +7 -0
- package/dist/typography/headline.svelte +29 -9
- package/dist/typography/headline.svelte.d.ts +8 -18
- package/dist/typography/index.d.ts +6 -0
- package/dist/typography/index.js +6 -0
- package/dist/typography/paragraph.svelte +18 -10
- package/dist/typography/paragraph.svelte.d.ts +6 -26
- package/dist/typography/subtitle.svelte +18 -4
- package/dist/typography/subtitle.svelte.d.ts +8 -18
- package/dist/typography/text.svelte +20 -5
- package/dist/typography/text.svelte.d.ts +9 -19
- package/package.json +46 -36
- package/dist/navigation/accordian/accordian.svelte +0 -62
- package/dist/navigation/accordian/accordian.svelte.d.ts +0 -19
- package/dist/tables/table-body.svelte +0 -3
- package/dist/tables/table-body.svelte.d.ts +0 -27
- package/dist/tables/table-footer-cell.svelte +0 -22
- package/dist/tables/table-footer-cell.svelte.d.ts +0 -18
- package/dist/tables/table-footer-row.svelte +0 -3
- package/dist/tables/table-footer-row.svelte.d.ts +0 -27
- package/dist/tables/table-footer.svelte +0 -13
- package/dist/tables/table-footer.svelte.d.ts +0 -27
- package/dist/tables/table-header-row.svelte +0 -4
- package/dist/tables/table-header-row.svelte.d.ts +0 -27
|
@@ -1,26 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
events: {
|
|
13
|
-
close: CustomEvent<void>;
|
|
14
|
-
} & {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
};
|
|
17
|
-
slots: {
|
|
18
|
-
default: {};
|
|
19
|
-
};
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
title?: string | undefined;
|
|
6
|
+
size?: FormFieldSizeOptions;
|
|
7
|
+
buttonText?: string;
|
|
8
|
+
buttonVariant?: 'primary' | 'secondary' | 'danger';
|
|
9
|
+
showCloseButton?: boolean;
|
|
10
|
+
onClose?: (() => void) | undefined;
|
|
11
|
+
children: Snippet;
|
|
20
12
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export
|
|
24
|
-
export default class Alert extends SvelteComponent<AlertProps, AlertEvents, AlertSlots> {
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
13
|
+
declare const Alert: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
14
|
+
type Alert = ReturnType<typeof Alert>;
|
|
15
|
+
export default Alert;
|
|
@@ -1,52 +1,69 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import DialogBody from './dialog-body.svelte';
|
|
4
|
+
import DialogFooter from './dialog-footer.svelte';
|
|
5
|
+
import DialogHeader from './dialog-header.svelte';
|
|
6
|
+
import Dialog from './dialog-window.svelte';
|
|
7
|
+
import Overlay from '../generic/overlay.svelte';
|
|
8
|
+
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
9
|
+
import Button from '../forms/button/button.svelte';
|
|
10
|
+
import Divider from '../generic/divider/divider.svelte';
|
|
11
|
+
import DialogCloseButton from './dialog-close-button.svelte';
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
open = $bindable(false),
|
|
15
|
+
title = undefined,
|
|
16
|
+
size = 'md' as FormFieldSizeOptions,
|
|
17
|
+
yesText = 'Yes',
|
|
18
|
+
noText = 'No',
|
|
19
|
+
yesVariant = 'primary' as 'primary' | 'secondary' | 'danger',
|
|
20
|
+
noVariant = 'secondary' as 'primary' | 'secondary' | 'danger',
|
|
21
|
+
showCloseButton = true,
|
|
22
|
+
onYes = undefined,
|
|
23
|
+
onNo = undefined,
|
|
24
|
+
children
|
|
25
|
+
}: {
|
|
26
|
+
open?: boolean;
|
|
27
|
+
title?: string | undefined;
|
|
28
|
+
size?: FormFieldSizeOptions;
|
|
29
|
+
yesText?: string;
|
|
30
|
+
noText?: string;
|
|
31
|
+
yesVariant?: 'primary' | 'secondary' | 'danger';
|
|
32
|
+
noVariant?: 'primary' | 'secondary' | 'danger';
|
|
33
|
+
showCloseButton?: boolean;
|
|
34
|
+
onYes?: (() => void) | undefined;
|
|
35
|
+
onNo?: (() => void) | undefined;
|
|
36
|
+
children: Snippet;
|
|
37
|
+
} = $props();
|
|
38
|
+
|
|
39
|
+
const no = () => {
|
|
40
|
+
open = false;
|
|
41
|
+
onNo?.();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const yes = () => {
|
|
45
|
+
open = false;
|
|
46
|
+
onYes?.();
|
|
47
|
+
};
|
|
27
48
|
</script>
|
|
28
49
|
|
|
29
50
|
{#if open}
|
|
30
|
-
<Overlay
|
|
31
|
-
<Dialog {size}>
|
|
51
|
+
<Overlay onClick={no}>
|
|
52
|
+
<Dialog {size} role="alertdialog" aria-modal="true" aria-labelledby={title ? 'confirm-title' : undefined}>
|
|
32
53
|
{#if title}
|
|
33
|
-
<DialogHeader>
|
|
54
|
+
<DialogHeader id="confirm-title">
|
|
34
55
|
{title}
|
|
35
56
|
</DialogHeader>
|
|
36
57
|
<Divider />
|
|
37
58
|
{/if}
|
|
38
|
-
<DialogCloseButton show={showCloseButton}
|
|
59
|
+
<DialogCloseButton show={showCloseButton} onClick={no} />
|
|
39
60
|
<DialogBody>
|
|
40
|
-
|
|
61
|
+
{@render children?.()}
|
|
41
62
|
</DialogBody>
|
|
42
63
|
<Divider />
|
|
43
64
|
<DialogFooter>
|
|
44
|
-
<Button
|
|
45
|
-
|
|
46
|
-
</Button>
|
|
47
|
-
<Button on:click={yes} style={yesStyle} size="full">
|
|
48
|
-
{yesText}
|
|
49
|
-
</Button>
|
|
65
|
+
<Button onClick={no} variant={noVariant} size="full" label={noText} />
|
|
66
|
+
<Button onClick={yes} variant={yesVariant} size="full" label={yesText} />
|
|
50
67
|
</DialogFooter>
|
|
51
68
|
</Dialog>
|
|
52
69
|
</Overlay>
|
|
@@ -1,29 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
yes: CustomEvent<void>;
|
|
16
|
-
no: CustomEvent<void>;
|
|
17
|
-
} & {
|
|
18
|
-
[evt: string]: CustomEvent<any>;
|
|
19
|
-
};
|
|
20
|
-
slots: {
|
|
21
|
-
default: {};
|
|
22
|
-
};
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
title?: string | undefined;
|
|
6
|
+
size?: FormFieldSizeOptions;
|
|
7
|
+
yesText?: string;
|
|
8
|
+
noText?: string;
|
|
9
|
+
yesVariant?: 'primary' | 'secondary' | 'danger';
|
|
10
|
+
noVariant?: 'primary' | 'secondary' | 'danger';
|
|
11
|
+
showCloseButton?: boolean;
|
|
12
|
+
onYes?: (() => void) | undefined;
|
|
13
|
+
onNo?: (() => void) | undefined;
|
|
14
|
+
children: Snippet;
|
|
23
15
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export
|
|
27
|
-
export default class Confirm extends SvelteComponent<ConfirmProps, ConfirmEvents, ConfirmSlots> {
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
16
|
+
declare const Confirm: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
17
|
+
type Confirm = ReturnType<typeof Confirm>;
|
|
18
|
+
export default Confirm;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
let { children }: { children?: Snippet } = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
1
7
|
<div>
|
|
2
|
-
|
|
8
|
+
{@render children?.()}
|
|
3
9
|
</div>
|
|
4
10
|
|
|
5
11
|
<style>div {
|
|
6
|
-
color:
|
|
7
|
-
margin-top:
|
|
8
|
-
margin-bottom:
|
|
12
|
+
color: var(--modal-body-fg);
|
|
13
|
+
margin-top: var(--spacing-base);
|
|
14
|
+
margin-bottom: var(--spacing-base);
|
|
9
15
|
}</style>
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export default class DialogBody extends SvelteComponent<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
11
|
-
}
|
|
12
|
-
export type DialogBodyProps = typeof __propDef.props;
|
|
13
|
-
export type DialogBodyEvents = typeof __propDef.events;
|
|
14
|
-
export type DialogBodySlots = typeof __propDef.slots;
|
|
15
|
-
import { SvelteComponent } from "svelte";
|
|
16
|
-
declare const __propDef: {
|
|
17
|
-
props: {
|
|
18
|
-
[x: string]: never;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {
|
|
24
|
-
default: {};
|
|
25
|
-
};
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children?: Snippet;
|
|
26
4
|
};
|
|
27
|
-
|
|
5
|
+
declare const DialogBody: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DialogBody = ReturnType<typeof DialogBody>;
|
|
7
|
+
export default DialogBody;
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let {
|
|
3
|
+
show = true,
|
|
4
|
+
onClick = undefined
|
|
5
|
+
}: {
|
|
6
|
+
show?: boolean;
|
|
7
|
+
onClick?: (() => void) | undefined;
|
|
8
|
+
} = $props();
|
|
9
|
+
|
|
10
|
+
const handleClick = (e: Event) => {
|
|
11
|
+
e.preventDefault();
|
|
12
|
+
e.stopPropagation();
|
|
13
|
+
onClick?.();
|
|
14
|
+
};
|
|
9
15
|
</script>
|
|
10
16
|
|
|
11
17
|
{#if show}
|
|
12
|
-
<button type="button"
|
|
18
|
+
<button type="button" onclick={handleClick} aria-label="Close dialog">X</button>
|
|
13
19
|
{/if}
|
|
14
20
|
|
|
15
21
|
<style>button {
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
show?: boolean | undefined;
|
|
5
|
-
};
|
|
6
|
-
events: {
|
|
7
|
-
click: CustomEvent<void>;
|
|
8
|
-
} & {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
show?: boolean;
|
|
3
|
+
onClick?: (() => void) | undefined;
|
|
12
4
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export
|
|
16
|
-
export default class DialogCloseButton extends SvelteComponent<DialogCloseButtonProps, DialogCloseButtonEvents, DialogCloseButtonSlots> {
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
5
|
+
declare const DialogCloseButton: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DialogCloseButton = ReturnType<typeof DialogCloseButton>;
|
|
7
|
+
export default DialogCloseButton;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
2
3
|
import FlexRow from '../layout/flex-row.svelte';
|
|
4
|
+
|
|
5
|
+
let { children }: { children?: Snippet } = $props();
|
|
3
6
|
</script>
|
|
4
7
|
|
|
5
8
|
<footer>
|
|
6
|
-
<FlexRow
|
|
7
|
-
|
|
9
|
+
<FlexRow justifyContent="stretch">
|
|
10
|
+
{@render children?.()}
|
|
8
11
|
</FlexRow>
|
|
9
12
|
</footer>
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export default class DialogFooter extends SvelteComponent<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
11
|
-
}
|
|
12
|
-
export type DialogFooterProps = typeof __propDef.props;
|
|
13
|
-
export type DialogFooterEvents = typeof __propDef.events;
|
|
14
|
-
export type DialogFooterSlots = typeof __propDef.slots;
|
|
15
|
-
import { SvelteComponent } from "svelte";
|
|
16
|
-
declare const __propDef: {
|
|
17
|
-
props: {
|
|
18
|
-
[x: string]: never;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {
|
|
24
|
-
default: {};
|
|
25
|
-
};
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children?: Snippet;
|
|
26
4
|
};
|
|
27
|
-
|
|
5
|
+
declare const DialogFooter: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DialogFooter = ReturnType<typeof DialogFooter>;
|
|
7
|
+
export default DialogFooter;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
id = undefined,
|
|
6
|
+
children
|
|
7
|
+
}: {
|
|
8
|
+
id?: string | undefined;
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
} = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
1
13
|
<header>
|
|
2
|
-
<h1
|
|
14
|
+
<h1 {id}>{@render children?.()}</h1>
|
|
3
15
|
</header>
|
|
4
16
|
|
|
5
17
|
<style>header {
|
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
11
|
-
}
|
|
12
|
-
export type DialogHeaderProps = typeof __propDef.props;
|
|
13
|
-
export type DialogHeaderEvents = typeof __propDef.events;
|
|
14
|
-
export type DialogHeaderSlots = typeof __propDef.slots;
|
|
15
|
-
import { SvelteComponent } from "svelte";
|
|
16
|
-
declare const __propDef: {
|
|
17
|
-
props: {
|
|
18
|
-
[x: string]: never;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {
|
|
24
|
-
default: {};
|
|
25
|
-
};
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
id?: string | undefined;
|
|
4
|
+
children?: Snippet;
|
|
26
5
|
};
|
|
27
|
-
|
|
6
|
+
declare const DialogHeader: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type DialogHeader = ReturnType<typeof DialogHeader>;
|
|
8
|
+
export default DialogHeader;
|
|
@@ -1,24 +1,52 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
size = 'md' as FormFieldSizeOptions,
|
|
7
|
+
glass = false,
|
|
8
|
+
children,
|
|
9
|
+
...restProps
|
|
10
|
+
}: {
|
|
11
|
+
size?: FormFieldSizeOptions;
|
|
12
|
+
glass?: boolean;
|
|
13
|
+
children: Snippet;
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
} = $props();
|
|
16
|
+
|
|
17
|
+
const captureClick = (e: Event) => {
|
|
18
|
+
e.stopPropagation();
|
|
19
|
+
};
|
|
5
20
|
</script>
|
|
6
21
|
|
|
7
|
-
<!-- svelte-ignore
|
|
8
|
-
<!-- svelte-ignore
|
|
9
|
-
<div class={size}
|
|
10
|
-
|
|
22
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
23
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
24
|
+
<div class="{size} {glass ? 'glass' : ''}" onclick={captureClick} {...restProps}>
|
|
25
|
+
{@render children?.()}
|
|
11
26
|
</div>
|
|
12
27
|
|
|
13
28
|
<style>div {
|
|
14
29
|
position: relative;
|
|
15
|
-
border: solid
|
|
16
|
-
padding:
|
|
17
|
-
background-color:
|
|
18
|
-
border-radius:
|
|
19
|
-
box-shadow:
|
|
30
|
+
border: solid var(--border-thin) var(--gray-300);
|
|
31
|
+
padding: var(--spacing-base);
|
|
32
|
+
background-color: var(--modal-bg);
|
|
33
|
+
border-radius: var(--radius-xl);
|
|
34
|
+
box-shadow: var(--shadow-2xl);
|
|
20
35
|
z-index: 9999;
|
|
21
|
-
font-family: var(--base-font-family
|
|
36
|
+
font-family: var(--base-font-family);
|
|
37
|
+
}
|
|
38
|
+
div.glass {
|
|
39
|
+
background: var(--glass-bg);
|
|
40
|
+
backdrop-filter: blur(var(--glass-blur));
|
|
41
|
+
-webkit-backdrop-filter: blur(var(--glass-blur));
|
|
42
|
+
border: var(--border-thin) solid var(--glass-border);
|
|
43
|
+
/* Fallback for browsers without backdrop-filter support */
|
|
44
|
+
}
|
|
45
|
+
@supports not (backdrop-filter: blur(12px)) {
|
|
46
|
+
div.glass {
|
|
47
|
+
background: var(--modal-bg);
|
|
48
|
+
border: var(--border-thin) solid var(--gray-300);
|
|
49
|
+
}
|
|
22
50
|
}
|
|
23
51
|
div.sm {
|
|
24
52
|
width: 25rem;
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {
|
|
11
|
-
default: {};
|
|
12
|
-
};
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
size?: FormFieldSizeOptions;
|
|
5
|
+
glass?: boolean;
|
|
6
|
+
children: Snippet;
|
|
7
|
+
[key: string]: any;
|
|
13
8
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export
|
|
17
|
-
export default class DialogWindow extends SvelteComponent<DialogWindowProps, DialogWindowEvents, DialogWindowSlots> {
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
9
|
+
declare const DialogWindow: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type DialogWindow = ReturnType<typeof DialogWindow>;
|
|
11
|
+
export default DialogWindow;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as Alert } from './alert.svelte';
|
|
2
|
+
export { default as Confirm } from './confirm.svelte';
|
|
3
|
+
export { default as Modal } from './modal.svelte';
|
|
4
|
+
export { default as Prompt } from './prompt.svelte';
|
|
5
|
+
export { default as DialogBody } from './dialog-body.svelte';
|
|
6
|
+
export { default as DialogCloseButton } from './dialog-close-button.svelte';
|
|
7
|
+
export { default as DialogFooter } from './dialog-footer.svelte';
|
|
8
|
+
export { default as DialogHeader } from './dialog-header.svelte';
|
|
9
|
+
export { default as DialogWindow } from './dialog-window.svelte';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as Alert } from './alert.svelte';
|
|
2
|
+
export { default as Confirm } from './confirm.svelte';
|
|
3
|
+
export { default as Modal } from './modal.svelte';
|
|
4
|
+
export { default as Prompt } from './prompt.svelte';
|
|
5
|
+
export { default as DialogBody } from './dialog-body.svelte';
|
|
6
|
+
export { default as DialogCloseButton } from './dialog-close-button.svelte';
|
|
7
|
+
export { default as DialogFooter } from './dialog-footer.svelte';
|
|
8
|
+
export { default as DialogHeader } from './dialog-header.svelte';
|
|
9
|
+
export { default as DialogWindow } from './dialog-window.svelte';
|
package/dist/modals/modal.svelte
CHANGED
|
@@ -1,30 +1,93 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import DialogBody from './dialog-body.svelte';
|
|
4
|
+
import Dialog from './dialog-window.svelte';
|
|
5
|
+
import Overlay from '../generic/overlay.svelte';
|
|
6
|
+
import type { FormFieldSizeOptions } from '../types/form.js';
|
|
7
|
+
import DialogCloseButton from './dialog-close-button.svelte';
|
|
8
|
+
import { trapFocus, storeFocus, restoreFocus } from '../helpers/focus.js';
|
|
9
|
+
import { animateFadeIn, animateScaleIn } from '../helpers/animations.js';
|
|
10
|
+
import { browser } from '$app/environment';
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
open = $bindable(false),
|
|
14
|
+
size = 'md' as FormFieldSizeOptions,
|
|
15
|
+
showCloseButton = true,
|
|
16
|
+
dismissable = true,
|
|
17
|
+
blur = false,
|
|
18
|
+
glass = false,
|
|
19
|
+
title = undefined,
|
|
20
|
+
onClose = undefined,
|
|
21
|
+
children
|
|
22
|
+
}: {
|
|
23
|
+
open?: boolean;
|
|
24
|
+
size?: FormFieldSizeOptions;
|
|
25
|
+
showCloseButton?: boolean;
|
|
26
|
+
dismissable?: boolean;
|
|
27
|
+
blur?: boolean;
|
|
28
|
+
glass?: boolean;
|
|
29
|
+
title?: string | undefined;
|
|
30
|
+
onClose?: (() => void) | undefined;
|
|
31
|
+
children: Snippet;
|
|
32
|
+
} = $props();
|
|
33
|
+
|
|
34
|
+
let dialogElement = $state<HTMLDivElement | null>(null);
|
|
35
|
+
let previousFocus = $state<HTMLElement | null>(null);
|
|
36
|
+
|
|
37
|
+
const close = () => {
|
|
38
|
+
if (!dismissable) return;
|
|
39
|
+
open = false;
|
|
40
|
+
onClose?.();
|
|
41
|
+
if (browser && previousFocus) {
|
|
42
|
+
restoreFocus(previousFocus);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
let _showCloseButton = $derived(dismissable && showCloseButton);
|
|
47
|
+
let modalId = $derived(`modal-${Math.random().toString(36).substring(7)}`);
|
|
48
|
+
let titleId = $derived(title ? `${modalId}-title` : undefined);
|
|
49
|
+
|
|
50
|
+
$effect(() => {
|
|
51
|
+
if (open && browser) {
|
|
52
|
+
// Store cleanup function
|
|
53
|
+
let untrap: (() => void) | null = null;
|
|
54
|
+
|
|
55
|
+
// Wait for next tick to ensure dialogElement is bound
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
if (dialogElement) {
|
|
58
|
+
previousFocus = storeFocus();
|
|
59
|
+
untrap = trapFocus(dialogElement);
|
|
60
|
+
}
|
|
61
|
+
}, 0);
|
|
62
|
+
|
|
63
|
+
// Return cleanup function
|
|
64
|
+
return () => {
|
|
65
|
+
if (untrap) {
|
|
66
|
+
untrap();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Trigger enter animation when modal opens
|
|
73
|
+
$effect(() => {
|
|
74
|
+
if (open && browser) {
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
if (dialogElement) animateScaleIn(dialogElement);
|
|
77
|
+
}, 10);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
19
80
|
</script>
|
|
20
81
|
|
|
21
82
|
{#if open}
|
|
22
|
-
<Overlay
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
83
|
+
<Overlay {blur} onClick={close}>
|
|
84
|
+
<div bind:this={dialogElement}>
|
|
85
|
+
<Dialog {size} {glass} role="dialog" aria-modal="true" aria-labelledby={titleId}>
|
|
86
|
+
<DialogCloseButton show={_showCloseButton} onClick={close} />
|
|
87
|
+
<DialogBody>
|
|
88
|
+
{@render children?.()}
|
|
89
|
+
</DialogBody>
|
|
90
|
+
</Dialog>
|
|
91
|
+
</div>
|
|
29
92
|
</Overlay>
|
|
30
93
|
{/if}
|