bits-ui 2.7.0 → 2.8.1
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 +4 -4
- package/dist/bits/accordion/accordion.svelte.d.ts +66 -58
- package/dist/bits/accordion/accordion.svelte.js +56 -51
- package/dist/bits/accordion/components/accordion-content.svelte +4 -4
- package/dist/bits/accordion/components/accordion-header.svelte +2 -2
- package/dist/bits/accordion/components/accordion-item.svelte +2 -2
- package/dist/bits/accordion/components/accordion-trigger.svelte +2 -2
- package/dist/bits/accordion/components/accordion.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +9 -12
- package/dist/bits/alert-dialog/components/alert-dialog.svelte +9 -3
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.d.ts +10 -16
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +4 -11
- package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -2
- package/dist/bits/avatar/avatar.svelte.d.ts +25 -33
- package/dist/bits/avatar/avatar.svelte.js +20 -21
- package/dist/bits/avatar/components/avatar-fallback.svelte +2 -2
- package/dist/bits/avatar/components/avatar-image.svelte +2 -2
- package/dist/bits/avatar/components/avatar.svelte +2 -2
- package/dist/bits/calendar/calendar.svelte.d.ts +117 -106
- package/dist/bits/calendar/calendar.svelte.js +51 -52
- package/dist/bits/calendar/components/calendar-cell.svelte +2 -2
- package/dist/bits/calendar/components/calendar-day.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid.svelte +2 -2
- package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -2
- package/dist/bits/calendar/components/calendar-header.svelte +2 -2
- package/dist/bits/calendar/components/calendar-heading.svelte +5 -5
- package/dist/bits/calendar/components/calendar-month-select.svelte +2 -2
- package/dist/bits/calendar/components/calendar-next-button.svelte +5 -3
- package/dist/bits/calendar/components/calendar-prev-button.svelte +5 -3
- package/dist/bits/calendar/components/calendar-year-select.svelte +2 -2
- package/dist/bits/calendar/components/calendar.svelte +2 -2
- package/dist/bits/checkbox/checkbox.svelte.d.ts +37 -34
- package/dist/bits/checkbox/checkbox.svelte.js +19 -22
- package/dist/bits/checkbox/components/checkbox-group-label.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox-group.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox-input.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox.svelte +2 -2
- package/dist/bits/collapsible/collapsible.svelte.d.ts +30 -27
- package/dist/bits/collapsible/collapsible.svelte.js +23 -15
- package/dist/bits/collapsible/components/collapsible-content.svelte +5 -5
- package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +1 -4
- package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -2
- package/dist/bits/collapsible/components/collapsible.svelte +4 -2
- package/dist/bits/collapsible/types.d.ts +4 -0
- package/dist/bits/combobox/components/combobox-input.svelte +2 -2
- package/dist/bits/combobox/components/combobox-trigger.svelte +2 -2
- package/dist/bits/combobox/components/combobox.svelte +4 -2
- package/dist/bits/command/command.svelte.d.ts +103 -92
- package/dist/bits/command/command.svelte.js +55 -57
- package/dist/bits/command/components/_command-label.svelte +2 -2
- package/dist/bits/command/components/command-empty.svelte +2 -2
- package/dist/bits/command/components/command-group-heading.svelte +2 -2
- package/dist/bits/command/components/command-group-items.svelte +2 -2
- package/dist/bits/command/components/command-group.svelte +2 -2
- package/dist/bits/command/components/command-input.svelte +2 -2
- package/dist/bits/command/components/command-item.svelte +2 -2
- package/dist/bits/command/components/command-link-item.svelte +2 -2
- package/dist/bits/command/components/command-list.svelte +2 -2
- package/dist/bits/command/components/command-loading.svelte +2 -2
- package/dist/bits/command/components/command-separator.svelte +2 -2
- package/dist/bits/command/components/command-viewport.svelte +2 -2
- package/dist/bits/command/components/command.svelte +2 -2
- package/dist/bits/context-menu/components/context-menu-content-static.svelte +3 -3
- package/dist/bits/context-menu/components/context-menu-content.svelte +4 -4
- package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -2
- package/dist/bits/context-menu/components/context-menu.svelte +16 -11
- package/dist/bits/date-field/components/date-field-hidden-input.svelte +2 -2
- package/dist/bits/date-field/components/date-field-input.svelte +2 -2
- package/dist/bits/date-field/components/date-field-label.svelte +2 -2
- package/dist/bits/date-field/components/date-field-segment.svelte +2 -2
- package/dist/bits/date-field/components/date-field.svelte +2 -2
- package/dist/bits/date-field/date-field.svelte.d.ts +85 -74
- package/dist/bits/date-field/date-field.svelte.js +55 -53
- package/dist/bits/date-picker/components/date-picker-calendar.svelte +2 -2
- package/dist/bits/date-picker/components/date-picker.svelte +8 -6
- package/dist/bits/date-picker/date-picker.svelte.d.ts +10 -10
- package/dist/bits/date-picker/date-picker.svelte.js +6 -5
- package/dist/bits/date-picker/types.d.ts +4 -0
- package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -2
- package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -2
- package/dist/bits/date-range-field/components/date-range-field.svelte +2 -2
- package/dist/bits/date-range-field/date-range-field.svelte.d.ts +32 -29
- package/dist/bits/date-range-field/date-range-field.svelte.js +33 -32
- package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -2
- package/dist/bits/date-range-picker/components/date-range-picker.svelte +8 -6
- package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +10 -10
- package/dist/bits/date-range-picker/date-range-picker.svelte.js +6 -5
- package/dist/bits/date-range-picker/types.d.ts +4 -0
- package/dist/bits/dialog/components/dialog-close.svelte +2 -2
- package/dist/bits/dialog/components/dialog-content.svelte +8 -10
- package/dist/bits/dialog/components/dialog-description.svelte +2 -2
- package/dist/bits/dialog/components/dialog-overlay.svelte +3 -6
- package/dist/bits/dialog/components/dialog-title.svelte +2 -2
- package/dist/bits/dialog/components/dialog-trigger.svelte +2 -2
- package/dist/bits/dialog/components/dialog.svelte +9 -3
- package/dist/bits/dialog/dialog.svelte.d.ts +75 -65
- package/dist/bits/dialog/dialog.svelte.js +47 -38
- package/dist/bits/dialog/types.d.ts +4 -0
- package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +3 -3
- package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
- package/dist/bits/label/components/label.svelte +2 -2
- package/dist/bits/label/label.svelte.d.ts +8 -7
- package/dist/bits/label/label.svelte.js +4 -4
- package/dist/bits/link-preview/components/link-preview-content-static.svelte +3 -3
- package/dist/bits/link-preview/components/link-preview-content.svelte +3 -3
- package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -2
- package/dist/bits/link-preview/components/link-preview.svelte +4 -2
- package/dist/bits/link-preview/link-preview.svelte.d.ts +28 -25
- package/dist/bits/link-preview/link-preview.svelte.js +24 -16
- package/dist/bits/link-preview/types.d.ts +4 -0
- package/dist/bits/menu/components/menu-arrow.svelte +2 -2
- package/dist/bits/menu/components/menu-checkbox-group.svelte +2 -2
- package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -2
- package/dist/bits/menu/components/menu-content-static.svelte +3 -3
- package/dist/bits/menu/components/menu-content.svelte +3 -3
- package/dist/bits/menu/components/menu-group-heading.svelte +2 -2
- package/dist/bits/menu/components/menu-group.svelte +2 -2
- package/dist/bits/menu/components/menu-item.svelte +2 -2
- package/dist/bits/menu/components/menu-radio-group.svelte +2 -2
- package/dist/bits/menu/components/menu-radio-item.svelte +2 -2
- package/dist/bits/menu/components/menu-separator.svelte +2 -2
- package/dist/bits/menu/components/menu-sub-content-static.svelte +3 -3
- package/dist/bits/menu/components/menu-sub-content.svelte +3 -3
- package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -2
- package/dist/bits/menu/components/menu-sub.svelte +9 -3
- package/dist/bits/menu/components/menu-trigger.svelte +2 -2
- package/dist/bits/menu/components/menu.svelte +16 -11
- package/dist/bits/menu/menu.svelte.d.ts +136 -119
- package/dist/bits/menu/menu.svelte.js +105 -105
- package/dist/bits/menu/types.d.ts +8 -0
- package/dist/bits/menubar/components/menubar-content-static.svelte +2 -2
- package/dist/bits/menubar/components/menubar-content.svelte +2 -2
- package/dist/bits/menubar/components/menubar-menu.svelte +2 -2
- package/dist/bits/menubar/components/menubar-trigger.svelte +4 -4
- package/dist/bits/menubar/components/menubar.svelte +2 -2
- package/dist/bits/menubar/menubar.svelte.d.ts +37 -36
- package/dist/bits/menubar/menubar.svelte.js +21 -24
- package/dist/bits/meter/components/meter.svelte +2 -2
- package/dist/bits/meter/meter.svelte.d.ts +10 -9
- package/dist/bits/meter/meter.svelte.js +4 -4
- package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -3
- package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -3
- package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu.svelte +2 -2
- package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +116 -109
- package/dist/bits/navigation-menu/navigation-menu.svelte.js +78 -81
- package/dist/bits/pagination/components/pagination-next-button.svelte +2 -2
- package/dist/bits/pagination/components/pagination-page.svelte +2 -2
- package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -2
- package/dist/bits/pagination/components/pagination.svelte +2 -2
- package/dist/bits/pagination/pagination.svelte.d.ts +34 -32
- package/dist/bits/pagination/pagination.svelte.js +15 -15
- package/dist/bits/pin-input/components/pin-input-cell.svelte +2 -2
- package/dist/bits/pin-input/components/pin-input.svelte +2 -2
- package/dist/bits/pin-input/pin-input.svelte.d.ts +22 -21
- package/dist/bits/pin-input/pin-input.svelte.js +9 -9
- package/dist/bits/popover/components/popover-close.svelte +2 -2
- package/dist/bits/popover/components/popover-content-static.svelte +3 -3
- package/dist/bits/popover/components/popover-content.svelte +3 -3
- package/dist/bits/popover/components/popover-trigger.svelte +2 -2
- package/dist/bits/popover/components/popover.svelte +9 -3
- package/dist/bits/popover/popover.svelte.d.ts +36 -31
- package/dist/bits/popover/popover.svelte.js +26 -21
- package/dist/bits/popover/types.d.ts +4 -0
- package/dist/bits/progress/components/progress.svelte +2 -2
- package/dist/bits/progress/progress.svelte.d.ts +10 -9
- package/dist/bits/progress/progress.svelte.js +4 -4
- package/dist/bits/radio-group/components/radio-group-input.svelte +2 -2
- package/dist/bits/radio-group/components/radio-group-item.svelte +2 -2
- package/dist/bits/radio-group/components/radio-group.svelte +2 -2
- package/dist/bits/radio-group/radio-group.svelte.d.ts +21 -19
- package/dist/bits/radio-group/radio-group.svelte.js +15 -15
- package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
- package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
- package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
- package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
- package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
- package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
- package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
- package/dist/bits/rating-group/components/rating-group.svelte +2 -2
- package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
- package/dist/bits/rating-group/rating-group.svelte.js +16 -17
- package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
- package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
- package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
- package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
- package/dist/bits/select/components/select-content-static.svelte +3 -3
- package/dist/bits/select/components/select-content.svelte +3 -3
- package/dist/bits/select/components/select-group-heading.svelte +2 -2
- package/dist/bits/select/components/select-group.svelte +2 -2
- package/dist/bits/select/components/select-hidden-input.svelte +2 -2
- package/dist/bits/select/components/select-item.svelte +2 -2
- package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
- package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
- package/dist/bits/select/components/select-trigger.svelte +2 -2
- package/dist/bits/select/components/select-viewport.svelte +2 -2
- package/dist/bits/select/components/select.svelte +4 -2
- package/dist/bits/select/select.svelte.d.ts +127 -113
- package/dist/bits/select/select.svelte.js +72 -62
- package/dist/bits/select/types.d.ts +4 -0
- package/dist/bits/separator/components/separator.svelte +2 -2
- package/dist/bits/separator/separator.svelte.d.ts +9 -8
- package/dist/bits/separator/separator.svelte.js +4 -4
- package/dist/bits/slider/components/slider-range.svelte +2 -2
- package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
- package/dist/bits/slider/components/slider-thumb.svelte +2 -2
- package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
- package/dist/bits/slider/components/slider-tick.svelte +2 -2
- package/dist/bits/slider/components/slider.svelte +2 -2
- package/dist/bits/slider/slider.svelte.d.ts +82 -73
- package/dist/bits/slider/slider.svelte.js +30 -28
- package/dist/bits/switch/components/switch-input.svelte +2 -2
- package/dist/bits/switch/components/switch-thumb.svelte +2 -2
- package/dist/bits/switch/components/switch.svelte +2 -2
- package/dist/bits/switch/switch.svelte.d.ts +19 -17
- package/dist/bits/switch/switch.svelte.js +13 -13
- package/dist/bits/tabs/components/tabs-content.svelte +2 -2
- package/dist/bits/tabs/components/tabs-list.svelte +2 -2
- package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
- package/dist/bits/tabs/components/tabs.svelte +2 -2
- package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
- package/dist/bits/tabs/tabs.svelte.js +19 -19
- package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
- package/dist/bits/time-field/components/time-field-input.svelte +2 -2
- package/dist/bits/time-field/components/time-field-label.svelte +2 -2
- package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
- package/dist/bits/time-field/components/time-field.svelte +2 -2
- package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
- package/dist/bits/time-field/time-field.svelte.js +37 -42
- package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
- package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
- package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
- package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
- package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
- package/dist/bits/toggle/components/toggle.svelte +2 -2
- package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
- package/dist/bits/toggle/toggle.svelte.js +4 -4
- package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
- package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
- package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
- package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
- package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar.svelte +2 -2
- package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
- package/dist/bits/toolbar/toolbar.svelte.js +32 -30
- package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
- package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
- package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
- package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
- package/dist/bits/tooltip/components/tooltip.svelte +4 -2
- package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
- package/dist/bits/tooltip/tooltip.svelte.js +33 -28
- package/dist/bits/tooltip/types.d.ts +4 -0
- package/dist/bits/utilities/config/bits-config.d.ts +1 -1
- package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
- package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
- package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
- package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
- package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
- package/dist/bits/utilities/focus-scope/focus-scope-manager.d.ts +12 -0
- package/dist/bits/utilities/focus-scope/focus-scope-manager.js +40 -0
- package/dist/bits/utilities/focus-scope/focus-scope.svelte +6 -8
- package/dist/bits/utilities/focus-scope/focus-scope.svelte.d.ts +1 -0
- package/dist/bits/utilities/focus-scope/focus-scope.svelte.js +204 -0
- package/dist/bits/utilities/focus-scope/types.d.ts +2 -6
- package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +3 -3
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
- package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
- package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
- package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
- package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
- package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
- package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
- package/dist/internal/animations-complete.d.ts +12 -0
- package/dist/internal/animations-complete.js +55 -0
- package/dist/internal/arrays.js +20 -36
- package/dist/internal/attrs.d.ts +9 -2
- package/dist/internal/attrs.js +21 -11
- package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
- package/dist/internal/body-scroll-lock.svelte.js +106 -0
- package/dist/internal/data-typeahead.svelte.d.ts +15 -0
- package/dist/internal/data-typeahead.svelte.js +33 -0
- package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
- package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
- package/dist/internal/dom-typeahead.svelte.js +44 -0
- package/dist/internal/dom.d.ts +0 -2
- package/dist/internal/dom.js +0 -15
- package/dist/internal/focus.js +1 -1
- package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
- package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
- package/dist/internal/open-change-complete.d.ts +13 -0
- package/dist/internal/open-change-complete.js +24 -0
- package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
- package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
- package/dist/internal/shared-state.svelte.d.ts +6 -0
- package/dist/internal/shared-state.svelte.js +31 -0
- package/dist/internal/should-enable-focus-trap.d.ts +5 -0
- package/dist/internal/should-enable-focus-trap.js +5 -0
- package/dist/internal/state-machine.d.ts +16 -0
- package/dist/internal/state-machine.js +18 -0
- package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
- package/dist/internal/svelte-resize-observer.svelte.js +25 -0
- package/dist/internal/tabbable.d.ts +0 -1
- package/dist/internal/tabbable.js +0 -11
- package/dist/internal/timeout-fn.d.ts +16 -0
- package/dist/internal/timeout-fn.js +38 -0
- package/dist/internal/types.d.ts +2 -2
- package/package.json +2 -2
- package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.d.ts +0 -14
- package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.js +0 -50
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +0 -49
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +0 -218
- package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
- package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
- package/dist/internal/box.svelte.d.ts +0 -21
- package/dist/internal/box.svelte.js +0 -26
- package/dist/internal/create-event-hook.svelte.d.ts +0 -18
- package/dist/internal/create-event-hook.svelte.js +0 -29
- package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
- package/dist/internal/create-shared-hook.svelte.js +0 -27
- package/dist/internal/should-trap-focus.d.ts +0 -6
- package/dist/internal/should-trap-focus.js +0 -6
- package/dist/internal/sleep.d.ts +0 -1
- package/dist/internal/sleep.js +0 -3
- package/dist/internal/use-after-animations.svelte.d.ts +0 -5
- package/dist/internal/use-after-animations.svelte.js +0 -27
- package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
- package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
- package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
- package/dist/internal/use-data-typeahead.svelte.js +0 -34
- package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
- package/dist/internal/use-dom-typeahead.svelte.js +0 -32
- package/dist/internal/use-form-control.svelte.d.ts +0 -4
- package/dist/internal/use-form-control.svelte.js +0 -16
- package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
- package/dist/internal/use-resize-observer.svelte.js +0 -17
- package/dist/internal/use-state-machine.svelte.d.ts +0 -24
- package/dist/internal/use-state-machine.svelte.js +0 -28
- package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
- package/dist/internal/use-timeout-fn.svelte.js +0 -39
|
@@ -3,17 +3,16 @@ import { Context, watch } from "runed";
|
|
|
3
3
|
import { FIRST_LAST_KEYS, LAST_KEYS, SELECTION_KEYS, SUB_OPEN_KEYS, getCheckedState, isMouseEvent, } from "./utils.js";
|
|
4
4
|
import { focusFirst } from "../../internal/focus.js";
|
|
5
5
|
import { CustomEventDispatcher } from "../../internal/events.js";
|
|
6
|
-
import { useDOMTypeahead } from "../../internal/use-dom-typeahead.svelte.js";
|
|
7
6
|
import { isElement, isElementOrSVGElement, isHTMLElement } from "../../internal/is.js";
|
|
8
|
-
import { useRovingFocus } from "../../internal/use-roving-focus.svelte.js";
|
|
9
7
|
import { kbd } from "../../internal/kbd.js";
|
|
10
8
|
import { createBitsAttrs, getAriaChecked, getAriaDisabled, getAriaExpanded, getAriaOrientation, getDataDisabled, getDataOpenClosed, } from "../../internal/attrs.js";
|
|
11
9
|
import { IsUsingKeyboard } from "../../index.js";
|
|
12
|
-
import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
|
|
13
10
|
import { getTabbableFrom } from "../../internal/tabbable.js";
|
|
14
|
-
import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
|
|
15
11
|
import { isTabbable } from "tabbable";
|
|
16
|
-
import {
|
|
12
|
+
import { DOMTypeahead } from "../../internal/dom-typeahead.svelte.js";
|
|
13
|
+
import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
|
|
14
|
+
import { GraceArea } from "../../internal/grace-area.svelte.js";
|
|
15
|
+
import { OpenChangeComplete } from "../../internal/open-change-complete.js";
|
|
17
16
|
export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
|
|
18
17
|
const MenuRootContext = new Context("Menu.Root");
|
|
19
18
|
const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
|
|
@@ -43,7 +42,11 @@ export const menuAttrs = createBitsAttrs({
|
|
|
43
42
|
"arrow",
|
|
44
43
|
],
|
|
45
44
|
});
|
|
46
|
-
class MenuRootState {
|
|
45
|
+
export class MenuRootState {
|
|
46
|
+
static create(opts) {
|
|
47
|
+
const root = new MenuRootState(opts);
|
|
48
|
+
return MenuRootContext.set(root);
|
|
49
|
+
}
|
|
47
50
|
opts;
|
|
48
51
|
isUsingKeyboard = new IsUsingKeyboard();
|
|
49
52
|
ignoreCloseAutoFocus = $state(false);
|
|
@@ -55,7 +58,10 @@ class MenuRootState {
|
|
|
55
58
|
return menuAttrs.getAttr(part, this.opts.variant.current);
|
|
56
59
|
};
|
|
57
60
|
}
|
|
58
|
-
class MenuMenuState {
|
|
61
|
+
export class MenuMenuState {
|
|
62
|
+
static create(opts, root) {
|
|
63
|
+
return MenuMenuContext.set(new MenuMenuState(opts, root, null));
|
|
64
|
+
}
|
|
59
65
|
opts;
|
|
60
66
|
root;
|
|
61
67
|
parentMenu;
|
|
@@ -66,6 +72,13 @@ class MenuMenuState {
|
|
|
66
72
|
this.opts = opts;
|
|
67
73
|
this.root = root;
|
|
68
74
|
this.parentMenu = parentMenu;
|
|
75
|
+
new OpenChangeComplete({
|
|
76
|
+
ref: box.with(() => this.contentNode),
|
|
77
|
+
open: this.opts.open,
|
|
78
|
+
onComplete: () => {
|
|
79
|
+
this.opts.onOpenChangeComplete.current(this.opts.open.current);
|
|
80
|
+
},
|
|
81
|
+
});
|
|
69
82
|
if (parentMenu) {
|
|
70
83
|
watch(() => parentMenu.opts.open.current, () => {
|
|
71
84
|
if (parentMenu.opts.open.current)
|
|
@@ -84,16 +97,19 @@ class MenuMenuState {
|
|
|
84
97
|
this.opts.open.current = false;
|
|
85
98
|
}
|
|
86
99
|
}
|
|
87
|
-
class MenuContentState {
|
|
100
|
+
export class MenuContentState {
|
|
101
|
+
static create(opts) {
|
|
102
|
+
return MenuContentContext.set(new MenuContentState(opts, MenuMenuContext.get()));
|
|
103
|
+
}
|
|
88
104
|
opts;
|
|
89
105
|
parentMenu;
|
|
106
|
+
rovingFocusGroup;
|
|
107
|
+
domContext;
|
|
90
108
|
search = $state("");
|
|
91
109
|
#timer = 0;
|
|
92
110
|
#handleTypeaheadSearch;
|
|
93
|
-
rovingFocusGroup;
|
|
94
111
|
mounted = $state(false);
|
|
95
112
|
#isSub;
|
|
96
|
-
domContext;
|
|
97
113
|
constructor(opts, parentMenu) {
|
|
98
114
|
this.opts = opts;
|
|
99
115
|
this.parentMenu = parentMenu;
|
|
@@ -104,7 +120,7 @@ class MenuContentState {
|
|
|
104
120
|
this.onblur = this.onblur.bind(this);
|
|
105
121
|
this.onfocus = this.onfocus.bind(this);
|
|
106
122
|
this.handleInteractOutside = this.handleInteractOutside.bind(this);
|
|
107
|
-
|
|
123
|
+
new GraceArea({
|
|
108
124
|
contentNode: () => this.parentMenu.contentNode,
|
|
109
125
|
triggerNode: () => this.parentMenu.triggerNode,
|
|
110
126
|
enabled: () => this.parentMenu.opts.open.current &&
|
|
@@ -116,11 +132,11 @@ class MenuContentState {
|
|
|
116
132
|
this.parentMenu.root.isPointerInTransit = value;
|
|
117
133
|
},
|
|
118
134
|
});
|
|
119
|
-
this.#handleTypeaheadSearch =
|
|
135
|
+
this.#handleTypeaheadSearch = new DOMTypeahead({
|
|
120
136
|
getActiveElement: () => this.domContext.getActiveElement(),
|
|
121
137
|
getWindow: () => this.domContext.getWindow(),
|
|
122
138
|
}).handleTypeaheadSearch;
|
|
123
|
-
this.rovingFocusGroup =
|
|
139
|
+
this.rovingFocusGroup = new RovingFocusGroup({
|
|
124
140
|
rootNode: box.with(() => this.parentMenu.contentNode),
|
|
125
141
|
candidateAttr: this.parentMenu.root.getBitsAttr("item"),
|
|
126
142
|
loop: this.opts.loop,
|
|
@@ -173,9 +189,8 @@ class MenuContentState {
|
|
|
173
189
|
rootMenu = rootMenu.parentMenu;
|
|
174
190
|
}
|
|
175
191
|
// if for some unforeseen reason the root menu has no trigger, we bail
|
|
176
|
-
if (!rootMenu.triggerNode)
|
|
192
|
+
if (!rootMenu.triggerNode)
|
|
177
193
|
return;
|
|
178
|
-
}
|
|
179
194
|
// cancel default tab behavior
|
|
180
195
|
e.preventDefault();
|
|
181
196
|
// find the next/previous tabbable
|
|
@@ -305,11 +320,9 @@ class MenuContentState {
|
|
|
305
320
|
pointerEvents: "auto",
|
|
306
321
|
},
|
|
307
322
|
...attachRef(this.opts.ref, (v) => {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
});
|
|
323
|
+
if (this.parentMenu.contentNode !== v) {
|
|
324
|
+
this.parentMenu.contentNode = v;
|
|
325
|
+
}
|
|
313
326
|
}),
|
|
314
327
|
}));
|
|
315
328
|
popperProps = {
|
|
@@ -383,11 +396,15 @@ class MenuItemSharedState {
|
|
|
383
396
|
...attachRef(this.opts.ref),
|
|
384
397
|
}));
|
|
385
398
|
}
|
|
386
|
-
class MenuItemState {
|
|
399
|
+
export class MenuItemState {
|
|
400
|
+
static create(opts) {
|
|
401
|
+
const item = new MenuItemSharedState(opts, MenuContentContext.get());
|
|
402
|
+
return new MenuItemState(opts, item);
|
|
403
|
+
}
|
|
387
404
|
opts;
|
|
388
405
|
item;
|
|
389
|
-
#isPointerDown = false;
|
|
390
406
|
root;
|
|
407
|
+
#isPointerDown = false;
|
|
391
408
|
constructor(opts, item) {
|
|
392
409
|
this.opts = opts;
|
|
393
410
|
this.item = item;
|
|
@@ -453,7 +470,13 @@ class MenuItemState {
|
|
|
453
470
|
onkeydown: this.onkeydown,
|
|
454
471
|
}));
|
|
455
472
|
}
|
|
456
|
-
class MenuSubTriggerState {
|
|
473
|
+
export class MenuSubTriggerState {
|
|
474
|
+
static create(opts) {
|
|
475
|
+
const content = MenuContentContext.get();
|
|
476
|
+
const item = new MenuItemSharedState(opts, content);
|
|
477
|
+
const submenu = MenuMenuContext.get();
|
|
478
|
+
return new MenuSubTriggerState(opts, item, content, submenu);
|
|
479
|
+
}
|
|
457
480
|
opts;
|
|
458
481
|
item;
|
|
459
482
|
content;
|
|
@@ -546,7 +569,11 @@ class MenuSubTriggerState {
|
|
|
546
569
|
...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
|
|
547
570
|
}, this.item.props));
|
|
548
571
|
}
|
|
549
|
-
class MenuCheckboxItemState {
|
|
572
|
+
export class MenuCheckboxItemState {
|
|
573
|
+
static create(opts, checkboxGroup) {
|
|
574
|
+
const item = new MenuItemState(opts, new MenuItemSharedState(opts, MenuContentContext.get()));
|
|
575
|
+
return new MenuCheckboxItemState(opts, item, checkboxGroup);
|
|
576
|
+
}
|
|
550
577
|
opts;
|
|
551
578
|
item;
|
|
552
579
|
group;
|
|
@@ -591,7 +618,10 @@ class MenuCheckboxItemState {
|
|
|
591
618
|
[this.item.root.getBitsAttr("checkbox-item")]: "",
|
|
592
619
|
}));
|
|
593
620
|
}
|
|
594
|
-
class MenuGroupState {
|
|
621
|
+
export class MenuGroupState {
|
|
622
|
+
static create(opts) {
|
|
623
|
+
return MenuGroupContext.set(new MenuGroupState(opts, MenuRootContext.get()));
|
|
624
|
+
}
|
|
595
625
|
opts;
|
|
596
626
|
root;
|
|
597
627
|
groupHeadingId = $state(undefined);
|
|
@@ -607,7 +637,17 @@ class MenuGroupState {
|
|
|
607
637
|
...attachRef(this.opts.ref),
|
|
608
638
|
}));
|
|
609
639
|
}
|
|
610
|
-
class MenuGroupHeadingState {
|
|
640
|
+
export class MenuGroupHeadingState {
|
|
641
|
+
static create(opts) {
|
|
642
|
+
// Try to get checkbox group first, then radio group, then regular group
|
|
643
|
+
const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
|
|
644
|
+
if (checkboxGroup)
|
|
645
|
+
return new MenuGroupHeadingState(opts, checkboxGroup);
|
|
646
|
+
const radioGroup = MenuRadioGroupContext.getOr(null);
|
|
647
|
+
if (radioGroup)
|
|
648
|
+
return new MenuGroupHeadingState(opts, radioGroup);
|
|
649
|
+
return new MenuGroupHeadingState(opts, MenuGroupContext.get());
|
|
650
|
+
}
|
|
611
651
|
opts;
|
|
612
652
|
group;
|
|
613
653
|
constructor(opts, group) {
|
|
@@ -621,7 +661,10 @@ class MenuGroupHeadingState {
|
|
|
621
661
|
...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
|
|
622
662
|
}));
|
|
623
663
|
}
|
|
624
|
-
class MenuSeparatorState {
|
|
664
|
+
export class MenuSeparatorState {
|
|
665
|
+
static create(opts) {
|
|
666
|
+
return new MenuSeparatorState(opts, MenuRootContext.get());
|
|
667
|
+
}
|
|
625
668
|
opts;
|
|
626
669
|
root;
|
|
627
670
|
constructor(opts, root) {
|
|
@@ -635,7 +678,10 @@ class MenuSeparatorState {
|
|
|
635
678
|
...attachRef(this.opts.ref),
|
|
636
679
|
}));
|
|
637
680
|
}
|
|
638
|
-
class MenuArrowState {
|
|
681
|
+
export class MenuArrowState {
|
|
682
|
+
static create() {
|
|
683
|
+
return new MenuArrowState(MenuRootContext.get());
|
|
684
|
+
}
|
|
639
685
|
root;
|
|
640
686
|
constructor(root) {
|
|
641
687
|
this.root = root;
|
|
@@ -644,7 +690,10 @@ class MenuArrowState {
|
|
|
644
690
|
[this.root.getBitsAttr("arrow")]: "",
|
|
645
691
|
}));
|
|
646
692
|
}
|
|
647
|
-
class MenuRadioGroupState {
|
|
693
|
+
export class MenuRadioGroupState {
|
|
694
|
+
static create(opts) {
|
|
695
|
+
return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(opts, MenuContentContext.get())));
|
|
696
|
+
}
|
|
648
697
|
opts;
|
|
649
698
|
content;
|
|
650
699
|
groupHeadingId = $state(null);
|
|
@@ -665,7 +714,13 @@ class MenuRadioGroupState {
|
|
|
665
714
|
...attachRef(this.opts.ref),
|
|
666
715
|
}));
|
|
667
716
|
}
|
|
668
|
-
class MenuRadioItemState {
|
|
717
|
+
export class MenuRadioItemState {
|
|
718
|
+
static create(opts) {
|
|
719
|
+
const radioGroup = MenuRadioGroupContext.get();
|
|
720
|
+
const sharedItem = new MenuItemSharedState(opts, radioGroup.content);
|
|
721
|
+
const item = new MenuItemState(opts, sharedItem);
|
|
722
|
+
return new MenuRadioItemState(opts, item, radioGroup);
|
|
723
|
+
}
|
|
669
724
|
opts;
|
|
670
725
|
item;
|
|
671
726
|
group;
|
|
@@ -687,7 +742,10 @@ class MenuRadioItemState {
|
|
|
687
742
|
...attachRef(this.opts.ref),
|
|
688
743
|
}));
|
|
689
744
|
}
|
|
690
|
-
class DropdownMenuTriggerState {
|
|
745
|
+
export class DropdownMenuTriggerState {
|
|
746
|
+
static create(opts) {
|
|
747
|
+
return new DropdownMenuTriggerState(opts, MenuMenuContext.get());
|
|
748
|
+
}
|
|
691
749
|
opts;
|
|
692
750
|
parentMenu;
|
|
693
751
|
constructor(opts, parentMenu) {
|
|
@@ -749,7 +807,10 @@ class DropdownMenuTriggerState {
|
|
|
749
807
|
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
750
808
|
}));
|
|
751
809
|
}
|
|
752
|
-
class ContextMenuTriggerState {
|
|
810
|
+
export class ContextMenuTriggerState {
|
|
811
|
+
static create(opts) {
|
|
812
|
+
return new ContextMenuTriggerState(opts, MenuMenuContext.get());
|
|
813
|
+
}
|
|
753
814
|
opts;
|
|
754
815
|
parentMenu;
|
|
755
816
|
#point = $state({ x: 0, y: 0 });
|
|
@@ -770,8 +831,8 @@ class ContextMenuTriggerState {
|
|
|
770
831
|
getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
|
|
771
832
|
};
|
|
772
833
|
});
|
|
773
|
-
|
|
774
|
-
if (
|
|
834
|
+
watch(() => this.opts.disabled.current, (isDisabled) => {
|
|
835
|
+
if (isDisabled) {
|
|
775
836
|
this.#clearLongPressTimer();
|
|
776
837
|
}
|
|
777
838
|
});
|
|
@@ -831,11 +892,14 @@ class ContextMenuTriggerState {
|
|
|
831
892
|
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
832
893
|
}));
|
|
833
894
|
}
|
|
834
|
-
class MenuCheckboxGroupState {
|
|
895
|
+
export class MenuCheckboxGroupState {
|
|
896
|
+
static create(opts) {
|
|
897
|
+
return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(opts, MenuContentContext.get()));
|
|
898
|
+
}
|
|
835
899
|
opts;
|
|
836
900
|
content;
|
|
837
|
-
groupHeadingId = $state(null);
|
|
838
901
|
root;
|
|
902
|
+
groupHeadingId = $state(null);
|
|
839
903
|
constructor(opts, content) {
|
|
840
904
|
this.opts = opts;
|
|
841
905
|
this.content = content;
|
|
@@ -868,73 +932,9 @@ class MenuCheckboxGroupState {
|
|
|
868
932
|
...attachRef(this.opts.ref),
|
|
869
933
|
}));
|
|
870
934
|
}
|
|
871
|
-
export
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
},
|
|
877
|
-
});
|
|
878
|
-
return MenuRootContext.set(root);
|
|
879
|
-
}
|
|
880
|
-
export function useMenuMenu(root, props) {
|
|
881
|
-
return MenuMenuContext.set(new MenuMenuState(props, root, null));
|
|
882
|
-
}
|
|
883
|
-
export function useMenuSubmenu(props) {
|
|
884
|
-
const menu = MenuMenuContext.get();
|
|
885
|
-
return MenuMenuContext.set(new MenuMenuState(props, menu.root, menu));
|
|
886
|
-
}
|
|
887
|
-
export function useMenuSubTrigger(props) {
|
|
888
|
-
const content = MenuContentContext.get();
|
|
889
|
-
const item = new MenuItemSharedState(props, content);
|
|
890
|
-
const submenu = MenuMenuContext.get();
|
|
891
|
-
return new MenuSubTriggerState(props, item, content, submenu);
|
|
892
|
-
}
|
|
893
|
-
export function useMenuDropdownTrigger(props) {
|
|
894
|
-
return new DropdownMenuTriggerState(props, MenuMenuContext.get());
|
|
895
|
-
}
|
|
896
|
-
export function useMenuContextTrigger(props) {
|
|
897
|
-
return new ContextMenuTriggerState(props, MenuMenuContext.get());
|
|
898
|
-
}
|
|
899
|
-
export function useMenuContent(props) {
|
|
900
|
-
return MenuContentContext.set(new MenuContentState(props, MenuMenuContext.get()));
|
|
901
|
-
}
|
|
902
|
-
export function useMenuItem(props) {
|
|
903
|
-
const item = new MenuItemSharedState(props, MenuContentContext.get());
|
|
904
|
-
return new MenuItemState(props, item);
|
|
905
|
-
}
|
|
906
|
-
export function useMenuCheckboxItem(props, checkboxGroup) {
|
|
907
|
-
const item = new MenuItemState(props, new MenuItemSharedState(props, MenuContentContext.get()));
|
|
908
|
-
return new MenuCheckboxItemState(props, item, checkboxGroup);
|
|
909
|
-
}
|
|
910
|
-
export function useMenuRadioGroup(props) {
|
|
911
|
-
return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(props, MenuContentContext.get())));
|
|
912
|
-
}
|
|
913
|
-
export function useMenuRadioItem(props) {
|
|
914
|
-
const radioGroup = MenuRadioGroupContext.get();
|
|
915
|
-
const sharedItem = new MenuItemSharedState(props, radioGroup.content);
|
|
916
|
-
const item = new MenuItemState(props, sharedItem);
|
|
917
|
-
return new MenuRadioItemState(props, item, radioGroup);
|
|
918
|
-
}
|
|
919
|
-
export function useMenuGroup(props) {
|
|
920
|
-
return MenuGroupContext.set(new MenuGroupState(props, MenuRootContext.get()));
|
|
921
|
-
}
|
|
922
|
-
export function useMenuGroupHeading(props) {
|
|
923
|
-
// Try to get checkbox group first, then radio group, then regular group
|
|
924
|
-
const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
|
|
925
|
-
if (checkboxGroup)
|
|
926
|
-
return new MenuGroupHeadingState(props, checkboxGroup);
|
|
927
|
-
const radioGroup = MenuRadioGroupContext.getOr(null);
|
|
928
|
-
if (radioGroup)
|
|
929
|
-
return new MenuGroupHeadingState(props, radioGroup);
|
|
930
|
-
return new MenuGroupHeadingState(props, MenuGroupContext.get());
|
|
931
|
-
}
|
|
932
|
-
export function useMenuSeparator(props) {
|
|
933
|
-
return new MenuSeparatorState(props, MenuRootContext.get());
|
|
934
|
-
}
|
|
935
|
-
export function useMenuArrow() {
|
|
936
|
-
return new MenuArrowState(MenuRootContext.get());
|
|
937
|
-
}
|
|
938
|
-
export function useMenuCheckboxGroup(props) {
|
|
939
|
-
return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(props, MenuContentContext.get()));
|
|
935
|
+
export class MenuSubmenuState {
|
|
936
|
+
static create(opts) {
|
|
937
|
+
const menu = MenuMenuContext.get();
|
|
938
|
+
return MenuMenuContext.set(new MenuMenuState(opts, menu.root, menu));
|
|
939
|
+
}
|
|
940
940
|
}
|
|
@@ -15,6 +15,10 @@ export type MenuRootPropsWithoutHTML = WithChildren<{
|
|
|
15
15
|
* A callback that is called when the menu is opened or closed.
|
|
16
16
|
*/
|
|
17
17
|
onOpenChange?: OnChangeFn<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* A callback that is called when the menu is opened or closed.
|
|
20
|
+
*/
|
|
21
|
+
onOpenChangeComplete?: OnChangeFn<boolean>;
|
|
18
22
|
/**
|
|
19
23
|
* The direction of the site.
|
|
20
24
|
*
|
|
@@ -135,6 +139,10 @@ export type MenuSubPropsWithoutHTML = WithChildren<{
|
|
|
135
139
|
* A callback that is called when the menu is opened or closed.
|
|
136
140
|
*/
|
|
137
141
|
onOpenChange?: OnChangeFn<boolean>;
|
|
142
|
+
/**
|
|
143
|
+
* A callback that is called when the menu finishes opening/closing animations.
|
|
144
|
+
*/
|
|
145
|
+
onOpenChangeComplete?: OnChangeFn<boolean>;
|
|
138
146
|
}>;
|
|
139
147
|
export type MenuSubProps = MenuSubPropsWithoutHTML;
|
|
140
148
|
export type MenuSubContentPropsWithoutHTML = Expand<WithChildNoChildrenSnippetProps<Omit<PopperLayerProps, "content" | "preventScroll"> & _SharedMenuContentProps, FloatingContentSnippetProps>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarContentStaticProps } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { MenubarContentState } from "../menubar.svelte.js";
|
|
5
5
|
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import MenuContentStatic from "../../menu/components/menu-content-static.svelte";
|
|
7
7
|
import { noop } from "../../../internal/noop.js";
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
...restProps
|
|
20
20
|
}: MenubarContentStaticProps = $props();
|
|
21
21
|
|
|
22
|
-
const contentState =
|
|
22
|
+
const contentState = MenubarContentState.create({
|
|
23
23
|
id: box.with(() => id),
|
|
24
24
|
interactOutsideBehavior: box.with(() => interactOutsideBehavior),
|
|
25
25
|
ref: box.with(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarContentProps } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { MenubarContentState } from "../menubar.svelte.js";
|
|
5
5
|
import MenuContent from "../../menu/components/menu-content.svelte";
|
|
6
6
|
import { createId } from "../../../internal/create-id.js";
|
|
7
7
|
import { noop } from "../../../internal/noop.js";
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
...restProps
|
|
20
20
|
}: MenubarContentProps = $props();
|
|
21
21
|
|
|
22
|
-
const contentState =
|
|
22
|
+
const contentState = MenubarContentState.create({
|
|
23
23
|
id: box.with(() => id),
|
|
24
24
|
interactOutsideBehavior: box.with(() => interactOutsideBehavior),
|
|
25
25
|
ref: box.with(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { box } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarMenuProps } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { MenubarMenuState } from "../menubar.svelte.js";
|
|
5
5
|
import Menu from "../../menu/components/menu.svelte";
|
|
6
6
|
import { noop } from "../../../internal/noop.js";
|
|
7
7
|
import { createId } from "../../../internal/create-id.js";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
let { value = createId(uid), onOpenChange = noop, ...restProps }: MenubarMenuProps = $props();
|
|
12
12
|
|
|
13
|
-
const menuState =
|
|
13
|
+
const menuState = MenubarMenuState.create({
|
|
14
14
|
value: box.with(() => value),
|
|
15
15
|
onOpenChange: box.with(() => onOpenChange),
|
|
16
16
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { attachRef, box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarTriggerProps } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { MenubarTriggerState } from "../menubar.svelte.js";
|
|
5
5
|
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
|
|
7
|
-
import {
|
|
7
|
+
import { DropdownMenuTriggerState } from "../../menu/menu.svelte.js";
|
|
8
8
|
|
|
9
9
|
const uid = $props.id();
|
|
10
10
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
...restProps
|
|
18
18
|
}: MenubarTriggerProps = $props();
|
|
19
19
|
|
|
20
|
-
const triggerState =
|
|
20
|
+
const triggerState = MenubarTriggerState.create({
|
|
21
21
|
id: box.with(() => id),
|
|
22
22
|
disabled: box.with(() => disabled ?? false),
|
|
23
23
|
ref: box.with(
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
),
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
const dropdownTriggerState =
|
|
29
|
+
const dropdownTriggerState = DropdownMenuTriggerState.create(triggerState.opts);
|
|
30
30
|
|
|
31
31
|
const mergedProps = $derived(
|
|
32
32
|
mergeProps(restProps, triggerState.props, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarRootProps } from "../types.js";
|
|
4
|
-
import {
|
|
4
|
+
import { MenubarRootState } from "../menubar.svelte.js";
|
|
5
5
|
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import { noop } from "../../../internal/noop.js";
|
|
7
7
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
...restProps
|
|
20
20
|
}: MenubarRootProps = $props();
|
|
21
21
|
|
|
22
|
-
const rootState =
|
|
22
|
+
const rootState = MenubarRootState.create({
|
|
23
23
|
id: box.with(() => id),
|
|
24
24
|
value: box.with(
|
|
25
25
|
() => value,
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { type ReadableBox } from "svelte-toolbelt";
|
|
1
|
+
import { type ReadableBox, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
|
|
2
2
|
import type { InteractOutsideBehaviorType } from "../utilities/dismissible-layer/types.js";
|
|
3
|
-
import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
|
|
4
|
-
import { type UseRovingFocusReturn } from "../../internal/use-roving-focus.svelte.js";
|
|
5
3
|
import type { Direction } from "../../shared/index.js";
|
|
6
|
-
import type { OnChangeFn,
|
|
7
|
-
import { type FocusScopeContextValue } from "../utilities/focus-scope/use-focus-scope.svelte.js";
|
|
4
|
+
import type { OnChangeFn, WithRefOpts } from "../../internal/types.js";
|
|
8
5
|
import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
|
|
9
|
-
|
|
6
|
+
import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
|
|
7
|
+
interface MenubarRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
10
8
|
dir: Direction;
|
|
11
9
|
loop: boolean;
|
|
12
|
-
}
|
|
10
|
+
}>, WritableBoxedValues<{
|
|
13
11
|
value: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
}> {
|
|
13
|
+
}
|
|
14
|
+
export declare class MenubarRootState {
|
|
15
|
+
static create(opts: MenubarRootStateOpts): MenubarRootState;
|
|
16
|
+
readonly opts: MenubarRootStateOpts;
|
|
17
|
+
readonly rovingFocusGroup: RovingFocusGroup;
|
|
18
18
|
wasOpenedByKeyboard: boolean;
|
|
19
19
|
triggerIds: string[];
|
|
20
20
|
valueToChangeHandler: Map<string, ReadableBox<OnChangeFn<boolean>>>;
|
|
21
|
-
constructor(opts:
|
|
21
|
+
constructor(opts: MenubarRootStateOpts);
|
|
22
22
|
/**
|
|
23
23
|
* @param id - the id of the trigger to register
|
|
24
24
|
* @returns - a function to de-register the trigger
|
|
@@ -35,17 +35,19 @@ declare class MenubarRootState {
|
|
|
35
35
|
onMenuOpen: (id: string, triggerId: string) => void;
|
|
36
36
|
onMenuClose: () => void;
|
|
37
37
|
onMenuToggle: (id: string) => void;
|
|
38
|
-
props: {
|
|
38
|
+
readonly props: {
|
|
39
39
|
readonly id: string;
|
|
40
40
|
readonly role: "menubar";
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
interface MenubarMenuStateOpts extends ReadableBoxedValues<{
|
|
44
44
|
value: string;
|
|
45
45
|
onOpenChange: OnChangeFn<boolean>;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
}> {
|
|
47
|
+
}
|
|
48
|
+
export declare class MenubarMenuState {
|
|
49
|
+
static create(opts: MenubarMenuStateOpts): MenubarMenuState;
|
|
50
|
+
readonly opts: MenubarMenuStateOpts;
|
|
49
51
|
readonly root: MenubarRootState;
|
|
50
52
|
open: boolean;
|
|
51
53
|
wasOpenedByKeyboard: boolean;
|
|
@@ -53,27 +55,29 @@ declare class MenubarMenuState {
|
|
|
53
55
|
triggerId: string | undefined;
|
|
54
56
|
contentId: string | undefined;
|
|
55
57
|
contentNode: HTMLElement | null;
|
|
56
|
-
constructor(opts:
|
|
58
|
+
constructor(opts: MenubarMenuStateOpts, root: MenubarRootState);
|
|
57
59
|
getTriggerNode(): HTMLElement | null;
|
|
58
60
|
toggleMenu(): void;
|
|
59
61
|
openMenu(): void;
|
|
60
62
|
}
|
|
61
|
-
|
|
63
|
+
interface MenubarTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
62
64
|
disabled: boolean;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
+
}> {
|
|
66
|
+
}
|
|
67
|
+
export declare class MenubarTriggerState {
|
|
65
68
|
#private;
|
|
66
|
-
|
|
69
|
+
static create(opts: MenubarTriggerStateOpts): MenubarTriggerState;
|
|
70
|
+
readonly opts: MenubarTriggerStateOpts;
|
|
67
71
|
readonly menu: MenubarMenuState;
|
|
68
|
-
root: MenubarRootState;
|
|
72
|
+
readonly root: MenubarRootState;
|
|
69
73
|
isFocused: boolean;
|
|
70
|
-
constructor(opts:
|
|
74
|
+
constructor(opts: MenubarTriggerStateOpts, menu: MenubarMenuState);
|
|
71
75
|
onpointerdown: PointerEventHandler<HTMLElement>;
|
|
72
76
|
onpointerenter: PointerEventHandler<HTMLElement>;
|
|
73
77
|
onkeydown: KeyboardEventHandler<HTMLElement>;
|
|
74
78
|
onfocus: FocusEventHandler<HTMLElement>;
|
|
75
79
|
onblur: FocusEventHandler<HTMLElement>;
|
|
76
|
-
props: {
|
|
80
|
+
readonly props: {
|
|
77
81
|
readonly type: "button";
|
|
78
82
|
readonly role: "menuitem";
|
|
79
83
|
readonly id: string;
|
|
@@ -93,19 +97,20 @@ declare class MenubarTriggerState {
|
|
|
93
97
|
readonly onblur: FocusEventHandler<HTMLElement>;
|
|
94
98
|
};
|
|
95
99
|
}
|
|
96
|
-
|
|
100
|
+
interface MenubarContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
97
101
|
interactOutsideBehavior: InteractOutsideBehaviorType;
|
|
98
102
|
onOpenAutoFocus: (e: Event) => void;
|
|
99
103
|
onCloseAutoFocus: (e: Event) => void;
|
|
100
104
|
onFocusOutside: (e: FocusEvent) => void;
|
|
101
105
|
onInteractOutside: (e: PointerEvent) => void;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
}> {
|
|
107
|
+
}
|
|
108
|
+
export declare class MenubarContentState {
|
|
109
|
+
static create(opts: MenubarContentStateOpts): MenubarContentState;
|
|
110
|
+
readonly opts: MenubarContentStateOpts;
|
|
105
111
|
readonly menu: MenubarMenuState;
|
|
106
|
-
root: MenubarRootState;
|
|
107
|
-
|
|
108
|
-
constructor(opts: MenubarContentStateProps, menu: MenubarMenuState);
|
|
112
|
+
readonly root: MenubarRootState;
|
|
113
|
+
constructor(opts: MenubarContentStateOpts, menu: MenubarMenuState);
|
|
109
114
|
onCloseAutoFocus: (e: Event) => void;
|
|
110
115
|
onFocusOutside: (e: FocusEvent) => void;
|
|
111
116
|
onInteractOutside: (e: PointerEvent) => void;
|
|
@@ -127,8 +132,4 @@ declare class MenubarContentState {
|
|
|
127
132
|
onOpenAutoFocus: (e: Event) => void;
|
|
128
133
|
};
|
|
129
134
|
}
|
|
130
|
-
export declare function useMenubarRoot(props: MenubarRootStateProps): MenubarRootState;
|
|
131
|
-
export declare function useMenubarMenu(props: MenubarMenuStateProps): MenubarMenuState;
|
|
132
|
-
export declare function useMenubarTrigger(props: MenubarTriggerStateProps): MenubarTriggerState;
|
|
133
|
-
export declare function useMenubarContent(props: MenubarContentStateProps): MenubarContentState;
|
|
134
135
|
export {};
|