bits-ui 1.8.0 → 2.2.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/dist/bits/accordion/accordion.svelte.d.ts +56 -53
- package/dist/bits/accordion/accordion.svelte.js +78 -89
- package/dist/bits/accordion/components/accordion-content.svelte +5 -3
- package/dist/bits/accordion/components/accordion-header.svelte +4 -2
- package/dist/bits/accordion/components/accordion-item.svelte +6 -3
- package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
- package/dist/bits/accordion/components/accordion.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
- package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
- package/dist/bits/avatar/avatar.svelte.d.ts +2 -1
- package/dist/bits/avatar/avatar.svelte.js +8 -6
- package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
- package/dist/bits/avatar/components/avatar-image.svelte +4 -2
- package/dist/bits/avatar/components/avatar.svelte +4 -2
- package/dist/bits/button/components/button.svelte +1 -1
- package/dist/bits/calendar/calendar.svelte.d.ts +3 -9
- package/dist/bits/calendar/calendar.svelte.js +55 -41
- package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-day.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
- package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-header.svelte +4 -2
- package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
- package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
- package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
- package/dist/bits/checkbox/checkbox.svelte.js +4 -14
- package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox.svelte +4 -2
- package/dist/bits/collapsible/collapsible.svelte.js +4 -10
- package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
- package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
- package/dist/bits/collapsible/components/collapsible.svelte +4 -2
- package/dist/bits/combobox/components/combobox-input.svelte +3 -3
- package/dist/bits/combobox/components/combobox.svelte +6 -1
- package/dist/bits/combobox/types.d.ts +18 -1
- package/dist/bits/command/command.svelte.js +13 -45
- package/dist/bits/command/components/_command-label.svelte +6 -7
- package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
- package/dist/bits/command/components/command-empty.svelte +4 -2
- package/dist/bits/command/components/command-group-heading.svelte +4 -2
- package/dist/bits/command/components/command-group-items.svelte +4 -2
- package/dist/bits/command/components/command-group.svelte +4 -2
- package/dist/bits/command/components/command-input.svelte +4 -2
- package/dist/bits/command/components/command-item.svelte +4 -2
- package/dist/bits/command/components/command-link-item.svelte +4 -2
- package/dist/bits/command/components/command-list.svelte +4 -2
- package/dist/bits/command/components/command-loading.svelte +4 -2
- package/dist/bits/command/components/command-separator.svelte +4 -2
- package/dist/bits/command/components/command-viewport.svelte +4 -2
- package/dist/bits/command/components/command.svelte +4 -2
- package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
- package/dist/bits/date-field/components/date-field-input.svelte +4 -2
- package/dist/bits/date-field/components/date-field-label.svelte +4 -2
- package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
- package/dist/bits/date-field/date-field.svelte.d.ts +7 -5
- package/dist/bits/date-field/date-field.svelte.js +29 -38
- package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
- package/dist/bits/date-range-field/date-range-field.svelte.d.ts +2 -0
- package/dist/bits/date-range-field/date-range-field.svelte.js +6 -14
- package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
- package/dist/bits/dialog/components/dialog-close.svelte +4 -2
- package/dist/bits/dialog/components/dialog-content.svelte +8 -2
- package/dist/bits/dialog/components/dialog-description.svelte +4 -2
- package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
- package/dist/bits/dialog/components/dialog-title.svelte +4 -2
- package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
- package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
- package/dist/bits/dialog/dialog.svelte.js +19 -47
- package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
- package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
- package/dist/bits/index.d.ts +2 -0
- package/dist/bits/index.js +2 -0
- package/dist/bits/label/components/label.svelte +4 -2
- package/dist/bits/label/label.svelte.js +2 -2
- package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
- package/dist/bits/link-preview/link-preview.svelte.d.ts +2 -0
- package/dist/bits/link-preview/link-preview.svelte.js +13 -19
- package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
- package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
- package/dist/bits/menu/components/menu-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-content.svelte +6 -5
- package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
- package/dist/bits/menu/components/menu-group.svelte +4 -2
- package/dist/bits/menu/components/menu-item.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
- package/dist/bits/menu/components/menu-separator.svelte +4 -2
- package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
- package/dist/bits/menu/components/menu-trigger.svelte +5 -3
- package/dist/bits/menu/menu.svelte.d.ts +9 -20
- package/dist/bits/menu/menu.svelte.js +40 -63
- package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
- package/dist/bits/menubar/components/menubar-content.svelte +4 -2
- package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
- package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
- package/dist/bits/menubar/components/menubar.svelte +4 -2
- package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
- package/dist/bits/menubar/menubar.svelte.js +40 -56
- package/dist/bits/meter/components/meter.svelte +4 -2
- package/dist/bits/meter/meter.svelte.js +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
- package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
- package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
- package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
- package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
- package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +3 -1
- package/dist/bits/navigation-menu/navigation-menu.svelte.js +33 -60
- package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination-page.svelte +4 -2
- package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination.svelte +4 -2
- package/dist/bits/pagination/pagination.svelte.js +4 -4
- package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
- package/dist/bits/pin-input/components/pin-input.svelte +5 -3
- package/dist/bits/pin-input/pin-input.svelte.d.ts +4 -2
- package/dist/bits/pin-input/pin-input.svelte.js +20 -22
- package/dist/bits/pin-input/usePasswordManager.svelte.d.ts +3 -2
- package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -5
- package/dist/bits/popover/components/popover-close.svelte +4 -2
- package/dist/bits/popover/components/popover-content-static.svelte +6 -2
- package/dist/bits/popover/components/popover-content.svelte +6 -2
- package/dist/bits/popover/components/popover-trigger.svelte +5 -3
- package/dist/bits/popover/popover.svelte.js +4 -18
- package/dist/bits/progress/components/progress.svelte +4 -2
- package/dist/bits/progress/progress.svelte.js +2 -2
- package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
- package/dist/bits/radio-group/components/radio-group.svelte +4 -2
- package/dist/bits/radio-group/radio-group.svelte.js +4 -7
- package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
- package/dist/bits/range-calendar/range-calendar.svelte.d.ts +2 -0
- package/dist/bits/range-calendar/range-calendar.svelte.js +12 -6
- package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
- package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
- package/dist/bits/scroll-area/scroll-area.svelte.d.ts +2 -0
- package/dist/bits/scroll-area/scroll-area.svelte.js +27 -58
- package/dist/bits/select/components/select-content-static.svelte +6 -2
- package/dist/bits/select/components/select-content.svelte +6 -2
- package/dist/bits/select/components/select-group-heading.svelte +3 -2
- package/dist/bits/select/components/select-group.svelte +4 -2
- package/dist/bits/select/components/select-item.svelte +4 -2
- package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
- package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
- package/dist/bits/select/components/select-trigger.svelte +5 -3
- package/dist/bits/select/components/select-viewport.svelte +4 -2
- package/dist/bits/select/components/select.svelte +7 -1
- package/dist/bits/select/select.svelte.d.ts +5 -19
- package/dist/bits/select/select.svelte.js +43 -60
- package/dist/bits/separator/components/separator.svelte +4 -2
- package/dist/bits/separator/separator.svelte.js +2 -2
- package/dist/bits/slider/components/slider-range.svelte +4 -2
- package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
- package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-thumb.svelte +4 -2
- package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
- package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-tick.svelte +4 -2
- package/dist/bits/slider/components/slider.svelte +24 -5
- package/dist/bits/slider/exports.d.ts +3 -1
- package/dist/bits/slider/exports.js +2 -0
- package/dist/bits/slider/helpers.d.ts +14 -0
- package/dist/bits/slider/helpers.js +122 -0
- package/dist/bits/slider/slider.svelte.d.ts +91 -5
- package/dist/bits/slider/slider.svelte.js +194 -101
- package/dist/bits/slider/types.d.ts +105 -11
- package/dist/bits/switch/components/switch-thumb.svelte +4 -2
- package/dist/bits/switch/components/switch.svelte +4 -2
- package/dist/bits/switch/switch.svelte.js +3 -3
- package/dist/bits/tabs/components/tabs-content.svelte +4 -2
- package/dist/bits/tabs/components/tabs-list.svelte +4 -2
- package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
- package/dist/bits/tabs/components/tabs.svelte +4 -2
- package/dist/bits/tabs/tabs.svelte.js +6 -6
- package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
- package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
- package/dist/bits/time-field/components/time-field-input.svelte +39 -0
- package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-label.svelte +34 -0
- package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
- package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field.svelte +94 -0
- package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
- package/dist/bits/time-field/exports.d.ts +5 -0
- package/dist/bits/time-field/exports.js +4 -0
- package/dist/bits/time-field/index.d.ts +1 -0
- package/dist/bits/time-field/index.js +1 -0
- package/dist/bits/time-field/time-field.svelte.d.ts +417 -0
- package/dist/bits/time-field/time-field.svelte.js +980 -0
- package/dist/bits/time-field/types.d.ts +137 -0
- package/dist/bits/time-field/types.js +1 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
- package/dist/bits/time-range-field/exports.d.ts +5 -0
- package/dist/bits/time-range-field/exports.js +4 -0
- package/dist/bits/time-range-field/index.d.ts +1 -0
- package/dist/bits/time-range-field/index.js +1 -0
- package/dist/bits/time-range-field/time-range-field.svelte.d.ts +92 -0
- package/dist/bits/time-range-field/time-range-field.svelte.js +212 -0
- package/dist/bits/time-range-field/types.d.ts +150 -0
- package/dist/bits/time-range-field/types.js +1 -0
- package/dist/bits/toggle/components/toggle.svelte +4 -2
- package/dist/bits/toggle/toggle.svelte.js +2 -2
- package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
- package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
- package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
- package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar.svelte +4 -2
- package/dist/bits/toolbar/toolbar.svelte.js +7 -7
- package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
- package/dist/bits/tooltip/tooltip.svelte.d.ts +2 -0
- package/dist/bits/tooltip/tooltip.svelte.js +6 -15
- package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
- package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
- package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
- package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +7 -27
- package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
- package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +15 -16
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
- package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
- package/dist/bits/utilities/portal/types.d.ts +1 -1
- package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
- package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
- package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
- package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +5 -1
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +8 -14
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/box-auto-reset.svelte.d.ts +7 -1
- package/dist/internal/box-auto-reset.svelte.js +11 -6
- package/dist/internal/create-id.d.ts +8 -0
- package/dist/internal/create-id.js +5 -0
- package/dist/internal/date-time/announcer.d.ts +1 -1
- package/dist/internal/date-time/announcer.js +20 -20
- package/dist/internal/date-time/calendar-helpers.svelte.js +7 -5
- package/dist/internal/date-time/field/helpers.d.ts +9 -2
- package/dist/internal/date-time/field/helpers.js +16 -9
- package/dist/internal/date-time/field/parts.d.ts +3 -1
- package/dist/internal/date-time/field/parts.js +10 -2
- package/dist/internal/date-time/field/segments.d.ts +9 -0
- package/dist/internal/date-time/field/segments.js +65 -0
- package/dist/internal/date-time/field/time-helpers.d.ts +83 -0
- package/dist/internal/date-time/field/time-helpers.js +301 -0
- package/dist/internal/date-time/field/types.d.ts +2 -2
- package/dist/internal/date-time/formatter.d.ts +11 -1
- package/dist/internal/date-time/formatter.js +56 -0
- package/dist/internal/date-time/utils.d.ts +7 -2
- package/dist/internal/date-time/utils.js +15 -1
- package/dist/internal/dom.d.ts +0 -1
- package/dist/internal/dom.js +0 -3
- package/dist/internal/focus.d.ts +2 -2
- package/dist/internal/focus.js +14 -9
- package/dist/internal/math.d.ts +0 -4
- package/dist/internal/math.js +0 -28
- package/dist/internal/tabbable.d.ts +0 -2
- package/dist/internal/tabbable.js +10 -14
- package/dist/internal/use-data-typeahead.svelte.d.ts +1 -0
- package/dist/internal/use-data-typeahead.svelte.js +4 -1
- package/dist/internal/use-dom-typeahead.svelte.d.ts +3 -1
- package/dist/internal/use-dom-typeahead.svelte.js +5 -2
- package/dist/internal/use-grace-area.svelte.js +9 -5
- package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
- package/dist/internal/use-roving-focus.svelte.js +10 -11
- package/dist/shared/date/types.d.ts +27 -4
- package/dist/shared/index.d.ts +2 -2
- package/dist/types.d.ts +2 -0
- package/package.json +18 -16
- package/dist/bits/date-field/components/date-field-error.svelte +0 -0
- package/dist/internal/use-size.svelte.d.ts +0 -7
- package/dist/internal/use-size.svelte.js +0 -54
|
@@ -7,51 +7,72 @@ type AccordionBaseStateProps = WithRefProps<ReadableBoxedValues<{
|
|
|
7
7
|
orientation: Orientation;
|
|
8
8
|
loop: boolean;
|
|
9
9
|
}>>;
|
|
10
|
-
|
|
10
|
+
type AccordionSingleStateProps = AccordionBaseStateProps & WritableBoxedValues<{
|
|
11
|
+
value: string;
|
|
12
|
+
}>;
|
|
13
|
+
type AccordionMultiStateProps = AccordionBaseStateProps & WritableBoxedValues<{
|
|
14
|
+
value: string[];
|
|
15
|
+
}>;
|
|
16
|
+
type AccordionState = AccordionSingleState | AccordionMultiState;
|
|
17
|
+
type AccordionItemStateProps = WithRefProps<ReadableBoxedValues<{
|
|
18
|
+
value: string;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
}> & {
|
|
21
|
+
rootState: AccordionState;
|
|
22
|
+
}>;
|
|
23
|
+
type AccordionTriggerStateProps = WithRefProps<ReadableBoxedValues<{
|
|
24
|
+
disabled: boolean | null | undefined;
|
|
25
|
+
}>>;
|
|
26
|
+
type AccordionContentStateProps = WithRefProps<ReadableBoxedValues<{
|
|
27
|
+
forceMount: boolean;
|
|
28
|
+
}>>;
|
|
29
|
+
type AccordionHeaderStateProps = WithRefProps<ReadableBoxedValues<{
|
|
30
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
31
|
+
}>>;
|
|
32
|
+
type InitAccordionProps = WithRefProps<{
|
|
33
|
+
type: "single" | "multiple";
|
|
34
|
+
value: Box<string> | Box<string[]>;
|
|
35
|
+
} & ReadableBoxedValues<{
|
|
36
|
+
disabled: boolean;
|
|
37
|
+
orientation: Orientation;
|
|
38
|
+
loop: boolean;
|
|
39
|
+
}>>;
|
|
40
|
+
declare abstract class AccordionBaseState {
|
|
11
41
|
readonly opts: AccordionBaseStateProps;
|
|
12
|
-
rovingFocusGroup: UseRovingFocusReturn;
|
|
42
|
+
readonly rovingFocusGroup: UseRovingFocusReturn;
|
|
43
|
+
abstract readonly isMulti: boolean;
|
|
13
44
|
constructor(opts: AccordionBaseStateProps);
|
|
14
|
-
|
|
45
|
+
abstract includesItem(item: string): boolean;
|
|
46
|
+
abstract toggleItem(item: string): void;
|
|
47
|
+
readonly props: {
|
|
15
48
|
readonly id: string;
|
|
16
49
|
readonly "data-orientation": "horizontal" | "vertical";
|
|
17
50
|
readonly "data-disabled": "" | undefined;
|
|
18
51
|
readonly "data-accordion-root": "";
|
|
19
52
|
};
|
|
20
53
|
}
|
|
21
|
-
type AccordionSingleStateProps = AccordionBaseStateProps & WritableBoxedValues<{
|
|
22
|
-
value: string;
|
|
23
|
-
}>;
|
|
24
54
|
export declare class AccordionSingleState extends AccordionBaseState {
|
|
25
55
|
readonly opts: AccordionSingleStateProps;
|
|
26
|
-
isMulti: false;
|
|
56
|
+
readonly isMulti: false;
|
|
27
57
|
constructor(opts: AccordionSingleStateProps);
|
|
28
|
-
includesItem(item: string)
|
|
29
|
-
toggleItem(item: string)
|
|
58
|
+
includesItem: (item: string) => boolean;
|
|
59
|
+
toggleItem: (item: string) => void;
|
|
30
60
|
}
|
|
31
|
-
type AccordionMultiStateProps = AccordionBaseStateProps & WritableBoxedValues<{
|
|
32
|
-
value: string[];
|
|
33
|
-
}>;
|
|
34
61
|
export declare class AccordionMultiState extends AccordionBaseState {
|
|
35
62
|
#private;
|
|
36
|
-
isMulti: true;
|
|
63
|
+
readonly isMulti: true;
|
|
37
64
|
constructor(props: AccordionMultiStateProps);
|
|
38
|
-
includesItem(item: string)
|
|
39
|
-
toggleItem(item: string)
|
|
65
|
+
includesItem: (item: string) => boolean;
|
|
66
|
+
toggleItem: (item: string) => void;
|
|
40
67
|
}
|
|
41
|
-
type AccordionItemStateProps = WithRefProps<ReadableBoxedValues<{
|
|
42
|
-
value: string;
|
|
43
|
-
disabled: boolean;
|
|
44
|
-
}> & {
|
|
45
|
-
rootState: AccordionState;
|
|
46
|
-
}>;
|
|
47
68
|
export declare class AccordionItemState {
|
|
48
69
|
readonly opts: AccordionItemStateProps;
|
|
49
|
-
root: AccordionState;
|
|
50
|
-
isActive: boolean;
|
|
51
|
-
isDisabled: boolean;
|
|
70
|
+
readonly root: AccordionState;
|
|
71
|
+
readonly isActive: boolean;
|
|
72
|
+
readonly isDisabled: boolean;
|
|
52
73
|
constructor(opts: AccordionItemStateProps);
|
|
53
|
-
updateValue()
|
|
54
|
-
props: {
|
|
74
|
+
updateValue: () => void;
|
|
75
|
+
readonly props: {
|
|
55
76
|
readonly id: string;
|
|
56
77
|
readonly "data-state": "open" | "closed";
|
|
57
78
|
readonly "data-disabled": "" | undefined;
|
|
@@ -59,17 +80,14 @@ export declare class AccordionItemState {
|
|
|
59
80
|
readonly "data-accordion-item": "";
|
|
60
81
|
};
|
|
61
82
|
}
|
|
62
|
-
type AccordionTriggerStateProps = WithRefProps<ReadableBoxedValues<{
|
|
63
|
-
disabled: boolean | null | undefined;
|
|
64
|
-
}>>;
|
|
65
83
|
declare class AccordionTriggerState {
|
|
66
84
|
#private;
|
|
67
85
|
readonly opts: AccordionTriggerStateProps;
|
|
68
86
|
readonly itemState: AccordionItemState;
|
|
69
87
|
constructor(opts: AccordionTriggerStateProps, itemState: AccordionItemState);
|
|
70
|
-
onclick(e: BitsMouseEvent)
|
|
71
|
-
onkeydown(e: BitsKeyboardEvent)
|
|
72
|
-
props: {
|
|
88
|
+
onclick: (e: BitsMouseEvent) => void;
|
|
89
|
+
onkeydown: (e: BitsKeyboardEvent) => void;
|
|
90
|
+
readonly props: {
|
|
73
91
|
readonly id: string;
|
|
74
92
|
readonly disabled: boolean;
|
|
75
93
|
readonly "aria-expanded": "true" | "false";
|
|
@@ -83,19 +101,16 @@ declare class AccordionTriggerState {
|
|
|
83
101
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
84
102
|
};
|
|
85
103
|
}
|
|
86
|
-
type AccordionContentStateProps = WithRefProps<ReadableBoxedValues<{
|
|
87
|
-
forceMount: boolean;
|
|
88
|
-
}>>;
|
|
89
104
|
declare class AccordionContentState {
|
|
90
105
|
#private;
|
|
91
106
|
readonly opts: AccordionContentStateProps;
|
|
92
107
|
readonly item: AccordionItemState;
|
|
93
|
-
present: boolean;
|
|
108
|
+
readonly present: boolean;
|
|
94
109
|
constructor(opts: AccordionContentStateProps, item: AccordionItemState);
|
|
95
|
-
snippetProps: {
|
|
110
|
+
readonly snippetProps: {
|
|
96
111
|
open: boolean;
|
|
97
112
|
};
|
|
98
|
-
props: {
|
|
113
|
+
readonly props: {
|
|
99
114
|
readonly id: string;
|
|
100
115
|
readonly "data-state": "open" | "closed";
|
|
101
116
|
readonly "data-disabled": "" | undefined;
|
|
@@ -107,32 +122,20 @@ declare class AccordionContentState {
|
|
|
107
122
|
};
|
|
108
123
|
};
|
|
109
124
|
}
|
|
110
|
-
type AccordionHeaderStateProps = WithRefProps<ReadableBoxedValues<{
|
|
111
|
-
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
112
|
-
}>>;
|
|
113
125
|
declare class AccordionHeaderState {
|
|
114
126
|
readonly opts: AccordionHeaderStateProps;
|
|
115
127
|
readonly item: AccordionItemState;
|
|
116
128
|
constructor(opts: AccordionHeaderStateProps, item: AccordionItemState);
|
|
117
|
-
props: {
|
|
129
|
+
readonly props: {
|
|
118
130
|
readonly id: string;
|
|
119
131
|
readonly role: "heading";
|
|
120
|
-
readonly "aria-level": 1 | 2 | 3 | 4 |
|
|
121
|
-
readonly "data-heading-level": 1 | 2 | 3 | 4 |
|
|
132
|
+
readonly "aria-level": 1 | 2 | 3 | 4 | 6 | 5;
|
|
133
|
+
readonly "data-heading-level": 1 | 2 | 3 | 4 | 6 | 5;
|
|
122
134
|
readonly "data-state": "open" | "closed";
|
|
123
135
|
readonly "data-orientation": "horizontal" | "vertical";
|
|
124
136
|
readonly "data-accordion-header": "";
|
|
125
137
|
};
|
|
126
138
|
}
|
|
127
|
-
type AccordionState = AccordionSingleState | AccordionMultiState;
|
|
128
|
-
type InitAccordionProps = WithRefProps<{
|
|
129
|
-
type: "single" | "multiple";
|
|
130
|
-
value: Box<string> | Box<string[]>;
|
|
131
|
-
} & ReadableBoxedValues<{
|
|
132
|
-
disabled: boolean;
|
|
133
|
-
orientation: Orientation;
|
|
134
|
-
loop: boolean;
|
|
135
|
-
}>>;
|
|
136
139
|
export declare function useAccordionRoot(props: InitAccordionProps): AccordionState;
|
|
137
140
|
export declare function useAccordionItem(props: Omit<AccordionItemStateProps, "rootState">): AccordionItemState;
|
|
138
141
|
export declare function useAccordionTrigger(props: AccordionTriggerStateProps): AccordionTriggerState;
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { afterTick,
|
|
1
|
+
import { afterTick, attachRef } from "svelte-toolbelt";
|
|
2
2
|
import { Context, watch } from "runed";
|
|
3
3
|
import { getAriaDisabled, getAriaExpanded, getDataDisabled, getDataOpenClosed, getDataOrientation, } from "../../internal/attrs.js";
|
|
4
4
|
import { kbd } from "../../internal/kbd.js";
|
|
5
5
|
import { useRovingFocus, } from "../../internal/use-roving-focus.svelte.js";
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
// Constants
|
|
7
|
+
const ACCORDION_ATTRS = {
|
|
8
|
+
ROOT: "data-accordion-root",
|
|
9
|
+
TRIGGER: "data-accordion-trigger",
|
|
10
|
+
CONTENT: "data-accordion-content",
|
|
11
|
+
ITEM: "data-accordion-item",
|
|
12
|
+
HEADER: "data-accordion-header",
|
|
13
|
+
};
|
|
14
|
+
// Base class
|
|
11
15
|
class AccordionBaseState {
|
|
12
16
|
opts;
|
|
13
17
|
rovingFocusGroup;
|
|
14
18
|
constructor(opts) {
|
|
15
19
|
this.opts = opts;
|
|
16
|
-
useRefById(this.opts);
|
|
17
20
|
this.rovingFocusGroup = useRovingFocus({
|
|
18
|
-
|
|
19
|
-
candidateAttr:
|
|
21
|
+
rootNode: this.opts.ref,
|
|
22
|
+
candidateAttr: ACCORDION_ATTRS.TRIGGER,
|
|
20
23
|
loop: this.opts.loop,
|
|
21
24
|
orientation: this.opts.orientation,
|
|
22
25
|
});
|
|
@@ -25,46 +28,39 @@ class AccordionBaseState {
|
|
|
25
28
|
id: this.opts.id.current,
|
|
26
29
|
"data-orientation": getDataOrientation(this.opts.orientation.current),
|
|
27
30
|
"data-disabled": getDataDisabled(this.opts.disabled.current),
|
|
28
|
-
[
|
|
31
|
+
[ACCORDION_ATTRS.ROOT]: "",
|
|
32
|
+
...attachRef(this.opts.ref),
|
|
29
33
|
}));
|
|
30
34
|
}
|
|
35
|
+
// Single accordion
|
|
31
36
|
export class AccordionSingleState extends AccordionBaseState {
|
|
32
37
|
opts;
|
|
33
38
|
isMulti = false;
|
|
34
39
|
constructor(opts) {
|
|
35
40
|
super(opts);
|
|
36
41
|
this.opts = opts;
|
|
37
|
-
this.includesItem = this.includesItem.bind(this);
|
|
38
|
-
this.toggleItem = this.toggleItem.bind(this);
|
|
39
42
|
}
|
|
40
|
-
includesItem(item)
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
toggleItem(item) {
|
|
43
|
+
includesItem = (item) => this.opts.value.current === item;
|
|
44
|
+
toggleItem = (item) => {
|
|
44
45
|
this.opts.value.current = this.includesItem(item) ? "" : item;
|
|
45
|
-
}
|
|
46
|
+
};
|
|
46
47
|
}
|
|
48
|
+
// Multiple accordion
|
|
47
49
|
export class AccordionMultiState extends AccordionBaseState {
|
|
48
50
|
#value;
|
|
49
51
|
isMulti = true;
|
|
50
52
|
constructor(props) {
|
|
51
53
|
super(props);
|
|
52
54
|
this.#value = props.value;
|
|
53
|
-
this.includesItem = this.includesItem.bind(this);
|
|
54
|
-
this.toggleItem = this.toggleItem.bind(this);
|
|
55
|
-
}
|
|
56
|
-
includesItem(item) {
|
|
57
|
-
return this.#value.current.includes(item);
|
|
58
|
-
}
|
|
59
|
-
toggleItem(item) {
|
|
60
|
-
if (this.includesItem(item)) {
|
|
61
|
-
this.#value.current = this.#value.current.filter((v) => v !== item);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.#value.current = [...this.#value.current, item];
|
|
65
|
-
}
|
|
66
55
|
}
|
|
56
|
+
includesItem = (item) => this.#value.current.includes(item);
|
|
57
|
+
toggleItem = (item) => {
|
|
58
|
+
this.#value.current = this.includesItem(item)
|
|
59
|
+
? this.#value.current.filter((v) => v !== item)
|
|
60
|
+
: [...this.#value.current, item];
|
|
61
|
+
};
|
|
67
62
|
}
|
|
63
|
+
// Item state
|
|
68
64
|
export class AccordionItemState {
|
|
69
65
|
opts;
|
|
70
66
|
root;
|
|
@@ -73,23 +69,20 @@ export class AccordionItemState {
|
|
|
73
69
|
constructor(opts) {
|
|
74
70
|
this.opts = opts;
|
|
75
71
|
this.root = opts.rootState;
|
|
76
|
-
this.updateValue = this.updateValue.bind(this);
|
|
77
|
-
useRefById({
|
|
78
|
-
...opts,
|
|
79
|
-
deps: () => this.isActive,
|
|
80
|
-
});
|
|
81
72
|
}
|
|
82
|
-
updateValue() {
|
|
73
|
+
updateValue = () => {
|
|
83
74
|
this.root.toggleItem(this.opts.value.current);
|
|
84
|
-
}
|
|
75
|
+
};
|
|
85
76
|
props = $derived.by(() => ({
|
|
86
77
|
id: this.opts.id.current,
|
|
87
78
|
"data-state": getDataOpenClosed(this.isActive),
|
|
88
79
|
"data-disabled": getDataDisabled(this.isDisabled),
|
|
89
80
|
"data-orientation": getDataOrientation(this.root.opts.orientation.current),
|
|
90
|
-
[
|
|
81
|
+
[ACCORDION_ATTRS.ITEM]: "",
|
|
82
|
+
...attachRef(this.opts.ref),
|
|
91
83
|
}));
|
|
92
84
|
}
|
|
85
|
+
// Trigger state
|
|
93
86
|
class AccordionTriggerState {
|
|
94
87
|
opts;
|
|
95
88
|
itemState;
|
|
@@ -101,18 +94,15 @@ class AccordionTriggerState {
|
|
|
101
94
|
this.opts = opts;
|
|
102
95
|
this.itemState = itemState;
|
|
103
96
|
this.#root = itemState.root;
|
|
104
|
-
this.onkeydown = this.onkeydown.bind(this);
|
|
105
|
-
this.onclick = this.onclick.bind(this);
|
|
106
|
-
useRefById(opts);
|
|
107
97
|
}
|
|
108
|
-
onclick(e) {
|
|
109
|
-
if (this.#isDisabled)
|
|
98
|
+
onclick = (e) => {
|
|
99
|
+
if (this.#isDisabled || e.button !== 0) {
|
|
100
|
+
e.preventDefault();
|
|
110
101
|
return;
|
|
111
|
-
|
|
112
|
-
return e.preventDefault();
|
|
102
|
+
}
|
|
113
103
|
this.itemState.updateValue();
|
|
114
|
-
}
|
|
115
|
-
onkeydown(e) {
|
|
104
|
+
};
|
|
105
|
+
onkeydown = (e) => {
|
|
116
106
|
if (this.#isDisabled)
|
|
117
107
|
return;
|
|
118
108
|
if (e.key === kbd.SPACE || e.key === kbd.ENTER) {
|
|
@@ -121,7 +111,7 @@ class AccordionTriggerState {
|
|
|
121
111
|
return;
|
|
122
112
|
}
|
|
123
113
|
this.#root.rovingFocusGroup.handleKeydown(this.opts.ref.current, e);
|
|
124
|
-
}
|
|
114
|
+
};
|
|
125
115
|
props = $derived.by(() => ({
|
|
126
116
|
id: this.opts.id.current,
|
|
127
117
|
disabled: this.#isDisabled,
|
|
@@ -130,82 +120,80 @@ class AccordionTriggerState {
|
|
|
130
120
|
"data-disabled": getDataDisabled(this.#isDisabled),
|
|
131
121
|
"data-state": getDataOpenClosed(this.itemState.isActive),
|
|
132
122
|
"data-orientation": getDataOrientation(this.#root.opts.orientation.current),
|
|
133
|
-
[
|
|
123
|
+
[ACCORDION_ATTRS.TRIGGER]: "",
|
|
134
124
|
tabindex: 0,
|
|
135
|
-
//
|
|
136
125
|
onclick: this.onclick,
|
|
137
126
|
onkeydown: this.onkeydown,
|
|
127
|
+
...attachRef(this.opts.ref),
|
|
138
128
|
}));
|
|
139
129
|
}
|
|
130
|
+
// Content state with improved animation handling
|
|
140
131
|
class AccordionContentState {
|
|
141
132
|
opts;
|
|
142
133
|
item;
|
|
143
134
|
#originalStyles = undefined;
|
|
144
135
|
#isMountAnimationPrevented = false;
|
|
145
|
-
#
|
|
146
|
-
#height = $state(0);
|
|
136
|
+
#dimensions = $state({ width: 0, height: 0 });
|
|
147
137
|
present = $derived.by(() => this.opts.forceMount.current || this.item.isActive);
|
|
148
138
|
constructor(opts, item) {
|
|
149
139
|
this.opts = opts;
|
|
150
140
|
this.item = item;
|
|
151
141
|
this.#isMountAnimationPrevented = this.item.isActive;
|
|
152
|
-
|
|
153
|
-
$effect
|
|
142
|
+
// Prevent mount animations on initial render
|
|
143
|
+
$effect(() => {
|
|
154
144
|
const rAF = requestAnimationFrame(() => {
|
|
155
145
|
this.#isMountAnimationPrevented = false;
|
|
156
146
|
});
|
|
157
|
-
return () =>
|
|
158
|
-
cancelAnimationFrame(rAF);
|
|
159
|
-
};
|
|
147
|
+
return () => cancelAnimationFrame(rAF);
|
|
160
148
|
});
|
|
161
|
-
|
|
162
|
-
|
|
149
|
+
// Handle dimension updates
|
|
150
|
+
watch([() => this.present, () => this.opts.ref.current], this.#updateDimensions);
|
|
151
|
+
}
|
|
152
|
+
#updateDimensions = ([_, node]) => {
|
|
153
|
+
if (!node)
|
|
154
|
+
return;
|
|
155
|
+
afterTick(() => {
|
|
156
|
+
const element = this.opts.ref.current;
|
|
157
|
+
if (!element)
|
|
163
158
|
return;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (!this.#isMountAnimationPrevented) {
|
|
180
|
-
const { animationName, transitionDuration } = this.#originalStyles;
|
|
181
|
-
node.style.transitionDuration = transitionDuration;
|
|
182
|
-
node.style.animationName = animationName;
|
|
183
|
-
}
|
|
184
|
-
});
|
|
159
|
+
// store original styles on first run
|
|
160
|
+
this.#originalStyles ??= {
|
|
161
|
+
transitionDuration: element.style.transitionDuration,
|
|
162
|
+
animationName: element.style.animationName,
|
|
163
|
+
};
|
|
164
|
+
// temporarily disable animations for measurement
|
|
165
|
+
element.style.transitionDuration = "0s";
|
|
166
|
+
element.style.animationName = "none";
|
|
167
|
+
const rect = element.getBoundingClientRect();
|
|
168
|
+
this.#dimensions = { width: rect.width, height: rect.height };
|
|
169
|
+
// restore animations if not initial mount
|
|
170
|
+
if (!this.#isMountAnimationPrevented && this.#originalStyles) {
|
|
171
|
+
element.style.transitionDuration = this.#originalStyles.transitionDuration;
|
|
172
|
+
element.style.animationName = this.#originalStyles.animationName;
|
|
173
|
+
}
|
|
185
174
|
});
|
|
186
|
-
}
|
|
187
|
-
snippetProps = $derived.by(() => ({
|
|
188
|
-
open: this.item.isActive,
|
|
189
|
-
}));
|
|
175
|
+
};
|
|
176
|
+
snippetProps = $derived.by(() => ({ open: this.item.isActive }));
|
|
190
177
|
props = $derived.by(() => ({
|
|
191
178
|
id: this.opts.id.current,
|
|
192
179
|
"data-state": getDataOpenClosed(this.item.isActive),
|
|
193
180
|
"data-disabled": getDataDisabled(this.item.isDisabled),
|
|
194
181
|
"data-orientation": getDataOrientation(this.item.root.opts.orientation.current),
|
|
195
|
-
[
|
|
182
|
+
[ACCORDION_ATTRS.CONTENT]: "",
|
|
196
183
|
style: {
|
|
197
|
-
"--bits-accordion-content-height": `${this.#height}px`,
|
|
198
|
-
"--bits-accordion-content-width": `${this.#width}px`,
|
|
184
|
+
"--bits-accordion-content-height": `${this.#dimensions.height}px`,
|
|
185
|
+
"--bits-accordion-content-width": `${this.#dimensions.width}px`,
|
|
199
186
|
},
|
|
187
|
+
...attachRef(this.opts.ref),
|
|
200
188
|
}));
|
|
201
189
|
}
|
|
190
|
+
// Header state
|
|
202
191
|
class AccordionHeaderState {
|
|
203
192
|
opts;
|
|
204
193
|
item;
|
|
205
194
|
constructor(opts, item) {
|
|
206
195
|
this.opts = opts;
|
|
207
196
|
this.item = item;
|
|
208
|
-
useRefById(opts);
|
|
209
197
|
}
|
|
210
198
|
props = $derived.by(() => ({
|
|
211
199
|
id: this.opts.id.current,
|
|
@@ -214,7 +202,8 @@ class AccordionHeaderState {
|
|
|
214
202
|
"data-heading-level": this.opts.level.current,
|
|
215
203
|
"data-state": getDataOpenClosed(this.item.isActive),
|
|
216
204
|
"data-orientation": getDataOrientation(this.item.root.opts.orientation.current),
|
|
217
|
-
[
|
|
205
|
+
[ACCORDION_ATTRS.HEADER]: "",
|
|
206
|
+
...attachRef(this.opts.ref),
|
|
218
207
|
}));
|
|
219
208
|
}
|
|
220
209
|
const AccordionRootContext = new Context("Accordion.Root");
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
import { useAccordionContent } from "../accordion.svelte.js";
|
|
4
4
|
import type { AccordionContentProps } from "../types.js";
|
|
5
5
|
import { PresenceLayer } from "../../utilities/presence-layer/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createId } from "../../../internal/create-id.js";
|
|
7
|
+
|
|
8
|
+
const uid = $props.id();
|
|
7
9
|
|
|
8
10
|
let {
|
|
9
11
|
child,
|
|
10
12
|
ref = $bindable(null),
|
|
11
|
-
id =
|
|
13
|
+
id = createId(uid),
|
|
12
14
|
forceMount = false,
|
|
13
15
|
children,
|
|
14
16
|
...restProps
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
});
|
|
25
27
|
</script>
|
|
26
28
|
|
|
27
|
-
<PresenceLayer forceMount={true} present={contentState.present} {
|
|
29
|
+
<PresenceLayer forceMount={true} present={contentState.present} ref={contentState.opts.ref}>
|
|
28
30
|
{#snippet presence({ present })}
|
|
29
31
|
{@const mergedProps = mergeProps(restProps, contentState.props, {
|
|
30
32
|
hidden: forceMount ? undefined : !present.current,
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { AccordionHeaderProps } from "../types.js";
|
|
4
4
|
import { useAccordionHeader } from "../accordion.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
|
-
id =
|
|
10
|
+
id = createId(uid),
|
|
9
11
|
level = 2,
|
|
10
12
|
children,
|
|
11
13
|
child,
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { AccordionItemProps } from "../types.js";
|
|
4
4
|
import { useAccordionItem } from "../accordion.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
8
|
+
const defaultId = createId(uid);
|
|
6
9
|
|
|
7
10
|
let {
|
|
8
|
-
id =
|
|
11
|
+
id = defaultId,
|
|
9
12
|
disabled = false,
|
|
10
|
-
value =
|
|
13
|
+
value = defaultId,
|
|
11
14
|
children,
|
|
12
15
|
child,
|
|
13
16
|
ref = $bindable(null),
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { AccordionTriggerProps } from "../types.js";
|
|
4
4
|
import { useAccordionTrigger } from "../accordion.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
10
|
disabled = false,
|
|
9
11
|
ref = $bindable(null),
|
|
10
|
-
id =
|
|
12
|
+
id = createId(uid),
|
|
11
13
|
children,
|
|
12
14
|
child,
|
|
13
15
|
...restProps
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
import { type WritableBox, box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import { useAccordionRoot } from "../accordion.svelte.js";
|
|
4
4
|
import type { AccordionRootProps } from "../types.js";
|
|
5
|
-
import { useId } from "../../../internal/use-id.js";
|
|
6
5
|
import { noop } from "../../../internal/noop.js";
|
|
7
6
|
import { watch } from "runed";
|
|
7
|
+
import { createId } from "../../../internal/create-id.js";
|
|
8
|
+
|
|
9
|
+
const uid = $props.id();
|
|
8
10
|
|
|
9
11
|
let {
|
|
10
12
|
disabled = false,
|
|
@@ -13,7 +15,7 @@
|
|
|
13
15
|
type,
|
|
14
16
|
value = $bindable(),
|
|
15
17
|
ref = $bindable(null),
|
|
16
|
-
id =
|
|
18
|
+
id = createId(uid),
|
|
17
19
|
onValueChange = noop,
|
|
18
20
|
loop = true,
|
|
19
21
|
orientation = "vertical",
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { AlertDialogActionProps } from "../types.js";
|
|
4
|
-
import { useId } from "../../../internal/use-id.js";
|
|
5
4
|
import { useAlertDialogAction } from "../../dialog/dialog.svelte.js";
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
10
|
children,
|
|
9
11
|
child,
|
|
10
|
-
id =
|
|
12
|
+
id = createId(uid),
|
|
11
13
|
ref = $bindable(null),
|
|
12
14
|
...restProps
|
|
13
15
|
}: AlertDialogActionProps = $props();
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { AlertDialogCancelProps } from "../types.js";
|
|
4
4
|
import { useAlertDialogCancel } from "../../dialog/dialog.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
|
-
id =
|
|
10
|
+
id = createId(uid),
|
|
9
11
|
ref = $bindable(null),
|
|
10
12
|
children,
|
|
11
13
|
child,
|
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
import FocusScope from "../../utilities/focus-scope/focus-scope.svelte";
|
|
7
7
|
import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
|
|
8
8
|
import TextSelectionLayer from "../../utilities/text-selection-layer/text-selection-layer.svelte";
|
|
9
|
-
import {
|
|
9
|
+
import { createId } from "../../../internal/create-id.js";
|
|
10
10
|
import { noop } from "../../../internal/noop.js";
|
|
11
11
|
import ScrollLock from "../../utilities/scroll-lock/scroll-lock.svelte";
|
|
12
12
|
import { useDialogContent } from "../../dialog/dialog.svelte.js";
|
|
13
13
|
import { shouldTrapFocus } from "../../../internal/should-trap-focus.js";
|
|
14
14
|
|
|
15
|
+
const uid = $props.id();
|
|
16
|
+
|
|
15
17
|
let {
|
|
16
|
-
id =
|
|
18
|
+
id = createId(uid),
|
|
17
19
|
children,
|
|
18
20
|
child,
|
|
19
21
|
ref = $bindable(null),
|
|
@@ -41,12 +43,13 @@
|
|
|
41
43
|
</script>
|
|
42
44
|
|
|
43
45
|
<PresenceLayer
|
|
44
|
-
{...mergedProps}
|
|
45
46
|
{forceMount}
|
|
46
47
|
present={contentState.root.opts.open.current || forceMount}
|
|
48
|
+
ref={contentState.opts.ref}
|
|
47
49
|
>
|
|
48
50
|
{#snippet presence()}
|
|
49
51
|
<FocusScope
|
|
52
|
+
ref={contentState.opts.ref}
|
|
50
53
|
loop
|
|
51
54
|
trapFocus={shouldTrapFocus({
|
|
52
55
|
forceMount,
|
|
@@ -81,6 +84,7 @@
|
|
|
81
84
|
>
|
|
82
85
|
<DismissibleLayer
|
|
83
86
|
{...mergedProps}
|
|
87
|
+
ref={contentState.opts.ref}
|
|
84
88
|
enabled={contentState.root.opts.open.current}
|
|
85
89
|
{interactOutsideBehavior}
|
|
86
90
|
onInteractOutside={(e) => {
|
|
@@ -91,6 +95,7 @@
|
|
|
91
95
|
>
|
|
92
96
|
<TextSelectionLayer
|
|
93
97
|
{...mergedProps}
|
|
98
|
+
ref={contentState.opts.ref}
|
|
94
99
|
enabled={contentState.root.opts.open.current}
|
|
95
100
|
>
|
|
96
101
|
{#if child}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { attachRef } from "svelte-toolbelt";
|
|
2
2
|
const ASPECT_RATIO_ROOT_ATTR = "data-aspect-ratio-root";
|
|
3
3
|
class AspectRatioRootState {
|
|
4
4
|
opts;
|
|
5
5
|
constructor(opts) {
|
|
6
6
|
this.opts = opts;
|
|
7
|
-
useRefById(opts);
|
|
8
7
|
}
|
|
9
8
|
wrapperProps = $derived.by(() => ({
|
|
10
9
|
style: {
|
|
@@ -23,6 +22,7 @@ class AspectRatioRootState {
|
|
|
23
22
|
left: 0,
|
|
24
23
|
},
|
|
25
24
|
[ASPECT_RATIO_ROOT_ATTR]: "",
|
|
25
|
+
...attachRef(this.opts.ref),
|
|
26
26
|
}));
|
|
27
27
|
}
|
|
28
28
|
export function useAspectRatioRoot(props) {
|