@sectile/vue 0.2.1

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.
Files changed (287) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/accordion.d.ts +250 -0
  4. package/dist/accordion.d.ts.map +1 -0
  5. package/dist/accordion.js +242 -0
  6. package/dist/accordion.js.map +1 -0
  7. package/dist/alert-dialog.d.ts +16 -0
  8. package/dist/alert-dialog.d.ts.map +1 -0
  9. package/dist/alert-dialog.js +18 -0
  10. package/dist/alert-dialog.js.map +1 -0
  11. package/dist/calendar.d.ts +232 -0
  12. package/dist/calendar.d.ts.map +1 -0
  13. package/dist/calendar.js +109 -0
  14. package/dist/calendar.js.map +1 -0
  15. package/dist/carousel.d.ts +365 -0
  16. package/dist/carousel.d.ts.map +1 -0
  17. package/dist/carousel.js +140 -0
  18. package/dist/carousel.js.map +1 -0
  19. package/dist/cascade-select.d.ts +442 -0
  20. package/dist/cascade-select.d.ts.map +1 -0
  21. package/dist/cascade-select.js +111 -0
  22. package/dist/cascade-select.js.map +1 -0
  23. package/dist/checkbox-group.d.ts +206 -0
  24. package/dist/checkbox-group.d.ts.map +1 -0
  25. package/dist/checkbox-group.js +98 -0
  26. package/dist/checkbox-group.js.map +1 -0
  27. package/dist/checkbox.d.ts +152 -0
  28. package/dist/checkbox.d.ts.map +1 -0
  29. package/dist/checkbox.js +164 -0
  30. package/dist/checkbox.js.map +1 -0
  31. package/dist/color-picker.d.ts +602 -0
  32. package/dist/color-picker.d.ts.map +1 -0
  33. package/dist/color-picker.js +129 -0
  34. package/dist/color-picker.js.map +1 -0
  35. package/dist/combobox.d.ts +320 -0
  36. package/dist/combobox.d.ts.map +1 -0
  37. package/dist/combobox.js +176 -0
  38. package/dist/combobox.js.map +1 -0
  39. package/dist/date-field.d.ts +15 -0
  40. package/dist/date-field.d.ts.map +1 -0
  41. package/dist/date-field.js +19 -0
  42. package/dist/date-field.js.map +1 -0
  43. package/dist/date-picker.d.ts +554 -0
  44. package/dist/date-picker.d.ts.map +1 -0
  45. package/dist/date-picker.js +18 -0
  46. package/dist/date-picker.js.map +1 -0
  47. package/dist/date-range-field.d.ts +129 -0
  48. package/dist/date-range-field.d.ts.map +1 -0
  49. package/dist/date-range-field.js +134 -0
  50. package/dist/date-range-field.js.map +1 -0
  51. package/dist/date-range-picker.d.ts +594 -0
  52. package/dist/date-range-picker.d.ts.map +1 -0
  53. package/dist/date-range-picker.js +19 -0
  54. package/dist/date-range-picker.js.map +1 -0
  55. package/dist/date-time-field.d.ts +15 -0
  56. package/dist/date-time-field.d.ts.map +1 -0
  57. package/dist/date-time-field.js +19 -0
  58. package/dist/date-time-field.js.map +1 -0
  59. package/dist/date-time-picker.d.ts +635 -0
  60. package/dist/date-time-picker.d.ts.map +1 -0
  61. package/dist/date-time-picker.js +20 -0
  62. package/dist/date-time-picker.js.map +1 -0
  63. package/dist/date-time-range-picker.d.ts +755 -0
  64. package/dist/date-time-range-picker.d.ts.map +1 -0
  65. package/dist/date-time-range-picker.js +23 -0
  66. package/dist/date-time-range-picker.js.map +1 -0
  67. package/dist/dialog.d.ts +16 -0
  68. package/dist/dialog.d.ts.map +1 -0
  69. package/dist/dialog.js +15 -0
  70. package/dist/dialog.js.map +1 -0
  71. package/dist/disclosure.d.ts +147 -0
  72. package/dist/disclosure.d.ts.map +1 -0
  73. package/dist/disclosure.js +129 -0
  74. package/dist/disclosure.js.map +1 -0
  75. package/dist/editable.d.ts +300 -0
  76. package/dist/editable.d.ts.map +1 -0
  77. package/dist/editable.js +181 -0
  78. package/dist/editable.js.map +1 -0
  79. package/dist/feed.d.ts +216 -0
  80. package/dist/feed.d.ts.map +1 -0
  81. package/dist/feed.js +85 -0
  82. package/dist/feed.js.map +1 -0
  83. package/dist/form.d.ts +356 -0
  84. package/dist/form.d.ts.map +1 -0
  85. package/dist/form.js +752 -0
  86. package/dist/form.js.map +1 -0
  87. package/dist/grid.d.ts +254 -0
  88. package/dist/grid.d.ts.map +1 -0
  89. package/dist/grid.js +95 -0
  90. package/dist/grid.js.map +1 -0
  91. package/dist/host-provider.d.ts +46 -0
  92. package/dist/host-provider.d.ts.map +1 -0
  93. package/dist/host-provider.js +39 -0
  94. package/dist/host-provider.js.map +1 -0
  95. package/dist/index.d.ts +124 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +61 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/internal/date-picker.d.ts +539 -0
  100. package/dist/internal/date-picker.d.ts.map +1 -0
  101. package/dist/internal/date-picker.js +522 -0
  102. package/dist/internal/date-picker.js.map +1 -0
  103. package/dist/internal/form-control-inventory.d.ts +154 -0
  104. package/dist/internal/form-control-inventory.d.ts.map +1 -0
  105. package/dist/internal/form-control-inventory.js +43 -0
  106. package/dist/internal/form-control-inventory.js.map +1 -0
  107. package/dist/internal/form-control.d.ts +41 -0
  108. package/dist/internal/form-control.d.ts.map +1 -0
  109. package/dist/internal/form-control.js +52 -0
  110. package/dist/internal/form-control.js.map +1 -0
  111. package/dist/internal/native-field.d.ts +49 -0
  112. package/dist/internal/native-field.d.ts.map +1 -0
  113. package/dist/internal/native-field.js +81 -0
  114. package/dist/internal/native-field.js.map +1 -0
  115. package/dist/internal/native-input.d.ts +9 -0
  116. package/dist/internal/native-input.d.ts.map +1 -0
  117. package/dist/internal/native-input.js +9 -0
  118. package/dist/internal/native-input.js.map +1 -0
  119. package/dist/internal/part-contract.d.ts +9 -0
  120. package/dist/internal/part-contract.d.ts.map +1 -0
  121. package/dist/internal/part-contract.js +12 -0
  122. package/dist/internal/part-contract.js.map +1 -0
  123. package/dist/internal/popup.d.ts +99 -0
  124. package/dist/internal/popup.d.ts.map +1 -0
  125. package/dist/internal/popup.js +238 -0
  126. package/dist/internal/popup.js.map +1 -0
  127. package/dist/internal/tabs-context.d.ts +25 -0
  128. package/dist/internal/tabs-context.d.ts.map +1 -0
  129. package/dist/internal/tabs-context.js +9 -0
  130. package/dist/internal/tabs-context.js.map +1 -0
  131. package/dist/listbox.d.ts +275 -0
  132. package/dist/listbox.d.ts.map +1 -0
  133. package/dist/listbox.js +258 -0
  134. package/dist/listbox.js.map +1 -0
  135. package/dist/menu-button.d.ts +2 -0
  136. package/dist/menu-button.d.ts.map +1 -0
  137. package/dist/menu-button.js +2 -0
  138. package/dist/menu-button.js.map +1 -0
  139. package/dist/menu.d.ts +638 -0
  140. package/dist/menu.d.ts.map +1 -0
  141. package/dist/menu.js +167 -0
  142. package/dist/menu.js.map +1 -0
  143. package/dist/menubar.d.ts +2 -0
  144. package/dist/menubar.d.ts.map +1 -0
  145. package/dist/menubar.js +2 -0
  146. package/dist/menubar.js.map +1 -0
  147. package/dist/month-picker.d.ts +353 -0
  148. package/dist/month-picker.d.ts.map +1 -0
  149. package/dist/month-picker.js +10 -0
  150. package/dist/month-picker.js.map +1 -0
  151. package/dist/month-range-picker.d.ts +393 -0
  152. package/dist/month-range-picker.d.ts.map +1 -0
  153. package/dist/month-range-picker.js +11 -0
  154. package/dist/month-range-picker.js.map +1 -0
  155. package/dist/multi-thumb-slider.d.ts +299 -0
  156. package/dist/multi-thumb-slider.d.ts.map +1 -0
  157. package/dist/multi-thumb-slider.js +204 -0
  158. package/dist/multi-thumb-slider.js.map +1 -0
  159. package/dist/navigation-menu.d.ts +114 -0
  160. package/dist/navigation-menu.d.ts.map +1 -0
  161. package/dist/navigation-menu.js +36 -0
  162. package/dist/navigation-menu.js.map +1 -0
  163. package/dist/number-field.d.ts +12 -0
  164. package/dist/number-field.d.ts.map +1 -0
  165. package/dist/number-field.js +21 -0
  166. package/dist/number-field.js.map +1 -0
  167. package/dist/pagination.d.ts +294 -0
  168. package/dist/pagination.d.ts.map +1 -0
  169. package/dist/pagination.js +145 -0
  170. package/dist/pagination.js.map +1 -0
  171. package/dist/pin-input.d.ts +207 -0
  172. package/dist/pin-input.d.ts.map +1 -0
  173. package/dist/pin-input.js +129 -0
  174. package/dist/pin-input.js.map +1 -0
  175. package/dist/popover.d.ts +17 -0
  176. package/dist/popover.d.ts.map +1 -0
  177. package/dist/popover.js +16 -0
  178. package/dist/popover.js.map +1 -0
  179. package/dist/primitive.d.ts +41 -0
  180. package/dist/primitive.d.ts.map +1 -0
  181. package/dist/primitive.js +27 -0
  182. package/dist/primitive.js.map +1 -0
  183. package/dist/quantity-field.d.ts +249 -0
  184. package/dist/quantity-field.d.ts.map +1 -0
  185. package/dist/quantity-field.js +131 -0
  186. package/dist/quantity-field.js.map +1 -0
  187. package/dist/radio-group.d.ts +225 -0
  188. package/dist/radio-group.d.ts.map +1 -0
  189. package/dist/radio-group.js +198 -0
  190. package/dist/radio-group.js.map +1 -0
  191. package/dist/range-calendar.d.ts +336 -0
  192. package/dist/range-calendar.d.ts.map +1 -0
  193. package/dist/range-calendar.js +15 -0
  194. package/dist/range-calendar.js.map +1 -0
  195. package/dist/rating.d.ts +228 -0
  196. package/dist/rating.d.ts.map +1 -0
  197. package/dist/rating.js +118 -0
  198. package/dist/rating.js.map +1 -0
  199. package/dist/reorder.d.ts +209 -0
  200. package/dist/reorder.d.ts.map +1 -0
  201. package/dist/reorder.js +186 -0
  202. package/dist/reorder.js.map +1 -0
  203. package/dist/select.d.ts +352 -0
  204. package/dist/select.d.ts.map +1 -0
  205. package/dist/select.js +191 -0
  206. package/dist/select.js.map +1 -0
  207. package/dist/slider.d.ts +269 -0
  208. package/dist/slider.d.ts.map +1 -0
  209. package/dist/slider.js +197 -0
  210. package/dist/slider.js.map +1 -0
  211. package/dist/spin-button.d.ts +272 -0
  212. package/dist/spin-button.d.ts.map +1 -0
  213. package/dist/spin-button.js +190 -0
  214. package/dist/spin-button.js.map +1 -0
  215. package/dist/stepper.d.ts +310 -0
  216. package/dist/stepper.d.ts.map +1 -0
  217. package/dist/stepper.js +87 -0
  218. package/dist/stepper.js.map +1 -0
  219. package/dist/switch.d.ts +149 -0
  220. package/dist/switch.d.ts.map +1 -0
  221. package/dist/switch.js +140 -0
  222. package/dist/switch.js.map +1 -0
  223. package/dist/tabs.d.ts +290 -0
  224. package/dist/tabs.d.ts.map +1 -0
  225. package/dist/tabs.js +258 -0
  226. package/dist/tabs.js.map +1 -0
  227. package/dist/tags-input.d.ts +297 -0
  228. package/dist/tags-input.d.ts.map +1 -0
  229. package/dist/tags-input.js +196 -0
  230. package/dist/tags-input.js.map +1 -0
  231. package/dist/text.d.ts +138 -0
  232. package/dist/text.d.ts.map +1 -0
  233. package/dist/text.js +125 -0
  234. package/dist/text.js.map +1 -0
  235. package/dist/time-field.d.ts +15 -0
  236. package/dist/time-field.d.ts.map +1 -0
  237. package/dist/time-field.js +19 -0
  238. package/dist/time-field.js.map +1 -0
  239. package/dist/time-range-field.d.ts +128 -0
  240. package/dist/time-range-field.d.ts.map +1 -0
  241. package/dist/time-range-field.js +44 -0
  242. package/dist/time-range-field.js.map +1 -0
  243. package/dist/timer.d.ts +232 -0
  244. package/dist/timer.d.ts.map +1 -0
  245. package/dist/timer.js +51 -0
  246. package/dist/timer.js.map +1 -0
  247. package/dist/toast.d.ts +189 -0
  248. package/dist/toast.d.ts.map +1 -0
  249. package/dist/toast.js +78 -0
  250. package/dist/toast.js.map +1 -0
  251. package/dist/toggle-button.d.ts +81 -0
  252. package/dist/toggle-button.d.ts.map +1 -0
  253. package/dist/toggle-button.js +75 -0
  254. package/dist/toggle-button.js.map +1 -0
  255. package/dist/toggle-group.d.ts +228 -0
  256. package/dist/toggle-group.d.ts.map +1 -0
  257. package/dist/toggle-group.js +143 -0
  258. package/dist/toggle-group.js.map +1 -0
  259. package/dist/toolbar.d.ts +202 -0
  260. package/dist/toolbar.d.ts.map +1 -0
  261. package/dist/toolbar.js +82 -0
  262. package/dist/toolbar.js.map +1 -0
  263. package/dist/tooltip.d.ts +13 -0
  264. package/dist/tooltip.d.ts.map +1 -0
  265. package/dist/tooltip.js +15 -0
  266. package/dist/tooltip.js.map +1 -0
  267. package/dist/tree-grid.d.ts +359 -0
  268. package/dist/tree-grid.d.ts.map +1 -0
  269. package/dist/tree-grid.js +125 -0
  270. package/dist/tree-grid.js.map +1 -0
  271. package/dist/tree-view.d.ts +304 -0
  272. package/dist/tree-view.d.ts.map +1 -0
  273. package/dist/tree-view.js +131 -0
  274. package/dist/tree-view.js.map +1 -0
  275. package/dist/window-splitter.d.ts +204 -0
  276. package/dist/window-splitter.d.ts.map +1 -0
  277. package/dist/window-splitter.js +82 -0
  278. package/dist/window-splitter.js.map +1 -0
  279. package/dist/year-picker.d.ts +353 -0
  280. package/dist/year-picker.d.ts.map +1 -0
  281. package/dist/year-picker.js +10 -0
  282. package/dist/year-picker.js.map +1 -0
  283. package/dist/year-range-picker.d.ts +393 -0
  284. package/dist/year-range-picker.d.ts.map +1 -0
  285. package/dist/year-range-picker.js +11 -0
  286. package/dist/year-range-picker.js.map +1 -0
  287. package/package.json +356 -0
@@ -0,0 +1,522 @@
1
+ import { Fragment, computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onMounted, nextTick, provide, shallowRef, watch, } from 'vue';
2
+ import { createDatePicker, createDatePickerMonth, createDatePickerYear, isDatePickerValueAvailable } from '@sectile/dom/date-picker';
3
+ import { createDateRangePicker } from '@sectile/dom/date-range-picker';
4
+ import { createDateTimePicker } from '@sectile/dom/date-time-picker';
5
+ import { createDateTimeRangePicker } from '@sectile/dom/date-time-range-picker';
6
+ import { formatDateValue, parseDateValue } from '@sectile/dom/date-field';
7
+ import { formatDateTimeValue } from '@sectile/dom/date-time-field';
8
+ import { formatTimeValue } from '@sectile/dom/time-field';
9
+ import { hiddenInputSubmissionCapabilities, useCompositeFormControl, } from './form-control.js';
10
+ import { Primitive } from '../primitive.js';
11
+ const key = Symbol('SectileDatePickerRoot');
12
+ const partProps = { as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false } };
13
+ export function createPickerRoot(kind, name, config = {}) {
14
+ const scope = config.scope ?? kind;
15
+ const granularity = config.granularity ?? 'day';
16
+ const defaultView = config.defaultView ?? (granularity === 'day' ? 'month' : 'year');
17
+ const defaultOpen = config.defaultOpen ?? false;
18
+ const yearPageSize = config.yearPageSize ?? 12;
19
+ const inline = config.inline ?? false;
20
+ return defineComponent({
21
+ name, inheritAttrs: false,
22
+ props: {
23
+ modelValue: { type: Object, default: undefined }, defaultValue: { type: Object, default: null },
24
+ open: { type: Boolean, default: undefined }, defaultOpen: { type: Boolean, default: defaultOpen },
25
+ highlightedValue: { type: Object, default: undefined }, defaultHighlightedValue: { type: Object, default: undefined },
26
+ defaultView: { type: String, default: defaultView },
27
+ disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, required: { type: Boolean, default: false },
28
+ label: { type: String, default: undefined }, policies: { type: Object, default: undefined },
29
+ as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false },
30
+ },
31
+ emits: { 'update:modelValue': (_value) => true, 'update:open': (_value) => true, 'update:highlightedValue': (_value) => true },
32
+ slots: Object,
33
+ setup(props, { emit, slots }) {
34
+ const elements = new Map();
35
+ const connection = shallowRef();
36
+ const inlineTrigger = typeof document === 'undefined' || !inline ? undefined : document.createElement('button');
37
+ const localValue = shallowRef(props.modelValue !== undefined ? props.modelValue : props.defaultValue);
38
+ const localOpen = shallowRef(props.open ?? props.defaultOpen);
39
+ const localHighlight = shallowRef(props.highlightedValue ?? props.defaultHighlightedValue ?? dateOf(localValue.value) ?? Object.freeze({ year: 1970, month: 1, day: 1 }));
40
+ const yearPageStart = shallowRef(localHighlight.value.year - Math.floor(yearPageSize / 2));
41
+ const dates = shallowRef(monthFor(localHighlight.value));
42
+ const months = shallowRef(yearFor(localHighlight.value.year));
43
+ const years = shallowRef(yearsFrom(yearPageStart.value, yearPageSize));
44
+ const localView = shallowRef(Object.freeze({ year: localHighlight.value.year, month: localHighlight.value.month }));
45
+ const localViewMode = shallowRef(props.defaultView);
46
+ const controlled = { value: props.modelValue !== undefined, open: props.open !== undefined, highlighted: props.highlightedValue !== undefined };
47
+ const state = computed(() => {
48
+ const highlighted = props.highlightedValue ?? localHighlight.value;
49
+ return Object.freeze({
50
+ value: props.modelValue !== undefined ? props.modelValue : localValue.value,
51
+ highlightedValue: highlighted, open: props.open ?? localOpen.value, dates: dates.value, months: months.value, years: years.value,
52
+ view: localView.value, viewMode: localViewMode.value, disabled: props.disabled, readonly: props.readonly,
53
+ });
54
+ });
55
+ useCompositeFormControl({
56
+ root: () => elements.get('content') ?? elements.get('grid') ?? null,
57
+ focusTarget: () => elements.get('trigger') ?? firstPickerInput(elements, kind) ?? elements.get('grid') ?? null,
58
+ submissions: () => pickerFormSubmissions(elements, kind),
59
+ });
60
+ const periodAvailable = (value) => {
61
+ const policies = props.policies;
62
+ if ('month' in value)
63
+ return monthAvailable(value, policies);
64
+ return Array.from({ length: 12 }, (_entry, index) => index + 1)
65
+ .some((month) => monthAvailable({ year: value.year, month }, policies));
66
+ };
67
+ const refreshCells = () => {
68
+ const grid = elements.get('grid');
69
+ if (grid === undefined || connection.value === undefined)
70
+ return;
71
+ grid.querySelectorAll('[data-sectile-picker-date]').forEach((element) => {
72
+ const parsed = parseDateValue(element.dataset['sectilePickerDate'] ?? '');
73
+ if (parsed.ok)
74
+ connection.value?.setCellAttributes(element, parsed.value);
75
+ });
76
+ };
77
+ const refresh = () => {
78
+ const raw = connection.value?.getSnapshot().state;
79
+ if (raw === undefined)
80
+ return;
81
+ const picked = extractState(kind, raw);
82
+ localValue.value = picked.value;
83
+ localHighlight.value = picked.highlighted;
84
+ localOpen.value = picked.open;
85
+ localView.value = picked.view;
86
+ localViewMode.value = picked.viewMode;
87
+ if (connection.value !== undefined) {
88
+ dates.value = picked.viewMode === 'week' ? [connection.value.getWeek()] : picked.viewMode === 'month' ? connection.value.getMonth() : [];
89
+ months.value = picked.viewMode === 'year' ? connection.value.getYear() : [];
90
+ if (granularity === 'year') {
91
+ yearPageStart.value = pageStartContaining(picked.highlighted.year, yearPageStart.value, yearPageSize);
92
+ years.value = yearsFrom(yearPageStart.value, yearPageSize);
93
+ }
94
+ }
95
+ refreshCells();
96
+ void nextTick(refreshCells);
97
+ };
98
+ const connect = () => {
99
+ connection.value?.disconnect();
100
+ const content = elements.get('content');
101
+ const grid = elements.get('grid');
102
+ const trigger = elements.get('trigger') ?? inlineTrigger;
103
+ if (content === undefined || grid === undefined || trigger === undefined)
104
+ return;
105
+ const base = {
106
+ root: content, grid, trigger, disabled: props.disabled, readOnly: props.readonly, required: props.required,
107
+ ...(props.label === undefined ? {} : { label: props.label }), ...(props.policies === undefined ? {} : { policies: props.policies }),
108
+ ...(controlled.value ? { value: props.modelValue } : { defaultValue: localValue.value }),
109
+ ...(controlled.open ? { open: props.open } : { defaultOpen: localOpen.value }),
110
+ ...(controlled.highlighted ? { highlightedValue: props.highlightedValue } : { defaultHighlightedValue: localHighlight.value }),
111
+ onValueChange: (value) => { localValue.value = value; emit('update:modelValue', value); },
112
+ onHighlightedValueChange: (value) => { localHighlight.value = value; emit('update:highlightedValue', value); },
113
+ onOpenChange: (value) => { localOpen.value = value; emit('update:open', value); }, onUpdate: refresh,
114
+ };
115
+ if (granularity === 'day') {
116
+ for (const part of inputParts(kind)) {
117
+ const element = elements.get(part);
118
+ if (element !== undefined)
119
+ base[toDOMInputKey(part)] = element;
120
+ }
121
+ }
122
+ const created = kind === 'date' ? createDatePicker(base)
123
+ : kind === 'date-range' ? createDateRangePicker(base)
124
+ : kind === 'date-time' ? createDateTimePicker(base) : createDateTimeRangePicker(base);
125
+ connection.value = created;
126
+ if (props.defaultView !== 'month')
127
+ connection.value.handleEvent({ type: 'set-view-mode', value: props.defaultView });
128
+ refreshCells();
129
+ refresh();
130
+ };
131
+ const moveBy = (unit, delta) => {
132
+ const direction = delta < 0 ? -1 : 1;
133
+ for (let index = 0; index < Math.abs(delta); index += 1) {
134
+ connection.value?.handleEvent(`${direction < 0 ? 'previous' : 'next'}-${unit}`);
135
+ }
136
+ refresh();
137
+ };
138
+ const selectMonth = (value) => {
139
+ connection.value?.handleEvent(granularity === 'month'
140
+ ? { type: kind === 'date' || kind === 'date-range' ? 'select' : 'select-date', value: { ...value, day: 1 } }
141
+ : { type: 'select-month', value });
142
+ refresh();
143
+ };
144
+ const selectYear = (value) => {
145
+ connection.value?.handleEvent({ type: kind === 'date' || kind === 'date-range' ? 'select' : 'select-date', value: { year: value.year, month: 1, day: 1 } });
146
+ refresh();
147
+ };
148
+ provide(key, {
149
+ kind, scope, granularity, inline, state, periodAvailable,
150
+ register: (part, element) => { if (element === undefined)
151
+ elements.delete(part);
152
+ else
153
+ elements.set(part, element); },
154
+ registerCell: (element, value) => connection.value?.setCellAttributes(element, value),
155
+ move: (unit, direction) => {
156
+ const repetitions = granularity === 'year' && unit === 'year' ? yearPageSize : 1;
157
+ moveBy(unit, direction * repetitions);
158
+ },
159
+ handleGridKey: (event) => {
160
+ if (granularity === 'day' || event.altKey || event.ctrlKey || event.metaKey)
161
+ return;
162
+ const columns = granularity === 'month' ? 3 : 4;
163
+ const highlighted = state.value.highlightedValue;
164
+ let movement;
165
+ if (event.key === 'ArrowLeft')
166
+ movement = { unit: granularity, delta: -1 };
167
+ else if (event.key === 'ArrowRight')
168
+ movement = { unit: granularity, delta: 1 };
169
+ else if (event.key === 'ArrowUp')
170
+ movement = { unit: granularity, delta: -columns };
171
+ else if (event.key === 'ArrowDown')
172
+ movement = { unit: granularity, delta: columns };
173
+ else if (event.key === 'PageUp')
174
+ movement = { unit: 'year', delta: granularity === 'year' ? -yearPageSize : -1 };
175
+ else if (event.key === 'PageDown')
176
+ movement = { unit: 'year', delta: granularity === 'year' ? yearPageSize : 1 };
177
+ else if (event.key === 'Home')
178
+ movement = { unit: granularity, delta: granularity === 'month' ? 1 - highlighted.month : -((highlighted.year - years.value[0][0].year) % columns) };
179
+ else if (event.key === 'End')
180
+ movement = { unit: granularity, delta: granularity === 'month' ? 12 - highlighted.month : columns - 1 - ((highlighted.year - years.value[0][0].year) % columns) };
181
+ else if (event.key === 'Enter' || event.key === ' ') {
182
+ event.preventDefault();
183
+ event.stopImmediatePropagation();
184
+ if (granularity === 'month')
185
+ selectMonth({ year: highlighted.year, month: highlighted.month });
186
+ else
187
+ selectYear({ year: highlighted.year });
188
+ return;
189
+ }
190
+ else
191
+ return;
192
+ event.preventDefault();
193
+ event.stopImmediatePropagation();
194
+ if (movement.delta !== 0)
195
+ moveBy(movement.unit, movement.delta);
196
+ },
197
+ setViewMode: (value) => { connection.value?.handleEvent({ type: 'set-view-mode', value }); refresh(); },
198
+ selectDate: (value) => {
199
+ const type = kind === 'date' || kind === 'date-range' ? 'select' : 'select-date';
200
+ connection.value?.handleEvent({ type, value });
201
+ refresh();
202
+ },
203
+ selectMonth,
204
+ selectYear,
205
+ });
206
+ onMounted(connect);
207
+ onBeforeUnmount(() => connection.value?.disconnect());
208
+ watch([() => props.disabled, () => props.readonly, () => props.required, () => props.label, () => props.policies], connect);
209
+ watch([() => props.modelValue, () => props.open, () => props.highlightedValue], () => {
210
+ if (connection.value === undefined)
211
+ return;
212
+ const result = connection.value.syncControlledValues({
213
+ ...(controlled.value ? { value: props.modelValue } : {}), ...(controlled.open ? { open: props.open } : {}),
214
+ ...(controlled.highlighted ? { highlightedValue: props.highlightedValue } : {}),
215
+ });
216
+ if (!result.ok)
217
+ throw new TypeError(result.error?.message ?? 'Could not synchronize picker values.');
218
+ refresh();
219
+ });
220
+ return () => {
221
+ return h(Fragment, null, slots['default']?.(state.value) ?? []);
222
+ };
223
+ },
224
+ });
225
+ }
226
+ export const PickerTrigger = defineComponent({
227
+ name: 'SectilePickerTrigger', inheritAttrs: false,
228
+ props: { as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
229
+ slots: Object,
230
+ setup(props, { attrs, slots }) {
231
+ const root = useRoot('PickerTrigger');
232
+ return () => h(Primitive, mergeProps(attrs, {
233
+ as: props.as, asChild: props.asChild, elementRef: (node) => root.register('trigger', node instanceof HTMLElement ? node : undefined),
234
+ type: props.as === 'button' ? 'button' : undefined, disabled: root.state.value.disabled,
235
+ 'aria-haspopup': 'dialog', 'aria-expanded': String(root.state.value.open), 'data-scope': root.scope, 'data-part': 'trigger',
236
+ }), { default: () => slots['default']?.(root.state.value) });
237
+ },
238
+ });
239
+ export const PickerContent = defineComponent({
240
+ name: 'SectilePickerContent', inheritAttrs: false, props: partProps,
241
+ slots: Object,
242
+ setup(props, { attrs, slots }) {
243
+ const root = useRoot('PickerContent');
244
+ return () => h(Primitive, mergeProps(attrs, {
245
+ as: props.as, asChild: props.asChild, elementRef: (node) => root.register('content', node instanceof HTMLElement ? node : undefined),
246
+ 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',
247
+ }), { default: () => slots['default']?.(root.state.value) });
248
+ },
249
+ });
250
+ export const PickerGrid = defineComponent({
251
+ name: 'SectilePickerGrid', inheritAttrs: false, props: partProps,
252
+ slots: Object,
253
+ setup(props, { attrs, slots }) {
254
+ const root = useRoot('PickerGrid');
255
+ return () => h(Primitive, mergeProps(attrs, {
256
+ as: props.as, asChild: props.asChild, elementRef: (node) => root.register('grid', node instanceof HTMLElement ? node : undefined),
257
+ role: 'grid', onKeydown: root.handleGridKey, 'data-scope': root.scope, 'data-part': 'grid',
258
+ }), { default: () => slots['default']?.(root.state.value) });
259
+ },
260
+ });
261
+ export const PickerCell = defineComponent({
262
+ name: 'SectilePickerCell', inheritAttrs: false,
263
+ props: { value: { type: Object, required: true }, as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
264
+ slots: Object,
265
+ setup(props, { attrs, slots }) {
266
+ const root = useRoot('PickerCell');
267
+ const state = computed(() => cellState(root.kind, root.state.value, props.value));
268
+ return () => h(Primitive, mergeProps(attrs, {
269
+ as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
270
+ elementRef: (node) => { if (node instanceof HTMLElement)
271
+ root.registerCell(node, props.value); },
272
+ disabled: state.value.disabled,
273
+ onClick: (event) => { event.stopPropagation(); root.selectDate(props.value); },
274
+ role: 'gridcell', 'aria-selected': String(state.value.selected || state.value.inRange), 'data-sectile-picker-date': formatDateValue(props.value),
275
+ 'data-scope': root.scope, 'data-part': 'cell', 'data-selected': state.value.selected ? '' : undefined,
276
+ 'data-in-range': state.value.inRange ? '' : undefined, 'data-highlighted': state.value.highlighted ? '' : undefined,
277
+ 'data-outside-month': state.value.outsideMonth ? '' : undefined,
278
+ }), { default: () => slots['default']?.(state.value) });
279
+ },
280
+ });
281
+ export function createPickerMonthCell(part = 'month-cell', name = 'SectilePickerMonthCell') {
282
+ return defineComponent({
283
+ name, inheritAttrs: false,
284
+ props: { value: { type: Object, required: true }, as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
285
+ slots: Object,
286
+ setup(props, { attrs, slots }) {
287
+ const root = useRoot(name);
288
+ const state = computed(() => ({
289
+ value: props.value,
290
+ selected: monthContainsValue(root.state.value.value, props.value),
291
+ inRange: periodInRange(root.state.value.value, { ...props.value, day: 1 }, { ...props.value, day: 31 }),
292
+ highlighted: root.state.value.highlightedValue.year === props.value.year && root.state.value.highlightedValue.month === props.value.month,
293
+ disabled: root.state.value.disabled || !root.periodAvailable(props.value),
294
+ }));
295
+ return () => h(Primitive, mergeProps(attrs, {
296
+ as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
297
+ disabled: state.value.disabled, tabIndex: state.value.highlighted ? 0 : -1,
298
+ onClick: (event) => { event.stopPropagation(); if (!state.value.disabled)
299
+ root.selectMonth(props.value); },
300
+ role: 'gridcell', 'aria-selected': String(state.value.selected || state.value.inRange),
301
+ 'aria-disabled': String(state.value.disabled),
302
+ 'data-sectile-picker-month': `${String(props.value.year).padStart(4, '0')}-${String(props.value.month).padStart(2, '0')}`,
303
+ 'data-scope': root.scope, 'data-part': part, 'data-selected': state.value.selected ? '' : undefined,
304
+ 'data-in-range': state.value.inRange ? '' : undefined, 'data-highlighted': state.value.highlighted ? '' : undefined,
305
+ }), { default: () => slots['default']?.(state.value) });
306
+ },
307
+ });
308
+ }
309
+ export function createPickerYearCell(part = 'year-cell', name = 'SectilePickerYearCell') {
310
+ return defineComponent({
311
+ name, inheritAttrs: false,
312
+ props: { value: { type: Object, required: true }, as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
313
+ slots: Object,
314
+ setup(props, { attrs, slots }) {
315
+ const root = useRoot(name);
316
+ const currentYear = new Date().getFullYear();
317
+ const state = computed(() => ({
318
+ value: props.value,
319
+ selected: yearContainsValue(root.state.value.value, props.value),
320
+ inRange: periodInRange(root.state.value.value, { year: props.value.year, month: 1, day: 1 }, { year: props.value.year, month: 12, day: 31 }),
321
+ highlighted: root.state.value.highlightedValue.year === props.value.year,
322
+ current: props.value.year === currentYear,
323
+ disabled: root.state.value.disabled || !root.periodAvailable(props.value),
324
+ }));
325
+ return () => h(Primitive, mergeProps(attrs, {
326
+ as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
327
+ disabled: state.value.disabled, tabIndex: state.value.highlighted ? 0 : -1,
328
+ onClick: (event) => { event.stopPropagation(); if (!state.value.disabled)
329
+ root.selectYear(props.value); },
330
+ role: 'gridcell', 'aria-selected': String(state.value.selected || state.value.inRange),
331
+ 'aria-disabled': String(state.value.disabled),
332
+ 'aria-current': state.value.current ? 'date' : undefined,
333
+ 'data-sectile-picker-year': String(props.value.year),
334
+ 'data-scope': root.scope, 'data-part': part, 'data-selected': state.value.selected ? '' : undefined,
335
+ 'data-in-range': state.value.inRange ? '' : undefined, 'data-highlighted': state.value.highlighted ? '' : undefined,
336
+ 'data-current': state.value.current ? '' : undefined,
337
+ }), { default: () => slots['default']?.(state.value) });
338
+ },
339
+ });
340
+ }
341
+ export const PickerMonthCell = createPickerMonthCell();
342
+ export const PickerYearCell = createPickerYearCell();
343
+ export function createPickerInput(part, name) {
344
+ return defineComponent({
345
+ name, inheritAttrs: false,
346
+ props: { name: { type: String, default: undefined }, form: { type: String, default: undefined }, as: { type: [String, Object, Function], default: 'input' }, asChild: { type: Boolean, default: false } },
347
+ setup(props, { attrs }) {
348
+ const root = useRoot(name);
349
+ return () => h(Primitive, mergeProps(attrs, {
350
+ as: props.as, asChild: props.asChild,
351
+ elementRef: (node) => root.register(part, node instanceof HTMLInputElement ? node : undefined),
352
+ type: pickerInputType(part), name: props.name, form: props.form, disabled: root.state.value.disabled,
353
+ readOnly: root.granularity !== 'day' || root.state.value.readonly || part === 'start-input' || part === 'end-input' || part === 'start-date-time-input' || part === 'end-date-time-input',
354
+ required: false, value: inputValue(root.kind, root.granularity, part, root.state.value.value),
355
+ 'data-scope': root.scope, 'data-part': part,
356
+ }));
357
+ },
358
+ });
359
+ }
360
+ export function createPickerMove(unit, direction, name, part) {
361
+ return defineComponent({
362
+ name, inheritAttrs: false, props: { as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
363
+ slots: Object,
364
+ setup(props, { attrs, slots }) {
365
+ const root = useRoot(name);
366
+ return () => h(Primitive, mergeProps(attrs, {
367
+ as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
368
+ disabled: root.state.value.disabled, onClick: () => root.move(unit, direction), 'data-scope': root.scope, 'data-part': part ?? `${direction < 0 ? 'previous' : 'next'}-${unit}`,
369
+ }), { default: () => slots['default']?.(root.state.value) });
370
+ },
371
+ });
372
+ }
373
+ export function createPickerViewTrigger(view, name) {
374
+ return defineComponent({
375
+ name, inheritAttrs: false, props: { as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
376
+ slots: Object,
377
+ setup(props, { attrs, slots }) {
378
+ const root = useRoot(name);
379
+ return () => h(Primitive, mergeProps(attrs, {
380
+ as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
381
+ disabled: root.state.value.disabled, onClick: () => root.setViewMode(view), 'aria-pressed': String(root.state.value.viewMode === view),
382
+ 'data-scope': root.scope, 'data-part': `${view}-view-trigger`, 'data-state': root.state.value.viewMode === view ? 'active' : 'inactive',
383
+ }), { default: () => slots['default']?.(root.state.value) });
384
+ },
385
+ });
386
+ }
387
+ function useRoot(part) { const root = inject(key); if (root === undefined)
388
+ throw new TypeError(`${part} must be used inside a date picker root.`); return root; }
389
+ function pickerInputType(_part) {
390
+ return 'text';
391
+ }
392
+ function firstPickerInput(elements, kind) {
393
+ for (const part of inputParts(kind)) {
394
+ const element = elements.get(part);
395
+ if (element instanceof HTMLInputElement)
396
+ return element;
397
+ }
398
+ return null;
399
+ }
400
+ function pickerFormSubmissions(elements, kind) {
401
+ const submission = (part, relativeName) => {
402
+ const element = elements.get(part);
403
+ if (!(element instanceof HTMLInputElement))
404
+ return null;
405
+ return {
406
+ element: () => element,
407
+ ...(relativeName === undefined ? {} : { relativeName }),
408
+ capabilities: hiddenInputSubmissionCapabilities,
409
+ };
410
+ };
411
+ if (kind === 'date')
412
+ return compactSubmissions(submission('input'));
413
+ if (kind === 'date-range') {
414
+ return compactSubmissions(submission('start-input', 'start'), submission('end-input', 'end'));
415
+ }
416
+ if (kind === 'date-time') {
417
+ const combined = submission('date-time-input');
418
+ return combined === null
419
+ ? compactSubmissions(submission('date-input', 'date'), submission('time-input', 'time'))
420
+ : [combined];
421
+ }
422
+ const combinedStart = submission('start-date-time-input', 'start');
423
+ const combinedEnd = submission('end-date-time-input', 'end');
424
+ return compactSubmissions(combinedStart ?? submission('start-date-input', 'start.date'), combinedStart === null ? submission('start-time-input', 'start.time') : null, combinedEnd ?? submission('end-date-input', 'end.date'), combinedEnd === null ? submission('end-time-input', 'end.time') : null);
425
+ }
426
+ function compactSubmissions(...submissions) {
427
+ return submissions.filter((submission) => submission !== null);
428
+ }
429
+ function monthFor(value) {
430
+ return createDatePickerMonth({ year: value.year, month: value.month });
431
+ }
432
+ function yearFor(year) {
433
+ return createDatePickerYear(year);
434
+ }
435
+ function yearsFrom(start, pageSize) {
436
+ const columns = 4;
437
+ return Array.from({ length: Math.ceil(pageSize / columns) }, (_row, rowIndex) => Array.from({ length: columns }, (_column, columnIndex) => Object.freeze({ year: start + rowIndex * columns + columnIndex })));
438
+ }
439
+ function pageStartContaining(year, currentStart, pageSize) {
440
+ if (year < currentStart)
441
+ return currentStart - Math.ceil((currentStart - year) / pageSize) * pageSize;
442
+ if (year >= currentStart + pageSize)
443
+ return currentStart + Math.floor((year - currentStart) / pageSize) * pageSize;
444
+ return currentStart;
445
+ }
446
+ function monthAvailable(value, policies) {
447
+ const days = daysInMonth(value.year, value.month);
448
+ for (let day = 1; day <= days; day += 1) {
449
+ if (isDatePickerValueAvailable({ year: value.year, month: value.month, day }, policies))
450
+ return true;
451
+ }
452
+ return false;
453
+ }
454
+ function daysInMonth(year, month) {
455
+ if (month === 2)
456
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28;
457
+ return [4, 6, 9, 11].includes(month) ? 30 : 31;
458
+ }
459
+ function dateOf(value) { if (value === null)
460
+ return null; if ('year' in value)
461
+ return value; if ('date' in value)
462
+ return value.date; const start = value.start; return 'date' in start ? start.date : start; }
463
+ function extractState(kind, raw) {
464
+ const state = raw;
465
+ if (kind === 'date')
466
+ return { value: state['value'], highlighted: state['highlighted'], open: state['open'], view: state['view'], viewMode: state['viewMode'] };
467
+ const calendar = state['calendar'];
468
+ return { value: state['value'], highlighted: calendar['highlighted'], open: calendar['open'], view: calendar['view'], viewMode: calendar['viewMode'] };
469
+ }
470
+ function compare(left, right) { return left.year - right.year || left.month - right.month || left.day - right.day; }
471
+ function cellState(kind, state, value) {
472
+ const selectedDate = dateOf(state.value);
473
+ let selected = selectedDate !== null && compare(selectedDate, value) === 0;
474
+ let inRange = false;
475
+ if (state.value !== null && !('year' in state.value) && !('date' in state.value)) {
476
+ const start = 'date' in state.value.start ? state.value.start.date : state.value.start;
477
+ const end = 'date' in state.value.end ? state.value.end.date : state.value.end;
478
+ inRange = compare(start, value) <= 0 && compare(value, end) <= 0;
479
+ selected = compare(start, value) === 0 || compare(end, value) === 0;
480
+ }
481
+ return { value, selected, inRange, highlighted: compare(state.highlightedValue, value) === 0, disabled: state.disabled, outsideMonth: value.month !== state.view.month || value.year !== state.view.year };
482
+ }
483
+ function inputValue(kind, granularity, part, value) {
484
+ if (value === null)
485
+ return '';
486
+ const formatPeriod = (date) => granularity === 'year'
487
+ ? String(date.year)
488
+ : granularity === 'month'
489
+ ? `${String(date.year).padStart(4, '0')}-${String(date.month).padStart(2, '0')}`
490
+ : formatDateValue(date);
491
+ if (kind === 'date')
492
+ return formatPeriod(value);
493
+ if (kind === 'date-time') {
494
+ const dateTime = value;
495
+ return part === 'time-input' ? formatTimeValue(dateTime.time) : part === 'date-input' ? formatDateValue(dateTime.date) : formatDateTimeValue(dateTime);
496
+ }
497
+ const range = value;
498
+ const endpoint = part.startsWith('start') ? range.start : range.end;
499
+ if ('date' in endpoint)
500
+ return part.endsWith('time-input') && !part.includes('date-time') ? formatTimeValue(endpoint.time) : part.endsWith('date-input') ? formatDateValue(endpoint.date) : formatDateTimeValue(endpoint);
501
+ return formatPeriod(endpoint);
502
+ }
503
+ function monthContainsValue(value, month) { const date = dateOf(value); return date !== null && date.year === month.year && date.month === month.month; }
504
+ function yearContainsValue(value, year) { const date = dateOf(value); return date !== null && date.year === year.year; }
505
+ function periodInRange(value, start, end) {
506
+ if (value === null || 'year' in value || 'date' in value)
507
+ return false;
508
+ const rangeStart = 'date' in value.start ? value.start.date : value.start;
509
+ const rangeEnd = 'date' in value.end ? value.end.date : value.end;
510
+ return compare(rangeStart, end) <= 0 && compare(start, rangeEnd) <= 0;
511
+ }
512
+ function inputParts(kind) { return kind === 'date' ? ['input'] : kind === 'date-range' ? ['start-input', 'end-input'] : kind === 'date-time' ? ['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']; }
513
+ function toDOMInputKey(part) {
514
+ if (part === 'date-time-input')
515
+ return 'dateTimeInput';
516
+ if (part === 'start-date-time-input')
517
+ return 'startDateTimeInput';
518
+ if (part === 'end-date-time-input')
519
+ return 'endDateTimeInput';
520
+ return part.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
521
+ }
522
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../src/internal/date-picker.ts"],"names":[],"mappings":"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"}