bits-ui 2.6.2 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +3 -3
- 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 +2 -2
- package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -2
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +106 -96
- 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 -34
- package/dist/bits/menubar/menubar.svelte.js +21 -21
- 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 +2 -2
- 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 +2 -2
- 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 +4 -2
- package/dist/bits/radio-group/radio-group.svelte.d.ts +26 -19
- package/dist/bits/radio-group/radio-group.svelte.js +26 -19
- package/dist/bits/radio-group/types.d.ts +13 -6
- 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 +74 -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/use-focus-scope.svelte.d.ts +1 -1
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
- 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 +1 -1
- 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/{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-trap-focus.js +1 -2
- 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 +1 -1
- 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/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,18 @@ 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
11
|
import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
|
|
15
12
|
import { isTabbable } from "tabbable";
|
|
16
13
|
import { untrack } from "svelte";
|
|
14
|
+
import { DOMTypeahead } from "../../internal/dom-typeahead.svelte.js";
|
|
15
|
+
import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
|
|
16
|
+
import { GraceArea } from "../../internal/grace-area.svelte.js";
|
|
17
|
+
import { OpenChangeComplete } from "../../internal/open-change-complete.js";
|
|
17
18
|
export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
|
|
18
19
|
const MenuRootContext = new Context("Menu.Root");
|
|
19
20
|
const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
|
|
@@ -43,7 +44,16 @@ export const menuAttrs = createBitsAttrs({
|
|
|
43
44
|
"arrow",
|
|
44
45
|
],
|
|
45
46
|
});
|
|
46
|
-
class MenuRootState {
|
|
47
|
+
export class MenuRootState {
|
|
48
|
+
static create(opts) {
|
|
49
|
+
const root = new MenuRootState(opts);
|
|
50
|
+
FocusScopeContext.set({
|
|
51
|
+
get ignoreCloseAutoFocus() {
|
|
52
|
+
return root.ignoreCloseAutoFocus;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
return MenuRootContext.set(root);
|
|
56
|
+
}
|
|
47
57
|
opts;
|
|
48
58
|
isUsingKeyboard = new IsUsingKeyboard();
|
|
49
59
|
ignoreCloseAutoFocus = $state(false);
|
|
@@ -55,7 +65,10 @@ class MenuRootState {
|
|
|
55
65
|
return menuAttrs.getAttr(part, this.opts.variant.current);
|
|
56
66
|
};
|
|
57
67
|
}
|
|
58
|
-
class MenuMenuState {
|
|
68
|
+
export class MenuMenuState {
|
|
69
|
+
static create(opts, root) {
|
|
70
|
+
return MenuMenuContext.set(new MenuMenuState(opts, root, null));
|
|
71
|
+
}
|
|
59
72
|
opts;
|
|
60
73
|
root;
|
|
61
74
|
parentMenu;
|
|
@@ -66,6 +79,13 @@ class MenuMenuState {
|
|
|
66
79
|
this.opts = opts;
|
|
67
80
|
this.root = root;
|
|
68
81
|
this.parentMenu = parentMenu;
|
|
82
|
+
new OpenChangeComplete({
|
|
83
|
+
ref: box.with(() => this.contentNode),
|
|
84
|
+
open: this.opts.open,
|
|
85
|
+
onComplete: () => {
|
|
86
|
+
this.opts.onOpenChangeComplete.current(this.opts.open.current);
|
|
87
|
+
},
|
|
88
|
+
});
|
|
69
89
|
if (parentMenu) {
|
|
70
90
|
watch(() => parentMenu.opts.open.current, () => {
|
|
71
91
|
if (parentMenu.opts.open.current)
|
|
@@ -84,16 +104,19 @@ class MenuMenuState {
|
|
|
84
104
|
this.opts.open.current = false;
|
|
85
105
|
}
|
|
86
106
|
}
|
|
87
|
-
class MenuContentState {
|
|
107
|
+
export class MenuContentState {
|
|
108
|
+
static create(opts) {
|
|
109
|
+
return MenuContentContext.set(new MenuContentState(opts, MenuMenuContext.get()));
|
|
110
|
+
}
|
|
88
111
|
opts;
|
|
89
112
|
parentMenu;
|
|
113
|
+
rovingFocusGroup;
|
|
114
|
+
domContext;
|
|
90
115
|
search = $state("");
|
|
91
116
|
#timer = 0;
|
|
92
117
|
#handleTypeaheadSearch;
|
|
93
|
-
rovingFocusGroup;
|
|
94
118
|
mounted = $state(false);
|
|
95
119
|
#isSub;
|
|
96
|
-
domContext;
|
|
97
120
|
constructor(opts, parentMenu) {
|
|
98
121
|
this.opts = opts;
|
|
99
122
|
this.parentMenu = parentMenu;
|
|
@@ -104,7 +127,7 @@ class MenuContentState {
|
|
|
104
127
|
this.onblur = this.onblur.bind(this);
|
|
105
128
|
this.onfocus = this.onfocus.bind(this);
|
|
106
129
|
this.handleInteractOutside = this.handleInteractOutside.bind(this);
|
|
107
|
-
|
|
130
|
+
new GraceArea({
|
|
108
131
|
contentNode: () => this.parentMenu.contentNode,
|
|
109
132
|
triggerNode: () => this.parentMenu.triggerNode,
|
|
110
133
|
enabled: () => this.parentMenu.opts.open.current &&
|
|
@@ -116,11 +139,11 @@ class MenuContentState {
|
|
|
116
139
|
this.parentMenu.root.isPointerInTransit = value;
|
|
117
140
|
},
|
|
118
141
|
});
|
|
119
|
-
this.#handleTypeaheadSearch =
|
|
142
|
+
this.#handleTypeaheadSearch = new DOMTypeahead({
|
|
120
143
|
getActiveElement: () => this.domContext.getActiveElement(),
|
|
121
144
|
getWindow: () => this.domContext.getWindow(),
|
|
122
145
|
}).handleTypeaheadSearch;
|
|
123
|
-
this.rovingFocusGroup =
|
|
146
|
+
this.rovingFocusGroup = new RovingFocusGroup({
|
|
124
147
|
rootNode: box.with(() => this.parentMenu.contentNode),
|
|
125
148
|
candidateAttr: this.parentMenu.root.getBitsAttr("item"),
|
|
126
149
|
loop: this.opts.loop,
|
|
@@ -383,11 +406,15 @@ class MenuItemSharedState {
|
|
|
383
406
|
...attachRef(this.opts.ref),
|
|
384
407
|
}));
|
|
385
408
|
}
|
|
386
|
-
class MenuItemState {
|
|
409
|
+
export class MenuItemState {
|
|
410
|
+
static create(opts) {
|
|
411
|
+
const item = new MenuItemSharedState(opts, MenuContentContext.get());
|
|
412
|
+
return new MenuItemState(opts, item);
|
|
413
|
+
}
|
|
387
414
|
opts;
|
|
388
415
|
item;
|
|
389
|
-
#isPointerDown = false;
|
|
390
416
|
root;
|
|
417
|
+
#isPointerDown = false;
|
|
391
418
|
constructor(opts, item) {
|
|
392
419
|
this.opts = opts;
|
|
393
420
|
this.item = item;
|
|
@@ -453,7 +480,13 @@ class MenuItemState {
|
|
|
453
480
|
onkeydown: this.onkeydown,
|
|
454
481
|
}));
|
|
455
482
|
}
|
|
456
|
-
class MenuSubTriggerState {
|
|
483
|
+
export class MenuSubTriggerState {
|
|
484
|
+
static create(opts) {
|
|
485
|
+
const content = MenuContentContext.get();
|
|
486
|
+
const item = new MenuItemSharedState(opts, content);
|
|
487
|
+
const submenu = MenuMenuContext.get();
|
|
488
|
+
return new MenuSubTriggerState(opts, item, content, submenu);
|
|
489
|
+
}
|
|
457
490
|
opts;
|
|
458
491
|
item;
|
|
459
492
|
content;
|
|
@@ -546,7 +579,11 @@ class MenuSubTriggerState {
|
|
|
546
579
|
...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
|
|
547
580
|
}, this.item.props));
|
|
548
581
|
}
|
|
549
|
-
class MenuCheckboxItemState {
|
|
582
|
+
export class MenuCheckboxItemState {
|
|
583
|
+
static create(opts, checkboxGroup) {
|
|
584
|
+
const item = new MenuItemState(opts, new MenuItemSharedState(opts, MenuContentContext.get()));
|
|
585
|
+
return new MenuCheckboxItemState(opts, item, checkboxGroup);
|
|
586
|
+
}
|
|
550
587
|
opts;
|
|
551
588
|
item;
|
|
552
589
|
group;
|
|
@@ -591,7 +628,10 @@ class MenuCheckboxItemState {
|
|
|
591
628
|
[this.item.root.getBitsAttr("checkbox-item")]: "",
|
|
592
629
|
}));
|
|
593
630
|
}
|
|
594
|
-
class MenuGroupState {
|
|
631
|
+
export class MenuGroupState {
|
|
632
|
+
static create(opts) {
|
|
633
|
+
return MenuGroupContext.set(new MenuGroupState(opts, MenuRootContext.get()));
|
|
634
|
+
}
|
|
595
635
|
opts;
|
|
596
636
|
root;
|
|
597
637
|
groupHeadingId = $state(undefined);
|
|
@@ -607,7 +647,17 @@ class MenuGroupState {
|
|
|
607
647
|
...attachRef(this.opts.ref),
|
|
608
648
|
}));
|
|
609
649
|
}
|
|
610
|
-
class MenuGroupHeadingState {
|
|
650
|
+
export class MenuGroupHeadingState {
|
|
651
|
+
static create(opts) {
|
|
652
|
+
// Try to get checkbox group first, then radio group, then regular group
|
|
653
|
+
const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
|
|
654
|
+
if (checkboxGroup)
|
|
655
|
+
return new MenuGroupHeadingState(opts, checkboxGroup);
|
|
656
|
+
const radioGroup = MenuRadioGroupContext.getOr(null);
|
|
657
|
+
if (radioGroup)
|
|
658
|
+
return new MenuGroupHeadingState(opts, radioGroup);
|
|
659
|
+
return new MenuGroupHeadingState(opts, MenuGroupContext.get());
|
|
660
|
+
}
|
|
611
661
|
opts;
|
|
612
662
|
group;
|
|
613
663
|
constructor(opts, group) {
|
|
@@ -621,7 +671,10 @@ class MenuGroupHeadingState {
|
|
|
621
671
|
...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
|
|
622
672
|
}));
|
|
623
673
|
}
|
|
624
|
-
class MenuSeparatorState {
|
|
674
|
+
export class MenuSeparatorState {
|
|
675
|
+
static create(opts) {
|
|
676
|
+
return new MenuSeparatorState(opts, MenuRootContext.get());
|
|
677
|
+
}
|
|
625
678
|
opts;
|
|
626
679
|
root;
|
|
627
680
|
constructor(opts, root) {
|
|
@@ -635,7 +688,10 @@ class MenuSeparatorState {
|
|
|
635
688
|
...attachRef(this.opts.ref),
|
|
636
689
|
}));
|
|
637
690
|
}
|
|
638
|
-
class MenuArrowState {
|
|
691
|
+
export class MenuArrowState {
|
|
692
|
+
static create() {
|
|
693
|
+
return new MenuArrowState(MenuRootContext.get());
|
|
694
|
+
}
|
|
639
695
|
root;
|
|
640
696
|
constructor(root) {
|
|
641
697
|
this.root = root;
|
|
@@ -644,7 +700,10 @@ class MenuArrowState {
|
|
|
644
700
|
[this.root.getBitsAttr("arrow")]: "",
|
|
645
701
|
}));
|
|
646
702
|
}
|
|
647
|
-
class MenuRadioGroupState {
|
|
703
|
+
export class MenuRadioGroupState {
|
|
704
|
+
static create(opts) {
|
|
705
|
+
return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(opts, MenuContentContext.get())));
|
|
706
|
+
}
|
|
648
707
|
opts;
|
|
649
708
|
content;
|
|
650
709
|
groupHeadingId = $state(null);
|
|
@@ -665,7 +724,13 @@ class MenuRadioGroupState {
|
|
|
665
724
|
...attachRef(this.opts.ref),
|
|
666
725
|
}));
|
|
667
726
|
}
|
|
668
|
-
class MenuRadioItemState {
|
|
727
|
+
export class MenuRadioItemState {
|
|
728
|
+
static create(opts) {
|
|
729
|
+
const radioGroup = MenuRadioGroupContext.get();
|
|
730
|
+
const sharedItem = new MenuItemSharedState(opts, radioGroup.content);
|
|
731
|
+
const item = new MenuItemState(opts, sharedItem);
|
|
732
|
+
return new MenuRadioItemState(opts, item, radioGroup);
|
|
733
|
+
}
|
|
669
734
|
opts;
|
|
670
735
|
item;
|
|
671
736
|
group;
|
|
@@ -687,7 +752,10 @@ class MenuRadioItemState {
|
|
|
687
752
|
...attachRef(this.opts.ref),
|
|
688
753
|
}));
|
|
689
754
|
}
|
|
690
|
-
class DropdownMenuTriggerState {
|
|
755
|
+
export class DropdownMenuTriggerState {
|
|
756
|
+
static create(opts) {
|
|
757
|
+
return new DropdownMenuTriggerState(opts, MenuMenuContext.get());
|
|
758
|
+
}
|
|
691
759
|
opts;
|
|
692
760
|
parentMenu;
|
|
693
761
|
constructor(opts, parentMenu) {
|
|
@@ -749,7 +817,10 @@ class DropdownMenuTriggerState {
|
|
|
749
817
|
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
750
818
|
}));
|
|
751
819
|
}
|
|
752
|
-
class ContextMenuTriggerState {
|
|
820
|
+
export class ContextMenuTriggerState {
|
|
821
|
+
static create(opts) {
|
|
822
|
+
return new ContextMenuTriggerState(opts, MenuMenuContext.get());
|
|
823
|
+
}
|
|
753
824
|
opts;
|
|
754
825
|
parentMenu;
|
|
755
826
|
#point = $state({ x: 0, y: 0 });
|
|
@@ -770,8 +841,8 @@ class ContextMenuTriggerState {
|
|
|
770
841
|
getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
|
|
771
842
|
};
|
|
772
843
|
});
|
|
773
|
-
|
|
774
|
-
if (
|
|
844
|
+
watch(() => this.opts.disabled.current, (isDisabled) => {
|
|
845
|
+
if (isDisabled) {
|
|
775
846
|
this.#clearLongPressTimer();
|
|
776
847
|
}
|
|
777
848
|
});
|
|
@@ -831,11 +902,14 @@ class ContextMenuTriggerState {
|
|
|
831
902
|
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
832
903
|
}));
|
|
833
904
|
}
|
|
834
|
-
class MenuCheckboxGroupState {
|
|
905
|
+
export class MenuCheckboxGroupState {
|
|
906
|
+
static create(opts) {
|
|
907
|
+
return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(opts, MenuContentContext.get()));
|
|
908
|
+
}
|
|
835
909
|
opts;
|
|
836
910
|
content;
|
|
837
|
-
groupHeadingId = $state(null);
|
|
838
911
|
root;
|
|
912
|
+
groupHeadingId = $state(null);
|
|
839
913
|
constructor(opts, content) {
|
|
840
914
|
this.opts = opts;
|
|
841
915
|
this.content = content;
|
|
@@ -868,73 +942,9 @@ class MenuCheckboxGroupState {
|
|
|
868
942
|
...attachRef(this.opts.ref),
|
|
869
943
|
}));
|
|
870
944
|
}
|
|
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()));
|
|
945
|
+
export class MenuSubmenuState {
|
|
946
|
+
static create(opts) {
|
|
947
|
+
const menu = MenuMenuContext.get();
|
|
948
|
+
return MenuMenuContext.set(new MenuMenuState(opts, menu.root, menu));
|
|
949
|
+
}
|
|
940
950
|
}
|
|
@@ -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,25 @@
|
|
|
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,
|
|
4
|
+
import type { OnChangeFn, WithRefOpts } from "../../internal/types.js";
|
|
7
5
|
import { type FocusScopeContextValue } from "../utilities/focus-scope/use-focus-scope.svelte.js";
|
|
8
6
|
import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
|
|
9
|
-
|
|
7
|
+
import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
|
|
8
|
+
interface MenubarRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
10
9
|
dir: Direction;
|
|
11
10
|
loop: boolean;
|
|
12
|
-
}
|
|
11
|
+
}>, WritableBoxedValues<{
|
|
13
12
|
value: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
}> {
|
|
14
|
+
}
|
|
15
|
+
export declare class MenubarRootState {
|
|
16
|
+
static create(opts: MenubarRootStateOpts): MenubarRootState;
|
|
17
|
+
readonly opts: MenubarRootStateOpts;
|
|
18
|
+
readonly rovingFocusGroup: RovingFocusGroup;
|
|
18
19
|
wasOpenedByKeyboard: boolean;
|
|
19
20
|
triggerIds: string[];
|
|
20
21
|
valueToChangeHandler: Map<string, ReadableBox<OnChangeFn<boolean>>>;
|
|
21
|
-
constructor(opts:
|
|
22
|
+
constructor(opts: MenubarRootStateOpts);
|
|
22
23
|
/**
|
|
23
24
|
* @param id - the id of the trigger to register
|
|
24
25
|
* @returns - a function to de-register the trigger
|
|
@@ -35,17 +36,19 @@ declare class MenubarRootState {
|
|
|
35
36
|
onMenuOpen: (id: string, triggerId: string) => void;
|
|
36
37
|
onMenuClose: () => void;
|
|
37
38
|
onMenuToggle: (id: string) => void;
|
|
38
|
-
props: {
|
|
39
|
+
readonly props: {
|
|
39
40
|
readonly id: string;
|
|
40
41
|
readonly role: "menubar";
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
interface MenubarMenuStateOpts extends ReadableBoxedValues<{
|
|
44
45
|
value: string;
|
|
45
46
|
onOpenChange: OnChangeFn<boolean>;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
}> {
|
|
48
|
+
}
|
|
49
|
+
export declare class MenubarMenuState {
|
|
50
|
+
static create(opts: MenubarMenuStateOpts): MenubarMenuState;
|
|
51
|
+
readonly opts: MenubarMenuStateOpts;
|
|
49
52
|
readonly root: MenubarRootState;
|
|
50
53
|
open: boolean;
|
|
51
54
|
wasOpenedByKeyboard: boolean;
|
|
@@ -53,27 +56,29 @@ declare class MenubarMenuState {
|
|
|
53
56
|
triggerId: string | undefined;
|
|
54
57
|
contentId: string | undefined;
|
|
55
58
|
contentNode: HTMLElement | null;
|
|
56
|
-
constructor(opts:
|
|
59
|
+
constructor(opts: MenubarMenuStateOpts, root: MenubarRootState);
|
|
57
60
|
getTriggerNode(): HTMLElement | null;
|
|
58
61
|
toggleMenu(): void;
|
|
59
62
|
openMenu(): void;
|
|
60
63
|
}
|
|
61
|
-
|
|
64
|
+
interface MenubarTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
62
65
|
disabled: boolean;
|
|
63
|
-
}
|
|
64
|
-
|
|
66
|
+
}> {
|
|
67
|
+
}
|
|
68
|
+
export declare class MenubarTriggerState {
|
|
65
69
|
#private;
|
|
66
|
-
|
|
70
|
+
static create(opts: MenubarTriggerStateOpts): MenubarTriggerState;
|
|
71
|
+
readonly opts: MenubarTriggerStateOpts;
|
|
67
72
|
readonly menu: MenubarMenuState;
|
|
68
|
-
root: MenubarRootState;
|
|
73
|
+
readonly root: MenubarRootState;
|
|
69
74
|
isFocused: boolean;
|
|
70
|
-
constructor(opts:
|
|
75
|
+
constructor(opts: MenubarTriggerStateOpts, menu: MenubarMenuState);
|
|
71
76
|
onpointerdown: PointerEventHandler<HTMLElement>;
|
|
72
77
|
onpointerenter: PointerEventHandler<HTMLElement>;
|
|
73
78
|
onkeydown: KeyboardEventHandler<HTMLElement>;
|
|
74
79
|
onfocus: FocusEventHandler<HTMLElement>;
|
|
75
80
|
onblur: FocusEventHandler<HTMLElement>;
|
|
76
|
-
props: {
|
|
81
|
+
readonly props: {
|
|
77
82
|
readonly type: "button";
|
|
78
83
|
readonly role: "menuitem";
|
|
79
84
|
readonly id: string;
|
|
@@ -93,19 +98,21 @@ declare class MenubarTriggerState {
|
|
|
93
98
|
readonly onblur: FocusEventHandler<HTMLElement>;
|
|
94
99
|
};
|
|
95
100
|
}
|
|
96
|
-
|
|
101
|
+
interface MenubarContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
|
|
97
102
|
interactOutsideBehavior: InteractOutsideBehaviorType;
|
|
98
103
|
onOpenAutoFocus: (e: Event) => void;
|
|
99
104
|
onCloseAutoFocus: (e: Event) => void;
|
|
100
105
|
onFocusOutside: (e: FocusEvent) => void;
|
|
101
106
|
onInteractOutside: (e: PointerEvent) => void;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
}> {
|
|
108
|
+
}
|
|
109
|
+
export declare class MenubarContentState {
|
|
110
|
+
static create(opts: MenubarContentStateOpts): MenubarContentState;
|
|
111
|
+
readonly opts: MenubarContentStateOpts;
|
|
105
112
|
readonly menu: MenubarMenuState;
|
|
106
|
-
root: MenubarRootState;
|
|
113
|
+
readonly root: MenubarRootState;
|
|
107
114
|
focusScopeContext: FocusScopeContextValue;
|
|
108
|
-
constructor(opts:
|
|
115
|
+
constructor(opts: MenubarContentStateOpts, menu: MenubarMenuState);
|
|
109
116
|
onCloseAutoFocus: (e: Event) => void;
|
|
110
117
|
onFocusOutside: (e: FocusEvent) => void;
|
|
111
118
|
onInteractOutside: (e: PointerEvent) => void;
|
|
@@ -127,8 +134,4 @@ declare class MenubarContentState {
|
|
|
127
134
|
onOpenAutoFocus: (e: Event) => void;
|
|
128
135
|
};
|
|
129
136
|
}
|
|
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
137
|
export {};
|