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
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { executeCallbacks } from "svelte-toolbelt";
|
|
2
2
|
import { Previous, watch } from "runed";
|
|
3
3
|
import { on } from "svelte/events";
|
|
4
4
|
import { useStateMachine } from "../../../internal/use-state-machine.svelte.js";
|
|
5
|
-
export function usePresence(present,
|
|
5
|
+
export function usePresence(present, ref) {
|
|
6
6
|
let styles = $state({});
|
|
7
7
|
let prevAnimationNameState = $state("none");
|
|
8
8
|
const initialState = present.current ? "mounted" : "unmounted";
|
|
9
|
-
let node = $state(null);
|
|
10
9
|
const prevPresent = new Previous(() => present.current);
|
|
11
|
-
watch([() => id.current, () => present.current], ([id, present]) => {
|
|
12
|
-
if (!id || !present)
|
|
13
|
-
return;
|
|
14
|
-
afterTick(() => {
|
|
15
|
-
node = document.getElementById(id);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
10
|
const { state, dispatch } = useStateMachine(initialState, {
|
|
19
11
|
mounted: {
|
|
20
12
|
UNMOUNT: "unmounted",
|
|
@@ -28,18 +20,15 @@ export function usePresence(present, id) {
|
|
|
28
20
|
MOUNT: "mounted",
|
|
29
21
|
},
|
|
30
22
|
});
|
|
31
|
-
watch(() => present.current, (
|
|
32
|
-
if (!
|
|
33
|
-
node = document.getElementById(id.current);
|
|
34
|
-
}
|
|
35
|
-
if (!node)
|
|
23
|
+
watch(() => present.current, () => {
|
|
24
|
+
if (!ref.current)
|
|
36
25
|
return;
|
|
37
|
-
const hasPresentChanged =
|
|
26
|
+
const hasPresentChanged = present.current !== prevPresent.current;
|
|
38
27
|
if (!hasPresentChanged)
|
|
39
28
|
return;
|
|
40
29
|
const prevAnimationName = prevAnimationNameState;
|
|
41
|
-
const currAnimationName = getAnimationName(
|
|
42
|
-
if (
|
|
30
|
+
const currAnimationName = getAnimationName(ref.current);
|
|
31
|
+
if (present.current) {
|
|
43
32
|
dispatch("MOUNT");
|
|
44
33
|
}
|
|
45
34
|
else if (currAnimationName === "none" || styles.display === "none") {
|
|
@@ -69,38 +58,32 @@ export function usePresence(present, id) {
|
|
|
69
58
|
* make sure we only trigger ANIMATION_END for the currently active animation.
|
|
70
59
|
*/
|
|
71
60
|
function handleAnimationEnd(event) {
|
|
72
|
-
if (!
|
|
73
|
-
node = document.getElementById(id.current);
|
|
74
|
-
if (!node)
|
|
61
|
+
if (!ref.current)
|
|
75
62
|
return;
|
|
76
|
-
const currAnimationName = getAnimationName(
|
|
63
|
+
const currAnimationName = getAnimationName(ref.current);
|
|
77
64
|
const isCurrentAnimation = currAnimationName.includes(event.animationName) || currAnimationName === "none";
|
|
78
|
-
if (event.target ===
|
|
65
|
+
if (event.target === ref.current && isCurrentAnimation) {
|
|
79
66
|
dispatch("ANIMATION_END");
|
|
80
67
|
}
|
|
81
68
|
}
|
|
82
69
|
function handleAnimationStart(event) {
|
|
83
|
-
if (!
|
|
84
|
-
node = document.getElementById(id.current);
|
|
85
|
-
if (!node)
|
|
70
|
+
if (!ref.current)
|
|
86
71
|
return;
|
|
87
|
-
if (event.target ===
|
|
88
|
-
prevAnimationNameState = getAnimationName(
|
|
72
|
+
if (event.target === ref.current) {
|
|
73
|
+
prevAnimationNameState = getAnimationName(ref.current);
|
|
89
74
|
}
|
|
90
75
|
}
|
|
91
76
|
watch(() => state.current, () => {
|
|
92
|
-
if (!
|
|
93
|
-
node = document.getElementById(id.current);
|
|
94
|
-
if (!node)
|
|
77
|
+
if (!ref.current)
|
|
95
78
|
return;
|
|
96
|
-
const currAnimationName = getAnimationName(
|
|
79
|
+
const currAnimationName = getAnimationName(ref.current);
|
|
97
80
|
prevAnimationNameState = state.current === "mounted" ? currAnimationName : "none";
|
|
98
81
|
});
|
|
99
|
-
watch(() =>
|
|
100
|
-
if (!
|
|
82
|
+
watch(() => ref.current, () => {
|
|
83
|
+
if (!ref.current)
|
|
101
84
|
return;
|
|
102
|
-
styles = getComputedStyle(
|
|
103
|
-
return executeCallbacks(on(
|
|
85
|
+
styles = getComputedStyle(ref.current);
|
|
86
|
+
return executeCallbacks(on(ref.current, "animationstart", handleAnimationStart), on(ref.current, "animationcancel", handleAnimationEnd), on(ref.current, "animationend", handleAnimationEnd));
|
|
104
87
|
});
|
|
105
88
|
const isPresentDerived = $derived(["mounted", "unmountSuspended"].includes(state.current));
|
|
106
89
|
return {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
id,
|
|
12
12
|
children,
|
|
13
13
|
enabled,
|
|
14
|
+
ref,
|
|
14
15
|
}: TextSelectionLayerImplProps = $props();
|
|
15
16
|
|
|
16
17
|
useTextSelectionLayer({
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
onPointerDown: box.with(() => onPointerDown),
|
|
19
20
|
onPointerUp: box.with(() => onPointerUp),
|
|
20
21
|
enabled: box.with(() => enabled && preventOverflowTextSelection),
|
|
22
|
+
ref,
|
|
21
23
|
});
|
|
22
24
|
</script>
|
|
23
25
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Snippet } from "svelte";
|
|
2
|
+
import type { ReadableBox } from "svelte-toolbelt";
|
|
2
3
|
export type PointerHandler = (e: PointerEvent) => void;
|
|
3
4
|
export type TextSelectionLayerProps = {
|
|
4
5
|
/**
|
|
@@ -28,4 +29,5 @@ export type TextSelectionLayerImplProps = {
|
|
|
28
29
|
* Callback fired when pointerup event triggers.
|
|
29
30
|
*/
|
|
30
31
|
onPointerUp?: PointerHandler;
|
|
32
|
+
ref: ReadableBox<HTMLElement | null>;
|
|
31
33
|
} & TextSelectionLayerProps;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { TextSelectionLayerImplProps } from "./types.js";
|
|
2
2
|
import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
|
|
3
|
-
type TextSelectionLayerStateProps = ReadableBoxedValues<Required<Omit<TextSelectionLayerImplProps, "children" | "preventOverflowTextSelection"
|
|
3
|
+
type TextSelectionLayerStateProps = ReadableBoxedValues<Required<Omit<TextSelectionLayerImplProps, "children" | "preventOverflowTextSelection" | "ref">> & {
|
|
4
|
+
ref: HTMLElement | null;
|
|
5
|
+
}>;
|
|
4
6
|
export declare class TextSelectionLayerState {
|
|
5
7
|
#private;
|
|
6
8
|
readonly opts: TextSelectionLayerStateProps;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { composeHandlers, executeCallbacks } from "svelte-toolbelt";
|
|
2
2
|
import { watch } from "runed";
|
|
3
3
|
import { on } from "svelte/events";
|
|
4
4
|
import { noop } from "../../../internal/noop.js";
|
|
@@ -8,14 +8,8 @@ globalThis.bitsTextSelectionLayers ??= new Map();
|
|
|
8
8
|
export class TextSelectionLayerState {
|
|
9
9
|
opts;
|
|
10
10
|
#unsubSelectionLock = noop;
|
|
11
|
-
#ref = box(null);
|
|
12
11
|
constructor(opts) {
|
|
13
12
|
this.opts = opts;
|
|
14
|
-
useRefById({
|
|
15
|
-
id: opts.id,
|
|
16
|
-
ref: this.#ref,
|
|
17
|
-
deps: () => this.opts.enabled.current,
|
|
18
|
-
});
|
|
19
13
|
let unsubEvents = noop;
|
|
20
14
|
watch(() => this.opts.enabled.current, (isEnabled) => {
|
|
21
15
|
if (isEnabled) {
|
|
@@ -34,7 +28,7 @@ export class TextSelectionLayerState {
|
|
|
34
28
|
return executeCallbacks(on(document, "pointerdown", this.#pointerdown), on(document, "pointerup", composeHandlers(this.#resetSelectionLock, this.opts.onPointerUp.current)));
|
|
35
29
|
}
|
|
36
30
|
#pointerdown = (e) => {
|
|
37
|
-
const node = this
|
|
31
|
+
const node = this.opts.ref.current;
|
|
38
32
|
const target = e.target;
|
|
39
33
|
if (!isHTMLElement(node) || !isHTMLElement(target) || !this.opts.enabled.current)
|
|
40
34
|
return;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Accordion, AlertDialog, AspectRatio, Avatar, Button, Calendar, Checkbox, Collapsible, Combobox, Command, ContextMenu, DateField, DatePicker, DateRangeField, DateRangePicker, Dialog, DropdownMenu, Label, LinkPreview, Menubar, Meter, NavigationMenu, Pagination, PinInput, Popover, Progress, RadioGroup, RangeCalendar, ScrollArea, Select, Separator, Slider, Switch, Tabs, Toggle, ToggleGroup, Toolbar, Tooltip, Portal, IsUsingKeyboard, computeCommandScore, } from "./bits/index.js";
|
|
1
|
+
export { Accordion, AlertDialog, AspectRatio, Avatar, Button, Calendar, Checkbox, Collapsible, Combobox, Command, ContextMenu, DateField, DatePicker, DateRangeField, DateRangePicker, Dialog, DropdownMenu, Label, LinkPreview, Menubar, Meter, NavigationMenu, Pagination, PinInput, Popover, Progress, RadioGroup, RangeCalendar, ScrollArea, Select, Separator, Slider, Switch, Tabs, TimeField, TimeRangeField, Toggle, ToggleGroup, Toolbar, Tooltip, Portal, IsUsingKeyboard, computeCommandScore, } from "./bits/index.js";
|
|
2
2
|
export * from "./shared/index.js";
|
|
3
3
|
export type * from "./shared/index.js";
|
|
4
4
|
export * from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Accordion, AlertDialog, AspectRatio, Avatar, Button, Calendar, Checkbox, Collapsible, Combobox, Command, ContextMenu, DateField, DatePicker, DateRangeField, DateRangePicker, Dialog, DropdownMenu, Label, LinkPreview, Menubar, Meter, NavigationMenu, Pagination, PinInput, Popover, Progress, RadioGroup, RangeCalendar, ScrollArea, Select, Separator, Slider, Switch, Tabs, Toggle, ToggleGroup, Toolbar, Tooltip, Portal, IsUsingKeyboard, computeCommandScore, } from "./bits/index.js";
|
|
1
|
+
export { Accordion, AlertDialog, AspectRatio, Avatar, Button, Calendar, Checkbox, Collapsible, Combobox, Command, ContextMenu, DateField, DatePicker, DateRangeField, DateRangePicker, Dialog, DropdownMenu, Label, LinkPreview, Menubar, Meter, NavigationMenu, Pagination, PinInput, Popover, Progress, RadioGroup, RangeCalendar, ScrollArea, Select, Separator, Slider, Switch, Tabs, TimeField, TimeRangeField, Toggle, ToggleGroup, Toolbar, Tooltip, Portal, IsUsingKeyboard, computeCommandScore, } from "./bits/index.js";
|
|
2
2
|
export * from "./shared/index.js";
|
|
3
3
|
export * from "./types.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a unique ID for a given uid and optional prefix.
|
|
3
|
+
*
|
|
4
|
+
* @param uid - the uid generated by $props.id()
|
|
5
|
+
* @param prefix - optional prefix to use for the id (defaults to "bits")
|
|
6
|
+
*/
|
|
7
|
+
export declare function createId(uid: string): string;
|
|
8
|
+
export declare function createId(prefix: string, uid: string): string;
|
|
@@ -76,4 +76,5 @@ export declare function setDescription(id: string, formatter: Formatter, value:
|
|
|
76
76
|
* date field is unmounted.
|
|
77
77
|
*/
|
|
78
78
|
export declare function removeDescriptionElement(id: string): void;
|
|
79
|
+
export declare function getDefaultHourCycle(locale: string): 12 | 24;
|
|
79
80
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { styleToString } from "svelte-toolbelt";
|
|
2
2
|
import { getPlaceholder } from "../placeholders.js";
|
|
3
3
|
import { hasTime, isZonedDateTime } from "../utils.js";
|
|
4
|
-
import { ALL_SEGMENT_PARTS, DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS,
|
|
4
|
+
import { ALL_SEGMENT_PARTS, DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS, EDITABLE_TIME_SEGMENT_PARTS, } from "./parts.js";
|
|
5
5
|
import { getSegments } from "./segments.js";
|
|
6
6
|
import { isBrowser, isNull, isNumberString } from "../../is.js";
|
|
7
7
|
import { useId } from "../../use-id.js";
|
|
@@ -289,7 +289,7 @@ export function isDateAndTimeSegmentObj(obj) {
|
|
|
289
289
|
return false;
|
|
290
290
|
}
|
|
291
291
|
return Object.entries(obj).every(([key, value]) => {
|
|
292
|
-
const validKey =
|
|
292
|
+
const validKey = EDITABLE_TIME_SEGMENT_PARTS.includes(key) ||
|
|
293
293
|
DATE_SEGMENT_PARTS.includes(key);
|
|
294
294
|
const validValue = key === "dayPeriod"
|
|
295
295
|
? value === "AM" || value === "PM" || value === null
|
|
@@ -376,3 +376,9 @@ export function removeDescriptionElement(id) {
|
|
|
376
376
|
return;
|
|
377
377
|
document.body.removeChild(el);
|
|
378
378
|
}
|
|
379
|
+
export function getDefaultHourCycle(locale) {
|
|
380
|
+
const formatter = new Intl.DateTimeFormat(locale, { hour: "numeric" });
|
|
381
|
+
const parts = formatter.formatToParts(new Date("2023-01-01T13:00:00"));
|
|
382
|
+
const hourPart = parts.find((part) => part.type === "hour");
|
|
383
|
+
return hourPart?.value === "1" ? 12 : 24;
|
|
384
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const DATE_SEGMENT_PARTS: readonly ["day", "month", "year"];
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const EDITABLE_TIME_SEGMENT_PARTS: readonly ["hour", "minute", "second", "dayPeriod"];
|
|
3
3
|
export declare const NON_EDITABLE_SEGMENT_PARTS: readonly ["literal", "timeZoneName"];
|
|
4
4
|
export declare const EDITABLE_SEGMENT_PARTS: readonly ["day", "month", "year", "hour", "minute", "second", "dayPeriod"];
|
|
5
5
|
export declare const ALL_SEGMENT_PARTS: readonly ["day", "month", "year", "hour", "minute", "second", "dayPeriod", "literal", "timeZoneName"];
|
|
6
|
+
export declare const ALL_TIME_SEGMENT_PARTS: readonly ["hour", "minute", "second", "dayPeriod", "literal", "timeZoneName"];
|
|
6
7
|
export declare const ALL_EXCEPT_LITERAL_PARTS: ("day" | "month" | "year" | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName")[];
|
|
8
|
+
export declare const ALL_TIME_EXCEPT_LITERAL_PARTS: ("hour" | "minute" | "second" | "dayPeriod" | "timeZoneName")[];
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
export const DATE_SEGMENT_PARTS = ["day", "month", "year"];
|
|
2
|
-
export const
|
|
2
|
+
export const EDITABLE_TIME_SEGMENT_PARTS = ["hour", "minute", "second", "dayPeriod"];
|
|
3
3
|
export const NON_EDITABLE_SEGMENT_PARTS = ["literal", "timeZoneName"];
|
|
4
|
-
export const EDITABLE_SEGMENT_PARTS = [
|
|
4
|
+
export const EDITABLE_SEGMENT_PARTS = [
|
|
5
|
+
...DATE_SEGMENT_PARTS,
|
|
6
|
+
...EDITABLE_TIME_SEGMENT_PARTS,
|
|
7
|
+
];
|
|
5
8
|
export const ALL_SEGMENT_PARTS = [
|
|
6
9
|
...EDITABLE_SEGMENT_PARTS,
|
|
7
10
|
...NON_EDITABLE_SEGMENT_PARTS,
|
|
8
11
|
];
|
|
12
|
+
export const ALL_TIME_SEGMENT_PARTS = [
|
|
13
|
+
...EDITABLE_TIME_SEGMENT_PARTS,
|
|
14
|
+
...NON_EDITABLE_SEGMENT_PARTS,
|
|
15
|
+
];
|
|
9
16
|
export const ALL_EXCEPT_LITERAL_PARTS = ALL_SEGMENT_PARTS.filter((part) => part !== "literal");
|
|
17
|
+
export const ALL_TIME_EXCEPT_LITERAL_PARTS = ALL_TIME_SEGMENT_PARTS.filter((part) => part !== "literal");
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* @param fieldNode - The ID of the field we're navigating within
|
|
6
6
|
*/
|
|
7
7
|
export declare function handleSegmentNavigation(e: KeyboardEvent, fieldNode: HTMLElement | null): void;
|
|
8
|
+
export declare function handleTimeSegmentNavigation(e: KeyboardEvent, fieldNode: HTMLElement | null): void;
|
|
8
9
|
/**
|
|
9
10
|
* Retrieves the next segment in the list of segments relative to the provided node.
|
|
10
11
|
*
|
|
@@ -29,11 +30,17 @@ export declare function getPrevNextSegments(startingNode: HTMLElement, fieldNode
|
|
|
29
30
|
next: HTMLElement | null | undefined;
|
|
30
31
|
prev: HTMLElement | null | undefined;
|
|
31
32
|
};
|
|
33
|
+
export declare function getPrevNextTimeSegments(startingNode: HTMLElement, fieldNode: HTMLElement | null): {
|
|
34
|
+
next: HTMLElement | null | undefined;
|
|
35
|
+
prev: HTMLElement | null | undefined;
|
|
36
|
+
};
|
|
32
37
|
/**
|
|
33
38
|
* Shifts the focus to the next segment in the list of segments
|
|
34
39
|
* within the field identified by the provided ID.
|
|
35
40
|
*/
|
|
36
41
|
export declare function moveToNextSegment(e: KeyboardEvent, fieldNode: HTMLElement | null): void;
|
|
42
|
+
export declare function moveToNextTimeSegment(e: KeyboardEvent, fieldNode: HTMLElement | null): void;
|
|
43
|
+
export declare function moveToPrevTimeSegment(e: KeyboardEvent, fieldNode: HTMLElement | null): void;
|
|
37
44
|
/**
|
|
38
45
|
* Shifts the focus to the previous segment in the list of segments
|
|
39
46
|
* within the field identified by the provided ID. If this is the first
|
|
@@ -45,6 +52,8 @@ export declare function isSegmentNavigationKey(key: string): boolean;
|
|
|
45
52
|
* Retrieves all the interactive segments within the field identified by the provided ID.
|
|
46
53
|
*/
|
|
47
54
|
export declare function getSegments(fieldNode: HTMLElement | null): HTMLElement[];
|
|
55
|
+
export declare function getTimeSegments(fieldNode: HTMLElement | null): HTMLElement[];
|
|
56
|
+
export declare function getFirstTimeSegment(fieldNode: HTMLElement | null): HTMLElement | undefined;
|
|
48
57
|
/**
|
|
49
58
|
* Get the first interactive segment within the field identified by the provided ID.
|
|
50
59
|
*/
|
|
@@ -23,6 +23,22 @@ export function handleSegmentNavigation(e, fieldNode) {
|
|
|
23
23
|
next.focus();
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
export function handleTimeSegmentNavigation(e, fieldNode) {
|
|
27
|
+
const currentTarget = e.currentTarget;
|
|
28
|
+
if (!isHTMLElement(currentTarget))
|
|
29
|
+
return;
|
|
30
|
+
const { prev, next } = getPrevNextTimeSegments(currentTarget, fieldNode);
|
|
31
|
+
if (e.key === kbd.ARROW_LEFT) {
|
|
32
|
+
if (!prev)
|
|
33
|
+
return;
|
|
34
|
+
prev.focus();
|
|
35
|
+
}
|
|
36
|
+
else if (e.key === kbd.ARROW_RIGHT) {
|
|
37
|
+
if (!next)
|
|
38
|
+
return;
|
|
39
|
+
next.focus();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
26
42
|
/**
|
|
27
43
|
* Retrieves the next segment in the list of segments relative to the provided node.
|
|
28
44
|
*
|
|
@@ -70,6 +86,19 @@ export function getPrevNextSegments(startingNode, fieldNode) {
|
|
|
70
86
|
prev: getPrevSegment(startingNode, segments),
|
|
71
87
|
};
|
|
72
88
|
}
|
|
89
|
+
export function getPrevNextTimeSegments(startingNode, fieldNode) {
|
|
90
|
+
const segments = getTimeSegments(fieldNode);
|
|
91
|
+
if (!segments.length) {
|
|
92
|
+
return {
|
|
93
|
+
next: null,
|
|
94
|
+
prev: null,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
next: getNextSegment(startingNode, segments),
|
|
99
|
+
prev: getPrevSegment(startingNode, segments),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
73
102
|
/**
|
|
74
103
|
* Shifts the focus to the next segment in the list of segments
|
|
75
104
|
* within the field identified by the provided ID.
|
|
@@ -83,6 +112,24 @@ export function moveToNextSegment(e, fieldNode) {
|
|
|
83
112
|
return;
|
|
84
113
|
next.focus();
|
|
85
114
|
}
|
|
115
|
+
export function moveToNextTimeSegment(e, fieldNode) {
|
|
116
|
+
const node = e.currentTarget;
|
|
117
|
+
if (!isHTMLElement(node))
|
|
118
|
+
return;
|
|
119
|
+
const { next } = getPrevNextTimeSegments(node, fieldNode);
|
|
120
|
+
if (!next)
|
|
121
|
+
return;
|
|
122
|
+
next.focus();
|
|
123
|
+
}
|
|
124
|
+
export function moveToPrevTimeSegment(e, fieldNode) {
|
|
125
|
+
const node = e.currentTarget;
|
|
126
|
+
if (!isHTMLElement(node))
|
|
127
|
+
return;
|
|
128
|
+
const { prev } = getPrevNextTimeSegments(node, fieldNode);
|
|
129
|
+
if (!prev)
|
|
130
|
+
return;
|
|
131
|
+
prev.focus();
|
|
132
|
+
}
|
|
86
133
|
/**
|
|
87
134
|
* Shifts the focus to the previous segment in the list of segments
|
|
88
135
|
* within the field identified by the provided ID. If this is the first
|
|
@@ -120,6 +167,24 @@ export function getSegments(fieldNode) {
|
|
|
120
167
|
});
|
|
121
168
|
return segments;
|
|
122
169
|
}
|
|
170
|
+
export function getTimeSegments(fieldNode) {
|
|
171
|
+
if (!fieldNode)
|
|
172
|
+
return [];
|
|
173
|
+
const segments = Array.from(fieldNode.querySelectorAll("[data-segment]")).filter((el) => {
|
|
174
|
+
if (!isHTMLElement(el))
|
|
175
|
+
return false;
|
|
176
|
+
const segment = el.dataset.segment;
|
|
177
|
+
if (segment === "trigger")
|
|
178
|
+
return true;
|
|
179
|
+
if (segment === "literal")
|
|
180
|
+
return false;
|
|
181
|
+
return true;
|
|
182
|
+
});
|
|
183
|
+
return segments;
|
|
184
|
+
}
|
|
185
|
+
export function getFirstTimeSegment(fieldNode) {
|
|
186
|
+
return getTimeSegments(fieldNode)[0];
|
|
187
|
+
}
|
|
123
188
|
/**
|
|
124
189
|
* Get the first interactive segment within the field identified by the provided ID.
|
|
125
190
|
*/
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { EditableTimeSegmentPart, HourCycle, TimeGranularity, TimeSegmentContentObj, TimeSegmentStateMap, TimeSegmentValueObj, TimeValue } from "../../../shared/date/types.js";
|
|
2
|
+
import { CalendarDateTime, Time, ZonedDateTime } from "@internationalized/date";
|
|
3
|
+
import type { TimeFormatter } from "../formatter.js";
|
|
4
|
+
import type { TimeSegmentPart } from "./types.js";
|
|
5
|
+
export declare function initializeSegmentValues(): TimeSegmentValueObj;
|
|
6
|
+
type SharedTimeContentProps = {
|
|
7
|
+
granularity: TimeGranularity;
|
|
8
|
+
timeRef: TimeValue;
|
|
9
|
+
formatter: TimeFormatter;
|
|
10
|
+
hideTimeZone: boolean;
|
|
11
|
+
hourCycle: HourCycle | undefined;
|
|
12
|
+
};
|
|
13
|
+
type CreateTimeContentObjProps = SharedTimeContentProps & {
|
|
14
|
+
segmentValues: TimeSegmentValueObj;
|
|
15
|
+
locale: string;
|
|
16
|
+
};
|
|
17
|
+
type CreateTimeContentProps = CreateTimeContentObjProps;
|
|
18
|
+
export declare function createTimeContent(props: CreateTimeContentProps): {
|
|
19
|
+
obj: TimeSegmentContentObj;
|
|
20
|
+
arr: {
|
|
21
|
+
part: TimeSegmentPart;
|
|
22
|
+
value: string;
|
|
23
|
+
}[];
|
|
24
|
+
};
|
|
25
|
+
export declare function initTimeSegmentStates(): TimeSegmentStateMap;
|
|
26
|
+
export declare function initTimeSegmentIds(): any;
|
|
27
|
+
export declare function isEditableTimeSegmentPart(part: unknown): part is EditableTimeSegmentPart;
|
|
28
|
+
export declare function isAnyTimeSegmentPart(part: unknown): part is TimeSegmentPart;
|
|
29
|
+
type GetTimeValueFromSegments<T extends TimeValue = Time> = {
|
|
30
|
+
segmentObj: TimeSegmentValueObj;
|
|
31
|
+
fieldNode: HTMLElement | null;
|
|
32
|
+
timeRef: T;
|
|
33
|
+
};
|
|
34
|
+
export declare function getTimeValueFromSegments<T extends TimeValue = Time>(props: GetTimeValueFromSegments<T>): T;
|
|
35
|
+
/**
|
|
36
|
+
* Check if all the segments being used have been filled.
|
|
37
|
+
* We use this to determine when we should set the value
|
|
38
|
+
* store of the date field(s).
|
|
39
|
+
*
|
|
40
|
+
* @param segmentValues - The current `SegmentValueObj`
|
|
41
|
+
* @param fieldNode - The id of the date field
|
|
42
|
+
*/
|
|
43
|
+
export declare function areAllTimeSegmentsFilled(segmentValues: TimeSegmentValueObj, fieldNode: HTMLElement | null): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Infer the granularity to use based on the
|
|
46
|
+
* value and granularity props.
|
|
47
|
+
*/
|
|
48
|
+
export declare function inferTimeGranularity(granularity: TimeGranularity | undefined): TimeGranularity;
|
|
49
|
+
/**
|
|
50
|
+
* Determines if the element with the provided id is the first focusable
|
|
51
|
+
* segment in the date field with the provided fieldId.
|
|
52
|
+
*
|
|
53
|
+
* @param id - The id of the element to check if it's the first segment
|
|
54
|
+
* @param fieldNode - The id of the date field associated with the segment
|
|
55
|
+
*/
|
|
56
|
+
export declare function isFirstTimeSegment(id: string, fieldNode: HTMLElement | null): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Creates or updates a description element for a date field
|
|
59
|
+
* which enables screen readers to read the date field's value.
|
|
60
|
+
*
|
|
61
|
+
* This element is hidden from view, and is portalled to the body
|
|
62
|
+
* so it can be associated via `aria-describedby` and read by
|
|
63
|
+
* screen readers as the user interacts with the date field.
|
|
64
|
+
*/
|
|
65
|
+
export declare function setTimeDescription(id: string, formatter: TimeFormatter, value: TimeValue): void;
|
|
66
|
+
/**
|
|
67
|
+
* Removes the description element for the date field with
|
|
68
|
+
* the provided ID. This function should be called when the
|
|
69
|
+
* date field is unmounted.
|
|
70
|
+
*/
|
|
71
|
+
export declare function removeTimeDescriptionElement(id: string): void;
|
|
72
|
+
export declare function convertTimeValueToDateValue(time: TimeValue): CalendarDateTime | ZonedDateTime;
|
|
73
|
+
export declare function convertTimeValueToTime(time: TimeValue): Time;
|
|
74
|
+
export declare function isTimeBefore(timeToCompare: Time, referenceTime: Time): boolean;
|
|
75
|
+
export declare function isTimeAfter(timeToCompare: Time, referenceTime: Time): boolean;
|
|
76
|
+
export declare function getISOTimeValue(time: TimeValue): string;
|
|
77
|
+
export {};
|