@sectile/vue 0.18.3 → 0.20.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 +127 -14
- package/dist/accordion.js +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/carousel.d.ts +20 -0
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox-tree.d.ts +102 -0
- package/dist/checkbox-tree.js +2 -0
- package/dist/checkbox-tree.js.map +1 -0
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +24 -0
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +47 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/component-handle.d.ts +8 -0
- package/dist/component-handle.js +2 -0
- package/dist/component-handle.js.map +1 -0
- package/dist/context-menu.d.ts +1 -0
- package/dist/context-menu.js +2 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/drag-drop.d.ts +23 -0
- package/dist/drag-drop.js +2 -0
- package/dist/drag-drop.js.map +1 -0
- package/dist/editable.d.ts +3 -0
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/form/context.d.ts +3 -0
- package/dist/form/context.js +1 -1
- package/dist/form/context.js.map +1 -1
- package/dist/form/contracts.d.ts +1 -0
- package/dist/form/control-inventory.d.ts +20 -0
- package/dist/form/control-inventory.js +1 -1
- package/dist/form/control-inventory.js.map +1 -1
- package/dist/form/control.d.ts +44 -1
- package/dist/form/control.js +1 -1
- package/dist/form/control.js.map +1 -1
- package/dist/form/field.d.ts +10 -0
- package/dist/form/field.js +1 -1
- package/dist/form/field.js.map +1 -1
- package/dist/form/file-input.d.ts +229 -0
- package/dist/form/file-input.js +2 -0
- package/dist/form/file-input.js.map +1 -0
- package/dist/form/file-upload/group.d.ts +28 -0
- package/dist/form/file-upload/group.js +2 -0
- package/dist/form/file-upload/group.js.map +1 -0
- package/dist/form/file-upload.d.ts +26 -0
- package/dist/form/file-upload.js +2 -0
- package/dist/form/file-upload.js.map +1 -0
- package/dist/form/root.js +1 -1
- package/dist/form/root.js.map +1 -1
- package/dist/form-boundary.d.ts +2 -0
- package/dist/form-boundary.js +2 -0
- package/dist/form-boundary.js.map +1 -0
- package/dist/fullscreen.d.ts +16 -0
- package/dist/fullscreen.js +2 -0
- package/dist/fullscreen.js.map +1 -0
- package/dist/host-provider.d.ts +99 -1
- package/dist/host-provider.js +1 -1
- package/dist/host-provider.js.map +1 -1
- package/dist/image.d.ts +24 -0
- package/dist/image.js +2 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/native-field.d.ts +33 -6
- package/dist/input/native-field.js +1 -1
- package/dist/input/native-field.js.map +1 -1
- package/dist/input/native-range-field.d.ts +16 -7
- package/dist/input/native-range-field.js +1 -1
- package/dist/input/native-range-field.js.map +1 -1
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/connection-lifetime.d.ts +10 -0
- package/dist/internal/connection-lifetime.js +2 -0
- package/dist/internal/connection-lifetime.js.map +1 -0
- package/dist/internal/popup-presentation.d.ts +32 -0
- package/dist/internal/popup-presentation.js +2 -0
- package/dist/internal/popup-presentation.js.map +1 -0
- package/dist/internal/portal-move.d.ts +11 -0
- package/dist/internal/portal-move.js +2 -0
- package/dist/internal/portal-move.js.map +1 -0
- package/dist/internal/scheduled-task.js +1 -1
- package/dist/internal/scheduled-task.js.map +1 -1
- package/dist/internal/tabs-context.d.ts +11 -0
- package/dist/internal/tabs-context.js +1 -1
- package/dist/internal/tabs-context.js.map +1 -1
- package/dist/internal/tree-parts.d.ts +142 -0
- package/dist/internal/tree-parts.js +2 -0
- package/dist/internal/tree-parts.js.map +1 -0
- package/dist/listbox.d.ts +11 -0
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/media-gesture.d.ts +20 -0
- package/dist/media-gesture.js +2 -0
- package/dist/media-gesture.js.map +1 -0
- package/dist/menu.d.ts +239 -0
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/meter-group.js +1 -1
- package/dist/meter-group.js.map +1 -1
- package/dist/multi-thumb-slider.js +1 -1
- package/dist/multi-thumb-slider.js.map +1 -1
- package/dist/number-field.d.ts +18 -1
- package/dist/number-field.js +1 -1
- package/dist/number-field.js.map +1 -1
- package/dist/overlay/dialog.d.ts +1 -0
- package/dist/overlay/dialog.js.map +1 -1
- package/dist/overlay/drawer.d.ts +33 -4
- package/dist/overlay/drawer.js +1 -1
- package/dist/overlay/drawer.js.map +1 -1
- package/dist/overlay/popover.d.ts +2 -1
- package/dist/overlay/popover.js.map +1 -1
- package/dist/overlay/popup.d.ts +50 -2
- package/dist/overlay/popup.js +1 -1
- package/dist/overlay/popup.js.map +1 -1
- package/dist/overlay/tooltip.d.ts +38 -3
- package/dist/overlay/tooltip.js +1 -1
- package/dist/overlay/tooltip.js.map +1 -1
- package/dist/pagination.js +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/presence/presence.d.ts +1 -1
- package/dist/presence/presence.js +1 -1
- package/dist/presence/presence.js.map +1 -1
- package/dist/primitive.d.ts +37 -3
- package/dist/primitive.js +1 -1
- package/dist/primitive.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/rating.js +1 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +169 -77
- package/dist/reorder.js +1 -1
- package/dist/reorder.js.map +1 -1
- package/dist/select.d.ts +21 -0
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.d.ts +19 -0
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tabular/components.d.ts +5 -0
- package/dist/tabular/components.js.map +1 -1
- package/dist/tabular/controller.d.ts +1 -0
- package/dist/tabular/controller.js +1 -1
- package/dist/tabular/controller.js.map +1 -1
- package/dist/tabular/data-grid.d.ts +4 -4
- package/dist/tabular/data-grid.js +1 -1
- package/dist/tabular/data-grid.js.map +1 -1
- package/dist/tabular/data-table.d.ts +4 -4
- package/dist/tabular/data-table.js +1 -1
- package/dist/tabular/data-table.js.map +1 -1
- package/dist/tabular/data-tree-grid.d.ts +4 -4
- package/dist/tabular/data-tree-grid.js +1 -1
- package/dist/tabular/data-tree-grid.js.map +1 -1
- package/dist/tabular/parts.d.ts +11 -1
- package/dist/tabular/parts.js +1 -1
- package/dist/tabular/parts.js.map +1 -1
- package/dist/tags-input.d.ts +12 -1
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/temporal/calendar.d.ts +15 -111
- package/dist/temporal/calendar.js +1 -1
- package/dist/temporal/calendar.js.map +1 -1
- package/dist/temporal/capabilities/date-picker.js +1 -1
- package/dist/temporal/capabilities/date-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -1
- package/dist/temporal/capability.d.ts +13 -1
- package/dist/temporal/capability.js.map +1 -1
- package/dist/temporal/date-field.d.ts +1 -1
- package/dist/temporal/date-field.js +1 -1
- package/dist/temporal/date-field.js.map +1 -1
- package/dist/temporal/date-picker.d.ts +3 -1
- package/dist/temporal/date-picker.js.map +1 -1
- package/dist/temporal/date-range-field.d.ts +20 -0
- package/dist/temporal/date-range-field.js +1 -1
- package/dist/temporal/date-range-field.js.map +1 -1
- package/dist/temporal/date-range-picker.d.ts +3 -1
- package/dist/temporal/date-range-picker.js.map +1 -1
- package/dist/temporal/date-time-field.d.ts +4 -1
- package/dist/temporal/date-time-field.js +1 -1
- package/dist/temporal/date-time-field.js.map +1 -1
- package/dist/temporal/date-time-picker.d.ts +3 -1
- package/dist/temporal/date-time-picker.js +1 -1
- package/dist/temporal/date-time-picker.js.map +1 -1
- package/dist/temporal/date-time-range-field.d.ts +158 -0
- package/dist/temporal/date-time-range-field.js +2 -0
- package/dist/temporal/date-time-range-field.js.map +1 -0
- package/dist/temporal/date-time-range-picker.d.ts +3 -1
- package/dist/temporal/date-time-range-picker.js +1 -1
- package/dist/temporal/date-time-range-picker.js.map +1 -1
- package/dist/temporal/internal/time-presentation.d.ts +15 -0
- package/dist/temporal/internal/time-presentation.js +2 -0
- package/dist/temporal/internal/time-presentation.js.map +1 -0
- package/dist/temporal/month-picker.d.ts +3 -1
- package/dist/temporal/month-picker.js.map +1 -1
- package/dist/temporal/month-range-picker.d.ts +3 -1
- package/dist/temporal/month-range-picker.js.map +1 -1
- package/dist/temporal/picker.d.ts +23 -1
- package/dist/temporal/picker.js +1 -1
- package/dist/temporal/picker.js.map +1 -1
- package/dist/temporal/range-calendar.d.ts +119 -2
- package/dist/temporal/range-calendar.js +1 -1
- package/dist/temporal/range-calendar.js.map +1 -1
- package/dist/temporal/temporal-provider.d.ts +23 -0
- package/dist/temporal/temporal-provider.js +1 -1
- package/dist/temporal/temporal-provider.js.map +1 -1
- package/dist/temporal/time-field.d.ts +4 -1
- package/dist/temporal/time-field.js +1 -1
- package/dist/temporal/time-field.js.map +1 -1
- package/dist/temporal/time-picker.d.ts +112 -0
- package/dist/temporal/time-picker.js +2 -0
- package/dist/temporal/time-picker.js.map +1 -0
- package/dist/temporal/time-range-field.d.ts +32 -1
- package/dist/temporal/time-range-field.js +1 -1
- package/dist/temporal/time-range-field.js.map +1 -1
- package/dist/temporal/year-picker.d.ts +3 -1
- package/dist/temporal/year-picker.js.map +1 -1
- package/dist/temporal/year-range-picker.d.ts +3 -1
- package/dist/temporal/year-range-picker.js.map +1 -1
- package/dist/text.d.ts +43 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/timer.d.ts +16 -5
- package/dist/timer.js +1 -1
- package/dist/timer.js.map +1 -1
- package/dist/toast.js +1 -1
- package/dist/toast.js.map +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/toolbar.js +1 -1
- package/dist/toolbar.js.map +1 -1
- package/dist/transfer.d.ts +191 -0
- package/dist/transfer.js +2 -0
- package/dist/transfer.js.map +1 -0
- package/dist/tree-grid.d.ts +122 -0
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-select.d.ts +186 -0
- package/dist/tree-select.js +2 -0
- package/dist/tree-select.js.map +1 -0
- package/dist/tree-view.js +1 -1
- package/dist/tree-view.js.map +1 -1
- package/dist/virtual/virtual-collection.d.ts +2 -0
- package/dist/virtual/virtual-collection.js.map +1 -1
- package/dist/virtual/virtual-grid.d.ts +12 -2
- package/dist/virtual/virtual-grid.js +1 -1
- package/dist/virtual/virtual-grid.js.map +1 -1
- package/dist/virtual/virtual-list.d.ts +12 -3
- package/dist/virtual/virtual-list.js +1 -1
- package/dist/virtual/virtual-list.js.map +1 -1
- package/dist/virtual/virtual-masonry.d.ts +12 -2
- package/dist/virtual/virtual-masonry.js +1 -1
- package/dist/virtual/virtual-masonry.js.map +1 -1
- package/dist/virtual/virtual-spatial.d.ts +12 -2
- package/dist/virtual/virtual-spatial.js +1 -1
- package/dist/virtual/virtual-spatial.js.map +1 -1
- package/dist/window-splitter.js +1 -1
- package/dist/window-splitter.js.map +1 -1
- package/package.json +88 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/time-field.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"time-field.js","names":["unwrap","createTimeFieldState","formatTimeFieldValue","reformatTimeFieldState","createTimeField","formatTimeValue","getTimeFieldPlaceholder","createNativeFieldComponent","useTimePresentation","rebase","value","inputState","previousFormat","format","TimeField","name","scope","inputMode","nativeInputType","placeholder","formatValue","valueType","Object","create","commitValue","connection","handleEvent","type","presentationProps","precision","String","default","undefined","usePresentation","props","dayPeriods","options"],"sources":["../../src/temporal/time-field.ts"],"mappings":"YAA8B,aACrBA,WAAc,8BACdC,qBAAsBC,qBAAsBC,2BAA6E,sCAEhIC,gBACAC,gBACAC,4BAGK,0CACEC,+BAAgE,kCAChEC,wBAA2B,kCAkBpC,SAASC,OAAOC,MAAyBC,WAAwDC,eAA6CC,QAC5I,OAAOb,OAAOG,uBAAuBF,qBAAqBS,MAAOC,WAAYC,gBAAiBC,SAASF,UACzG,QAEO,MAAMG,yBAA4BP,2BAA6G,CACpJQ,KAAM,mBACNC,MAAO,aACPC,UAAW,UACXC,gBAAiB,OACjBC,YAAa,QACbC,YAAaf,gBACbgB,UAAWC,OACXC,OAAQnB,gBACRoB,YAAa,CAACC,WAAYf,QAAWe,WAAmCC,YAAY,CAAEC,KAAM,YAAajB,QACzGkB,kBAAmB,CAAEC,UAAW,CAAEF,KAAMG,OAAwCC,QAASC,YACzFvB,OAAQ,CAACC,MAAOC,WAAYC,iBAAmBH,OAAOC,MAAOC,WAAYC,gBACzE,eAAAqB,CAAgBC,OACd,OAAO1B,oBAA4F0B,MAAOrB,SACjG,CAAEA,OAAQI,UAAWJ,OAAOsB,aAAeH,UAAY,UAAY,OAAQb,YAAab,wBAAwBO,QACrHO,YAAcV,OAAqBR,qBAAqBQ,MAAOG,QAASU,OAAQa,SAAWhC,gBAAgB,IAAKgC,QAASvB,SACzHJ,OAAQ,CAACC,MAAOC,WAAYC,iBAAmBH,OAAOC,MAAOC,WAAYC,eAAgBC,UAE/F","ignoreList":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type DefineSetupFnComponent, type EmitsToProps, type PublicProps, type SlotsType, type VNodeChild } from 'vue';
|
|
2
|
+
import { type TimePickerChoice, type TimePickerColumn as ChoiceColumn } from '@sectile/temporal/time-picker';
|
|
3
|
+
import { type TimeFieldFormatPart, type TimeFieldPolicies, type TimeFieldPrecision, type TimeValue } from '@sectile/temporal/time-field';
|
|
4
|
+
import type { InteractOutsideEvent, PopupCloseReason } from '@sectile/dom/popover';
|
|
5
|
+
import { type PopoverRootProps, type PopoverRootSlotProps, type PopoverPartProps } from '../overlay/popover.js';
|
|
6
|
+
import { type PrimitiveAs } from '../primitive.js';
|
|
7
|
+
export type TimePickerPart = TimeFieldFormatPart;
|
|
8
|
+
export type TimePickerColumnState = ChoiceColumn;
|
|
9
|
+
export type { TimeValue, TimePickerChoice };
|
|
10
|
+
export interface TimePickerRootProps extends Omit<PopoverRootProps, 'disabled'> {
|
|
11
|
+
readonly modelValue?: TimeValue | null;
|
|
12
|
+
readonly defaultValue?: TimeValue | null;
|
|
13
|
+
readonly policies?: TimeFieldPolicies;
|
|
14
|
+
readonly precision?: TimeFieldPrecision;
|
|
15
|
+
readonly name?: string | undefined;
|
|
16
|
+
readonly form?: string | undefined;
|
|
17
|
+
readonly disabled?: boolean | undefined;
|
|
18
|
+
readonly readonly?: boolean | undefined;
|
|
19
|
+
readonly required?: boolean | undefined;
|
|
20
|
+
readonly as?: PrimitiveAs;
|
|
21
|
+
readonly asChild?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface TimePickerExpose {
|
|
24
|
+
readonly element: HTMLInputElement | null;
|
|
25
|
+
focus(options?: FocusOptions): void;
|
|
26
|
+
select(): void;
|
|
27
|
+
requestClose(): void;
|
|
28
|
+
selectChoice(part: TimePickerPart, choice: number): boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface TimePickerRootSlotProps extends Omit<PopoverRootSlotProps, 'disabled'> {
|
|
31
|
+
readonly value: TimeValue | null;
|
|
32
|
+
readonly parts: readonly TimePickerPart[];
|
|
33
|
+
readonly disabled: boolean;
|
|
34
|
+
readonly readonly: boolean;
|
|
35
|
+
readonly required: boolean;
|
|
36
|
+
readonly composing: boolean;
|
|
37
|
+
readonly selectChoice: TimePickerExpose['selectChoice'];
|
|
38
|
+
}
|
|
39
|
+
export type TimePickerRootSlots = {
|
|
40
|
+
default: (state: TimePickerRootSlotProps) => VNodeChild;
|
|
41
|
+
};
|
|
42
|
+
export type TimePickerRootEmits = {
|
|
43
|
+
'update:modelValue': [value: TimeValue | null];
|
|
44
|
+
'update:open': [open: boolean];
|
|
45
|
+
closeRequest: [reason: PopupCloseReason];
|
|
46
|
+
afterClose: [];
|
|
47
|
+
interactOutside: [event: InteractOutsideEvent];
|
|
48
|
+
};
|
|
49
|
+
export interface TimePickerInputProps {
|
|
50
|
+
readonly label?: string;
|
|
51
|
+
}
|
|
52
|
+
export type TimePickerInputExpose = Pick<TimePickerExpose, 'element' | 'focus' | 'select'>;
|
|
53
|
+
export interface TimePickerContentSlotProps {
|
|
54
|
+
readonly value: TimeValue | null;
|
|
55
|
+
readonly columns: readonly TimePickerColumnState[];
|
|
56
|
+
readonly disabled: boolean;
|
|
57
|
+
readonly readonly: boolean;
|
|
58
|
+
readonly composing: boolean;
|
|
59
|
+
}
|
|
60
|
+
export type TimePickerContentSlots = {
|
|
61
|
+
default: (state: TimePickerContentSlotProps) => VNodeChild;
|
|
62
|
+
};
|
|
63
|
+
export interface TimePickerColumnProps extends PopoverPartProps {
|
|
64
|
+
readonly part: TimePickerPart;
|
|
65
|
+
readonly label: string;
|
|
66
|
+
/** IDs of currently rendered choices; selection still uses the full column. */
|
|
67
|
+
readonly renderedChoices?: readonly number[] | undefined;
|
|
68
|
+
}
|
|
69
|
+
export interface TimePickerColumnSlotProps {
|
|
70
|
+
readonly part: TimePickerPart;
|
|
71
|
+
readonly choices: readonly TimePickerChoice[];
|
|
72
|
+
readonly selected: number | null;
|
|
73
|
+
readonly highlighted: number | null;
|
|
74
|
+
readonly disabled: boolean;
|
|
75
|
+
readonly readonly: boolean;
|
|
76
|
+
}
|
|
77
|
+
export type TimePickerColumnSlots = {
|
|
78
|
+
default: (state: TimePickerColumnSlotProps) => VNodeChild;
|
|
79
|
+
};
|
|
80
|
+
export type TimePickerColumnEmits = {
|
|
81
|
+
highlight: [choice: number | null];
|
|
82
|
+
activate: [choice: number];
|
|
83
|
+
};
|
|
84
|
+
export interface TimePickerItemProps extends PopoverPartProps {
|
|
85
|
+
readonly value: number;
|
|
86
|
+
}
|
|
87
|
+
export interface TimePickerItemSlotProps {
|
|
88
|
+
readonly choice: TimePickerChoice;
|
|
89
|
+
readonly selected: boolean;
|
|
90
|
+
readonly highlighted: boolean;
|
|
91
|
+
readonly disabled: boolean;
|
|
92
|
+
}
|
|
93
|
+
export type TimePickerItemSlots = {
|
|
94
|
+
default: (state: TimePickerItemSlotProps) => VNodeChild;
|
|
95
|
+
};
|
|
96
|
+
type RootProps = TimePickerRootProps & PublicProps & EmitsToProps<TimePickerRootEmits>;
|
|
97
|
+
type RootInstance = InstanceType<DefineSetupFnComponent<TimePickerRootProps, TimePickerRootEmits, SlotsType<TimePickerRootSlots>>> & TimePickerExpose;
|
|
98
|
+
export declare const TimePickerRoot: new (props: RootProps) => Omit<RootInstance, '$props'> & {
|
|
99
|
+
readonly $props: RootProps;
|
|
100
|
+
};
|
|
101
|
+
type InputInstance = InstanceType<DefineSetupFnComponent<TimePickerInputProps>> & TimePickerInputExpose;
|
|
102
|
+
export declare const TimePickerInput: new (props: TimePickerInputProps & PublicProps) => Omit<InputInstance, '$props'> & {
|
|
103
|
+
readonly $props: TimePickerInputProps & PublicProps;
|
|
104
|
+
};
|
|
105
|
+
export declare const TimePickerContent: DefineSetupFnComponent<import("../overlay/popup.js").PopupPartProps, {}, SlotsType<TimePickerContentSlots>, import("../overlay/popup.js").PopupPartProps & {}, PublicProps>;
|
|
106
|
+
export declare const TimePickerColumn: DefineSetupFnComponent<TimePickerColumnProps, TimePickerColumnEmits, SlotsType<TimePickerColumnSlots>, TimePickerColumnProps & {
|
|
107
|
+
onActivate?: (choice: number) => any;
|
|
108
|
+
onHighlight?: (choice: number | null) => any;
|
|
109
|
+
}, PublicProps>;
|
|
110
|
+
export declare const TimePickerItem: DefineSetupFnComponent<TimePickerItemProps, {}, SlotsType<TimePickerItemSlots>, TimePickerItemProps & {}, PublicProps>;
|
|
111
|
+
export { PopoverTrigger as TimePickerTrigger, PopoverAnchor as TimePickerAnchor, PopoverPortal as TimePickerPortal, PopoverTitle as TimePickerTitle, PopoverDescription as TimePickerDescription, PopoverClose as TimePickerClose, } from '../overlay/popover.js';
|
|
112
|
+
export type { PopoverPartProps as TimePickerPartProps, PopoverPortalProps as TimePickerPortalProps } from '../overlay/popover.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,provide,shallowRef}from'vue';import{unwrap}from'@sectile/core/result';import{createTimePicker}from'@sectile/temporal/time-picker';import{tryCreateTimeFieldState}from'@sectile/temporal/time-field';import{createComponentHandle}from'../component-handle.js';import{provideFormBoundary}from'../form/context.js';import{hiddenInputSubmissionCapabilities,provideFormControlReset,useFormFieldDefaults,useFormMetadataPresence,useFormSubmissionProps}from'../form/control.js';import{useHostActive}from'../host-provider.js';import{provideNativeFieldValueControl}from'../input/native-field.js';import{sameIDs}from'../internal/collection.js';import{useControlledStateInvariant}from'../internal/controlled-state.js';import{ListboxRoot,ListboxItem}from'../listbox.js';import{PopoverRoot,PopoverContent}from'../overlay/popover.js';import{Primitive}from'../primitive.js';import{TimeField}from'./time-field.js';import{useTimePresentation}from'./internal/time-presentation.js';const pickerKey=Symbol('SectileTimePicker');const columnKey=Symbol('SectileTimePickerColumn');const emptyIDs=Object.freeze([]);function usePicker(){const context=inject(pickerKey,undefined);if(context===undefined)throw new TypeError('TimePicker parts require TimePickerRoot.');return context}function projectView(current){return{get element(){return current()?.input?.element??null},focus(options){current()?.input?.element?.focus(options)},select(){current()?.input?.element?.select()},requestClose(){current()?.popup?.requestClose()},selectChoice(part,choice){return current()?.selectChoice(part,choice)??false}}}function inputView(view){return{get element(){return view.element},focus:view.focus,select:view.select}}function columnMetadata(model){return Object.freeze(unwrap(model.resolve(null)).columns.map(column=>{const labels=column.choices.map(choice=>choice.label);return Object.freeze({part:column.part,items:Object.freeze(column.choices.map(choice=>String(choice.id))),textValue:id=>labels[Number(id)]??id})}))}function createTimePickerRoot(){const popupProps=PopoverRoot.props;const popupKeys=Object.keys(popupProps);return defineComponent((props,{attrs,slots,emit,expose})=>{const controlled=useControlledStateInvariant('TimePickerRoot','modelValue',()=>props.modelValue);const active=useHostActive(),inherited=useFormFieldDefaults(),explicit=useFormMetadataPresence();const presentation=useTimePresentation(props,format=>format);const minimum=computed(()=>props.policies?.min),maximum=computed(()=>props.policies?.max);const model=computed(()=>createTimePicker({...presentation.value===undefined?{}:{format:presentation.value},...minimum.value===undefined?{}:{min:minimum.value},...maximum.value===undefined?{}:{max:maximum.value}}));const initial=unwrap(tryCreateTimeFieldState((controlled?props.modelValue:props.defaultValue)??null,undefined,model.value.format)).value;const local=shallowRef(initial);const value=computed(()=>unwrap(tryCreateTimeFieldState((controlled?props.modelValue:local.value)??null,undefined,model.value.format)).value);const effective=key=>explicit.value.includes(key)?props[key]===true:inherited?.value[key]??props[key]===true;const disabled=computed(()=>!active.value||effective('disabled'));const readonly=computed(()=>effective('readonly')),required=computed(()=>effective('required'));const input=shallowRef(null);const composing=computed(()=>input.value?.composing.value??false);const state=computed(()=>unwrap(model.value.resolve(value.value)));const metadata=computed(()=>columnMetadata(model.value));let popup=null,inputs=0,disposed=false;const handle=createComponentHandle(projectView);const publish=next=>{if(disposed||disabled.value||readonly.value||composing.value)return false;if(!controlled)local.value=next;emit('update:modelValue',next);return true};handle.set({get input(){return input.value},get popup(){return popup},selectChoice(part,choice){if(disposed||disabled.value||readonly.value||composing.value)return false;const selected=model.value.select(value.value,part,choice);if(!selected.ok)return false;return input.value===null?publish(selected.value):input.value.commit(selected.value)}});expose(handle.view);provideFormControlReset(()=>{if(!controlled&&!disposed)local.value=initial});const submission=useFormSubmissionProps({element:()=>input.value?.element??null,capabilities:hiddenInputSubmissionCapabilities});const inputProps=computed(()=>{const result={...submission.value,modelValue:value.value,policies:props.policies,precision:props.precision??'minute',disabled:disabled.value,readonly:readonly.value,required:required.value,label:props.label};for(const key of['name','form'])if(explicit.value.includes(key))result[key]=props[key];return result});provide(pickerKey,{value,state,metadata,disabled,readonly,composing,inputProps,view:handle.view,publish,attach(control){input.value=control;return()=>{if(input.value===control)input.value=null}},registerInput(){if(inputs!==0)throw new TypeError('TimePickerRoot accepts at most one TimePickerInput.');inputs++;return()=>{inputs--;input.value=null}}});onBeforeUnmount(()=>{disposed=true;handle.release();input.value=null;popup=null});return()=>{const forwarded={};for(const key of popupKeys)if(props[key]!==undefined)forwarded[key]=props[key];return h(PopoverRoot,{...forwarded,disabled:disabled.value,unmountOnExit:props.unmountOnExit??true,ref:next=>{popup=next},'onUpdate:open':open=>{if(!disposed)emit('update:open',open)},onCloseRequest:reason=>{if(!disposed)emit('closeRequest',reason)},onAfterClose:()=>{if(!disposed)emit('afterClose')},onInteractOutside:event=>{if(!disposed)emit('interactOutside',event)}},{default:popupState=>h(Primitive,mergeProps(attrs,{as:props.as??'div',asChild:props.asChild??false,role:'group','aria-label':props.label,'data-scope':'time-picker','data-part':'root'}),{default:()=>slots.default?.({...popupState,value:value.value,parts:model.value.format.order,disabled:disabled.value,readonly:readonly.value,required:required.value,composing:composing.value,selectChoice:handle.view.selectChoice})})})}},{name:'SectileTimePickerRoot',inheritAttrs:false,props:{...popupProps,modelValue:{type:Object,default:undefined},defaultValue:{type:Object,default:null},policies:{type:Object,default:undefined},precision:{type:String,default:'minute'},name:{type:String,default:undefined},form:{type:String,default:undefined},disabled:{type:Boolean,default:undefined},readonly:{type:Boolean,default:undefined},required:{type:Boolean,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false},unmountOnExit:{type:Boolean,default:true}},emits:['update:modelValue','update:open','closeRequest','afterClose','interactOutside']})}const Root=/* @__PURE__ */createTimePickerRoot();export const TimePickerRoot=Root;const Input=/* @__PURE__ */defineComponent((props,{attrs,expose})=>{const context=usePicker();const unregister=context.registerInput();onBeforeUnmount(unregister);provideNativeFieldValueControl(context.attach);expose(inputView(context.view));return()=>h(TimeField,mergeProps(attrs,context.inputProps.value,{...props.label===undefined?{}:{label:props.label},'onUpdate:modelValue':context.publish}))},{name:'SectileTimePickerInput',inheritAttrs:false,props:{label:{type:String,default:undefined}}});export const TimePickerInput=Input;export const TimePickerContent=/* @__PURE__ */defineComponent((props,{attrs,slots})=>{const context=usePicker();provideFormBoundary();return()=>h(PopoverContent,mergeProps(attrs,{...props}),{default:()=>slots.default?.({value:context.value.value,columns:context.state.value.columns,disabled:context.disabled.value,readonly:context.readonly.value,composing:context.composing.value})})},{name:'SectileTimePickerContent',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}}});export const TimePickerColumn=/* @__PURE__ */defineComponent((props,{attrs,slots,emit})=>{const context=usePicker();provideFormBoundary();const column=computed(()=>{const found=context.state.value.columns.find(current=>current.part===props.part);if(found===undefined)throw new TypeError('TimePickerColumn part must be visible in the current format.');return found});const metadata=computed(()=>context.metadata.value.find(current=>current.part===props.part));const disabledItems=computed(previous=>{const next=column.value.choices.filter(choice=>choice.disabled).map(choice=>String(choice.id));return previous!==undefined&&sameIDs(previous,next)?previous:next.length===0?emptyIDs:next});const renderedItems=computed(previous=>{const next=props.renderedChoices?.map(String);return previous!==undefined&&next!==undefined&&sameIDs(previous,next)?previous:next});provide(columnKey,{column});return()=>h(ListboxRoot,{...attrs,items:metadata.value.items,textValue:metadata.value.textValue,disabledItems:disabledItems.value,renderedItems:renderedItems.value,modelValue:column.value.selected===null?'':String(column.value.selected),disabled:context.disabled.value,readonly:context.readonly.value||context.composing.value,as:props.as??'div',asChild:props.asChild??false,'aria-label':props.label,'data-scope':'time-picker','data-part':'column','data-time-part':props.part,onHighlight:id=>emit('highlight',id===null?null:Number(id)),onActivate:id=>{if(context.view.selectChoice(props.part,Number(id)))emit('activate',Number(id))}},{default:state=>slots.default?.({part:props.part,choices:column.value.choices,selected:column.value.selected,highlighted:state.highlightedValue===null?null:Number(state.highlightedValue),disabled:state.disabled,readonly:state.readonly})})},{name:'SectileTimePickerColumn',inheritAttrs:false,props:{part:{type:String,required:true},label:{type:String,required:true},renderedChoices:{type:Array,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:['highlight','activate']});export const TimePickerItem=/* @__PURE__ */defineComponent((props,{attrs,slots})=>{const context=inject(columnKey,undefined);if(context===undefined)throw new TypeError('TimePickerItem requires TimePickerColumn.');return()=>{const choice=context.column.value.choices[props.value];if(choice===undefined)throw new TypeError('TimePickerItem value must be a choice ID from its column.');return h(ListboxItem,{...attrs,value:String(choice.id),as:props.as??'div',asChild:props.asChild??false,'data-scope':'time-picker','data-part':'item'},{default:state=>slots.default?.({choice,selected:state.selected,highlighted:state.highlighted,disabled:state.disabled})??choice.label})}},{name:'SectileTimePickerItem',inheritAttrs:false,props:{value:{type:Number,required:true},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}}});export{PopoverTrigger as TimePickerTrigger,PopoverAnchor as TimePickerAnchor,PopoverPortal as TimePickerPortal,PopoverTitle as TimePickerTitle,PopoverDescription as TimePickerDescription,PopoverClose as TimePickerClose}from'../overlay/popover.js';
|
|
2
|
+
//# sourceMappingURL=time-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-picker.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","provide","shallowRef","unwrap","createTimePicker","tryCreateTimeFieldState","createComponentHandle","provideFormBoundary","hiddenInputSubmissionCapabilities","provideFormControlReset","useFormFieldDefaults","useFormMetadataPresence","useFormSubmissionProps","useHostActive","provideNativeFieldValueControl","sameIDs","useControlledStateInvariant","ListboxRoot","ListboxItem","PopoverRoot","PopoverContent","Primitive","TimeField","useTimePresentation","pickerKey","Symbol","columnKey","emptyIDs","Object","freeze","usePicker","context","undefined","TypeError","projectView","current","element","input","focus","options","select","requestClose","popup","selectChoice","part","choice","inputView","view","columnMetadata","model","resolve","columns","map","column","labels","choices","label","items","String","id","textValue","Number","createTimePickerRoot","popupProps","props","popupKeys","keys","attrs","slots","emit","expose","controlled","modelValue","active","inherited","explicit","presentation","format","minimum","policies","min","maximum","max","value","initial","defaultValue","local","effective","key","includes","disabled","readonly","required","composing","state","metadata","inputs","disposed","handle","publish","next","set","selected","ok","commit","submission","capabilities","inputProps","result","precision","attach","control","registerInput","release","forwarded","unmountOnExit","ref","open","onCloseRequest","reason","onAfterClose","onInteractOutside","event","default","popupState","as","asChild","role","parts","order","name","inheritAttrs","type","form","Boolean","Function","emits","Root","TimePickerRoot","Input","unregister","TimePickerInput","TimePickerContent","TimePickerColumn","found","find","disabledItems","previous","filter","length","renderedItems","renderedChoices","onHighlight","onActivate","highlighted","highlightedValue","Array","TimePickerItem","PopoverTrigger","PopoverAnchor","PopoverPortal","PopoverTitle","PopoverDescription","PopoverClose"],"sources":["../../src/temporal/time-picker.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TimeRangeFieldPolicies } from '@sectile/dom/temporal/time-range-field';
|
|
3
|
-
import type
|
|
3
|
+
import { type TimeRange } from '@sectile/temporal/time-range-field';
|
|
4
|
+
import type { TimeFieldPrecision } from '@sectile/temporal/time-field';
|
|
4
5
|
import type { PrimitiveAs } from '../primitive.js';
|
|
5
6
|
export interface TimeRangeFieldRootProps {
|
|
7
|
+
readonly name?: string | undefined;
|
|
8
|
+
readonly form?: string | undefined;
|
|
6
9
|
readonly modelValue?: TimeRange | null;
|
|
7
10
|
readonly defaultValue?: TimeRange | null;
|
|
8
11
|
readonly policies?: TimeRangeFieldPolicies;
|
|
12
|
+
readonly precision?: TimeFieldPrecision;
|
|
9
13
|
readonly disabled?: boolean;
|
|
10
14
|
readonly?: boolean;
|
|
11
15
|
readonly required?: boolean;
|
|
@@ -23,6 +27,18 @@ export interface TimeRangeFieldRootSlotProps {
|
|
|
23
27
|
readonly: boolean;
|
|
24
28
|
}
|
|
25
29
|
export declare const TimeRangeFieldRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
30
|
+
name: {
|
|
31
|
+
type: PropType<string | undefined>;
|
|
32
|
+
default: undefined;
|
|
33
|
+
};
|
|
34
|
+
form: {
|
|
35
|
+
type: PropType<string | undefined>;
|
|
36
|
+
default: undefined;
|
|
37
|
+
};
|
|
38
|
+
precision: {
|
|
39
|
+
type: PropType<TimeFieldPrecision>;
|
|
40
|
+
default: undefined;
|
|
41
|
+
};
|
|
26
42
|
modelValue: {
|
|
27
43
|
type: PropType<TimeRange | null>;
|
|
28
44
|
default: undefined;
|
|
@@ -66,6 +82,18 @@ export declare const TimeRangeFieldRoot: import("vue").DefineComponent<import("v
|
|
|
66
82
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
67
83
|
'update:modelValue': (_value: TimeRange | null) => boolean;
|
|
68
84
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
85
|
+
name: {
|
|
86
|
+
type: PropType<string | undefined>;
|
|
87
|
+
default: undefined;
|
|
88
|
+
};
|
|
89
|
+
form: {
|
|
90
|
+
type: PropType<string | undefined>;
|
|
91
|
+
default: undefined;
|
|
92
|
+
};
|
|
93
|
+
precision: {
|
|
94
|
+
type: PropType<TimeFieldPrecision>;
|
|
95
|
+
default: undefined;
|
|
96
|
+
};
|
|
69
97
|
modelValue: {
|
|
70
98
|
type: PropType<TimeRange | null>;
|
|
71
99
|
default: undefined;
|
|
@@ -109,6 +137,9 @@ export declare const TimeRangeFieldRoot: import("vue").DefineComponent<import("v
|
|
|
109
137
|
}>> & Readonly<{
|
|
110
138
|
"onUpdate:modelValue"?: (_value: TimeRange | null) => any;
|
|
111
139
|
}>, {
|
|
140
|
+
name: string | undefined;
|
|
141
|
+
form: string | undefined;
|
|
142
|
+
precision: TimeFieldPrecision;
|
|
112
143
|
modelValue: TimeRange | null;
|
|
113
144
|
defaultValue: TimeRange | null;
|
|
114
145
|
policies: TimeRangeFieldPolicies;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent}from'vue';import{createTimeRangeField,tryCreateTimeRangeFieldState}from'@sectile/dom/temporal/time-range-field';import{setupNativeRangeField,createNativeRangeFieldInput}from'../input/native-range-field.js';const contextKey=Symbol('SectileTimeRangeField');const config={name:'TimeRangeFieldRoot',scope:'time-range-field',contextKey,initial:tryCreateTimeRangeFieldState,create:createTimeRangeField};export const TimeRangeFieldRoot=/* @__PURE__ */defineComponent({name:'SectileTimeRangeFieldRoot',inheritAttrs:false,props:{modelValue:{type:Object,default:undefined},defaultValue:{type:Object,default:null},policies:{type:Object,default:undefined},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},startLabel:{type:String,default:undefined},endLabel:{type:String,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true},slots:Object,setup(props,context){return setupNativeRangeField(config,props,context)}});export const TimeRangeFieldStartInput=/* @__PURE__ */createNativeRangeFieldInput(contextKey,'time-range-field','HH:mm','start','SectileTimeRangeFieldStartInput','TimeRangeFieldRoot');export const TimeRangeFieldEndInput=/* @__PURE__ */createNativeRangeFieldInput(contextKey,'time-range-field','HH:mm','end','SectileTimeRangeFieldEndInput','TimeRangeFieldRoot');
|
|
1
|
+
import{defineComponent}from'vue';import{createTimeRangeField,tryCreateTimeRangeFieldState}from'@sectile/dom/temporal/time-range-field';import{reformatTimeRangeFieldState}from'@sectile/temporal/time-range-field';import{getTimeFieldPlaceholder}from'@sectile/dom/temporal/time-field';import{setupNativeRangeField,createNativeRangeFieldInput}from'../input/native-range-field.js';import{useTimePresentation}from'./internal/time-presentation.js';const contextKey=Symbol('SectileTimeRangeField');const config={name:'TimeRangeFieldRoot',scope:'time-range-field',contextKey,reset:true,initial:tryCreateTimeRangeFieldState,create:createTimeRangeField,rebase:(state,start,end)=>reformatTimeRangeFieldState({...state,start:{...state.start,inputState:start},end:{...state.end,inputState:end}})};export const TimeRangeFieldRoot=/* @__PURE__ */defineComponent({__sectileFormLabelMode:'labelledby',name:'SectileTimeRangeFieldRoot',inheritAttrs:false,props:{name:{type:String,default:undefined},form:{type:String,default:undefined},precision:{type:String,default:undefined},modelValue:{type:Object,default:undefined},defaultValue:{type:Object,default:null},policies:{type:Object,default:undefined},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},startLabel:{type:String,default:undefined},endLabel:{type:String,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true},slots:Object,setup(props,context){const presentation=useTimePresentation(props,format=>({inputMode:format.dayPeriods===undefined?'numeric':'text',placeholder:getTimeFieldPlaceholder(format),initial:options=>tryCreateTimeRangeFieldState({...options,startFormat:format,endFormat:format}),create:options=>createTimeRangeField({...options,format}),rebase:(state,start,end)=>reformatTimeRangeFieldState({...state,start:{...state.start,inputState:start},end:{...state.end,inputState:end}},format)}));return setupNativeRangeField({...config,usePresentation:()=>presentation},props,context)}});export const TimeRangeFieldStartInput=/* @__PURE__ */createNativeRangeFieldInput(contextKey,'time-range-field','HH:mm','start','SectileTimeRangeFieldStartInput','TimeRangeFieldRoot');export const TimeRangeFieldEndInput=/* @__PURE__ */createNativeRangeFieldInput(contextKey,'time-range-field','HH:mm','end','SectileTimeRangeFieldEndInput','TimeRangeFieldRoot');
|
|
2
2
|
//# sourceMappingURL=time-range-field.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-range-field.js","names":["defineComponent","createTimeRangeField","tryCreateTimeRangeFieldState","setupNativeRangeField","createNativeRangeFieldInput","contextKey","Symbol","config","name","scope","initial","create","TimeRangeFieldRoot","
|
|
1
|
+
{"version":3,"file":"time-range-field.js","names":["defineComponent","createTimeRangeField","tryCreateTimeRangeFieldState","reformatTimeRangeFieldState","getTimeFieldPlaceholder","setupNativeRangeField","createNativeRangeFieldInput","useTimePresentation","contextKey","Symbol","config","name","scope","reset","initial","create","rebase","state","start","end","inputState","TimeRangeFieldRoot","__sectileFormLabelMode","inheritAttrs","props","type","String","default","undefined","form","precision","modelValue","Object","defaultValue","policies","disabled","Boolean","readonly","required","startLabel","endLabel","as","Function","asChild","emits","_value","slots","setup","context","presentation","format","inputMode","dayPeriods","placeholder","options","startFormat","endFormat","usePresentation","TimeRangeFieldStartInput","TimeRangeFieldEndInput"],"sources":["../../src/temporal/time-range-field.ts"],"mappings":"OAASA,oBAAuE,aACvEC,qBAAsBC,iCAA2F,gDACjHC,gCAAmD,4CAEnDC,4BAA+B,0CAC/BC,sBAAuBC,gCAA8F,wCACrHC,wBAA2B,kCAKpC,MAAMC,WAAaC,OAAO,yBAE1B,MAAMC,OAAyF,CAC7FC,KAAM,qBAAsBC,MAAO,mBAAoBJ,WACvDK,MAAO,KACPC,QAASZ,6BAA8Ba,OAAQd,qBAC/Ce,OAAQ,CAACC,MAAOC,MAAOC,MAAQhB,4BAA4B,IAAKc,MAAOC,MAAO,IAAKD,MAAMC,MAAOE,WAAYF,OAASC,IAAK,IAAKF,MAAME,IAAKC,WAAYD,eAGjJ,MAAME,kCAAqCrB,gBAAgB,CAChEsB,uBAAwB,aACxBX,KAAM,4BAA6BY,aAAc,MACjDC,MAAO,CAAEb,KAAM,CAAEc,KAAMC,OAAwCC,QAASC,WAAaC,KAAM,CAAEJ,KAAMC,OAAwCC,QAASC,WAAaE,UAAW,CAAEL,KAAMC,OAAwCC,QAASC,WAAaG,WAAY,CAAEN,KAAMO,OAAsCL,QAASC,WAAaK,aAAc,CAAER,KAAMO,OAAsCL,QAAS,MAAQO,SAAU,CAAET,KAAMO,OAA4CL,QAASC,WAAaO,SAAU,CAAEV,KAAMW,QAAST,QAAS,OAASU,SAAU,CAAEZ,KAAMW,QAAST,QAAS,OAASW,SAAU,CAAEb,KAAMW,QAAST,QAAS,OAASY,WAAY,CAAEd,KAAMC,OAAQC,QAASC,WAAaY,SAAU,CAAEf,KAAMC,OAAQC,QAASC,WAAaa,GAAI,CAAEhB,KAAM,CAACC,OAAQM,OAAQU,UAAoCf,QAAS,OAASgB,QAAS,CAAElB,KAAMW,QAAST,QAAS,QACl0BiB,MAAO,CAAE,oBAAsBC,QAAsC,MAAQC,MAAOd,OACpF,KAAAe,CAAMvB,MAAOwB,SACX,MAAMC,aAAe1C,oBAAqGiB,MAAO0B,SAAU,CACzIC,UAAWD,OAAOE,aAAexB,UAAY,UAAY,OAAQyB,YAAajD,wBAAwB8C,QACtGpC,QAASwC,SAAWpD,6BAA6B,IAAKoD,QAASC,YAAaL,OAAQM,UAAWN,SAC/FnC,OAAQuC,SAAWrD,qBAAqB,IAAKqD,QAASJ,SACtDlC,OAAQ,CAACC,MAAOC,MAAOC,MAAQhB,4BAA4B,IAAKc,MAAOC,MAAO,IAAKD,MAAMC,MAAOE,WAAYF,OAASC,IAAK,IAAKF,MAAME,IAAKC,WAAYD,MAAS+B,WAEjK,OAAO7C,sBAAsB,IAAKK,OAAQ+C,gBAAiB,IAAMR,cAAgBzB,MAAOwB,QAC1F,WAIK,MAAMU,wCAA2CpD,4BAA4BE,WAAY,mBAAoB,QAAS,QAAS,kCAAmC,6BAClK,MAAMmD,sCAAyCrD,4BAA4BE,WAAY,mBAAoB,QAAS,MAAO,gCAAiC","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DatePickerOptions } from '@sectile/dom/temporal/date-picker';
|
|
2
2
|
import type { DateValue } from '@sectile/dom/temporal/date-field';
|
|
3
3
|
import { type PickerRootPartComponent, type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
|
|
4
|
+
import type { PickerContentPartComponent, PickerContentSlotProps } from './picker.js';
|
|
4
5
|
export interface YearPickerRootProps extends PickerPartProps, PickerPositionProps {
|
|
5
6
|
readonly modelValue?: DateValue | null;
|
|
6
7
|
readonly defaultValue?: DateValue | null;
|
|
@@ -18,6 +19,7 @@ export interface YearPickerRootProps extends PickerPartProps, PickerPositionProp
|
|
|
18
19
|
}
|
|
19
20
|
export declare const YearPickerRoot: import("./picker.js").PickerRootComponent<"date">;
|
|
20
21
|
export type YearPickerRootSlotProps = PickerRootSlotProps<DateValue | null>;
|
|
22
|
+
export type YearPickerContentSlotProps = PickerContentSlotProps<DateValue | null>;
|
|
21
23
|
export type YearPickerValueChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:modelValue']>;
|
|
22
24
|
export type YearPickerOpenChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:open']>;
|
|
23
25
|
export type YearPickerHighlightedValueChangeHandler = NonNullable<InstanceType<typeof YearPickerRoot>['$props']['onUpdate:highlightedValue']>;
|
|
@@ -54,7 +56,7 @@ export declare const YearPickerPortal: import("vue").DefineComponent<import("vue
|
|
|
54
56
|
disabled: boolean;
|
|
55
57
|
defer: boolean;
|
|
56
58
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
57
|
-
export declare const YearPickerContent:
|
|
59
|
+
export declare const YearPickerContent: PickerContentPartComponent<'date'>;
|
|
58
60
|
export declare const YearPickerGrid: PickerRootPartComponent<'date'>;
|
|
59
61
|
export declare const YearPickerCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
60
62
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearPickerCapability","YearPickerRoot","scope","granularity","defaultView","YearPickerTrigger","YearPickerAnchor","YearPickerPortal","YearPickerContent","YearPickerGrid","YearPickerCell","YearPickerInput","YearPickerPreviousPage","YearPickerNextPage"],"sources":["../../src/temporal/year-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,yBAA4B,
|
|
1
|
+
{"version":3,"file":"year-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearPickerCapability","YearPickerRoot","scope","granularity","defaultView","YearPickerTrigger","YearPickerAnchor","YearPickerPortal","YearPickerContent","YearPickerGrid","YearPickerCell","YearPickerInput","YearPickerPreviousPage","YearPickerNextPage"],"sources":["../../src/temporal/year-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,yBAA4B,uCAkB9B,MAAMC,8BAAiCF,iBAAiBC,qBAAsB,wBAAyB,CAAEE,MAAO,cAAeC,YAAa,OAAQC,YAAa,gBAMjK,MAAMC,kBAAoBV,qBAC1B,MAAMW,iBAAmBf,oBACzB,MAAMgB,iBAAmBb,oBACzB,MAAMc,kBAAoBhB,qBAC1B,MAAMiB,eAAiBhB,kBACvB,MAAMiB,8BAAiCZ,qBAAqB,OAAQ,gCACpE,MAAMa,+BAAkCf,kBAAkB,QAAS,iCACnE,MAAMgB,sCAAyCf,iBAAiB,QAAS,EAAG,gCAAiC,wBAC7G,MAAMgB,kCAAqChB,iBAAiB,OAAQ,EAAG,4BAA6B","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DateRangePickerOptions } from '@sectile/dom/temporal/date-range-picker';
|
|
2
2
|
import type { DateRange, DateValue } from '@sectile/dom/temporal/date-field';
|
|
3
3
|
import { type PickerRootPartComponent, type PickerPartProps, type PickerPortalProps, type PickerPositionProps, type PickerRootSlotProps, type PickerYearCellSlotProps } from './picker.js';
|
|
4
|
+
import type { PickerContentPartComponent, PickerContentSlotProps } from './picker.js';
|
|
4
5
|
export interface YearRangePickerRootProps extends PickerPartProps, PickerPositionProps {
|
|
5
6
|
readonly modelValue?: DateRange | null;
|
|
6
7
|
readonly defaultValue?: DateRange | null;
|
|
@@ -18,6 +19,7 @@ export interface YearRangePickerRootProps extends PickerPartProps, PickerPositio
|
|
|
18
19
|
}
|
|
19
20
|
export declare const YearRangePickerRoot: import("./picker.js").PickerRootComponent<"date-range">;
|
|
20
21
|
export type YearRangePickerRootSlotProps = PickerRootSlotProps<DateRange | null>;
|
|
22
|
+
export type YearRangePickerContentSlotProps = PickerContentSlotProps<DateRange | null>;
|
|
21
23
|
export type YearRangePickerValueChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:modelValue']>;
|
|
22
24
|
export type YearRangePickerOpenChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:open']>;
|
|
23
25
|
export type YearRangePickerHighlightedValueChangeHandler = NonNullable<InstanceType<typeof YearRangePickerRoot>['$props']['onUpdate:highlightedValue']>;
|
|
@@ -54,7 +56,7 @@ export declare const YearRangePickerPortal: import("vue").DefineComponent<import
|
|
|
54
56
|
disabled: boolean;
|
|
55
57
|
defer: boolean;
|
|
56
58
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
57
|
-
export declare const YearRangePickerContent:
|
|
59
|
+
export declare const YearRangePickerContent: PickerContentPartComponent<'date-range'>;
|
|
58
60
|
export declare const YearRangePickerGrid: PickerRootPartComponent<'date-range'>;
|
|
59
61
|
export declare const YearRangePickerCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
60
62
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year-range-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearRangePickerCapability","YearRangePickerRoot","scope","granularity","defaultView","YearRangePickerTrigger","YearRangePickerAnchor","YearRangePickerPortal","YearRangePickerContent","YearRangePickerGrid","YearRangePickerCell","YearRangePickerStartInput","YearRangePickerEndInput","YearRangePickerPreviousPage","YearRangePickerNextPage"],"sources":["../../src/temporal/year-range-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,8BAAiC,
|
|
1
|
+
{"version":3,"file":"year-range-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMove","createPickerYearCell","createPickerRoot","yearRangePickerCapability","YearRangePickerRoot","scope","granularity","defaultView","YearRangePickerTrigger","YearRangePickerAnchor","YearRangePickerPortal","YearRangePickerContent","YearRangePickerGrid","YearRangePickerCell","YearRangePickerStartInput","YearRangePickerEndInput","YearRangePickerPreviousPage","YearRangePickerNextPage"],"sources":["../../src/temporal/year-range-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,iBAAkBC,qBAC3GC,qBACK,qBACEC,8BAAiC,6CAkBnC,MAAMC,mCAAsCF,iBAAiBC,0BAA2B,6BAA8B,CAAEE,MAAO,oBAAqBC,YAAa,OAAQC,YAAa,gBAMtL,MAAMC,uBAAyBV,qBAC/B,MAAMW,sBAAwBf,oBAC9B,MAAMgB,sBAAwBb,oBAC9B,MAAMc,uBAAyBhB,qBAC/B,MAAMiB,oBAAsBhB,kBAC5B,MAAMiB,mCAAsCZ,qBAAqB,OAAQ,qCACzE,MAAMa,yCAA4Cf,kBAAkB,cAAe,2CACnF,MAAMgB,uCAA0ChB,kBAAkB,YAAa,yCAC/E,MAAMiB,2CAA8ChB,iBAAiB,QAAS,EAAG,qCAAsC,wBACvH,MAAMiB,uCAA0CjB,iBAAiB,OAAQ,EAAG,iCAAkC","ignoreList":[]}
|
package/dist/text.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type PropType, type VNodeChild } from 'vue';
|
|
2
|
+
import { type TextSnapshot, type TextQuery, type TextQueryOptions } from '@sectile/core/text';
|
|
3
|
+
import { type Result } from '@sectile/core/result';
|
|
2
4
|
export interface TextFieldProps {
|
|
3
5
|
readonly modelValue?: string | number;
|
|
4
6
|
readonly defaultValue?: string | number;
|
|
@@ -18,7 +20,39 @@ export interface TextFieldModelModifiers {
|
|
|
18
20
|
readonly number?: boolean;
|
|
19
21
|
readonly trim?: boolean;
|
|
20
22
|
}
|
|
21
|
-
export
|
|
23
|
+
export interface TextFieldExpose {
|
|
24
|
+
/** Request an explicit empty-text commit; controlled parents retain acceptance. */
|
|
25
|
+
clear(): boolean;
|
|
26
|
+
/** Read the current native draft; null while unavailable, unsettled or composing. */
|
|
27
|
+
getTextSnapshot(): TextFieldSnapshot | null;
|
|
28
|
+
/** Project a bounded trigger query against the current issued native snapshot. */
|
|
29
|
+
getTextQuery(options: TextFieldQueryOptions): Result<TextFieldQuery | null>;
|
|
30
|
+
/** Commit one plain-text replacement against this field's current issued snapshot. */
|
|
31
|
+
replaceText(request: TextFieldReplacement): Promise<TextFieldEditResult>;
|
|
32
|
+
}
|
|
33
|
+
declare const textFieldSnapshotBrand: unique symbol;
|
|
34
|
+
export interface TextFieldSnapshot extends TextSnapshot {
|
|
35
|
+
readonly [textFieldSnapshotBrand]: true;
|
|
36
|
+
}
|
|
37
|
+
export type TextFieldQueryOptions = TextQueryOptions;
|
|
38
|
+
export interface TextFieldQuery extends TextQuery {
|
|
39
|
+
readonly snapshot: TextFieldSnapshot;
|
|
40
|
+
}
|
|
41
|
+
export interface TextFieldReplacement {
|
|
42
|
+
readonly snapshot: TextFieldSnapshot;
|
|
43
|
+
readonly startCodeUnitOffset: number;
|
|
44
|
+
readonly endCodeUnitOffset: number;
|
|
45
|
+
readonly text: string;
|
|
46
|
+
}
|
|
47
|
+
export type TextFieldEditRejection = 'unavailable' | 'disabled' | 'readonly' | 'composing' | 'busy' | 'stale' | 'invalid' | 'refused';
|
|
48
|
+
export type TextFieldEditResult = {
|
|
49
|
+
readonly status: 'accepted';
|
|
50
|
+
readonly snapshot: TextFieldSnapshot;
|
|
51
|
+
} | {
|
|
52
|
+
readonly status: 'rejected';
|
|
53
|
+
readonly reason: TextFieldEditRejection;
|
|
54
|
+
};
|
|
55
|
+
declare const TextFieldImplementation: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
22
56
|
modelValue: {
|
|
23
57
|
type: (NumberConstructor | StringConstructor)[];
|
|
24
58
|
default: undefined;
|
|
@@ -69,6 +103,7 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
|
|
|
69
103
|
};
|
|
70
104
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
71
105
|
'update:modelValue': (_value: string | number) => boolean;
|
|
106
|
+
snapshotChange: () => boolean;
|
|
72
107
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
73
108
|
modelValue: {
|
|
74
109
|
type: (NumberConstructor | StringConstructor)[];
|
|
@@ -119,6 +154,7 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
|
|
|
119
154
|
default: undefined;
|
|
120
155
|
};
|
|
121
156
|
}>> & Readonly<{
|
|
157
|
+
onSnapshotChange?: () => any;
|
|
122
158
|
"onUpdate:modelValue"?: (_value: string | number) => any;
|
|
123
159
|
}>, {
|
|
124
160
|
modelValue: string | number;
|
|
@@ -134,4 +170,10 @@ export declare const TextField: import("vue").DefineComponent<import("vue").Extr
|
|
|
134
170
|
placeholder: string;
|
|
135
171
|
autocomplete: string;
|
|
136
172
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
173
|
+
type TextFieldComponent = typeof TextFieldImplementation & {
|
|
174
|
+
new (): InstanceType<typeof TextFieldImplementation> & TextFieldExpose;
|
|
175
|
+
};
|
|
176
|
+
export declare const TextField: TextFieldComponent;
|
|
137
177
|
export type TextFieldValueChangeHandler = (value: string | number) => void;
|
|
178
|
+
export type TextFieldSnapshotChangeHandler = () => void;
|
|
179
|
+
export {};
|
package/dist/text.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent,h,mergeProps,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from"vue";import{connectText,createTextController,createTextState}from"@sectile/dom/text";import{useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const TextField=defineComponent({name:"SectileTextField",inheritAttrs:false,props:{modelValue:{type:[String,Number],default:void 0},defaultValue:{type:[String,Number],default:""},modelModifiers:{type:Object,default:()=>({})},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},placeholder:{type:String,default:void 0},autocomplete:{type:String,default:void 0}},emits:{"update:modelValue":_value=>true},setup(props,{attrs,emit}){const element=shallowRef(null);const controlled=useControlledStateInvariant("TextField","modelValue",()=>props.modelValue);const initialValue=String(controlled?props.modelValue:props.defaultValue);const renderServerValue=typeof window==="undefined";let controller=null;let connection=null;let proposedState=null;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;let mounted=false;const createController=state=>{const result=createTextController({...controlled&&!props.modelModifiers.lazy?{value:state}:{defaultValue:state},disabled:props.disabled,readOnly:props.readonly,onValueChange:change=>{const wasComposing=proposedState!==null&&proposedState.composition!==null;proposedState=change.value;if(change.value.composition!==null)return;if(props.modelModifiers.lazy){if(wasComposing)settleControlledProposal(change.value);return}emit("update:modelValue",change.value.snapshot.text);settleControlledProposal(change.value)}});if(!result.ok)throw new TypeError(result.error.message);return result.value};const mountConnection=state=>{if(!mounted||element.value===null)return;connection?.disconnect();controller=createController(state);connection=connectText({controller,element:element.value,disabled:props.disabled,readOnly:props.readonly,onTransition:({input})=>{if(!controlled||props.modelModifiers.lazy||input.type!=="composition-commit")return;const proposal=proposedState;if(proposal===null||proposal.composition!==null||connection===null)return;const result=connection.syncControlledValues({value:proposal});if(!result.ok)throw new TypeError(result.error.message)}});connection.render()};const requestReconnect=()=>{if(inputComposing){reconnectPending=true;return}const state=proposedState??controller?.getSnapshot().state??createTextState(String(controlled?props.modelValue:props.defaultValue));mountConnection(state)};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;requestReconnect()},0)};function settleControlledProposal(proposal){if(!controlled)return;void nextTick(()=>{if(connection===null||proposedState!==proposal||props.modelValue===void 0)return;proposedState=null;const text=String(props.modelValue);const state=proposal.snapshot.text===text?proposal:createTextState(text);if(props.modelModifiers.lazy){mountConnection(state);return}const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)})}const participation=useNativeInputFormControl(element,{reset:()=>{queueMicrotask(()=>mountConnection(createTextState(controlled?String(props.modelValue):initialValue)))}});onMounted(()=>{mounted=true;mountConnection(createTextState(initialValue))});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection?.disconnect();connection=null;controller=null;proposedState=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;if(proposedState!==null&&proposedState.composition!==null)return;const text=String(value);const state=proposedState?.snapshot.text===text?proposedState:createTextState(text);proposedState=null;if(props.modelModifiers.lazy){mountConnection(state);return}const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)});watch([()=>props.disabled,()=>props.readonly],requestReconnect);const commitLazyValue=()=>{if(!props.modelModifiers.lazy||controller===null)return;emit("update:modelValue",controller.getSnapshot().state.snapshot.text)};return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element,...!props.multiline?{type:props.type}:{},...renderServerValue?{value:initialValue}:{},disabled:props.disabled,readonly:props.readonly,required:props.required,name:props.name,form:props.form,placeholder:props.placeholder,autocomplete:props.autocomplete,onCompositionstart:()=>setInputComposing(true),onCompositionend:()=>setInputComposing(false),onChange:commitLazyValue,"data-scope":"text","data-part":"input","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0},participation.controlProps.value))}});export{TextField};
|
|
1
|
+
import{defineComponent,getCurrentInstance,h,mergeProps,nextTick,onBeforeUnmount,onBeforeUpdate,onMounted,onUpdated,shallowRef,watch}from"vue";import{connectText,createTextController,createTextState}from"@sectile/dom/text";import{useFormControlFlags,useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{captureNativeTextState}from"./input/native-text-state.js";import{cancelTextComposition,findTextQuery}from"@sectile/core/text";import{okResult}from"@sectile/core/result";function rejectedTextEdit(reason){return Object.freeze({status:"rejected",reason})}function textFieldClear(port){return()=>port.request?.()??false}function textFieldRead(port){return()=>port.read?.()??null}function textFieldQuery(port){return options=>port.query?.(options)??okResult(null)}function textFieldReplace(port){return request=>port.replace?.(request)??Promise.resolve(rejectedTextEdit("unavailable"))}const TextFieldImplementation=defineComponent({name:"SectileTextField",inheritAttrs:false,props:{modelValue:{type:[String,Number],default:void 0},defaultValue:{type:[String,Number],default:""},modelModifiers:{type:Object,default:()=>({})},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},placeholder:{type:String,default:void 0},autocomplete:{type:String,default:void 0}},emits:{"update:modelValue":_value=>true,snapshotChange:()=>true},setup(props,{attrs,emit}){const flags=useFormControlFlags(props);const instance=getCurrentInstance();const element=shallowRef(null);const controlled=useControlledStateInvariant("TextField","modelValue",()=>props.modelValue);const initialValue=String(controlled?props.modelValue:props.defaultValue);const multiline=shallowRef(props.multiline);let replacement=null;const renderServerValue=typeof window==="undefined";let controller=null;let connection=null;let connectedElement=null;let proposedState=null;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;let mounted=false;let snapshotNotificationPending=false;const clearPort={request:null,read:null,query:null,replace:null};let clearing=null;let frame=null;let synchronizedModelValue=props.modelValue;Object.defineProperty(instance.proxy,"clear",{configurable:true,value:textFieldClear(clearPort)});Object.defineProperty(instance.proxy,"getTextSnapshot",{configurable:true,value:textFieldRead(clearPort)});Object.defineProperty(instance.proxy,"getTextQuery",{configurable:true,value:textFieldQuery(clearPort)});Object.defineProperty(instance.proxy,"replaceText",{configurable:true,value:textFieldReplace(clearPort)});function notifySnapshotChange(){if(!mounted||snapshotNotificationPending||!instance.vnode.props?.["onSnapshotChange"])return;snapshotNotificationPending=true;void nextTick(()=>{snapshotNotificationPending=false;if(mounted)emit("snapshotChange")})}const createController=state=>{const result=createTextController({...controlled&&!props.modelModifiers.lazy?{value:state}:{defaultValue:state},disabled:flags.value.disabled,readOnly:flags.value.readonly,onValueChange:change=>{frame=null;if(clearing!==null&&clearing.proposal===null)clearing.proposal=change.value;const wasComposing=proposedState!==null&&proposedState.composition!==null;const selectionOnly=change.value.snapshot.text===change.previousValue.snapshot.text&&change.value.composition===change.previousValue.composition;proposedState=change.value;if(change.value.composition!==null){notifySnapshotChange();return}if(selectionOnly){if(!props.modelModifiers.lazy)settleControlledProposal(change.value);notifySnapshotChange();return}if(props.modelModifiers.lazy){if(wasComposing)settleControlledProposal(change.value);notifySnapshotChange();return}emit("update:modelValue",change.value.snapshot.text);settleControlledProposal(change.value,clearing?.restore??null);notifySnapshotChange()}});if(!result.ok)throw new TypeError(result.error.message);return result.value};const mountConnection=state=>{if(!mounted||element.value===null)return;frame=null;synchronizedModelValue=props.modelValue;connection?.disconnect();connection=null;connectedElement=element.value;controller=createController(state);connection=connectText({controller,element:element.value,disabled:flags.value.disabled,readOnly:flags.value.readonly,onTransition:({input})=>{if(!controlled||props.modelModifiers.lazy||input.type!=="composition-commit")return;const proposal=proposedState;if(proposal===null||proposal.composition!==null||connection===null)return;const result=connection.syncControlledValues({value:proposal});if(!result.ok)throw new TypeError(result.error.message)}});connection.render();notifySnapshotChange()};const requestReconnect=()=>{if(inputComposing){reconnectPending=true;return}if(multiline.value!==props.multiline){if(!props.multiline&&/[\r\n]/u.test(connectedElement?.value??""))return;multiline.value=props.multiline;return}const state=proposedState??controller?.getSnapshot().state??createTextState(String(controlled?props.modelValue:props.defaultValue));mountConnection(state)};const setInputComposing=composing=>{inputComposing=composing;if(composing)frame=null;notifySnapshotChange();if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;requestReconnect()},0)};function synchronizeControlledState(state,proposal){if(connection===null)return;frame=null;synchronizedModelValue=props.modelValue;if(props.modelModifiers.lazy)mountConnection(state);else{const result=connection.syncControlledValues({value:state});if(!result.ok)throw new TypeError(result.error.message)}if(clearing!==null&&proposal!==null&&clearing.proposal===proposal&&connection!==null){clearing.settlement={accepted:state===proposal,connection,revision:connection.getSnapshot().revision}}notifySnapshotChange()}function settleControlledProposal(proposal,restore=null){if(!controlled)return;void nextTick(()=>{if(connection===null||proposedState!==proposal||props.modelValue===void 0)return;proposedState=null;const text=String(props.modelValue);const state=proposal.snapshot.text===text?proposal:restore?.snapshot.text===text?restore:createTextState(text);synchronizeControlledState(state,proposal)})}const participation=useNativeInputFormControl(element,{reset:()=>{queueMicrotask(()=>{if(!mounted)return;inputComposing=false;proposedState=null;reconnectPending=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;mountConnection(createTextState(controlled?String(props.modelValue):initialValue))})}});onMounted(()=>{mounted=true;mountConnection(createTextState(controlled?String(props.modelValue):initialValue))});onBeforeUpdate(()=>{const previous=connectedElement;if(!mounted||!previous||previous.tagName==="TEXTAREA"===multiline.value)return;replacement={state:captureNativeTextState(previous,previous.value),focused:previous.ownerDocument.activeElement===previous}});onUpdated(()=>{if(!mounted||element.value===null||connectedElement===element.value)return;const preserved=replacement;replacement=null;let state=preserved?.state??proposedState??controller?.getSnapshot().state??createTextState(initialValue);if(state.composition!==null){const cancelled=cancelTextComposition(state);if(!cancelled.ok)throw new TypeError(cancelled.error.message);state=cancelled.value}inputComposing=false;reconnectPending=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;proposedState=null;mountConnection(state);if(preserved?.focused&&!flags.value.disabled){const focused=element.value.ownerDocument.activeElement;if(focused===null||focused===element.value.ownerDocument.body)element.value.focus({preventScroll:true})}});onBeforeUnmount(()=>{clearPort.request=null;clearPort.read=null;clearPort.query=null;clearPort.replace=null;frame=null;clearing=null;mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection?.disconnect();connection=null;connectedElement=null;controller=null;proposedState=null;replacement=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;if(proposedState!==null&&proposedState.composition!==null)return;const text=String(value);const proposal=proposedState;const state=proposal?.snapshot.text===text?proposal:createTextState(text);proposedState=null;synchronizeControlledState(state,proposal)});watch([()=>flags.value.disabled,()=>flags.value.readonly,()=>props.multiline],requestReconnect);const commitLazyValue=()=>{if(!props.modelModifiers.lazy||controller===null)return;emit("update:modelValue",controller.getSnapshot().state.snapshot.text)};clearPort.request=()=>{let target=connection;const input=element.value;if(!mounted||!target||!input||clearing||flags.value.disabled||flags.value.readonly||inputComposing)return false;const state=proposedState??target.getSnapshot().state;if(state.composition!==null||state.snapshot.text.length===0)return false;if(connectedElement!==input){mountConnection(state);target=connection;if(!mounted||!target||connectedElement!==input){connection?.disconnect();connection=null;connectedElement=null;controller=null;return false}}const operation={restore:controlled?captureNativeTextState(input,state.snapshot.text):null,proposal:null,settlement:null};clearing=operation;try{const accepted=target.handleEvent({type:"input",inputType:"deleteByCut",text:"",startCodeUnitOffset:0,endCodeUnitOffset:state.snapshot.text.length,selection:{anchorCodeUnitOffset:0,focusCodeUnitOffset:0}});if(accepted&&mounted&&connection===target&&props.modelModifiers.lazy){const proposal=proposedState;commitLazyValue();if(mounted&&connection===target&&proposal)settleControlledProposal(proposal,operation.restore)}return accepted}finally{clearing=null}};clearPort.read=()=>{const target=connection,input=element.value;if(!mounted||!target||!input||connectedElement!==input||inputComposing||controlled&&props.modelValue!==synchronizedModelValue)return null;const current=target.getSnapshot(),state=current.state;if(state.composition!==null||input.value!==state.snapshot.text)return null;const start=input.selectionStart,end=input.selectionEnd;if(start===null||end===null)return null;const backward=input.selectionDirection==="backward",selection=state.snapshot.selection;if(selection.anchorCodeUnitOffset!==(backward?end:start)||selection.focusCodeUnitOffset!==(backward?start:end))return null;if(frame?.connection===target&&frame.revision===current.revision)return frame.snapshot;const snapshot=Object.freeze({text:state.snapshot.text,selection});frame={snapshot,connection:target,revision:current.revision};return snapshot};clearPort.query=options=>{const snapshot=clearPort.read?.(),target=connection;if(!snapshot||!target)return okResult(null);const query=findTextQuery(target.getSnapshot().state,options);if(!query.ok)return query;if(query.value===null)return okResult(null);return okResult(Object.freeze({...query.value,snapshot}))};clearPort.replace=async request=>{if(typeof request!=="object"||request===null)return rejectedTextEdit("invalid");const{snapshot,startCodeUnitOffset,endCodeUnitOffset,text}=request;if(typeof text!=="string"||typeof startCodeUnitOffset!=="number"||typeof endCodeUnitOffset!=="number")return rejectedTextEdit("invalid");const target=connection,input=element.value;if(!mounted||!target||!input||connectedElement!==input)return rejectedTextEdit("unavailable");if(flags.value.disabled)return rejectedTextEdit("disabled");if(flags.value.readonly)return rejectedTextEdit("readonly");if(inputComposing||target.getSnapshot().state.composition!==null)return rejectedTextEdit("composing");if(clearing!==null)return rejectedTextEdit("busy");const issued=clearPort.read?.();if(!issued||issued!==snapshot)return rejectedTextEdit("stale");const operation={restore:target.getSnapshot().state,proposal:null,settlement:null};clearing=operation;try{const caret=startCodeUnitOffset+text.length;const dispatched=target.handleEvent({type:"input",inputType:"insertReplacementText",text,startCodeUnitOffset,endCodeUnitOffset,selection:{anchorCodeUnitOffset:caret,focusCodeUnitOffset:caret}});if(!mounted||connection===null)return rejectedTextEdit("unavailable");if(!dispatched)return rejectedTextEdit("invalid");const proposal=operation.proposal;if(proposal!==null&&props.modelModifiers.lazy){if(proposal.snapshot.text!==operation.restore?.snapshot.text)commitLazyValue();if(mounted&&connection===target&&controlled)settleControlledProposal(proposal,operation.restore)}if(!mounted||connection===null)return rejectedTextEdit("unavailable");if(connection!==target)return rejectedTextEdit("stale");if(!controlled&&proposal!==null&&target.getSnapshot().state!==proposal)return rejectedTextEdit("stale");if(proposal===null||!controlled)operation.settlement={accepted:true,connection:target,revision:target.getSnapshot().revision};await nextTick();if(!mounted||connection===null)return rejectedTextEdit("unavailable");const settled=operation.settlement;if(settled===null||settled.connection!==connection||settled.revision!==connection.getSnapshot().revision||connectedElement!==input||flags.value.disabled||flags.value.readonly)return rejectedTextEdit("stale");if(!settled.accepted)return rejectedTextEdit("refused");const committed=clearPort.read?.();return committed?Object.freeze({status:"accepted",snapshot:committed}):rejectedTextEdit("stale")}finally{if(clearing===operation)clearing=null}};return()=>h(multiline.value?"textarea":"input",mergeProps(attrs,{ref:element,...!multiline.value?{type:props.type}:{},...renderServerValue?{value:initialValue}:{defaultValue:initialValue},disabled:flags.value.disabled,readonly:flags.value.readonly,required:flags.value.required,name:props.name,form:props.form,placeholder:props.placeholder,autocomplete:props.autocomplete,onCompositionstart:()=>setInputComposing(true),onCompositionend:()=>setInputComposing(false),onInput:multiline.value!==props.multiline?requestReconnect:void 0,onChange:commitLazyValue,"data-scope":"text","data-part":"input","data-disabled":flags.value.disabled?"":void 0,"data-readonly":flags.value.readonly?"":void 0},participation.controlProps.value))}});const TextField=TextFieldImplementation;export{TextField};
|
|
2
2
|
//# sourceMappingURL=text.js.map
|
package/dist/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/text.ts"],"mappings":"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","names":[],"file":"text.js"}
|
|
1
|
+
{"version":3,"sources":["../src/text.ts"],"mappings":"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","names":[],"file":"text.js"}
|
package/dist/timer.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TimerAction, type TimerItemType } from '@sectile/dom/timer';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
+
/** Time policies initialize the owner once; remount to replace them. Presentation props remain reactive. */
|
|
4
5
|
export interface TimerRootProps {
|
|
5
|
-
readonly countdown?: boolean;
|
|
6
|
-
readonly startMs?: number;
|
|
7
|
-
readonly targetMs?: number | null;
|
|
8
|
-
readonly autoStart?: boolean;
|
|
9
|
-
readonly intervalMs?: number;
|
|
6
|
+
readonly countdown?: boolean | undefined;
|
|
7
|
+
readonly startMs?: number | undefined;
|
|
8
|
+
readonly targetMs?: number | null | undefined;
|
|
9
|
+
readonly autoStart?: boolean | undefined;
|
|
10
|
+
readonly intervalMs?: number | undefined;
|
|
11
|
+
readonly label?: string | undefined;
|
|
10
12
|
readonly as?: PrimitiveAs;
|
|
11
13
|
readonly asChild?: boolean;
|
|
12
14
|
}
|
|
@@ -47,6 +49,10 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
|
|
|
47
49
|
type: NumberConstructor;
|
|
48
50
|
default: number;
|
|
49
51
|
};
|
|
52
|
+
label: {
|
|
53
|
+
type: StringConstructor;
|
|
54
|
+
default: undefined;
|
|
55
|
+
};
|
|
50
56
|
as: {
|
|
51
57
|
type: PropType<PrimitiveAs>;
|
|
52
58
|
default: string;
|
|
@@ -79,6 +85,10 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
|
|
|
79
85
|
type: NumberConstructor;
|
|
80
86
|
default: number;
|
|
81
87
|
};
|
|
88
|
+
label: {
|
|
89
|
+
type: StringConstructor;
|
|
90
|
+
default: undefined;
|
|
91
|
+
};
|
|
82
92
|
as: {
|
|
83
93
|
type: PropType<PrimitiveAs>;
|
|
84
94
|
default: string;
|
|
@@ -96,6 +106,7 @@ export declare const TimerRoot: import("vue").DefineComponent<import("vue").Extr
|
|
|
96
106
|
targetMs: number | null;
|
|
97
107
|
autoStart: boolean;
|
|
98
108
|
intervalMs: number;
|
|
109
|
+
label: string;
|
|
99
110
|
as: PrimitiveAs;
|
|
100
111
|
asChild: boolean;
|
|
101
112
|
}, SlotsType<{
|
package/dist/timer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef}from"vue";import{createTimer}from"@sectile/dom/timer";import{Primitive}from"./primitive.js";const timerKey=Symbol("SectileTimerRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const TimerRoot=defineComponent({name:"SectileTimerRoot",inheritAttrs:false,props:{countdown:{type:Boolean,default:false},startMs:{type:Number,default:0},targetMs:{type:Number,default:void 0},autoStart:{type:Boolean,default:false},intervalMs:{type:Number,default:100},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{tick:_valueMs=>true,complete:_valueMs=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const connection=shallowRef();const
|
|
1
|
+
import{computed,defineComponent,getCurrentScope,h,inject,mergeProps,onBeforeUnmount,onMounted,onScopeDispose,provide,shallowRef}from"vue";import{createTimerState,getTimerParts,getTimerProgress}from"@sectile/core/timer";import{unwrap}from"@sectile/core/result";import{createTimer,getTimerRootAttributes,tryResolveTimerInterval}from"@sectile/dom/timer";import{Primitive}from"./primitive.js";const timerKey=Symbol("SectileTimerRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const TimerRoot=defineComponent({name:"SectileTimerRoot",inheritAttrs:false,props:{countdown:{type:Boolean,default:false},startMs:{type:Number,default:0},targetMs:{type:Number,default:void 0},autoStart:{type:Boolean,default:false},intervalMs:{type:Number,default:100},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{tick:_valueMs=>true,complete:_valueMs=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const connection=shallowRef();const actions=new Map;const policies=Object.freeze({countdown:props.countdown,startMs:props.startMs,...props.targetMs===void 0?{}:{targetMs:props.targetMs}});const autoStart=props.autoStart,intervalMs=unwrap(tryResolveTimerInterval(props.intervalMs));const current=shallowRef(createTimerState(policies,policies.startMs,autoStart));const active=shallowRef(true),revision=shallowRef(0);const refresh=()=>{if(!active.value)return;const snapshot=connection.value?.getSnapshot();if(snapshot===void 0)return;revision.value=snapshot.revision;current.value=snapshot.state};const send=action=>{connection.value?.handleEvent(action);refresh()};const controls=Object.freeze({start:()=>send("start"),pause:()=>send("pause"),resume:()=>send("resume"),reset:()=>send("reset"),restart:()=>send("restart")});const state=computed(()=>{const owned=current.value;return!active.value||owned===void 0?void 0:Object.freeze({...owned,progress:unwrap(getTimerProgress(owned,policies)),parts:unwrap(getTimerParts(owned.valueMs)),...controls})});provide(timerKey,{state,registerAction:(element,action)=>active.value?registerElement(actions,action,element,(owned,key)=>connection.value?.registerAction(owned,key)):()=>{}});onMounted(()=>{if(!active.value)return;if(root.value===void 0)throw new TypeError("TimerRoot must render an HTMLElement.");connection.value=createTimer({root:root.value,...policies,autoStart,intervalMs,onTick:next=>emit("tick",next),onComplete:next=>emit("complete",next),onUpdate:refresh});for(const[action,entry]of actions)if(entry.element!==void 0)entry.release=connection.value.registerAction(entry.element,action);refresh()});const dispose=()=>{if(!active.value)return;active.value=false;const owned=connection.value;connection.value=void 0;root.value=void 0;current.value=void 0;for(const entry of actions.values()){entry.element=void 0;entry.release=void 0}actions.clear();try{owned?.destroy()}finally{void state.value}};onBeforeUnmount(dispose);if(getCurrentScope()!==void 0)onScopeDispose(dispose);const content=()=>{const owned=state.value;return owned===void 0?void 0:slots["default"]?.(owned)};const elementRef=element=>{root.value=active.value&&element instanceof HTMLElement?element:void 0};return()=>{const owned=state.value;if(owned===void 0)return null;return h(Primitive,mergeProps(attrs,getTimerRootAttributes(owned,policies,props.label===void 0?{}:{label:props.label}),{as:props.as,asChild:props.asChild,elementRef,"data-revision":String(revision.value)}),{default:content})}}});const TimerArea=timerPart("SectileTimerArea","area","div");const TimerSeparator=timerPart("SectileTimerSeparator","separator","span");const TimerControl=timerPart("SectileTimerControl","control","div");const TimerItem=defineComponent({name:"SectileTimerItem",inheritAttrs:false,props:{type:{type:String,required:true},...partProps},setup(props,{attrs,slots}){const root=useTimer("TimerItem");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"timer","data-part":"item","data-type":props.type,"data-timer-item":props.type}),{default:()=>{const owned=root.state.value;return owned===void 0?void 0:slots["default"]?.(owned)??formatPart(props.type,owned.parts[props.type])}})}});const TimerActionTrigger=defineComponent({name:"SectileTimerActionTrigger",inheritAttrs:false,props:{action:{type:String,required:true},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useTimer("TimerActionTrigger");let release,registered,registeredAction;const cleanup=()=>{release?.();release=void 0;registered=void 0;registeredAction=void 0};onBeforeUnmount(cleanup);const elementRef=element=>{if(element===registered&&props.action===registeredAction)return;cleanup();if(element instanceof HTMLButtonElement){registered=element;registeredAction=props.action;release=root.registerAction(element,props.action)}};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef,type:props.as==="button"?"button":void 0,"data-scope":"timer","data-part":"action-trigger","data-action":props.action}),slots)}});function registerElement(entries,key,element,attach){const previous=entries.get(key);if(previous!==void 0){previous.release?.();previous.release=void 0;previous.element=void 0}let entry={element,release:attach(element,key)};entries.set(key,entry);return()=>{const owned=entry;entry=void 0;if(owned===void 0)return;owned.release?.();owned.release=void 0;owned.element=void 0;if(entries.get(key)===owned)entries.delete(key)}}function timerPart(name,part,as){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:as},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){useTimer(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"timer","data-part":part}),slots)}})}function useTimer(part){const root=inject(timerKey);if(root===void 0)throw new TypeError(`${part} must be used inside TimerRoot.`);return root}function formatPart(type,value){return String(value).padStart(type==="milliseconds"?3:type==="days"?1:2,"0")}export{TimerActionTrigger,TimerArea,TimerControl,TimerItem,TimerRoot,TimerSeparator};
|
|
2
2
|
//# sourceMappingURL=timer.js.map
|