bits-ui 1.8.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bits/accordion/accordion.svelte.d.ts +56 -53
- package/dist/bits/accordion/accordion.svelte.js +78 -89
- package/dist/bits/accordion/components/accordion-content.svelte +5 -3
- package/dist/bits/accordion/components/accordion-header.svelte +4 -2
- package/dist/bits/accordion/components/accordion-item.svelte +6 -3
- package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
- package/dist/bits/accordion/components/accordion.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
- package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
- package/dist/bits/avatar/avatar.svelte.js +4 -4
- package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
- package/dist/bits/avatar/components/avatar-image.svelte +4 -2
- package/dist/bits/avatar/components/avatar.svelte +4 -2
- package/dist/bits/button/components/button.svelte +1 -1
- package/dist/bits/calendar/calendar.svelte.d.ts +1 -9
- package/dist/bits/calendar/calendar.svelte.js +47 -38
- package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-day.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
- package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-header.svelte +4 -2
- package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
- package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
- package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
- package/dist/bits/checkbox/checkbox.svelte.js +4 -14
- package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox.svelte +4 -2
- package/dist/bits/collapsible/collapsible.svelte.js +4 -10
- package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
- package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
- package/dist/bits/collapsible/components/collapsible.svelte +4 -2
- package/dist/bits/combobox/components/combobox-input.svelte +1 -1
- package/dist/bits/combobox/components/combobox.svelte +1 -1
- package/dist/bits/command/command.svelte.js +13 -45
- package/dist/bits/command/components/_command-label.svelte +6 -7
- package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
- package/dist/bits/command/components/command-empty.svelte +4 -2
- package/dist/bits/command/components/command-group-heading.svelte +4 -2
- package/dist/bits/command/components/command-group-items.svelte +4 -2
- package/dist/bits/command/components/command-group.svelte +4 -2
- package/dist/bits/command/components/command-input.svelte +4 -2
- package/dist/bits/command/components/command-item.svelte +4 -2
- package/dist/bits/command/components/command-link-item.svelte +4 -2
- package/dist/bits/command/components/command-list.svelte +4 -2
- package/dist/bits/command/components/command-loading.svelte +4 -2
- package/dist/bits/command/components/command-separator.svelte +4 -2
- package/dist/bits/command/components/command-viewport.svelte +4 -2
- package/dist/bits/command/components/command.svelte +4 -2
- package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
- package/dist/bits/date-field/components/date-field-input.svelte +4 -2
- package/dist/bits/date-field/components/date-field-label.svelte +4 -2
- package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
- package/dist/bits/date-field/date-field.svelte.d.ts +4 -4
- package/dist/bits/date-field/date-field.svelte.js +15 -33
- package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
- package/dist/bits/date-range-field/date-range-field.svelte.js +3 -13
- package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
- package/dist/bits/dialog/components/dialog-close.svelte +4 -2
- package/dist/bits/dialog/components/dialog-content.svelte +8 -2
- package/dist/bits/dialog/components/dialog-description.svelte +4 -2
- package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
- package/dist/bits/dialog/components/dialog-title.svelte +4 -2
- package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
- package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
- package/dist/bits/dialog/dialog.svelte.js +19 -47
- package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
- package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
- package/dist/bits/index.d.ts +2 -0
- package/dist/bits/index.js +2 -0
- package/dist/bits/label/components/label.svelte +4 -2
- package/dist/bits/label/label.svelte.js +2 -2
- package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
- package/dist/bits/link-preview/link-preview.svelte.js +3 -14
- package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
- package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
- package/dist/bits/menu/components/menu-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-content.svelte +6 -5
- package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
- package/dist/bits/menu/components/menu-group.svelte +4 -2
- package/dist/bits/menu/components/menu-item.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
- package/dist/bits/menu/components/menu-separator.svelte +4 -2
- package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
- package/dist/bits/menu/components/menu-trigger.svelte +5 -3
- package/dist/bits/menu/menu.svelte.d.ts +7 -20
- package/dist/bits/menu/menu.svelte.js +26 -54
- package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
- package/dist/bits/menubar/components/menubar-content.svelte +4 -2
- package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
- package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
- package/dist/bits/menubar/components/menubar.svelte +4 -2
- package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
- package/dist/bits/menubar/menubar.svelte.js +40 -56
- package/dist/bits/meter/components/meter.svelte +4 -2
- package/dist/bits/meter/meter.svelte.js +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
- package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
- package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
- package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
- package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
- package/dist/bits/navigation-menu/navigation-menu.svelte.js +13 -50
- package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination-page.svelte +4 -2
- package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination.svelte +4 -2
- package/dist/bits/pagination/pagination.svelte.js +4 -4
- package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
- package/dist/bits/pin-input/components/pin-input.svelte +5 -3
- package/dist/bits/pin-input/pin-input.svelte.js +4 -10
- package/dist/bits/popover/components/popover-close.svelte +4 -2
- package/dist/bits/popover/components/popover-content-static.svelte +6 -2
- package/dist/bits/popover/components/popover-content.svelte +6 -2
- package/dist/bits/popover/components/popover-trigger.svelte +5 -3
- package/dist/bits/popover/popover.svelte.js +4 -18
- package/dist/bits/progress/components/progress.svelte +4 -2
- package/dist/bits/progress/progress.svelte.js +2 -2
- package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
- package/dist/bits/radio-group/components/radio-group.svelte +4 -2
- package/dist/bits/radio-group/radio-group.svelte.js +4 -7
- package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
- package/dist/bits/range-calendar/range-calendar.svelte.js +4 -4
- package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
- package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
- package/dist/bits/scroll-area/scroll-area.svelte.js +13 -47
- package/dist/bits/select/components/select-content-static.svelte +6 -2
- package/dist/bits/select/components/select-content.svelte +6 -2
- package/dist/bits/select/components/select-group-heading.svelte +3 -2
- package/dist/bits/select/components/select-group.svelte +4 -2
- package/dist/bits/select/components/select-item.svelte +4 -2
- package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
- package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
- package/dist/bits/select/components/select-trigger.svelte +5 -3
- package/dist/bits/select/components/select-viewport.svelte +4 -2
- package/dist/bits/select/components/select.svelte +1 -1
- package/dist/bits/select/select.svelte.d.ts +0 -18
- package/dist/bits/select/select.svelte.js +10 -43
- package/dist/bits/separator/components/separator.svelte +4 -2
- package/dist/bits/separator/separator.svelte.js +2 -2
- package/dist/bits/slider/components/slider-range.svelte +4 -2
- package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
- package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-thumb.svelte +4 -2
- package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
- package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-tick.svelte +4 -2
- package/dist/bits/slider/components/slider.svelte +24 -5
- package/dist/bits/slider/exports.d.ts +3 -1
- package/dist/bits/slider/exports.js +2 -0
- package/dist/bits/slider/helpers.d.ts +14 -0
- package/dist/bits/slider/helpers.js +122 -0
- package/dist/bits/slider/slider.svelte.d.ts +91 -5
- package/dist/bits/slider/slider.svelte.js +194 -101
- package/dist/bits/slider/types.d.ts +105 -11
- package/dist/bits/switch/components/switch-thumb.svelte +4 -2
- package/dist/bits/switch/components/switch.svelte +4 -2
- package/dist/bits/switch/switch.svelte.js +3 -3
- package/dist/bits/tabs/components/tabs-content.svelte +4 -2
- package/dist/bits/tabs/components/tabs-list.svelte +4 -2
- package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
- package/dist/bits/tabs/components/tabs.svelte +4 -2
- package/dist/bits/tabs/tabs.svelte.js +6 -6
- package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
- package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
- package/dist/bits/time-field/components/time-field-input.svelte +39 -0
- package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-label.svelte +34 -0
- package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
- package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field.svelte +94 -0
- package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
- package/dist/bits/time-field/exports.d.ts +5 -0
- package/dist/bits/time-field/exports.js +4 -0
- package/dist/bits/time-field/index.d.ts +1 -0
- package/dist/bits/time-field/index.js +1 -0
- package/dist/bits/time-field/time-field.svelte.d.ts +415 -0
- package/dist/bits/time-field/time-field.svelte.js +971 -0
- package/dist/bits/time-field/types.d.ts +137 -0
- package/dist/bits/time-field/types.js +1 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
- package/dist/bits/time-range-field/exports.d.ts +5 -0
- package/dist/bits/time-range-field/exports.js +4 -0
- package/dist/bits/time-range-field/index.d.ts +1 -0
- package/dist/bits/time-range-field/index.js +1 -0
- package/dist/bits/time-range-field/time-range-field.svelte.d.ts +90 -0
- package/dist/bits/time-range-field/time-range-field.svelte.js +210 -0
- package/dist/bits/time-range-field/types.d.ts +150 -0
- package/dist/bits/time-range-field/types.js +1 -0
- package/dist/bits/toggle/components/toggle.svelte +4 -2
- package/dist/bits/toggle/toggle.svelte.js +2 -2
- package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
- package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
- package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
- package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar.svelte +4 -2
- package/dist/bits/toolbar/toolbar.svelte.js +7 -7
- package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
- package/dist/bits/tooltip/tooltip.svelte.js +3 -14
- package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
- package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
- package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
- package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +5 -26
- package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
- package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +2 -8
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
- package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
- package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
- package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
- package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
- package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +3 -1
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +2 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/create-id.d.ts +8 -0
- package/dist/internal/create-id.js +5 -0
- package/dist/internal/date-time/field/helpers.d.ts +1 -0
- package/dist/internal/date-time/field/helpers.js +8 -2
- package/dist/internal/date-time/field/parts.d.ts +3 -1
- package/dist/internal/date-time/field/parts.js +10 -2
- package/dist/internal/date-time/field/segments.d.ts +9 -0
- package/dist/internal/date-time/field/segments.js +65 -0
- package/dist/internal/date-time/field/time-helpers.d.ts +77 -0
- package/dist/internal/date-time/field/time-helpers.js +301 -0
- package/dist/internal/date-time/field/types.d.ts +2 -2
- package/dist/internal/date-time/formatter.d.ts +11 -1
- package/dist/internal/date-time/formatter.js +56 -0
- package/dist/internal/date-time/utils.d.ts +7 -2
- package/dist/internal/date-time/utils.js +15 -1
- package/dist/internal/dom-context.svelte.d.ts +9 -0
- package/dist/internal/dom-context.svelte.js +26 -0
- package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
- package/dist/internal/use-roving-focus.svelte.js +10 -11
- package/dist/shared/date/types.d.ts +27 -4
- package/dist/shared/index.d.ts +2 -2
- package/dist/types.d.ts +2 -0
- package/package.json +18 -16
- package/dist/bits/date-field/components/date-field-error.svelte +0 -0
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuGroupProps } from "../types.js";
|
|
4
4
|
import { useMenuGroup } from "../menu.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
10
|
children,
|
|
9
11
|
child,
|
|
10
12
|
ref = $bindable(null),
|
|
11
|
-
id =
|
|
13
|
+
id = createId(uid),
|
|
12
14
|
...restProps
|
|
13
15
|
}: MenuGroupProps = $props();
|
|
14
16
|
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuItemProps } from "../types.js";
|
|
4
4
|
import { useMenuItem } from "../menu.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import { noop } from "../../../internal/noop.js";
|
|
7
7
|
|
|
8
|
+
const uid = $props.id();
|
|
9
|
+
|
|
8
10
|
let {
|
|
9
11
|
child,
|
|
10
12
|
children,
|
|
11
13
|
ref = $bindable(null),
|
|
12
|
-
id =
|
|
14
|
+
id = createId(uid),
|
|
13
15
|
disabled = false,
|
|
14
16
|
onSelect = noop,
|
|
15
17
|
closeOnSelect = true,
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
import type { MenuRadioGroupProps } from "../types.js";
|
|
4
4
|
import { useMenuRadioGroup } from "../menu.svelte.js";
|
|
5
5
|
import { noop } from "../../../internal/noop.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createId } from "../../../internal/create-id.js";
|
|
7
|
+
|
|
8
|
+
const uid = $props.id();
|
|
7
9
|
|
|
8
10
|
let {
|
|
9
|
-
id =
|
|
11
|
+
id = createId(uid),
|
|
10
12
|
children,
|
|
11
13
|
child,
|
|
12
14
|
ref = $bindable(null),
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuRadioItemProps } from "../types.js";
|
|
4
4
|
import { useMenuRadioItem } from "../menu.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import { noop } from "../../../internal/noop.js";
|
|
7
7
|
|
|
8
|
+
const uid = $props.id();
|
|
9
|
+
|
|
8
10
|
let {
|
|
9
11
|
children,
|
|
10
12
|
child,
|
|
11
13
|
ref = $bindable(null),
|
|
12
14
|
value,
|
|
13
15
|
onSelect = noop,
|
|
14
|
-
id =
|
|
16
|
+
id = createId(uid),
|
|
15
17
|
disabled = false,
|
|
16
18
|
closeOnSelect = true,
|
|
17
19
|
...restProps
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuSeparatorProps } from "../types.js";
|
|
4
4
|
import { useMenuSeparator } from "../menu.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
|
+
|
|
7
|
+
const uid = $props.id();
|
|
6
8
|
|
|
7
9
|
let {
|
|
8
10
|
ref = $bindable(null),
|
|
9
|
-
id =
|
|
11
|
+
id = createId(uid),
|
|
10
12
|
child,
|
|
11
13
|
children,
|
|
12
14
|
...restProps
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
import type { MenuSubContentStaticProps } from "../types.js";
|
|
4
4
|
import { useMenuContent } from "../menu.svelte.js";
|
|
5
5
|
import { SUB_CLOSE_KEYS } from "../utils.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createId } from "../../../internal/create-id.js";
|
|
7
7
|
import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
|
|
8
8
|
import { noop } from "../../../internal/noop.js";
|
|
9
9
|
import { isHTMLElement } from "../../../internal/is.js";
|
|
10
|
-
import Mounted from "../../utilities/mounted.svelte";
|
|
11
10
|
import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
|
|
12
11
|
import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
|
|
13
12
|
|
|
13
|
+
const uid = $props.id();
|
|
14
|
+
|
|
14
15
|
let {
|
|
15
|
-
id =
|
|
16
|
+
id = createId(uid),
|
|
16
17
|
ref = $bindable(null),
|
|
17
18
|
children,
|
|
18
19
|
child,
|
|
@@ -107,6 +108,7 @@
|
|
|
107
108
|
{#if forceMount}
|
|
108
109
|
<PopperLayerForceMount
|
|
109
110
|
{...mergedProps}
|
|
111
|
+
ref={subContentState.opts.ref}
|
|
110
112
|
{interactOutsideBehavior}
|
|
111
113
|
{escapeKeydownBehavior}
|
|
112
114
|
onOpenAutoFocus={handleOpenAutoFocus}
|
|
@@ -130,12 +132,12 @@
|
|
|
130
132
|
{@render children?.()}
|
|
131
133
|
</div>
|
|
132
134
|
{/if}
|
|
133
|
-
<Mounted bind:mounted={subContentState.mounted} />
|
|
134
135
|
{/snippet}
|
|
135
136
|
</PopperLayerForceMount>
|
|
136
137
|
{:else if !forceMount}
|
|
137
138
|
<PopperLayer
|
|
138
139
|
{...mergedProps}
|
|
140
|
+
ref={subContentState.opts.ref}
|
|
139
141
|
{interactOutsideBehavior}
|
|
140
142
|
{escapeKeydownBehavior}
|
|
141
143
|
onCloseAutoFocus={handleCloseAutoFocus}
|
|
@@ -160,7 +162,6 @@
|
|
|
160
162
|
{@render children?.()}
|
|
161
163
|
</div>
|
|
162
164
|
{/if}
|
|
163
|
-
<Mounted bind:mounted={subContentState.mounted} />
|
|
164
165
|
{/snippet}
|
|
165
166
|
</PopperLayer>
|
|
166
167
|
{/if}
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
import type { MenuSubContentProps } from "../types.js";
|
|
4
4
|
import { MenuOpenEvent, useMenuContent } from "../menu.svelte.js";
|
|
5
5
|
import { SUB_CLOSE_KEYS } from "../utils.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createId } from "../../../internal/create-id.js";
|
|
7
7
|
import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
|
|
8
8
|
import { noop } from "../../../internal/noop.js";
|
|
9
9
|
import { isHTMLElement } from "../../../internal/is.js";
|
|
10
|
-
import Mounted from "../../utilities/mounted.svelte";
|
|
11
10
|
import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
|
|
12
11
|
import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
|
|
13
12
|
|
|
13
|
+
const uid = $props.id();
|
|
14
|
+
|
|
14
15
|
let {
|
|
15
|
-
id =
|
|
16
|
+
id = createId(uid),
|
|
16
17
|
ref = $bindable(null),
|
|
17
18
|
children,
|
|
18
19
|
child,
|
|
@@ -109,6 +110,7 @@
|
|
|
109
110
|
{#if forceMount}
|
|
110
111
|
<PopperLayerForceMount
|
|
111
112
|
{...mergedProps}
|
|
113
|
+
ref={subContentState.opts.ref}
|
|
112
114
|
{interactOutsideBehavior}
|
|
113
115
|
{escapeKeydownBehavior}
|
|
114
116
|
onOpenAutoFocus={handleOpenAutoFocus}
|
|
@@ -137,12 +139,12 @@
|
|
|
137
139
|
</div>
|
|
138
140
|
</div>
|
|
139
141
|
{/if}
|
|
140
|
-
<Mounted bind:mounted={subContentState.mounted} />
|
|
141
142
|
{/snippet}
|
|
142
143
|
</PopperLayerForceMount>
|
|
143
144
|
{:else if !forceMount}
|
|
144
145
|
<PopperLayer
|
|
145
146
|
{...mergedProps}
|
|
147
|
+
ref={subContentState.opts.ref}
|
|
146
148
|
{interactOutsideBehavior}
|
|
147
149
|
{escapeKeydownBehavior}
|
|
148
150
|
onCloseAutoFocus={handleCloseAutoFocus}
|
|
@@ -172,7 +174,6 @@
|
|
|
172
174
|
</div>
|
|
173
175
|
</div>
|
|
174
176
|
{/if}
|
|
175
|
-
<Mounted bind:mounted={subContentState.mounted} />
|
|
176
177
|
{/snippet}
|
|
177
178
|
</PopperLayer>
|
|
178
179
|
{/if}
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuSubTriggerProps } from "../types.js";
|
|
4
4
|
import { useMenuSubTrigger } from "../menu.svelte.js";
|
|
5
|
-
import { useId } from "../../../internal/use-id.js";
|
|
6
5
|
import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
|
|
7
6
|
import { noop } from "../../../internal/noop.js";
|
|
7
|
+
import { createId } from "../../../internal/create-id.js";
|
|
8
|
+
|
|
9
|
+
const uid = $props.id();
|
|
10
|
+
|
|
8
11
|
let {
|
|
9
|
-
id =
|
|
12
|
+
id = createId(uid),
|
|
10
13
|
disabled = false,
|
|
11
14
|
ref = $bindable(null),
|
|
12
15
|
children,
|
|
@@ -28,7 +31,7 @@
|
|
|
28
31
|
const mergedProps = $derived(mergeProps(restProps, subTriggerState.props));
|
|
29
32
|
</script>
|
|
30
33
|
|
|
31
|
-
<FloatingLayerAnchor {id}>
|
|
34
|
+
<FloatingLayerAnchor {id} ref={subTriggerState.opts.ref}>
|
|
32
35
|
{#if child}
|
|
33
36
|
{@render child({ props: mergedProps })}
|
|
34
37
|
{:else}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenuTriggerProps } from "../types.js";
|
|
4
4
|
import { useMenuDropdownTrigger } from "../menu.svelte.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createId } from "../../../internal/create-id.js";
|
|
6
6
|
import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
|
|
7
7
|
|
|
8
|
+
const uid = $props.id();
|
|
9
|
+
|
|
8
10
|
let {
|
|
9
|
-
id =
|
|
11
|
+
id = createId(uid),
|
|
10
12
|
ref = $bindable(null),
|
|
11
13
|
child,
|
|
12
14
|
children,
|
|
@@ -27,7 +29,7 @@
|
|
|
27
29
|
const mergedProps = $derived(mergeProps(restProps, triggerState.props, { type }));
|
|
28
30
|
</script>
|
|
29
31
|
|
|
30
|
-
<FloatingLayerAnchor {id}>
|
|
32
|
+
<FloatingLayerAnchor {id} ref={triggerState.opts.ref}>
|
|
31
33
|
{#if child}
|
|
32
34
|
{@render child({ props: mergedProps })}
|
|
33
35
|
{:else}
|
|
@@ -5,6 +5,7 @@ import type { AnyFn, BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, BitsPoin
|
|
|
5
5
|
import { useRovingFocus } from "../../internal/use-roving-focus.svelte.js";
|
|
6
6
|
import type { Direction } from "../../shared/index.js";
|
|
7
7
|
import { IsUsingKeyboard } from "../../index.js";
|
|
8
|
+
import type { KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
|
|
8
9
|
export declare const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
|
|
9
10
|
export declare const MenuCheckboxGroupContext: Context<MenuCheckboxGroupState>;
|
|
10
11
|
type MenuVariant = "context-menu" | "dropdown-menu" | "menubar";
|
|
@@ -66,9 +67,6 @@ declare class MenuContentState {
|
|
|
66
67
|
open: boolean;
|
|
67
68
|
};
|
|
68
69
|
props: {
|
|
69
|
-
readonly [x: string]: string | ((e: BitsKeyboardEvent) => void) | ((e: BitsFocusEvent) => void) | {
|
|
70
|
-
readonly pointerEvents: "auto";
|
|
71
|
-
};
|
|
72
70
|
readonly id: string;
|
|
73
71
|
readonly role: "menu";
|
|
74
72
|
readonly "aria-orientation": "horizontal" | "vertical";
|
|
@@ -98,7 +96,6 @@ declare class MenuItemSharedState {
|
|
|
98
96
|
onfocus(e: BitsFocusEvent): void;
|
|
99
97
|
onblur(e: BitsFocusEvent): void;
|
|
100
98
|
props: {
|
|
101
|
-
readonly [x: string]: string | -1 | ((e: BitsPointerEvent) => void) | undefined;
|
|
102
99
|
readonly id: string;
|
|
103
100
|
readonly tabindex: -1;
|
|
104
101
|
readonly role: "menuitem";
|
|
@@ -126,7 +123,6 @@ declare class MenuItemState {
|
|
|
126
123
|
onpointerup(e: BitsPointerEvent): void;
|
|
127
124
|
onpointerdown(_: BitsPointerEvent): void;
|
|
128
125
|
props: {
|
|
129
|
-
readonly [x: string]: string | -1 | ((e: BitsPointerEvent) => void) | undefined;
|
|
130
126
|
readonly id: string;
|
|
131
127
|
readonly tabindex: -1;
|
|
132
128
|
readonly role: "menuitem";
|
|
@@ -158,7 +154,6 @@ declare class MenuSubTriggerState {
|
|
|
158
154
|
onkeydown(e: BitsKeyboardEvent): void;
|
|
159
155
|
onclick(e: BitsMouseEvent): void;
|
|
160
156
|
props: {
|
|
161
|
-
readonly [x: string]: string | -1 | ((e: BitsPointerEvent) => void) | undefined;
|
|
162
157
|
readonly id: string;
|
|
163
158
|
readonly tabindex: -1;
|
|
164
159
|
readonly role: "menuitem";
|
|
@@ -170,7 +165,6 @@ declare class MenuSubTriggerState {
|
|
|
170
165
|
readonly onfocus: (e: BitsFocusEvent) => void;
|
|
171
166
|
readonly onblur: (e: BitsFocusEvent) => void;
|
|
172
167
|
} & {
|
|
173
|
-
[x: string]: string | ((e: BitsPointerEvent) => void) | ((e: BitsKeyboardEvent) => void) | undefined;
|
|
174
168
|
"aria-haspopup": string;
|
|
175
169
|
"aria-expanded": "true" | "false";
|
|
176
170
|
"data-state": "open" | "closed";
|
|
@@ -200,7 +194,6 @@ declare class MenuCheckboxItemState {
|
|
|
200
194
|
indeterminate: boolean;
|
|
201
195
|
};
|
|
202
196
|
props: {
|
|
203
|
-
readonly [x: string]: string | -1 | ((e: BitsPointerEvent) => void) | undefined;
|
|
204
197
|
readonly role: "menuitemcheckbox";
|
|
205
198
|
readonly "aria-checked": "true" | "false" | "mixed";
|
|
206
199
|
readonly "data-state": "checked" | "indeterminate" | "unchecked";
|
|
@@ -227,7 +220,6 @@ declare class MenuGroupState {
|
|
|
227
220
|
groupHeadingId: string | undefined;
|
|
228
221
|
constructor(opts: MenuGroupStateProps, root: MenuRootState);
|
|
229
222
|
props: {
|
|
230
|
-
readonly [x: string]: string | undefined;
|
|
231
223
|
readonly id: string;
|
|
232
224
|
readonly role: "group";
|
|
233
225
|
readonly "aria-labelledby": string | undefined;
|
|
@@ -239,7 +231,6 @@ declare class MenuGroupHeadingState {
|
|
|
239
231
|
readonly group: MenuGroupState | MenuRadioGroupState | MenuCheckboxGroupState;
|
|
240
232
|
constructor(opts: MenuGroupHeadingStateProps, group: MenuGroupState | MenuRadioGroupState | MenuCheckboxGroupState);
|
|
241
233
|
props: {
|
|
242
|
-
readonly [x: string]: string;
|
|
243
234
|
readonly id: string;
|
|
244
235
|
readonly role: "group";
|
|
245
236
|
};
|
|
@@ -250,7 +241,6 @@ declare class MenuSeparatorState {
|
|
|
250
241
|
readonly root: MenuRootState;
|
|
251
242
|
constructor(opts: MenuSeparatorStateProps, root: MenuRootState);
|
|
252
243
|
props: {
|
|
253
|
-
readonly [x: string]: string;
|
|
254
244
|
readonly id: string;
|
|
255
245
|
readonly role: "group";
|
|
256
246
|
};
|
|
@@ -273,7 +263,6 @@ declare class MenuRadioGroupState {
|
|
|
273
263
|
constructor(opts: MenuRadioGroupStateProps, content: MenuContentState);
|
|
274
264
|
setValue(v: string): void;
|
|
275
265
|
props: {
|
|
276
|
-
readonly [x: string]: string | null;
|
|
277
266
|
readonly id: string;
|
|
278
267
|
readonly role: "group";
|
|
279
268
|
readonly "aria-labelledby": string | null;
|
|
@@ -318,11 +307,10 @@ declare class DropdownMenuTriggerState {
|
|
|
318
307
|
readonly opts: DropdownMenuTriggerStateProps;
|
|
319
308
|
readonly parentMenu: MenuMenuState;
|
|
320
309
|
constructor(opts: DropdownMenuTriggerStateProps, parentMenu: MenuMenuState);
|
|
321
|
-
onpointerdown
|
|
322
|
-
onpointerup
|
|
323
|
-
onkeydown
|
|
310
|
+
onpointerdown: PointerEventHandler<HTMLElement>;
|
|
311
|
+
onpointerup: PointerEventHandler<HTMLElement>;
|
|
312
|
+
onkeydown: KeyboardEventHandler<HTMLElement>;
|
|
324
313
|
props: {
|
|
325
|
-
readonly [x: string]: string | boolean | ((e: BitsPointerEvent) => void) | ((e: BitsKeyboardEvent) => void) | undefined;
|
|
326
314
|
readonly id: string;
|
|
327
315
|
readonly disabled: boolean;
|
|
328
316
|
readonly "aria-haspopup": "menu";
|
|
@@ -330,9 +318,9 @@ declare class DropdownMenuTriggerState {
|
|
|
330
318
|
readonly "aria-controls": string | undefined;
|
|
331
319
|
readonly "data-disabled": "" | undefined;
|
|
332
320
|
readonly "data-state": "open" | "closed";
|
|
333
|
-
readonly onpointerdown:
|
|
334
|
-
readonly onpointerup:
|
|
335
|
-
readonly onkeydown:
|
|
321
|
+
readonly onpointerdown: PointerEventHandler<HTMLElement>;
|
|
322
|
+
readonly onpointerup: PointerEventHandler<HTMLElement>;
|
|
323
|
+
readonly onkeydown: KeyboardEventHandler<HTMLElement>;
|
|
336
324
|
};
|
|
337
325
|
}
|
|
338
326
|
type ContextMenuTriggerStateProps = WithRefProps & ReadableBoxedValues<{
|
|
@@ -379,7 +367,6 @@ declare class MenuCheckboxGroupState {
|
|
|
379
367
|
addValue(checkboxValue: string | undefined): void;
|
|
380
368
|
removeValue(checkboxValue: string | undefined): void;
|
|
381
369
|
props: {
|
|
382
|
-
readonly [x: string]: string | null;
|
|
383
370
|
readonly id: string;
|
|
384
371
|
readonly role: "group";
|
|
385
372
|
readonly "aria-labelledby": string | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { afterTick, box, mergeProps, onDestroyEffect,
|
|
1
|
+
import { afterTick, box, mergeProps, onDestroyEffect, attachRef } from "svelte-toolbelt";
|
|
2
2
|
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";
|
|
@@ -13,6 +13,7 @@ import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
|
|
|
13
13
|
import { getTabbableFrom } from "../../internal/tabbable.js";
|
|
14
14
|
import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
|
|
15
15
|
import { isTabbable } from "tabbable";
|
|
16
|
+
import { untrack } from "svelte";
|
|
16
17
|
export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
|
|
17
18
|
const MenuRootContext = new Context("Menu.Root");
|
|
18
19
|
const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
|
|
@@ -83,15 +84,6 @@ class MenuContentState {
|
|
|
83
84
|
this.onblur = this.onblur.bind(this);
|
|
84
85
|
this.onfocus = this.onfocus.bind(this);
|
|
85
86
|
this.handleInteractOutside = this.handleInteractOutside.bind(this);
|
|
86
|
-
useRefById({
|
|
87
|
-
...opts,
|
|
88
|
-
deps: () => this.parentMenu.opts.open.current,
|
|
89
|
-
onRefChange: (node) => {
|
|
90
|
-
if (this.parentMenu.contentNode !== node) {
|
|
91
|
-
this.parentMenu.contentNode = node;
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
87
|
useGraceArea({
|
|
96
88
|
contentNode: () => this.parentMenu.contentNode,
|
|
97
89
|
triggerNode: () => this.parentMenu.triggerNode,
|
|
@@ -106,7 +98,7 @@ class MenuContentState {
|
|
|
106
98
|
});
|
|
107
99
|
this.#handleTypeaheadSearch = useDOMTypeahead().handleTypeaheadSearch;
|
|
108
100
|
this.rovingFocusGroup = useRovingFocus({
|
|
109
|
-
|
|
101
|
+
rootNode: box.with(() => this.parentMenu.contentNode),
|
|
110
102
|
candidateAttr: this.parentMenu.root.getAttr("item"),
|
|
111
103
|
loop: this.opts.loop,
|
|
112
104
|
orientation: box.with(() => "vertical"),
|
|
@@ -289,6 +281,13 @@ class MenuContentState {
|
|
|
289
281
|
style: {
|
|
290
282
|
pointerEvents: "auto",
|
|
291
283
|
},
|
|
284
|
+
...attachRef(this.opts.ref, (v) => {
|
|
285
|
+
untrack(() => {
|
|
286
|
+
if (this.parentMenu.contentNode !== v) {
|
|
287
|
+
this.parentMenu.contentNode = v;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}),
|
|
292
291
|
}));
|
|
293
292
|
popperProps = {
|
|
294
293
|
onCloseAutoFocus: (e) => this.onCloseAutoFocus(e),
|
|
@@ -305,10 +304,6 @@ class MenuItemSharedState {
|
|
|
305
304
|
this.onpointerleave = this.onpointerleave.bind(this);
|
|
306
305
|
this.onfocus = this.onfocus.bind(this);
|
|
307
306
|
this.onblur = this.onblur.bind(this);
|
|
308
|
-
useRefById({
|
|
309
|
-
...opts,
|
|
310
|
-
deps: () => this.content.mounted,
|
|
311
|
-
});
|
|
312
307
|
}
|
|
313
308
|
onpointermove(e) {
|
|
314
309
|
if (e.defaultPrevented)
|
|
@@ -362,6 +357,7 @@ class MenuItemSharedState {
|
|
|
362
357
|
onpointerleave: this.onpointerleave,
|
|
363
358
|
onfocus: this.onfocus,
|
|
364
359
|
onblur: this.onblur,
|
|
360
|
+
...attachRef(this.opts.ref),
|
|
365
361
|
}));
|
|
366
362
|
}
|
|
367
363
|
class MenuItemState {
|
|
@@ -452,12 +448,6 @@ class MenuSubTriggerState {
|
|
|
452
448
|
onDestroyEffect(() => {
|
|
453
449
|
this.#clearOpenTimer();
|
|
454
450
|
});
|
|
455
|
-
useRefById({
|
|
456
|
-
...item.opts,
|
|
457
|
-
onRefChange: (node) => {
|
|
458
|
-
this.submenu.triggerNode = node;
|
|
459
|
-
},
|
|
460
|
-
});
|
|
461
451
|
}
|
|
462
452
|
#clearOpenTimer() {
|
|
463
453
|
if (this.#openTimer === null)
|
|
@@ -530,6 +520,7 @@ class MenuSubTriggerState {
|
|
|
530
520
|
onpointermove: this.onpointermove,
|
|
531
521
|
onpointerleave: this.onpointerleave,
|
|
532
522
|
onkeydown: this.onkeydown,
|
|
523
|
+
...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
|
|
533
524
|
}, this.item.props));
|
|
534
525
|
}
|
|
535
526
|
class MenuCheckboxItemState {
|
|
@@ -584,13 +575,13 @@ class MenuGroupState {
|
|
|
584
575
|
constructor(opts, root) {
|
|
585
576
|
this.opts = opts;
|
|
586
577
|
this.root = root;
|
|
587
|
-
useRefById(this.opts);
|
|
588
578
|
}
|
|
589
579
|
props = $derived.by(() => ({
|
|
590
580
|
id: this.opts.id.current,
|
|
591
581
|
role: "group",
|
|
592
582
|
"aria-labelledby": this.groupHeadingId,
|
|
593
583
|
[this.root.getAttr("group")]: "",
|
|
584
|
+
...attachRef(this.opts.ref),
|
|
594
585
|
}));
|
|
595
586
|
}
|
|
596
587
|
class MenuGroupHeadingState {
|
|
@@ -599,17 +590,12 @@ class MenuGroupHeadingState {
|
|
|
599
590
|
constructor(opts, group) {
|
|
600
591
|
this.opts = opts;
|
|
601
592
|
this.group = group;
|
|
602
|
-
useRefById({
|
|
603
|
-
...opts,
|
|
604
|
-
onRefChange: (node) => {
|
|
605
|
-
this.group.groupHeadingId = node?.id;
|
|
606
|
-
},
|
|
607
|
-
});
|
|
608
593
|
}
|
|
609
594
|
props = $derived.by(() => ({
|
|
610
595
|
id: this.opts.id.current,
|
|
611
596
|
role: "group",
|
|
612
597
|
[this.group.root.getAttr("group-heading")]: "",
|
|
598
|
+
...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
|
|
613
599
|
}));
|
|
614
600
|
}
|
|
615
601
|
class MenuSeparatorState {
|
|
@@ -618,12 +604,12 @@ class MenuSeparatorState {
|
|
|
618
604
|
constructor(opts, root) {
|
|
619
605
|
this.opts = opts;
|
|
620
606
|
this.root = root;
|
|
621
|
-
useRefById(opts);
|
|
622
607
|
}
|
|
623
608
|
props = $derived.by(() => ({
|
|
624
609
|
id: this.opts.id.current,
|
|
625
610
|
role: "group",
|
|
626
611
|
[this.root.getAttr("separator")]: "",
|
|
612
|
+
...attachRef(this.opts.ref),
|
|
627
613
|
}));
|
|
628
614
|
}
|
|
629
615
|
class MenuArrowState {
|
|
@@ -644,7 +630,6 @@ class MenuRadioGroupState {
|
|
|
644
630
|
this.opts = opts;
|
|
645
631
|
this.content = content;
|
|
646
632
|
this.root = content.parentMenu.root;
|
|
647
|
-
useRefById(opts);
|
|
648
633
|
}
|
|
649
634
|
setValue(v) {
|
|
650
635
|
this.opts.value.current = v;
|
|
@@ -654,6 +639,7 @@ class MenuRadioGroupState {
|
|
|
654
639
|
[this.root.getAttr("radio-group")]: "",
|
|
655
640
|
role: "group",
|
|
656
641
|
"aria-labelledby": this.groupHeadingId,
|
|
642
|
+
...attachRef(this.opts.ref),
|
|
657
643
|
}));
|
|
658
644
|
}
|
|
659
645
|
class MenuRadioItemState {
|
|
@@ -665,7 +651,6 @@ class MenuRadioItemState {
|
|
|
665
651
|
this.opts = opts;
|
|
666
652
|
this.item = item;
|
|
667
653
|
this.group = group;
|
|
668
|
-
useRefById(opts);
|
|
669
654
|
}
|
|
670
655
|
selectValue() {
|
|
671
656
|
this.group.setValue(this.opts.value.current);
|
|
@@ -676,6 +661,7 @@ class MenuRadioItemState {
|
|
|
676
661
|
role: "menuitemradio",
|
|
677
662
|
"aria-checked": getAriaChecked(this.isChecked, false),
|
|
678
663
|
"data-state": getCheckedState(this.isChecked),
|
|
664
|
+
...attachRef(this.opts.ref),
|
|
679
665
|
}));
|
|
680
666
|
}
|
|
681
667
|
class DropdownMenuTriggerState {
|
|
@@ -684,17 +670,8 @@ class DropdownMenuTriggerState {
|
|
|
684
670
|
constructor(opts, parentMenu) {
|
|
685
671
|
this.opts = opts;
|
|
686
672
|
this.parentMenu = parentMenu;
|
|
687
|
-
this.onpointerdown = this.onpointerdown.bind(this);
|
|
688
|
-
this.onpointerup = this.onpointerup.bind(this);
|
|
689
|
-
this.onkeydown = this.onkeydown.bind(this);
|
|
690
|
-
useRefById({
|
|
691
|
-
...opts,
|
|
692
|
-
onRefChange: (ref) => {
|
|
693
|
-
this.parentMenu.triggerNode = ref;
|
|
694
|
-
},
|
|
695
|
-
});
|
|
696
673
|
}
|
|
697
|
-
onpointerdown(e) {
|
|
674
|
+
onpointerdown = (e) => {
|
|
698
675
|
if (this.opts.disabled.current)
|
|
699
676
|
return;
|
|
700
677
|
if (e.pointerType === "touch")
|
|
@@ -706,16 +683,16 @@ class DropdownMenuTriggerState {
|
|
|
706
683
|
if (!this.parentMenu.opts.open.current)
|
|
707
684
|
e.preventDefault();
|
|
708
685
|
}
|
|
709
|
-
}
|
|
710
|
-
onpointerup(e) {
|
|
686
|
+
};
|
|
687
|
+
onpointerup = (e) => {
|
|
711
688
|
if (this.opts.disabled.current)
|
|
712
689
|
return;
|
|
713
690
|
if (e.pointerType === "touch") {
|
|
714
691
|
e.preventDefault();
|
|
715
692
|
this.parentMenu.toggleOpen();
|
|
716
693
|
}
|
|
717
|
-
}
|
|
718
|
-
onkeydown(e) {
|
|
694
|
+
};
|
|
695
|
+
onkeydown = (e) => {
|
|
719
696
|
if (this.opts.disabled.current)
|
|
720
697
|
return;
|
|
721
698
|
if (e.key === kbd.SPACE || e.key === kbd.ENTER) {
|
|
@@ -727,7 +704,7 @@ class DropdownMenuTriggerState {
|
|
|
727
704
|
this.parentMenu.onOpen();
|
|
728
705
|
e.preventDefault();
|
|
729
706
|
}
|
|
730
|
-
}
|
|
707
|
+
};
|
|
731
708
|
#ariaControls = $derived.by(() => {
|
|
732
709
|
if (this.parentMenu.opts.open.current && this.parentMenu.contentId.current)
|
|
733
710
|
return this.parentMenu.contentId.current;
|
|
@@ -746,6 +723,7 @@ class DropdownMenuTriggerState {
|
|
|
746
723
|
onpointerdown: this.onpointerdown,
|
|
747
724
|
onpointerup: this.onpointerup,
|
|
748
725
|
onkeydown: this.onkeydown,
|
|
726
|
+
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
749
727
|
}));
|
|
750
728
|
}
|
|
751
729
|
class ContextMenuTriggerState {
|
|
@@ -764,13 +742,6 @@ class ContextMenuTriggerState {
|
|
|
764
742
|
this.onpointermove = this.onpointermove.bind(this);
|
|
765
743
|
this.onpointercancel = this.onpointercancel.bind(this);
|
|
766
744
|
this.onpointerup = this.onpointerup.bind(this);
|
|
767
|
-
useRefById({
|
|
768
|
-
...opts,
|
|
769
|
-
onRefChange: (node) => {
|
|
770
|
-
this.parentMenu.triggerNode = node;
|
|
771
|
-
},
|
|
772
|
-
deps: () => this.parentMenu.opts.open.current,
|
|
773
|
-
});
|
|
774
745
|
watch(() => this.#point, (point) => {
|
|
775
746
|
this.virtualElement.current = {
|
|
776
747
|
getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
|
|
@@ -834,6 +805,7 @@ class ContextMenuTriggerState {
|
|
|
834
805
|
onpointercancel: this.onpointercancel,
|
|
835
806
|
onpointerup: this.onpointerup,
|
|
836
807
|
oncontextmenu: this.oncontextmenu,
|
|
808
|
+
...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
|
|
837
809
|
}));
|
|
838
810
|
}
|
|
839
811
|
class MenuCheckboxGroupState {
|
|
@@ -845,7 +817,6 @@ class MenuCheckboxGroupState {
|
|
|
845
817
|
this.opts = opts;
|
|
846
818
|
this.content = content;
|
|
847
819
|
this.root = content.parentMenu.root;
|
|
848
|
-
useRefById(opts);
|
|
849
820
|
}
|
|
850
821
|
addValue(checkboxValue) {
|
|
851
822
|
if (!checkboxValue)
|
|
@@ -871,6 +842,7 @@ class MenuCheckboxGroupState {
|
|
|
871
842
|
[this.root.getAttr("checkbox-group")]: "",
|
|
872
843
|
role: "group",
|
|
873
844
|
"aria-labelledby": this.groupHeadingId,
|
|
845
|
+
...attachRef(this.opts.ref),
|
|
874
846
|
}));
|
|
875
847
|
}
|
|
876
848
|
export function useMenuRoot(props) {
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
import { box, mergeProps } from "svelte-toolbelt";
|
|
3
3
|
import type { MenubarContentStaticProps } from "../types.js";
|
|
4
4
|
import { useMenubarContent } from "../menubar.svelte.js";
|
|
5
|
-
import {
|
|
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";
|
|
8
8
|
|
|
9
|
+
const uid = $props.id();
|
|
10
|
+
|
|
9
11
|
let {
|
|
10
12
|
ref = $bindable(null),
|
|
11
13
|
interactOutsideBehavior = "close",
|
|
12
|
-
id =
|
|
14
|
+
id = createId(uid),
|
|
13
15
|
onInteractOutside = noop,
|
|
14
16
|
onCloseAutoFocus = noop,
|
|
15
17
|
onFocusOutside = noop,
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
import type { MenubarContentProps } from "../types.js";
|
|
4
4
|
import { useMenubarContent } from "../menubar.svelte.js";
|
|
5
5
|
import MenuContent from "../../menu/components/menu-content.svelte";
|
|
6
|
-
import {
|
|
6
|
+
import { createId } from "../../../internal/create-id.js";
|
|
7
7
|
import { noop } from "../../../internal/noop.js";
|
|
8
8
|
|
|
9
|
+
const uid = $props.id();
|
|
10
|
+
|
|
9
11
|
let {
|
|
10
12
|
ref = $bindable(null),
|
|
11
13
|
interactOutsideBehavior = "close",
|
|
12
|
-
id =
|
|
14
|
+
id = createId(uid),
|
|
13
15
|
onInteractOutside = noop,
|
|
14
16
|
onFocusOutside = noop,
|
|
15
17
|
onCloseAutoFocus = noop,
|