@sectile/vue 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/accordion.d.ts +0 -1
- package/dist/alert-dialog.d.ts +0 -2
- package/dist/alert-dialog.js.map +1 -1
- package/dist/calendar.d.ts +14 -268
- package/dist/calendar.js +15 -15
- package/dist/calendar.js.map +1 -1
- package/dist/carousel.d.ts +22 -1
- package/dist/carousel.js +7 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.d.ts +339 -0
- package/dist/cascade-list.js +240 -0
- package/dist/cascade-list.js.map +1 -0
- package/dist/cascade-select.d.ts +11 -42
- package/dist/cascade-select.js +19 -27
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.d.ts +9 -1
- package/dist/checkbox-group.js +57 -13
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox.d.ts +0 -1
- package/dist/checkbox.js +15 -8
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +0 -1
- package/dist/combobox.d.ts +0 -1
- package/dist/combobox.js +46 -6
- package/dist/combobox.js.map +1 -1
- package/dist/data-grid.d.ts +214 -0
- package/dist/data-grid.js +107 -0
- package/dist/data-grid.js.map +1 -0
- package/dist/data-table.d.ts +232 -0
- package/dist/data-table.js +116 -0
- package/dist/data-table.js.map +1 -0
- package/dist/data-tree-grid.d.ts +225 -0
- package/dist/data-tree-grid.js +98 -0
- package/dist/data-tree-grid.js.map +1 -0
- package/dist/date-field.d.ts +2 -3
- package/dist/date-field.js +1 -1
- package/dist/date-field.js.map +1 -1
- package/dist/date-picker.d.ts +35 -427
- package/dist/date-picker.js +15 -13
- package/dist/date-picker.js.map +1 -1
- package/dist/date-range-field.d.ts +2 -3
- package/dist/date-range-field.js +24 -6
- package/dist/date-range-field.js.map +1 -1
- package/dist/date-range-picker.d.ts +35 -427
- package/dist/date-range-picker.js +15 -13
- package/dist/date-range-picker.js.map +1 -1
- package/dist/date-time-field.d.ts +2 -3
- package/dist/date-time-field.js +1 -1
- package/dist/date-time-field.js.map +1 -1
- package/dist/date-time-picker.d.ts +36 -428
- package/dist/date-time-picker.js +15 -13
- package/dist/date-time-picker.js.map +1 -1
- package/dist/date-time-range-picker.d.ts +36 -428
- package/dist/date-time-range-picker.js +15 -13
- package/dist/date-time-range-picker.js.map +1 -1
- package/dist/dialog.d.ts +0 -2
- package/dist/dialog.js.map +1 -1
- package/dist/disclosure.d.ts +0 -1
- package/dist/drawer.d.ts +1 -2
- package/dist/editable.d.ts +0 -1
- package/dist/editable.js +25 -6
- package/dist/editable.js.map +1 -1
- package/dist/feed.d.ts +0 -1
- package/dist/form.d.ts +88 -115
- package/dist/form.js +461 -233
- package/dist/form.js.map +1 -1
- package/dist/grid.d.ts +0 -1
- package/dist/grid.js +51 -6
- package/dist/grid.js.map +1 -1
- package/dist/host-provider.d.ts +0 -13
- package/dist/host-provider.js +0 -16
- package/dist/host-provider.js.map +1 -1
- package/dist/index.d.ts +14 -39
- package/dist/index.js +6 -19
- package/dist/index.js.map +1 -1
- package/dist/internal/cascade-choice.d.ts +204 -0
- package/dist/internal/cascade-choice.js +161 -0
- package/dist/internal/cascade-choice.js.map +1 -0
- package/dist/internal/collection.d.ts +3 -8
- package/dist/internal/collection.js +14 -20
- package/dist/internal/collection.js.map +1 -1
- package/dist/internal/controlled-state.d.ts +0 -1
- package/dist/internal/date-picker.d.ts +91 -141
- package/dist/internal/date-picker.js +146 -52
- package/dist/internal/date-picker.js.map +1 -1
- package/dist/internal/decimal-input.d.ts +1 -0
- package/dist/internal/decimal-input.js +24 -0
- package/dist/internal/decimal-input.js.map +1 -0
- package/dist/internal/form-control-inventory.d.ts +4 -1
- package/dist/internal/form-control-inventory.js +1 -0
- package/dist/internal/form-control-inventory.js.map +1 -1
- package/dist/internal/form-control.d.ts +100 -2
- package/dist/internal/form-control.js +103 -1
- package/dist/internal/form-control.js.map +1 -1
- package/dist/internal/native-field.d.ts +7 -8
- package/dist/internal/native-field.js +11 -2
- package/dist/internal/native-field.js.map +1 -1
- package/dist/internal/native-input.d.ts +0 -1
- package/dist/internal/part-contract.d.ts +0 -1
- package/dist/internal/popup.d.ts +5 -27
- package/dist/internal/popup.js +14 -20
- package/dist/internal/popup.js.map +1 -1
- package/dist/internal/presence.d.ts +0 -1
- package/dist/internal/scheduled-task.d.ts +5 -0
- package/dist/internal/scheduled-task.js +28 -0
- package/dist/internal/scheduled-task.js.map +1 -0
- package/dist/internal/tabs-context.d.ts +2 -3
- package/dist/internal/tabular-components.d.ts +27 -0
- package/dist/internal/tabular-components.js +26 -0
- package/dist/internal/tabular-components.js.map +1 -0
- package/dist/internal/tabular-parts.d.ts +57 -0
- package/dist/internal/tabular-parts.js +239 -0
- package/dist/internal/tabular-parts.js.map +1 -0
- package/dist/internal/tabular-profile.d.ts +75 -0
- package/dist/internal/tabular-profile.js +209 -0
- package/dist/internal/tabular-profile.js.map +1 -0
- package/dist/internal/virtual-collection-model.d.ts +42 -0
- package/dist/internal/virtual-collection-model.js +241 -0
- package/dist/internal/virtual-collection-model.js.map +1 -0
- package/dist/internal/virtual-collection.d.ts +38 -0
- package/dist/internal/virtual-collection.js +87 -0
- package/dist/internal/virtual-collection.js.map +1 -0
- package/dist/{virtual.d.ts → internal/virtual-core.d.ts} +14 -9
- package/dist/{virtual.js → internal/virtual-core.js} +18 -13
- package/dist/internal/virtual-core.js.map +1 -0
- package/dist/internal/virtual-list.d.ts +214 -0
- package/dist/internal/virtual-list.js +401 -0
- package/dist/internal/virtual-list.js.map +1 -0
- package/dist/listbox.d.ts +0 -1
- package/dist/listbox.js +52 -6
- package/dist/listbox.js.map +1 -1
- package/dist/menu-button.d.ts +0 -1
- package/dist/menu.d.ts +262 -317
- package/dist/menu.js +29 -23
- package/dist/menu.js.map +1 -1
- package/dist/menubar.d.ts +0 -1
- package/dist/meter-group.d.ts +369 -0
- package/dist/meter-group.js +271 -0
- package/dist/meter-group.js.map +1 -0
- package/dist/meter.d.ts +191 -0
- package/dist/meter.js +133 -0
- package/dist/meter.js.map +1 -0
- package/dist/month-picker.d.ts +29 -259
- package/dist/month-picker.js +8 -6
- package/dist/month-picker.js.map +1 -1
- package/dist/month-range-picker.d.ts +29 -259
- package/dist/month-range-picker.js +8 -6
- package/dist/month-range-picker.js.map +1 -1
- package/dist/multi-thumb-slider.d.ts +0 -1
- package/dist/navigation-menu.d.ts +0 -1
- package/dist/number-field.d.ts +2 -2
- package/dist/number-field.js +1 -1
- package/dist/number-field.js.map +1 -1
- package/dist/pagination.d.ts +23 -2
- package/dist/pagination.js +6 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.d.ts +0 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/popover.d.ts +0 -2
- package/dist/popover.js.map +1 -1
- package/dist/primitive.d.ts +0 -1
- package/dist/primitive.js +8 -4
- package/dist/primitive.js.map +1 -1
- package/dist/progress.d.ts +148 -0
- package/dist/progress.js +110 -0
- package/dist/progress.js.map +1 -0
- package/dist/quantity-field.d.ts +0 -1
- package/dist/radio-group.d.ts +0 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/range-calendar.d.ts +14 -298
- package/dist/range-calendar.js +7 -7
- package/dist/range-calendar.js.map +1 -1
- package/dist/rating.d.ts +0 -1
- package/dist/rating.js +10 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +1 -2
- package/dist/select.d.ts +24 -50
- package/dist/select.js +11 -13
- package/dist/select.js.map +1 -1
- package/dist/slider.d.ts +0 -1
- package/dist/spin-button.d.ts +9 -7
- package/dist/spin-button.js +17 -4
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.d.ts +0 -1
- package/dist/stepper.js +19 -2
- package/dist/stepper.js.map +1 -1
- package/dist/switch.d.ts +0 -1
- package/dist/tabs.d.ts +0 -1
- package/dist/tabs.js +4 -22
- package/dist/tabs.js.map +1 -1
- package/dist/tags-input.d.ts +0 -1
- package/dist/tags-input.js +18 -5
- package/dist/tags-input.js.map +1 -1
- package/dist/temporal-provider.d.ts +21 -0
- package/dist/temporal-provider.js +30 -0
- package/dist/temporal-provider.js.map +1 -0
- package/dist/text.d.ts +0 -1
- package/dist/text.js +18 -4
- package/dist/text.js.map +1 -1
- package/dist/time-field.d.ts +2 -3
- package/dist/time-field.js +1 -1
- package/dist/time-field.js.map +1 -1
- package/dist/time-range-field.d.ts +2 -2
- package/dist/time-range-field.js +6 -4
- package/dist/time-range-field.js.map +1 -1
- package/dist/timer.d.ts +0 -1
- package/dist/toast.d.ts +11 -2
- package/dist/toast.js +22 -9
- package/dist/toast.js.map +1 -1
- package/dist/toggle-button.d.ts +0 -1
- package/dist/toggle-group.d.ts +0 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/toolbar.d.ts +0 -1
- package/dist/tooltip.d.ts +1 -3
- package/dist/tooltip.js.map +1 -1
- package/dist/tree-grid.d.ts +0 -1
- package/dist/tree-grid.js +62 -8
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-view.d.ts +0 -1
- package/dist/tree-view.js +51 -10
- package/dist/tree-view.js.map +1 -1
- package/dist/virtual-core.d.ts +1 -0
- package/dist/virtual-core.js +2 -0
- package/dist/virtual-core.js.map +1 -0
- package/dist/virtual-grid.d.ts +188 -0
- package/dist/virtual-grid.js +306 -0
- package/dist/virtual-grid.js.map +1 -0
- package/dist/virtual-list.d.ts +1 -0
- package/dist/virtual-list.js +2 -0
- package/dist/virtual-list.js.map +1 -0
- package/dist/virtual-masonry.d.ts +198 -0
- package/dist/virtual-masonry.js +221 -0
- package/dist/virtual-masonry.js.map +1 -0
- package/dist/virtual-spatial.d.ts +157 -0
- package/dist/virtual-spatial.js +159 -0
- package/dist/virtual-spatial.js.map +1 -0
- package/dist/window-splitter.d.ts +0 -1
- package/dist/year-picker.d.ts +29 -259
- package/dist/year-picker.js +8 -6
- package/dist/year-picker.js.map +1 -1
- package/dist/year-range-picker.d.ts +29 -259
- package/dist/year-range-picker.js +8 -6
- package/dist/year-range-picker.js.map +1 -1
- package/package.json +174 -87
- package/dist/accordion.d.ts.map +0 -1
- package/dist/alert-dialog.d.ts.map +0 -1
- package/dist/calendar.d.ts.map +0 -1
- package/dist/carousel.d.ts.map +0 -1
- package/dist/cascade-select.d.ts.map +0 -1
- package/dist/checkbox-group.d.ts.map +0 -1
- package/dist/checkbox.d.ts.map +0 -1
- package/dist/color-picker.d.ts.map +0 -1
- package/dist/combobox.d.ts.map +0 -1
- package/dist/date-field.d.ts.map +0 -1
- package/dist/date-picker.d.ts.map +0 -1
- package/dist/date-range-field.d.ts.map +0 -1
- package/dist/date-range-picker.d.ts.map +0 -1
- package/dist/date-time-field.d.ts.map +0 -1
- package/dist/date-time-picker.d.ts.map +0 -1
- package/dist/date-time-range-picker.d.ts.map +0 -1
- package/dist/dialog.d.ts.map +0 -1
- package/dist/disclosure.d.ts.map +0 -1
- package/dist/drawer.d.ts.map +0 -1
- package/dist/editable.d.ts.map +0 -1
- package/dist/feed.d.ts.map +0 -1
- package/dist/form.d.ts.map +0 -1
- package/dist/grid.d.ts.map +0 -1
- package/dist/host-provider.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/internal/collection.d.ts.map +0 -1
- package/dist/internal/controlled-state.d.ts.map +0 -1
- package/dist/internal/date-picker.d.ts.map +0 -1
- package/dist/internal/form-control-inventory.d.ts.map +0 -1
- package/dist/internal/form-control.d.ts.map +0 -1
- package/dist/internal/native-field.d.ts.map +0 -1
- package/dist/internal/native-input.d.ts.map +0 -1
- package/dist/internal/part-contract.d.ts.map +0 -1
- package/dist/internal/popup.d.ts.map +0 -1
- package/dist/internal/presence.d.ts.map +0 -1
- package/dist/internal/tabs-context.d.ts.map +0 -1
- package/dist/listbox.d.ts.map +0 -1
- package/dist/menu-button.d.ts.map +0 -1
- package/dist/menu.d.ts.map +0 -1
- package/dist/menubar.d.ts.map +0 -1
- package/dist/month-picker.d.ts.map +0 -1
- package/dist/month-range-picker.d.ts.map +0 -1
- package/dist/multi-thumb-slider.d.ts.map +0 -1
- package/dist/navigation-menu.d.ts.map +0 -1
- package/dist/number-field.d.ts.map +0 -1
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pin-input.d.ts.map +0 -1
- package/dist/popover.d.ts.map +0 -1
- package/dist/primitive.d.ts.map +0 -1
- package/dist/quantity-field.d.ts.map +0 -1
- package/dist/radio-group.d.ts.map +0 -1
- package/dist/range-calendar.d.ts.map +0 -1
- package/dist/rating.d.ts.map +0 -1
- package/dist/reorder.d.ts.map +0 -1
- package/dist/select.d.ts.map +0 -1
- package/dist/slider.d.ts.map +0 -1
- package/dist/spin-button.d.ts.map +0 -1
- package/dist/stepper.d.ts.map +0 -1
- package/dist/switch.d.ts.map +0 -1
- package/dist/tabs.d.ts.map +0 -1
- package/dist/tags-input.d.ts.map +0 -1
- package/dist/text.d.ts.map +0 -1
- package/dist/time-field.d.ts.map +0 -1
- package/dist/time-range-field.d.ts.map +0 -1
- package/dist/timer.d.ts.map +0 -1
- package/dist/toast.d.ts.map +0 -1
- package/dist/toggle-button.d.ts.map +0 -1
- package/dist/toggle-group.d.ts.map +0 -1
- package/dist/toolbar.d.ts.map +0 -1
- package/dist/tooltip.d.ts.map +0 -1
- package/dist/tree-grid.d.ts.map +0 -1
- package/dist/tree-view.d.ts.map +0 -1
- package/dist/virtual.d.ts.map +0 -1
- package/dist/virtual.js.map +0 -1
- package/dist/window-splitter.d.ts.map +0 -1
- package/dist/year-picker.d.ts.map +0 -1
- package/dist/year-range-picker.d.ts.map +0 -1
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
|
-
import { type
|
|
3
|
-
import { type
|
|
4
|
-
import { type
|
|
1
|
+
import { type AllowedComponentProps, type Component, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
2
|
+
import { type CalendarPolicies } from '@sectile/dom/temporal/calendar';
|
|
3
|
+
import { type DatePickerOptions, type PickerPositionOptions, type CalendarMonthValue, type CalendarViewMode } from '@sectile/dom/temporal/date-picker';
|
|
4
|
+
import { type DateRangePickerOptions } from '@sectile/dom/temporal/date-range-picker';
|
|
5
|
+
import { type DateTimePickerOptions } from '@sectile/dom/temporal/date-time-picker';
|
|
6
|
+
import { type DateTimeRangePickerOptions } from '@sectile/dom/temporal/date-time-range-picker';
|
|
7
|
+
import { type DateRange, type DateValue } from '@sectile/dom/temporal/date-field';
|
|
8
|
+
import { type DateTimeRange, type DateTimeValue } from '@sectile/dom/temporal/date-time-field';
|
|
5
9
|
import { type PrimitiveAs } from '../primitive.js';
|
|
6
10
|
export type PickerKind = 'calendar' | 'date' | 'date-range' | 'date-time' | 'date-time-range';
|
|
7
11
|
export type PickerValue = DateValue | DateRange | DateTimeValue | DateTimeRange | null;
|
|
12
|
+
export type PickerValueFor<Kind extends PickerKind> = Kind extends 'calendar' | 'date' ? DateValue | null : Kind extends 'date-range' ? DateRange | null : Kind extends 'date-time' ? DateTimeValue | null : DateTimeRange | null;
|
|
13
|
+
export type PickerPoliciesFor<Kind extends PickerKind> = Kind extends 'calendar' ? CalendarPolicies : Kind extends 'date' ? NonNullable<DatePickerOptions['policies']> : Kind extends 'date-range' ? NonNullable<DateRangePickerOptions['policies']> : Kind extends 'date-time' ? NonNullable<DateTimePickerOptions['policies']> : NonNullable<DateTimeRangePickerOptions['policies']>;
|
|
8
14
|
export type PickerInputPart = 'input' | 'start-input' | 'end-input' | 'date-time-input' | 'date-input' | 'time-input' | 'start-date-time-input' | 'end-date-time-input' | 'start-date-input' | 'end-date-input' | 'start-time-input' | 'end-time-input';
|
|
9
15
|
export type PickerNavigationUnit = 'week' | 'month' | 'year';
|
|
10
16
|
export interface PickerYearValue {
|
|
11
17
|
readonly year: number;
|
|
12
18
|
}
|
|
13
|
-
export interface PickerRootSlotProps {
|
|
14
|
-
readonly value:
|
|
19
|
+
export interface PickerRootSlotProps<Value extends PickerValue = PickerValue> {
|
|
20
|
+
readonly value: Value;
|
|
15
21
|
readonly highlightedValue: DateValue;
|
|
16
22
|
readonly open: boolean;
|
|
17
23
|
readonly dates: readonly (readonly DateValue[])[];
|
|
@@ -52,6 +58,23 @@ export interface PickerPartProps {
|
|
|
52
58
|
readonly as?: PrimitiveAs;
|
|
53
59
|
readonly asChild?: boolean;
|
|
54
60
|
}
|
|
61
|
+
export interface PickerPortalProps {
|
|
62
|
+
readonly to?: string | HTMLElement;
|
|
63
|
+
readonly disabled?: boolean;
|
|
64
|
+
readonly defer?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface PickerPositionProps {
|
|
67
|
+
readonly position?: boolean;
|
|
68
|
+
readonly side?: PickerPositionOptions['side'];
|
|
69
|
+
readonly align?: PickerPositionOptions['align'];
|
|
70
|
+
readonly sideOffset?: number;
|
|
71
|
+
readonly collisionPadding?: PickerPositionOptions['collisionPadding'];
|
|
72
|
+
readonly collisionBoundary?: PickerPositionOptions['collisionBoundary'];
|
|
73
|
+
readonly avoidCollisions?: boolean;
|
|
74
|
+
readonly hideWhenDetached?: boolean;
|
|
75
|
+
readonly strategy?: PickerPositionOptions['strategy'];
|
|
76
|
+
readonly tracking?: PickerPositionOptions['tracking'];
|
|
77
|
+
}
|
|
55
78
|
export interface PickerRootConfig {
|
|
56
79
|
readonly scope?: string;
|
|
57
80
|
readonly granularity?: 'day' | 'month' | 'year';
|
|
@@ -60,9 +83,9 @@ export interface PickerRootConfig {
|
|
|
60
83
|
readonly yearPageSize?: number;
|
|
61
84
|
readonly inline?: boolean;
|
|
62
85
|
}
|
|
63
|
-
export interface PickerRootRuntimeProps {
|
|
64
|
-
readonly modelValue?:
|
|
65
|
-
readonly defaultValue?:
|
|
86
|
+
export interface PickerRootRuntimeProps<Value extends PickerValue = PickerValue, Policies = Readonly<Record<string, unknown>>> extends PickerPositionProps {
|
|
87
|
+
readonly modelValue?: Value;
|
|
88
|
+
readonly defaultValue?: Value;
|
|
66
89
|
readonly open?: boolean;
|
|
67
90
|
readonly defaultOpen?: boolean;
|
|
68
91
|
readonly highlightedValue?: DateValue;
|
|
@@ -73,63 +96,35 @@ export interface PickerRootRuntimeProps {
|
|
|
73
96
|
readonly?: boolean;
|
|
74
97
|
readonly required?: boolean;
|
|
75
98
|
readonly label?: string;
|
|
76
|
-
readonly policies?:
|
|
99
|
+
readonly policies?: Policies;
|
|
77
100
|
readonly as?: PrimitiveAs;
|
|
78
101
|
readonly asChild?: boolean;
|
|
79
102
|
}
|
|
80
|
-
export
|
|
81
|
-
modelValue:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
default: undefined;
|
|
92
|
-
};
|
|
93
|
-
defaultOpen: {
|
|
94
|
-
type: BooleanConstructor;
|
|
95
|
-
default: boolean;
|
|
96
|
-
};
|
|
97
|
-
highlightedValue: {
|
|
98
|
-
type: PropType<DateValue>;
|
|
99
|
-
default: undefined;
|
|
100
|
-
};
|
|
101
|
-
defaultHighlightedValue: {
|
|
102
|
-
type: PropType<DateValue>;
|
|
103
|
-
default: undefined;
|
|
104
|
-
};
|
|
105
|
-
referenceDate: {
|
|
106
|
-
type: PropType<DateValue>;
|
|
107
|
-
default: undefined;
|
|
108
|
-
};
|
|
109
|
-
defaultView: {
|
|
110
|
-
type: PropType<CalendarViewMode>;
|
|
111
|
-
default: CalendarViewMode;
|
|
112
|
-
};
|
|
113
|
-
disabled: {
|
|
114
|
-
type: BooleanConstructor;
|
|
115
|
-
default: boolean;
|
|
116
|
-
};
|
|
117
|
-
readonly: {
|
|
118
|
-
type: BooleanConstructor;
|
|
119
|
-
default: boolean;
|
|
103
|
+
export type PickerRootPublicProps<Kind extends PickerKind> = PickerRootRuntimeProps<PickerValueFor<Kind>, PickerPoliciesFor<Kind>> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
|
|
104
|
+
readonly 'onUpdate:modelValue'?: (value: PickerValueFor<Kind>) => unknown;
|
|
105
|
+
readonly 'onUpdate:open'?: (value: boolean) => unknown;
|
|
106
|
+
readonly 'onUpdate:highlightedValue'?: (value: DateValue) => unknown;
|
|
107
|
+
};
|
|
108
|
+
export interface PickerRootComponent<Kind extends PickerKind> {
|
|
109
|
+
new (props: PickerRootPublicProps<Kind>): {
|
|
110
|
+
$props: PickerRootPublicProps<Kind>;
|
|
111
|
+
$slots: {
|
|
112
|
+
default?: (props: PickerRootSlotProps<PickerValueFor<Kind>>) => VNodeChild;
|
|
113
|
+
};
|
|
120
114
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
policies: {
|
|
130
|
-
type: PropType<Readonly<Record<string, unknown>>>;
|
|
131
|
-
default: undefined;
|
|
115
|
+
}
|
|
116
|
+
export type PickerRootPartPublicProps = PickerPartProps & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
117
|
+
export interface PickerRootPartComponent<Kind extends PickerKind> {
|
|
118
|
+
new (props: PickerRootPartPublicProps): {
|
|
119
|
+
$props: PickerRootPartPublicProps;
|
|
120
|
+
$slots: {
|
|
121
|
+
default?: (props: PickerRootSlotProps<PickerValueFor<Kind>>) => VNodeChild;
|
|
122
|
+
};
|
|
132
123
|
};
|
|
124
|
+
}
|
|
125
|
+
export declare function specializePickerRootPart<Kind extends PickerKind>(_kind: Kind, component: Component): PickerRootPartComponent<Kind>;
|
|
126
|
+
export declare function createPickerRoot<Kind extends PickerKind>(kind: Kind, name: string, config?: PickerRootConfig): PickerRootComponent<Kind>;
|
|
127
|
+
export declare const PickerTrigger: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
133
128
|
as: {
|
|
134
129
|
type: PropType<PrimitiveAs>;
|
|
135
130
|
default: string;
|
|
@@ -138,63 +133,7 @@ export declare function createPickerRoot(kind: PickerKind, name: string, config?
|
|
|
138
133
|
type: BooleanConstructor;
|
|
139
134
|
default: boolean;
|
|
140
135
|
};
|
|
141
|
-
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
142
|
-
'update:modelValue': (_value: PickerValue) => boolean;
|
|
143
|
-
'update:open': (_value: boolean) => boolean;
|
|
144
|
-
'update:highlightedValue': (_value: DateValue) => boolean;
|
|
145
|
-
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
146
|
-
modelValue: {
|
|
147
|
-
type: PropType<PickerValue>;
|
|
148
|
-
default: undefined;
|
|
149
|
-
};
|
|
150
|
-
defaultValue: {
|
|
151
|
-
type: PropType<PickerValue>;
|
|
152
|
-
default: null;
|
|
153
|
-
};
|
|
154
|
-
open: {
|
|
155
|
-
type: BooleanConstructor;
|
|
156
|
-
default: undefined;
|
|
157
|
-
};
|
|
158
|
-
defaultOpen: {
|
|
159
|
-
type: BooleanConstructor;
|
|
160
|
-
default: boolean;
|
|
161
|
-
};
|
|
162
|
-
highlightedValue: {
|
|
163
|
-
type: PropType<DateValue>;
|
|
164
|
-
default: undefined;
|
|
165
|
-
};
|
|
166
|
-
defaultHighlightedValue: {
|
|
167
|
-
type: PropType<DateValue>;
|
|
168
|
-
default: undefined;
|
|
169
|
-
};
|
|
170
|
-
referenceDate: {
|
|
171
|
-
type: PropType<DateValue>;
|
|
172
|
-
default: undefined;
|
|
173
|
-
};
|
|
174
|
-
defaultView: {
|
|
175
|
-
type: PropType<CalendarViewMode>;
|
|
176
|
-
default: CalendarViewMode;
|
|
177
|
-
};
|
|
178
|
-
disabled: {
|
|
179
|
-
type: BooleanConstructor;
|
|
180
|
-
default: boolean;
|
|
181
|
-
};
|
|
182
|
-
readonly: {
|
|
183
|
-
type: BooleanConstructor;
|
|
184
|
-
default: boolean;
|
|
185
|
-
};
|
|
186
|
-
required: {
|
|
187
|
-
type: BooleanConstructor;
|
|
188
|
-
default: boolean;
|
|
189
|
-
};
|
|
190
|
-
label: {
|
|
191
|
-
type: StringConstructor;
|
|
192
|
-
default: undefined;
|
|
193
|
-
};
|
|
194
|
-
policies: {
|
|
195
|
-
type: PropType<Readonly<Record<string, unknown>>>;
|
|
196
|
-
default: undefined;
|
|
197
|
-
};
|
|
136
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
198
137
|
as: {
|
|
199
138
|
type: PropType<PrimitiveAs>;
|
|
200
139
|
default: string;
|
|
@@ -203,30 +142,13 @@ export declare function createPickerRoot(kind: PickerKind, name: string, config?
|
|
|
203
142
|
type: BooleanConstructor;
|
|
204
143
|
default: boolean;
|
|
205
144
|
};
|
|
206
|
-
}>> & Readonly<{
|
|
207
|
-
"onUpdate:highlightedValue"?: (_value: DateValue) => any;
|
|
208
|
-
"onUpdate:modelValue"?: (_value: PickerValue) => any;
|
|
209
|
-
"onUpdate:open"?: (_value: boolean) => any;
|
|
210
|
-
}>, {
|
|
211
|
-
modelValue: PickerValue;
|
|
212
|
-
defaultValue: PickerValue;
|
|
213
|
-
open: boolean;
|
|
214
|
-
defaultOpen: boolean;
|
|
215
|
-
highlightedValue: DateValue;
|
|
216
|
-
defaultHighlightedValue: DateValue;
|
|
217
|
-
referenceDate: DateValue;
|
|
218
|
-
defaultView: CalendarViewMode;
|
|
219
|
-
disabled: boolean;
|
|
220
|
-
readonly: boolean;
|
|
221
|
-
required: boolean;
|
|
222
|
-
label: string;
|
|
223
|
-
policies: Readonly<Record<string, unknown>>;
|
|
145
|
+
}>> & Readonly<{}>, {
|
|
224
146
|
as: PrimitiveAs;
|
|
225
147
|
asChild: boolean;
|
|
226
148
|
}, SlotsType<{
|
|
227
149
|
default: (props: PickerRootSlotProps) => VNodeChild;
|
|
228
150
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
229
|
-
export declare const
|
|
151
|
+
export declare const PickerAnchor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
230
152
|
as: {
|
|
231
153
|
type: PropType<PrimitiveAs>;
|
|
232
154
|
default: string;
|
|
@@ -247,9 +169,7 @@ export declare const PickerTrigger: import("vue").DefineComponent<import("vue").
|
|
|
247
169
|
}>> & Readonly<{}>, {
|
|
248
170
|
as: PrimitiveAs;
|
|
249
171
|
asChild: boolean;
|
|
250
|
-
},
|
|
251
|
-
default: (props: PickerRootSlotProps) => VNodeChild;
|
|
252
|
-
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
172
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
253
173
|
export declare const PickerContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
254
174
|
as: {
|
|
255
175
|
type: PropType<PrimitiveAs>;
|
|
@@ -274,6 +194,37 @@ export declare const PickerContent: import("vue").DefineComponent<import("vue").
|
|
|
274
194
|
}, SlotsType<{
|
|
275
195
|
default: (props: PickerRootSlotProps) => VNodeChild;
|
|
276
196
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
197
|
+
export declare const PickerPortal: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
198
|
+
to: {
|
|
199
|
+
type: PropType<string | HTMLElement>;
|
|
200
|
+
default: undefined;
|
|
201
|
+
};
|
|
202
|
+
disabled: {
|
|
203
|
+
type: BooleanConstructor;
|
|
204
|
+
default: boolean;
|
|
205
|
+
};
|
|
206
|
+
defer: {
|
|
207
|
+
type: BooleanConstructor;
|
|
208
|
+
default: boolean;
|
|
209
|
+
};
|
|
210
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
211
|
+
to: {
|
|
212
|
+
type: PropType<string | HTMLElement>;
|
|
213
|
+
default: undefined;
|
|
214
|
+
};
|
|
215
|
+
disabled: {
|
|
216
|
+
type: BooleanConstructor;
|
|
217
|
+
default: boolean;
|
|
218
|
+
};
|
|
219
|
+
defer: {
|
|
220
|
+
type: BooleanConstructor;
|
|
221
|
+
default: boolean;
|
|
222
|
+
};
|
|
223
|
+
}>> & Readonly<{}>, {
|
|
224
|
+
to: string | HTMLElement;
|
|
225
|
+
disabled: boolean;
|
|
226
|
+
defer: boolean;
|
|
227
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
277
228
|
export declare const PickerGrid: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
278
229
|
as: {
|
|
279
230
|
type: PropType<PrimitiveAs>;
|
|
@@ -546,4 +497,3 @@ export declare function createPickerViewTrigger(view: CalendarViewMode, name: st
|
|
|
546
497
|
}, SlotsType<{
|
|
547
498
|
default: (props: PickerRootSlotProps) => VNodeChild;
|
|
548
499
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
549
|
-
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { Fragment, computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onMounted, nextTick, provide, shallowRef, watch, } from 'vue';
|
|
2
|
-
import { createCalendar } from '@sectile/dom/calendar';
|
|
3
|
-
import { createDatePicker, createCalendarMonth, createCalendarYear, isCalendarValueAvailable } from '@sectile/dom/date-picker';
|
|
4
|
-
import { createDateRangePicker } from '@sectile/dom/date-range-picker';
|
|
5
|
-
import { createDateTimePicker } from '@sectile/dom/date-time-picker';
|
|
6
|
-
import { createDateTimeRangePicker } from '@sectile/dom/date-time-range-picker';
|
|
7
|
-
import { formatDateValue, parseDateValue } from '@sectile/dom/date-field';
|
|
8
|
-
import { formatDateTimeValue } from '@sectile/dom/date-time-field';
|
|
9
|
-
import { formatTimeValue } from '@sectile/dom/time-field';
|
|
1
|
+
import { Fragment, Teleport, computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onMounted, nextTick, provide, shallowRef, watch, } from 'vue';
|
|
2
|
+
import { createCalendar } from '@sectile/dom/temporal/calendar';
|
|
3
|
+
import { createDatePicker, createCalendarMonth, createCalendarYear, isCalendarValueAvailable } from '@sectile/dom/temporal/date-picker';
|
|
4
|
+
import { createDateRangePicker } from '@sectile/dom/temporal/date-range-picker';
|
|
5
|
+
import { createDateTimePicker } from '@sectile/dom/temporal/date-time-picker';
|
|
6
|
+
import { createDateTimeRangePicker } from '@sectile/dom/temporal/date-time-range-picker';
|
|
7
|
+
import { formatDateValue, parseDateValue } from '@sectile/dom/temporal/date-field';
|
|
8
|
+
import { formatDateTimeValue } from '@sectile/dom/temporal/date-time-field';
|
|
9
|
+
import { formatTimeValue } from '@sectile/dom/temporal/time-field';
|
|
10
10
|
import { hiddenInputSubmissionCapabilities, useCompositeFormControl, } from './form-control.js';
|
|
11
11
|
import { Primitive } from '../primitive.js';
|
|
12
12
|
import { useControlledStateInvariant } from './controlled-state.js';
|
|
13
|
-
import {
|
|
13
|
+
import { useHostPortalTarget } from '../host-provider.js';
|
|
14
|
+
import { useTemporalReferenceDate } from '../temporal-provider.js';
|
|
15
|
+
export function specializePickerRootPart(_kind, component) {
|
|
16
|
+
return component;
|
|
17
|
+
}
|
|
14
18
|
const key = Symbol('SectileDatePickerRoot');
|
|
19
|
+
const noPendingPickerValue = Symbol('no-pending-picker-value');
|
|
15
20
|
const partProps = { as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false } };
|
|
16
21
|
export function createPickerRoot(kind, name, config = {}) {
|
|
17
22
|
const scope = config.scope ?? kind;
|
|
@@ -20,7 +25,7 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
20
25
|
const defaultOpen = config.defaultOpen ?? false;
|
|
21
26
|
const yearPageSize = config.yearPageSize ?? 12;
|
|
22
27
|
const inline = config.inline ?? false;
|
|
23
|
-
|
|
28
|
+
const component = defineComponent({
|
|
24
29
|
name, inheritAttrs: false,
|
|
25
30
|
props: {
|
|
26
31
|
modelValue: { type: Object, default: undefined }, defaultValue: { type: Object, default: null },
|
|
@@ -30,36 +35,50 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
30
35
|
defaultView: { type: String, default: defaultView },
|
|
31
36
|
disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, required: { type: Boolean, default: false },
|
|
32
37
|
label: { type: String, default: undefined }, policies: { type: Object, default: undefined },
|
|
38
|
+
position: { type: Boolean, default: true },
|
|
39
|
+
side: { type: String, default: 'bottom' },
|
|
40
|
+
align: { type: String, default: 'center' },
|
|
41
|
+
sideOffset: { type: Number, default: 8 },
|
|
42
|
+
collisionPadding: { type: [Number, Object], default: 8 },
|
|
43
|
+
collisionBoundary: { type: [String, Object], default: undefined },
|
|
44
|
+
avoidCollisions: { type: Boolean, default: true }, hideWhenDetached: { type: Boolean, default: true },
|
|
45
|
+
strategy: { type: String, default: 'absolute' },
|
|
46
|
+
tracking: { type: String, default: 'events' },
|
|
33
47
|
as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false },
|
|
34
48
|
},
|
|
35
49
|
emits: { 'update:modelValue': (_value) => true, 'update:open': (_value) => true, 'update:highlightedValue': (_value) => true },
|
|
36
50
|
slots: Object,
|
|
37
51
|
setup(props, { emit, slots }) {
|
|
52
|
+
const runtimeProps = props;
|
|
38
53
|
const elements = new Map();
|
|
39
54
|
const connection = shallowRef();
|
|
40
|
-
const hostReferenceDate =
|
|
41
|
-
const referenceDate = computed(() =>
|
|
55
|
+
const hostReferenceDate = useTemporalReferenceDate();
|
|
56
|
+
const referenceDate = computed(() => runtimeProps.referenceDate ?? hostReferenceDate.value);
|
|
42
57
|
const inlineTrigger = typeof document === 'undefined' || !inline || kind === 'calendar' ? undefined : document.createElement('button');
|
|
43
|
-
const localValue = shallowRef(
|
|
44
|
-
const localOpen = shallowRef(
|
|
45
|
-
const localHighlight = shallowRef(
|
|
58
|
+
const localValue = shallowRef(runtimeProps.modelValue !== undefined ? runtimeProps.modelValue : runtimeProps.defaultValue);
|
|
59
|
+
const localOpen = shallowRef(runtimeProps.open ?? runtimeProps.defaultOpen);
|
|
60
|
+
const localHighlight = shallowRef(runtimeProps.highlightedValue ?? runtimeProps.defaultHighlightedValue ?? dateOf(localValue.value) ?? referenceDate.value);
|
|
46
61
|
const yearPageStart = shallowRef(localHighlight.value.year - Math.floor(yearPageSize / 2));
|
|
47
62
|
const dates = shallowRef(monthFor(localHighlight.value));
|
|
48
63
|
const months = shallowRef(yearFor(localHighlight.value.year));
|
|
49
64
|
const years = shallowRef(yearsFrom(yearPageStart.value, yearPageSize));
|
|
50
65
|
const localView = shallowRef(Object.freeze({ year: localHighlight.value.year, month: localHighlight.value.month }));
|
|
51
|
-
const localViewMode = shallowRef(
|
|
66
|
+
const localViewMode = shallowRef(runtimeProps.defaultView);
|
|
52
67
|
const controlled = {
|
|
53
|
-
value: useControlledStateInvariant(`${kind}PickerRoot`, 'modelValue', () =>
|
|
54
|
-
open: useControlledStateInvariant(`${kind}PickerRoot`, 'open', () =>
|
|
55
|
-
highlighted: useControlledStateInvariant(`${kind}PickerRoot`, 'highlightedValue', () =>
|
|
68
|
+
value: useControlledStateInvariant(`${kind}PickerRoot`, 'modelValue', () => runtimeProps.modelValue),
|
|
69
|
+
open: useControlledStateInvariant(`${kind}PickerRoot`, 'open', () => runtimeProps.open),
|
|
70
|
+
highlighted: useControlledStateInvariant(`${kind}PickerRoot`, 'highlightedValue', () => runtimeProps.highlightedValue),
|
|
56
71
|
};
|
|
72
|
+
const pendingValue = shallowRef(noPendingPickerValue);
|
|
57
73
|
const state = computed(() => {
|
|
58
|
-
const highlighted =
|
|
74
|
+
const highlighted = runtimeProps.highlightedValue ?? localHighlight.value;
|
|
75
|
+
const value = controlled.value && pendingValue.value !== noPendingPickerValue
|
|
76
|
+
? pendingValue.value
|
|
77
|
+
: runtimeProps.modelValue !== undefined ? runtimeProps.modelValue : localValue.value;
|
|
59
78
|
return Object.freeze({
|
|
60
|
-
value
|
|
61
|
-
highlightedValue: highlighted, open:
|
|
62
|
-
view: localView.value, viewMode: localViewMode.value, disabled:
|
|
79
|
+
value,
|
|
80
|
+
highlightedValue: highlighted, open: runtimeProps.open ?? localOpen.value, dates: dates.value, months: months.value, years: years.value,
|
|
81
|
+
view: localView.value, viewMode: localViewMode.value, disabled: runtimeProps.disabled, readonly: runtimeProps.readonly,
|
|
63
82
|
});
|
|
64
83
|
});
|
|
65
84
|
useCompositeFormControl({
|
|
@@ -68,7 +87,7 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
68
87
|
submissions: () => pickerFormSubmissions(elements, kind),
|
|
69
88
|
});
|
|
70
89
|
const periodAvailable = (value) => {
|
|
71
|
-
const policies =
|
|
90
|
+
const policies = runtimeProps.policies;
|
|
72
91
|
if ('month' in value)
|
|
73
92
|
return monthAvailable(value, policies);
|
|
74
93
|
return Array.from({ length: 12 }, (_entry, index) => index + 1)
|
|
@@ -113,19 +132,35 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
113
132
|
if (content === undefined || grid === undefined || (kind !== 'calendar' && trigger === undefined))
|
|
114
133
|
return;
|
|
115
134
|
const base = {
|
|
116
|
-
root: content, grid, disabled:
|
|
135
|
+
root: content, grid, disabled: runtimeProps.disabled, readOnly: runtimeProps.readonly, required: runtimeProps.required,
|
|
117
136
|
referenceDate: referenceDate.value,
|
|
118
|
-
...(
|
|
119
|
-
...(controlled.value ? { value:
|
|
120
|
-
...(controlled.highlighted ? { highlightedValue:
|
|
121
|
-
onValueChange: (value) => {
|
|
137
|
+
...(runtimeProps.label === undefined ? {} : { label: runtimeProps.label }), ...(runtimeProps.policies === undefined ? {} : { policies: runtimeProps.policies }),
|
|
138
|
+
...(controlled.value ? { value: runtimeProps.modelValue } : { defaultValue: localValue.value }),
|
|
139
|
+
...(controlled.highlighted ? { highlightedValue: runtimeProps.highlightedValue } : { defaultHighlightedValue: localHighlight.value }),
|
|
140
|
+
onValueChange: (value) => {
|
|
141
|
+
localValue.value = value;
|
|
142
|
+
if (controlled.value)
|
|
143
|
+
pendingValue.value = value;
|
|
144
|
+
emit('update:modelValue', value);
|
|
145
|
+
},
|
|
122
146
|
onHighlightedValueChange: (value) => { localHighlight.value = value; emit('update:highlightedValue', value); },
|
|
123
147
|
onUpdate: refresh,
|
|
124
148
|
};
|
|
125
149
|
if (kind !== 'calendar') {
|
|
126
150
|
base['trigger'] = trigger;
|
|
151
|
+
const anchor = elements.get('anchor');
|
|
152
|
+
if (anchor !== undefined)
|
|
153
|
+
base['anchor'] = anchor;
|
|
154
|
+
Object.assign(base, {
|
|
155
|
+
position: runtimeProps.position, side: runtimeProps.side, align: runtimeProps.align, sideOffset: runtimeProps.sideOffset,
|
|
156
|
+
collisionPadding: runtimeProps.collisionPadding, avoidCollisions: runtimeProps.avoidCollisions,
|
|
157
|
+
hideWhenDetached: runtimeProps.hideWhenDetached, strategy: runtimeProps.strategy,
|
|
158
|
+
tracking: runtimeProps.tracking,
|
|
159
|
+
});
|
|
160
|
+
if (runtimeProps.collisionBoundary !== undefined)
|
|
161
|
+
base['collisionBoundary'] = runtimeProps.collisionBoundary;
|
|
127
162
|
if (controlled.open)
|
|
128
|
-
base['open'] =
|
|
163
|
+
base['open'] = runtimeProps.open;
|
|
129
164
|
else
|
|
130
165
|
base['defaultOpen'] = localOpen.value;
|
|
131
166
|
base['onOpenChange'] = (value) => { localOpen.value = value; emit('update:open', value); };
|
|
@@ -142,11 +177,23 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
142
177
|
: kind === 'date-range' ? createDateRangePicker(base)
|
|
143
178
|
: kind === 'date-time' ? createDateTimePicker(base) : createDateTimeRangePicker(base);
|
|
144
179
|
connection.value = created;
|
|
145
|
-
if (
|
|
146
|
-
connection.value.handleEvent({ type: 'set-view-mode', value:
|
|
180
|
+
if (runtimeProps.defaultView !== 'month')
|
|
181
|
+
connection.value.handleEvent({ type: 'set-view-mode', value: runtimeProps.defaultView });
|
|
147
182
|
refreshCells();
|
|
148
183
|
refresh();
|
|
149
184
|
};
|
|
185
|
+
let mounted = false;
|
|
186
|
+
let connectQueued = false;
|
|
187
|
+
const scheduleConnect = () => {
|
|
188
|
+
if (!mounted || connectQueued)
|
|
189
|
+
return;
|
|
190
|
+
connectQueued = true;
|
|
191
|
+
void nextTick(() => {
|
|
192
|
+
connectQueued = false;
|
|
193
|
+
if (mounted)
|
|
194
|
+
connect();
|
|
195
|
+
});
|
|
196
|
+
};
|
|
150
197
|
const moveBy = (unit, delta) => {
|
|
151
198
|
const direction = delta < 0 ? -1 : 1;
|
|
152
199
|
for (let index = 0; index < Math.abs(delta); index += 1) {
|
|
@@ -166,10 +213,16 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
166
213
|
};
|
|
167
214
|
provide(key, {
|
|
168
215
|
kind, scope, granularity, inline, state, periodAvailable,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
216
|
+
position: computed(() => runtimeProps.position), strategy: computed(() => runtimeProps.strategy),
|
|
217
|
+
register: (part, element) => {
|
|
218
|
+
if (elements.get(part) === element || (element === undefined && !elements.has(part)))
|
|
219
|
+
return;
|
|
220
|
+
if (element === undefined)
|
|
221
|
+
elements.delete(part);
|
|
222
|
+
else
|
|
223
|
+
elements.set(part, element);
|
|
224
|
+
scheduleConnect();
|
|
225
|
+
},
|
|
173
226
|
registerCell: (element, value) => connection.value?.setCellAttributes(element, value),
|
|
174
227
|
move: (unit, direction) => {
|
|
175
228
|
const repetitions = granularity === 'year' && unit === 'year' ? yearPageSize : 1;
|
|
@@ -223,22 +276,37 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
223
276
|
selectMonth,
|
|
224
277
|
selectYear,
|
|
225
278
|
});
|
|
226
|
-
onMounted(
|
|
227
|
-
|
|
228
|
-
|
|
279
|
+
onMounted(() => {
|
|
280
|
+
mounted = true;
|
|
281
|
+
connect();
|
|
282
|
+
});
|
|
283
|
+
onBeforeUnmount(() => {
|
|
284
|
+
mounted = false;
|
|
285
|
+
connectQueued = false;
|
|
286
|
+
connection.value?.disconnect();
|
|
287
|
+
connection.value = undefined;
|
|
288
|
+
});
|
|
289
|
+
watch([
|
|
290
|
+
() => runtimeProps.disabled, () => runtimeProps.readonly, () => runtimeProps.required, () => runtimeProps.label, () => runtimeProps.policies,
|
|
291
|
+
() => runtimeProps.position, () => runtimeProps.side, () => runtimeProps.align, () => runtimeProps.sideOffset,
|
|
292
|
+
() => runtimeProps.collisionPadding, () => runtimeProps.collisionBoundary, () => runtimeProps.avoidCollisions,
|
|
293
|
+
() => runtimeProps.hideWhenDetached, () => runtimeProps.strategy, () => runtimeProps.tracking,
|
|
294
|
+
], connect);
|
|
229
295
|
watch(referenceDate, (value) => {
|
|
230
|
-
if (
|
|
231
|
-
&&
|
|
232
|
-
&& dateOf(
|
|
296
|
+
if (runtimeProps.highlightedValue === undefined
|
|
297
|
+
&& runtimeProps.defaultHighlightedValue === undefined
|
|
298
|
+
&& dateOf(runtimeProps.modelValue ?? runtimeProps.defaultValue) === null)
|
|
233
299
|
localHighlight.value = value;
|
|
234
300
|
connect();
|
|
235
301
|
});
|
|
236
|
-
watch([() =>
|
|
302
|
+
watch([() => runtimeProps.modelValue, () => runtimeProps.open, () => runtimeProps.highlightedValue], (values, previousValues) => {
|
|
237
303
|
if (connection.value === undefined)
|
|
238
304
|
return;
|
|
305
|
+
if (values[0] !== previousValues[0])
|
|
306
|
+
pendingValue.value = noPendingPickerValue;
|
|
239
307
|
const result = connection.value.syncControlledValues({
|
|
240
|
-
...(controlled.value ? { value:
|
|
241
|
-
...(controlled.highlighted ? { highlightedValue:
|
|
308
|
+
...(controlled.value ? { value: runtimeProps.modelValue } : {}), ...(kind !== 'calendar' && controlled.open ? { open: runtimeProps.open } : {}),
|
|
309
|
+
...(controlled.highlighted ? { highlightedValue: runtimeProps.highlightedValue } : {}),
|
|
242
310
|
});
|
|
243
311
|
if (!result.ok)
|
|
244
312
|
throw new TypeError(result.error?.message ?? 'Could not synchronize picker values.');
|
|
@@ -249,8 +317,9 @@ export function createPickerRoot(kind, name, config = {}) {
|
|
|
249
317
|
};
|
|
250
318
|
},
|
|
251
319
|
});
|
|
320
|
+
return component;
|
|
252
321
|
}
|
|
253
|
-
export const PickerTrigger = defineComponent({
|
|
322
|
+
export const PickerTrigger = /* @__PURE__ */ defineComponent({
|
|
254
323
|
name: 'SectilePickerTrigger', inheritAttrs: false,
|
|
255
324
|
props: { as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
|
|
256
325
|
slots: Object,
|
|
@@ -263,7 +332,17 @@ export const PickerTrigger = defineComponent({
|
|
|
263
332
|
}), { default: () => slots['default']?.(root.state.value) });
|
|
264
333
|
},
|
|
265
334
|
});
|
|
266
|
-
export const
|
|
335
|
+
export const PickerAnchor = /* @__PURE__ */ defineComponent({
|
|
336
|
+
name: 'SectilePickerAnchor', inheritAttrs: false, props: partProps,
|
|
337
|
+
setup(props, { attrs, slots }) {
|
|
338
|
+
const root = useRoot('PickerAnchor');
|
|
339
|
+
return () => h(Primitive, mergeProps(attrs, {
|
|
340
|
+
as: props.as, asChild: props.asChild, elementRef: (node) => root.register('anchor', node instanceof HTMLElement ? node : undefined),
|
|
341
|
+
'data-scope': root.scope, 'data-part': 'anchor',
|
|
342
|
+
}), slots);
|
|
343
|
+
},
|
|
344
|
+
});
|
|
345
|
+
export const PickerContent = /* @__PURE__ */ defineComponent({
|
|
267
346
|
name: 'SectilePickerContent', inheritAttrs: false, props: partProps,
|
|
268
347
|
slots: Object,
|
|
269
348
|
setup(props, { attrs, slots }) {
|
|
@@ -271,10 +350,25 @@ export const PickerContent = defineComponent({
|
|
|
271
350
|
return () => h(Primitive, mergeProps(attrs, {
|
|
272
351
|
as: props.as, asChild: props.asChild, elementRef: (node) => root.register('content', node instanceof HTMLElement ? node : undefined),
|
|
273
352
|
role: root.inline ? 'group' : 'dialog', 'aria-modal': root.inline ? undefined : 'false', hidden: root.inline ? false : !root.state.value.open, 'data-scope': root.scope, 'data-part': 'content', 'data-state': root.state.value.open ? 'open' : 'closed',
|
|
353
|
+
style: !root.inline && root.position.value ? { position: root.strategy.value } : undefined,
|
|
274
354
|
}), { default: () => slots['default']?.(root.state.value) });
|
|
275
355
|
},
|
|
276
356
|
});
|
|
277
|
-
export const
|
|
357
|
+
export const PickerPortal = /* @__PURE__ */ defineComponent({
|
|
358
|
+
name: 'SectilePickerPortal', inheritAttrs: false,
|
|
359
|
+
props: {
|
|
360
|
+
to: { type: [String, Object], default: undefined },
|
|
361
|
+
disabled: { type: Boolean, default: false }, defer: { type: Boolean, default: false },
|
|
362
|
+
},
|
|
363
|
+
setup(props, { slots }) {
|
|
364
|
+
useRoot('PickerPortal');
|
|
365
|
+
const portalTarget = useHostPortalTarget();
|
|
366
|
+
return () => h(Teleport, {
|
|
367
|
+
to: props.to ?? portalTarget.value ?? 'body', disabled: props.disabled, defer: props.defer,
|
|
368
|
+
}, slots['default']?.());
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
export const PickerGrid = /* @__PURE__ */ defineComponent({
|
|
278
372
|
name: 'SectilePickerGrid', inheritAttrs: false, props: partProps,
|
|
279
373
|
slots: Object,
|
|
280
374
|
setup(props, { attrs, slots }) {
|
|
@@ -285,7 +379,7 @@ export const PickerGrid = defineComponent({
|
|
|
285
379
|
}), { default: () => slots['default']?.(root.state.value) });
|
|
286
380
|
},
|
|
287
381
|
});
|
|
288
|
-
export const PickerCell = defineComponent({
|
|
382
|
+
export const PickerCell = /* @__PURE__ */ defineComponent({
|
|
289
383
|
name: 'SectilePickerCell', inheritAttrs: false,
|
|
290
384
|
props: { value: { type: Object, required: true }, as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
|
|
291
385
|
slots: Object,
|
|
@@ -365,8 +459,8 @@ export function createPickerYearCell(part = 'year-cell', name = 'SectilePickerYe
|
|
|
365
459
|
},
|
|
366
460
|
});
|
|
367
461
|
}
|
|
368
|
-
export const PickerMonthCell = createPickerMonthCell();
|
|
369
|
-
export const PickerYearCell = createPickerYearCell();
|
|
462
|
+
export const PickerMonthCell = /* @__PURE__ */ createPickerMonthCell();
|
|
463
|
+
export const PickerYearCell = /* @__PURE__ */ createPickerYearCell();
|
|
370
464
|
export function createPickerInput(part, name, type = 'text') {
|
|
371
465
|
return defineComponent({
|
|
372
466
|
name, inheritAttrs: false,
|