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
|
@@ -64,3 +64,125 @@ export function getTickStyles(direction, tickPosition, offsetPercentage) {
|
|
|
64
64
|
}
|
|
65
65
|
return style;
|
|
66
66
|
}
|
|
67
|
+
export function getTickLabelStyles(direction, tickPosition, labelPosition = "top") {
|
|
68
|
+
const style = {
|
|
69
|
+
position: "absolute",
|
|
70
|
+
};
|
|
71
|
+
if (direction === "lr" || direction === "rl") {
|
|
72
|
+
// Horizontal slider
|
|
73
|
+
style.left = direction === "lr" ? `${tickPosition}%` : undefined;
|
|
74
|
+
style.right = direction === "rl" ? `${tickPosition}%` : undefined;
|
|
75
|
+
style.translate = "-50% 0";
|
|
76
|
+
if (labelPosition === "top") {
|
|
77
|
+
style.bottom = "100%";
|
|
78
|
+
}
|
|
79
|
+
else if (labelPosition === "bottom") {
|
|
80
|
+
style.top = "100%";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Vertical slider - use same positioning as ticks
|
|
85
|
+
if (direction === "tb") {
|
|
86
|
+
style.top = `${tickPosition}%`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
style.bottom = `${tickPosition}%`;
|
|
90
|
+
}
|
|
91
|
+
style.translate = "0 50%";
|
|
92
|
+
if (labelPosition === "left") {
|
|
93
|
+
style.right = "100%";
|
|
94
|
+
}
|
|
95
|
+
else if (labelPosition === "right") {
|
|
96
|
+
style.left = "100%";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return style;
|
|
100
|
+
}
|
|
101
|
+
export function getThumbLabelStyles(direction, thumbPosition, labelPosition = "top") {
|
|
102
|
+
const style = {
|
|
103
|
+
position: "absolute",
|
|
104
|
+
};
|
|
105
|
+
if (direction === "lr" || direction === "rl") {
|
|
106
|
+
// Horizontal slider
|
|
107
|
+
style.left = direction === "lr" ? `${thumbPosition}%` : undefined;
|
|
108
|
+
style.right = direction === "rl" ? `${thumbPosition}%` : undefined;
|
|
109
|
+
style.translate = "-50% 0";
|
|
110
|
+
if (labelPosition === "top") {
|
|
111
|
+
style.bottom = "100%";
|
|
112
|
+
}
|
|
113
|
+
else if (labelPosition === "bottom") {
|
|
114
|
+
style.top = "100%";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// Vertical slider
|
|
119
|
+
if (direction === "tb") {
|
|
120
|
+
style.top = `${thumbPosition}%`;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
style.bottom = `${thumbPosition}%`;
|
|
124
|
+
}
|
|
125
|
+
style.translate = "0 -50%";
|
|
126
|
+
if (labelPosition === "left") {
|
|
127
|
+
style.right = "100%";
|
|
128
|
+
}
|
|
129
|
+
else if (labelPosition === "right") {
|
|
130
|
+
style.left = "100%";
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return style;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Normalizes step to always be a sorted array of valid values within min/max range
|
|
137
|
+
*/
|
|
138
|
+
export function normalizeSteps(step, min, max) {
|
|
139
|
+
if (typeof step === "number") {
|
|
140
|
+
// generate regular steps - match original behavior exactly
|
|
141
|
+
const difference = max - min;
|
|
142
|
+
let count = Math.ceil(difference / step);
|
|
143
|
+
if (difference % step === 0) {
|
|
144
|
+
count++;
|
|
145
|
+
}
|
|
146
|
+
const steps = [];
|
|
147
|
+
for (let i = 0; i < count; i++) {
|
|
148
|
+
const value = min + i * step;
|
|
149
|
+
steps.push(value);
|
|
150
|
+
}
|
|
151
|
+
return steps;
|
|
152
|
+
}
|
|
153
|
+
return [...new Set(step)].filter((value) => value >= min && value <= max).sort((a, b) => a - b);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Snaps a value to the nearest step in a custom steps array
|
|
157
|
+
*/
|
|
158
|
+
export function snapValueToCustomSteps(value, steps) {
|
|
159
|
+
if (steps.length === 0)
|
|
160
|
+
return value;
|
|
161
|
+
// Find the closest step
|
|
162
|
+
let closest = steps[0];
|
|
163
|
+
let minDistance = Math.abs(value - closest);
|
|
164
|
+
for (const step of steps) {
|
|
165
|
+
const distance = Math.abs(value - step);
|
|
166
|
+
if (distance < minDistance) {
|
|
167
|
+
minDistance = distance;
|
|
168
|
+
closest = step;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return closest;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Gets the next/previous step value for keyboard navigation
|
|
175
|
+
*/
|
|
176
|
+
export function getAdjacentStepValue(currentValue, steps, direction) {
|
|
177
|
+
const currentIndex = steps.indexOf(currentValue);
|
|
178
|
+
if (currentIndex === -1) {
|
|
179
|
+
// current value is not in steps, snap to nearest
|
|
180
|
+
return snapValueToCustomSteps(currentValue, steps);
|
|
181
|
+
}
|
|
182
|
+
if (direction === "next") {
|
|
183
|
+
return currentIndex < steps.length - 1 ? steps[currentIndex + 1] : currentValue;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return currentIndex > 0 ? steps[currentIndex - 1] : currentValue;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { type Box, type ReadableBox } from "svelte-toolbelt";
|
|
2
|
+
import { Context } from "runed";
|
|
2
3
|
import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
|
|
3
4
|
import type { BitsKeyboardEvent, OnChangeFn, WithRefProps } from "../../internal/types.js";
|
|
4
5
|
import type { Direction, Orientation, SliderThumbPositioning } from "../../shared/index.js";
|
|
6
|
+
import type { SliderLabelPosition } from "./types.js";
|
|
5
7
|
type SliderBaseRootStateProps = WithRefProps<ReadableBoxedValues<{
|
|
6
8
|
disabled: boolean;
|
|
7
9
|
orientation: Orientation;
|
|
8
10
|
min: number;
|
|
9
11
|
max: number;
|
|
10
|
-
step: number;
|
|
12
|
+
step: number | number[];
|
|
11
13
|
dir: Direction;
|
|
12
14
|
autoSort: boolean;
|
|
13
15
|
thumbPositioning: SliderThumbPositioning;
|
|
16
|
+
trackPadding?: number;
|
|
14
17
|
}>>;
|
|
15
18
|
declare class SliderBaseRootState {
|
|
16
19
|
#private;
|
|
17
20
|
readonly opts: SliderBaseRootStateProps;
|
|
18
21
|
isActive: boolean;
|
|
19
22
|
direction: "rl" | "lr" | "tb" | "bt";
|
|
23
|
+
normalizedSteps: number[];
|
|
20
24
|
constructor(opts: SliderBaseRootStateProps);
|
|
21
25
|
isThumbActive(_index: number): boolean;
|
|
22
26
|
getAllThumbs: () => HTMLElement[];
|
|
@@ -41,6 +45,7 @@ declare class SliderSingleRootState extends SliderBaseRootState {
|
|
|
41
45
|
readonly opts: SliderSingleRootStateProps;
|
|
42
46
|
isMulti: false;
|
|
43
47
|
constructor(opts: SliderSingleRootStateProps);
|
|
48
|
+
isTickValueSelected: (tickValue: number) => boolean;
|
|
44
49
|
applyPosition({ clientXY, start, end }: {
|
|
45
50
|
clientXY: number;
|
|
46
51
|
start: number;
|
|
@@ -58,7 +63,7 @@ declare class SliderSingleRootState extends SliderBaseRootState {
|
|
|
58
63
|
readonly "aria-disabled": "true" | "false";
|
|
59
64
|
readonly "aria-orientation": "horizontal" | "vertical";
|
|
60
65
|
readonly "data-value": number;
|
|
61
|
-
readonly
|
|
66
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
62
67
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
63
68
|
readonly "data-slider-thumb": "";
|
|
64
69
|
}[];
|
|
@@ -68,13 +73,30 @@ declare class SliderSingleRootState extends SliderBaseRootState {
|
|
|
68
73
|
readonly "data-orientation": "horizontal" | "vertical";
|
|
69
74
|
readonly "data-bounded": "" | undefined;
|
|
70
75
|
readonly "data-value": number;
|
|
76
|
+
readonly "data-selected": "" | undefined;
|
|
71
77
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
72
78
|
readonly "data-slider-tick": "";
|
|
73
79
|
}[];
|
|
74
80
|
ticksRenderArr: number[];
|
|
81
|
+
tickItemsArr: {
|
|
82
|
+
value: number;
|
|
83
|
+
index: number;
|
|
84
|
+
}[];
|
|
85
|
+
thumbItemsArr: {
|
|
86
|
+
value: number;
|
|
87
|
+
index: number;
|
|
88
|
+
}[];
|
|
75
89
|
snippetProps: {
|
|
76
90
|
readonly ticks: number[];
|
|
77
91
|
readonly thumbs: number[];
|
|
92
|
+
readonly tickItems: {
|
|
93
|
+
value: number;
|
|
94
|
+
index: number;
|
|
95
|
+
}[];
|
|
96
|
+
readonly thumbItems: {
|
|
97
|
+
value: number;
|
|
98
|
+
index: number;
|
|
99
|
+
}[];
|
|
78
100
|
};
|
|
79
101
|
}
|
|
80
102
|
type SliderMultiRootStateProps = SliderBaseRootStateProps & ReadableBoxedValues<{
|
|
@@ -92,6 +114,7 @@ declare class SliderMultiRootState extends SliderBaseRootState {
|
|
|
92
114
|
} | null;
|
|
93
115
|
currentThumbIdx: number;
|
|
94
116
|
constructor(opts: SliderMultiRootStateProps);
|
|
117
|
+
isTickValueSelected: (tickValue: number) => boolean;
|
|
95
118
|
isThumbActive(index: number): boolean;
|
|
96
119
|
applyPosition({ clientXY, activeThumbIdx, start, end, }: {
|
|
97
120
|
clientXY: number;
|
|
@@ -112,7 +135,7 @@ declare class SliderMultiRootState extends SliderBaseRootState {
|
|
|
112
135
|
readonly "aria-disabled": "true" | "false";
|
|
113
136
|
readonly "aria-orientation": "horizontal" | "vertical";
|
|
114
137
|
readonly "data-value": number | undefined;
|
|
115
|
-
readonly
|
|
138
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
116
139
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
117
140
|
readonly "data-slider-thumb": "";
|
|
118
141
|
}[];
|
|
@@ -126,9 +149,25 @@ declare class SliderMultiRootState extends SliderBaseRootState {
|
|
|
126
149
|
readonly "data-slider-tick": "";
|
|
127
150
|
}[];
|
|
128
151
|
ticksRenderArr: number[];
|
|
152
|
+
tickItemsArr: {
|
|
153
|
+
value: number;
|
|
154
|
+
index: number;
|
|
155
|
+
}[];
|
|
156
|
+
thumbItemsArr: {
|
|
157
|
+
value: number;
|
|
158
|
+
index: number;
|
|
159
|
+
}[];
|
|
129
160
|
snippetProps: {
|
|
130
161
|
readonly ticks: number[];
|
|
131
162
|
readonly thumbs: number[];
|
|
163
|
+
readonly tickItems: {
|
|
164
|
+
value: number;
|
|
165
|
+
index: number;
|
|
166
|
+
}[];
|
|
167
|
+
readonly thumbItems: {
|
|
168
|
+
value: number;
|
|
169
|
+
index: number;
|
|
170
|
+
}[];
|
|
132
171
|
};
|
|
133
172
|
}
|
|
134
173
|
type SliderRangeStateProps = WithRefProps;
|
|
@@ -1811,6 +1850,8 @@ declare class SliderThumbState {
|
|
|
1811
1850
|
readonly id: string;
|
|
1812
1851
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
1813
1852
|
readonly "data-active": "" | undefined;
|
|
1853
|
+
readonly "data-disabled": "" | undefined;
|
|
1854
|
+
readonly tabindex: 0 | -1;
|
|
1814
1855
|
readonly role: "slider";
|
|
1815
1856
|
readonly "aria-valuemin": number;
|
|
1816
1857
|
readonly "aria-valuemax": number;
|
|
@@ -1818,13 +1859,15 @@ declare class SliderThumbState {
|
|
|
1818
1859
|
readonly "aria-disabled": "true" | "false";
|
|
1819
1860
|
readonly "aria-orientation": "horizontal" | "vertical";
|
|
1820
1861
|
readonly "data-value": number;
|
|
1821
|
-
readonly
|
|
1862
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
1822
1863
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
1823
1864
|
readonly "data-slider-thumb": "";
|
|
1824
1865
|
} | {
|
|
1825
1866
|
readonly id: string;
|
|
1826
1867
|
readonly onkeydown: (e: BitsKeyboardEvent) => void;
|
|
1827
1868
|
readonly "data-active": "" | undefined;
|
|
1869
|
+
readonly "data-disabled": "" | undefined;
|
|
1870
|
+
readonly tabindex: 0 | -1;
|
|
1828
1871
|
readonly role: "slider";
|
|
1829
1872
|
readonly "aria-valuemin": number;
|
|
1830
1873
|
readonly "aria-valuemax": number;
|
|
@@ -1832,7 +1875,7 @@ declare class SliderThumbState {
|
|
|
1832
1875
|
readonly "aria-disabled": "true" | "false";
|
|
1833
1876
|
readonly "aria-orientation": "horizontal" | "vertical";
|
|
1834
1877
|
readonly "data-value": number | undefined;
|
|
1835
|
-
readonly
|
|
1878
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
1836
1879
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
1837
1880
|
readonly "data-slider-thumb": "";
|
|
1838
1881
|
};
|
|
@@ -1850,6 +1893,7 @@ declare class SliderTickState {
|
|
|
1850
1893
|
readonly "data-orientation": "horizontal" | "vertical";
|
|
1851
1894
|
readonly "data-bounded": "" | undefined;
|
|
1852
1895
|
readonly "data-value": number;
|
|
1896
|
+
readonly "data-selected": "" | undefined;
|
|
1853
1897
|
readonly style: import("../../shared/index.js").StyleProperties;
|
|
1854
1898
|
readonly "data-slider-tick": "";
|
|
1855
1899
|
} | {
|
|
@@ -1862,14 +1906,56 @@ declare class SliderTickState {
|
|
|
1862
1906
|
readonly "data-slider-tick": "";
|
|
1863
1907
|
};
|
|
1864
1908
|
}
|
|
1909
|
+
type SliderTickLabelStateProps = WithRefProps & ReadableBoxedValues<{
|
|
1910
|
+
index: number;
|
|
1911
|
+
position?: SliderLabelPosition;
|
|
1912
|
+
}>;
|
|
1913
|
+
declare class SliderTickLabelState {
|
|
1914
|
+
readonly opts: SliderTickLabelStateProps;
|
|
1915
|
+
readonly root: SliderRootState;
|
|
1916
|
+
constructor(opts: SliderTickLabelStateProps, root: SliderRootState);
|
|
1917
|
+
props: {
|
|
1918
|
+
readonly id: string;
|
|
1919
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
1920
|
+
readonly "data-disabled": "" | undefined;
|
|
1921
|
+
readonly "data-bounded": "" | undefined;
|
|
1922
|
+
readonly "data-value": number;
|
|
1923
|
+
readonly "data-selected": "" | undefined;
|
|
1924
|
+
readonly "data-position": SliderLabelPosition;
|
|
1925
|
+
readonly style: import("../../shared/index.js").StyleProperties;
|
|
1926
|
+
readonly "data-slider-tick-label": "";
|
|
1927
|
+
};
|
|
1928
|
+
}
|
|
1929
|
+
type SliderThumbLabelStateProps = WithRefProps & ReadableBoxedValues<{
|
|
1930
|
+
index: number;
|
|
1931
|
+
position?: SliderLabelPosition;
|
|
1932
|
+
}>;
|
|
1933
|
+
declare class SliderThumbLabelState {
|
|
1934
|
+
readonly opts: SliderThumbLabelStateProps;
|
|
1935
|
+
readonly root: SliderRootState;
|
|
1936
|
+
constructor(opts: SliderThumbLabelStateProps, root: SliderRootState);
|
|
1937
|
+
props: {
|
|
1938
|
+
readonly id: string;
|
|
1939
|
+
readonly "data-orientation": "horizontal" | "vertical";
|
|
1940
|
+
readonly "data-disabled": "" | undefined;
|
|
1941
|
+
readonly "data-value": number;
|
|
1942
|
+
readonly "data-active": "" | undefined;
|
|
1943
|
+
readonly "data-position": SliderLabelPosition;
|
|
1944
|
+
readonly style: import("../../shared/index.js").StyleProperties;
|
|
1945
|
+
readonly "data-slider-thumb-label": "";
|
|
1946
|
+
};
|
|
1947
|
+
}
|
|
1865
1948
|
type SliderRootState = SliderSingleRootState | SliderMultiRootState;
|
|
1866
1949
|
type InitSliderRootStateProps = {
|
|
1867
1950
|
type: "single" | "multiple";
|
|
1868
1951
|
value: Box<number> | Box<number[]>;
|
|
1869
1952
|
onValueCommit: ReadableBox<OnChangeFn<number>> | ReadableBox<OnChangeFn<number[]>>;
|
|
1870
1953
|
} & Omit<SliderBaseRootStateProps, "type">;
|
|
1954
|
+
export declare const SliderRootContext: Context<SliderRootState>;
|
|
1871
1955
|
export declare function useSliderRoot(props: InitSliderRootStateProps): SliderRootState;
|
|
1872
1956
|
export declare function useSliderRange(props: SliderRangeStateProps): SliderRangeState;
|
|
1873
1957
|
export declare function useSliderThumb(props: SliderThumbStateProps): SliderThumbState;
|
|
1874
1958
|
export declare function useSliderTick(props: SliderTickStateProps): SliderTickState;
|
|
1959
|
+
export declare function useSliderTickLabel(props: SliderTickLabelStateProps): SliderTickLabelState;
|
|
1960
|
+
export declare function useSliderThumbLabel(props: SliderThumbLabelStateProps): SliderThumbLabelState;
|
|
1875
1961
|
export {};
|