bits-ui 1.8.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bits/accordion/accordion.svelte.d.ts +56 -53
- package/dist/bits/accordion/accordion.svelte.js +78 -89
- package/dist/bits/accordion/components/accordion-content.svelte +5 -3
- package/dist/bits/accordion/components/accordion-header.svelte +4 -2
- package/dist/bits/accordion/components/accordion-item.svelte +6 -3
- package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
- package/dist/bits/accordion/components/accordion.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
- package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
- package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
- package/dist/bits/avatar/avatar.svelte.d.ts +2 -1
- package/dist/bits/avatar/avatar.svelte.js +8 -6
- package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
- package/dist/bits/avatar/components/avatar-image.svelte +4 -2
- package/dist/bits/avatar/components/avatar.svelte +4 -2
- package/dist/bits/button/components/button.svelte +1 -1
- package/dist/bits/calendar/calendar.svelte.d.ts +3 -9
- package/dist/bits/calendar/calendar.svelte.js +55 -41
- package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-day.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
- package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
- package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
- package/dist/bits/calendar/components/calendar-header.svelte +4 -2
- package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
- package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
- package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
- package/dist/bits/checkbox/checkbox.svelte.js +4 -14
- package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
- package/dist/bits/checkbox/components/checkbox.svelte +4 -2
- package/dist/bits/collapsible/collapsible.svelte.js +4 -10
- package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
- package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
- package/dist/bits/collapsible/components/collapsible.svelte +4 -2
- package/dist/bits/combobox/components/combobox-input.svelte +3 -3
- package/dist/bits/combobox/components/combobox.svelte +6 -1
- package/dist/bits/combobox/types.d.ts +18 -1
- package/dist/bits/command/command.svelte.js +13 -45
- package/dist/bits/command/components/_command-label.svelte +6 -7
- package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
- package/dist/bits/command/components/command-empty.svelte +4 -2
- package/dist/bits/command/components/command-group-heading.svelte +4 -2
- package/dist/bits/command/components/command-group-items.svelte +4 -2
- package/dist/bits/command/components/command-group.svelte +4 -2
- package/dist/bits/command/components/command-input.svelte +4 -2
- package/dist/bits/command/components/command-item.svelte +4 -2
- package/dist/bits/command/components/command-link-item.svelte +4 -2
- package/dist/bits/command/components/command-list.svelte +4 -2
- package/dist/bits/command/components/command-loading.svelte +4 -2
- package/dist/bits/command/components/command-separator.svelte +4 -2
- package/dist/bits/command/components/command-viewport.svelte +4 -2
- package/dist/bits/command/components/command.svelte +4 -2
- package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
- package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
- package/dist/bits/date-field/components/date-field-input.svelte +4 -2
- package/dist/bits/date-field/components/date-field-label.svelte +4 -2
- package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
- package/dist/bits/date-field/date-field.svelte.d.ts +7 -5
- package/dist/bits/date-field/date-field.svelte.js +29 -38
- package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
- package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
- package/dist/bits/date-range-field/date-range-field.svelte.d.ts +2 -0
- package/dist/bits/date-range-field/date-range-field.svelte.js +6 -14
- package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
- package/dist/bits/dialog/components/dialog-close.svelte +4 -2
- package/dist/bits/dialog/components/dialog-content.svelte +8 -2
- package/dist/bits/dialog/components/dialog-description.svelte +4 -2
- package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
- package/dist/bits/dialog/components/dialog-title.svelte +4 -2
- package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
- package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
- package/dist/bits/dialog/dialog.svelte.js +19 -47
- package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
- package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
- package/dist/bits/index.d.ts +2 -0
- package/dist/bits/index.js +2 -0
- package/dist/bits/label/components/label.svelte +4 -2
- package/dist/bits/label/label.svelte.js +2 -2
- package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
- package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
- package/dist/bits/link-preview/link-preview.svelte.d.ts +2 -0
- package/dist/bits/link-preview/link-preview.svelte.js +13 -19
- package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
- package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
- package/dist/bits/menu/components/menu-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-content.svelte +6 -5
- package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
- package/dist/bits/menu/components/menu-group.svelte +4 -2
- package/dist/bits/menu/components/menu-item.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
- package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
- package/dist/bits/menu/components/menu-separator.svelte +4 -2
- package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
- package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
- package/dist/bits/menu/components/menu-trigger.svelte +5 -3
- package/dist/bits/menu/menu.svelte.d.ts +9 -20
- package/dist/bits/menu/menu.svelte.js +40 -63
- package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
- package/dist/bits/menubar/components/menubar-content.svelte +4 -2
- package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
- package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
- package/dist/bits/menubar/components/menubar.svelte +4 -2
- package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
- package/dist/bits/menubar/menubar.svelte.js +40 -56
- package/dist/bits/meter/components/meter.svelte +4 -2
- package/dist/bits/meter/meter.svelte.js +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
- package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
- package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
- package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
- package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
- package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
- package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +3 -1
- package/dist/bits/navigation-menu/navigation-menu.svelte.js +33 -60
- package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination-page.svelte +4 -2
- package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
- package/dist/bits/pagination/components/pagination.svelte +4 -2
- package/dist/bits/pagination/pagination.svelte.js +4 -4
- package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
- package/dist/bits/pin-input/components/pin-input.svelte +5 -3
- package/dist/bits/pin-input/pin-input.svelte.d.ts +4 -2
- package/dist/bits/pin-input/pin-input.svelte.js +20 -22
- package/dist/bits/pin-input/usePasswordManager.svelte.d.ts +3 -2
- package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -5
- package/dist/bits/popover/components/popover-close.svelte +4 -2
- package/dist/bits/popover/components/popover-content-static.svelte +6 -2
- package/dist/bits/popover/components/popover-content.svelte +6 -2
- package/dist/bits/popover/components/popover-trigger.svelte +5 -3
- package/dist/bits/popover/popover.svelte.js +4 -18
- package/dist/bits/progress/components/progress.svelte +4 -2
- package/dist/bits/progress/progress.svelte.js +2 -2
- package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
- package/dist/bits/radio-group/components/radio-group.svelte +4 -2
- package/dist/bits/radio-group/radio-group.svelte.js +4 -7
- package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
- package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
- package/dist/bits/range-calendar/range-calendar.svelte.d.ts +2 -0
- package/dist/bits/range-calendar/range-calendar.svelte.js +12 -6
- package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
- package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
- package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
- package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
- package/dist/bits/scroll-area/scroll-area.svelte.d.ts +2 -0
- package/dist/bits/scroll-area/scroll-area.svelte.js +27 -58
- package/dist/bits/select/components/select-content-static.svelte +6 -2
- package/dist/bits/select/components/select-content.svelte +6 -2
- package/dist/bits/select/components/select-group-heading.svelte +3 -2
- package/dist/bits/select/components/select-group.svelte +4 -2
- package/dist/bits/select/components/select-item.svelte +4 -2
- package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
- package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
- package/dist/bits/select/components/select-trigger.svelte +5 -3
- package/dist/bits/select/components/select-viewport.svelte +4 -2
- package/dist/bits/select/components/select.svelte +7 -1
- package/dist/bits/select/select.svelte.d.ts +5 -19
- package/dist/bits/select/select.svelte.js +43 -60
- package/dist/bits/separator/components/separator.svelte +4 -2
- package/dist/bits/separator/separator.svelte.js +2 -2
- package/dist/bits/slider/components/slider-range.svelte +4 -2
- package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
- package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-thumb.svelte +4 -2
- package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
- package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
- package/dist/bits/slider/components/slider-tick.svelte +4 -2
- package/dist/bits/slider/components/slider.svelte +24 -5
- package/dist/bits/slider/exports.d.ts +3 -1
- package/dist/bits/slider/exports.js +2 -0
- package/dist/bits/slider/helpers.d.ts +14 -0
- package/dist/bits/slider/helpers.js +122 -0
- package/dist/bits/slider/slider.svelte.d.ts +91 -5
- package/dist/bits/slider/slider.svelte.js +194 -101
- package/dist/bits/slider/types.d.ts +105 -11
- package/dist/bits/switch/components/switch-thumb.svelte +4 -2
- package/dist/bits/switch/components/switch.svelte +4 -2
- package/dist/bits/switch/switch.svelte.js +3 -3
- package/dist/bits/tabs/components/tabs-content.svelte +4 -2
- package/dist/bits/tabs/components/tabs-list.svelte +4 -2
- package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
- package/dist/bits/tabs/components/tabs.svelte +4 -2
- package/dist/bits/tabs/tabs.svelte.js +6 -6
- package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
- package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
- package/dist/bits/time-field/components/time-field-input.svelte +39 -0
- package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-label.svelte +34 -0
- package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
- package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
- package/dist/bits/time-field/components/time-field.svelte +94 -0
- package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
- package/dist/bits/time-field/exports.d.ts +5 -0
- package/dist/bits/time-field/exports.js +4 -0
- package/dist/bits/time-field/index.d.ts +1 -0
- package/dist/bits/time-field/index.js +1 -0
- package/dist/bits/time-field/time-field.svelte.d.ts +417 -0
- package/dist/bits/time-field/time-field.svelte.js +980 -0
- package/dist/bits/time-field/types.d.ts +137 -0
- package/dist/bits/time-field/types.js +1 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
- package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
- package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
- package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
- package/dist/bits/time-range-field/exports.d.ts +5 -0
- package/dist/bits/time-range-field/exports.js +4 -0
- package/dist/bits/time-range-field/index.d.ts +1 -0
- package/dist/bits/time-range-field/index.js +1 -0
- package/dist/bits/time-range-field/time-range-field.svelte.d.ts +92 -0
- package/dist/bits/time-range-field/time-range-field.svelte.js +212 -0
- package/dist/bits/time-range-field/types.d.ts +150 -0
- package/dist/bits/time-range-field/types.js +1 -0
- package/dist/bits/toggle/components/toggle.svelte +4 -2
- package/dist/bits/toggle/toggle.svelte.js +2 -2
- package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
- package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
- package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
- package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
- package/dist/bits/toolbar/components/toolbar.svelte +4 -2
- package/dist/bits/toolbar/toolbar.svelte.js +7 -7
- package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
- package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
- package/dist/bits/tooltip/tooltip.svelte.d.ts +2 -0
- package/dist/bits/tooltip/tooltip.svelte.js +6 -15
- package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
- package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
- package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
- package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +7 -27
- package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
- package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +15 -16
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
- package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
- package/dist/bits/utilities/portal/types.d.ts +1 -1
- package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
- package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
- package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
- package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +5 -1
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +8 -14
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/box-auto-reset.svelte.d.ts +7 -1
- package/dist/internal/box-auto-reset.svelte.js +11 -6
- package/dist/internal/create-id.d.ts +8 -0
- package/dist/internal/create-id.js +5 -0
- package/dist/internal/date-time/announcer.d.ts +1 -1
- package/dist/internal/date-time/announcer.js +20 -20
- package/dist/internal/date-time/calendar-helpers.svelte.js +7 -5
- package/dist/internal/date-time/field/helpers.d.ts +9 -2
- package/dist/internal/date-time/field/helpers.js +16 -9
- package/dist/internal/date-time/field/parts.d.ts +3 -1
- package/dist/internal/date-time/field/parts.js +10 -2
- package/dist/internal/date-time/field/segments.d.ts +9 -0
- package/dist/internal/date-time/field/segments.js +65 -0
- package/dist/internal/date-time/field/time-helpers.d.ts +83 -0
- package/dist/internal/date-time/field/time-helpers.js +301 -0
- package/dist/internal/date-time/field/types.d.ts +2 -2
- package/dist/internal/date-time/formatter.d.ts +11 -1
- package/dist/internal/date-time/formatter.js +56 -0
- package/dist/internal/date-time/utils.d.ts +7 -2
- package/dist/internal/date-time/utils.js +15 -1
- package/dist/internal/dom.d.ts +0 -1
- package/dist/internal/dom.js +0 -3
- package/dist/internal/focus.d.ts +2 -2
- package/dist/internal/focus.js +14 -9
- package/dist/internal/math.d.ts +0 -4
- package/dist/internal/math.js +0 -28
- package/dist/internal/tabbable.d.ts +0 -2
- package/dist/internal/tabbable.js +10 -14
- package/dist/internal/use-data-typeahead.svelte.d.ts +1 -0
- package/dist/internal/use-data-typeahead.svelte.js +4 -1
- package/dist/internal/use-dom-typeahead.svelte.d.ts +3 -1
- package/dist/internal/use-dom-typeahead.svelte.js +5 -2
- package/dist/internal/use-grace-area.svelte.js +9 -5
- package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
- package/dist/internal/use-roving-focus.svelte.js +10 -11
- package/dist/shared/date/types.d.ts +27 -4
- package/dist/shared/index.d.ts +2 -2
- package/dist/types.d.ts +2 -0
- package/package.json +18 -16
- package/dist/bits/date-field/components/date-field-error.svelte +0 -0
- package/dist/internal/use-size.svelte.d.ts +0 -7
- package/dist/internal/use-size.svelte.js +0 -54
|
@@ -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 {};
|