@sectile/dom 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +6 -0
  2. package/package.json +91 -3
  3. package/dist/accordion.d.ts +0 -36
  4. package/dist/accordion.d.ts.map +0 -1
  5. package/dist/accordion.js +0 -143
  6. package/dist/accordion.js.map +0 -1
  7. package/dist/alert-dialog.d.ts +0 -27
  8. package/dist/alert-dialog.d.ts.map +0 -1
  9. package/dist/alert-dialog.js +0 -14
  10. package/dist/alert-dialog.js.map +0 -1
  11. package/dist/calendar.d.ts +0 -92
  12. package/dist/calendar.d.ts.map +0 -1
  13. package/dist/calendar.js +0 -296
  14. package/dist/calendar.js.map +0 -1
  15. package/dist/carousel.d.ts +0 -54
  16. package/dist/carousel.d.ts.map +0 -1
  17. package/dist/carousel.js +0 -285
  18. package/dist/carousel.js.map +0 -1
  19. package/dist/checkbox-group.d.ts +0 -22
  20. package/dist/checkbox-group.d.ts.map +0 -1
  21. package/dist/checkbox-group.js +0 -32
  22. package/dist/checkbox-group.js.map +0 -1
  23. package/dist/checkbox.d.ts +0 -18
  24. package/dist/checkbox.d.ts.map +0 -1
  25. package/dist/checkbox.js +0 -12
  26. package/dist/checkbox.js.map +0 -1
  27. package/dist/combobox.d.ts +0 -120
  28. package/dist/combobox.d.ts.map +0 -1
  29. package/dist/combobox.js +0 -386
  30. package/dist/combobox.js.map +0 -1
  31. package/dist/date-field.d.ts +0 -36
  32. package/dist/date-field.d.ts.map +0 -1
  33. package/dist/date-field.js +0 -88
  34. package/dist/date-field.js.map +0 -1
  35. package/dist/date-picker.d.ts +0 -43
  36. package/dist/date-picker.d.ts.map +0 -1
  37. package/dist/date-picker.js +0 -118
  38. package/dist/date-picker.js.map +0 -1
  39. package/dist/date-range-picker.d.ts +0 -45
  40. package/dist/date-range-picker.d.ts.map +0 -1
  41. package/dist/date-range-picker.js +0 -64
  42. package/dist/date-range-picker.js.map +0 -1
  43. package/dist/date-time-field.d.ts +0 -36
  44. package/dist/date-time-field.d.ts.map +0 -1
  45. package/dist/date-time-field.js +0 -163
  46. package/dist/date-time-field.js.map +0 -1
  47. package/dist/date-time-picker.d.ts +0 -45
  48. package/dist/date-time-picker.d.ts.map +0 -1
  49. package/dist/date-time-picker.js +0 -259
  50. package/dist/date-time-picker.js.map +0 -1
  51. package/dist/date-time-range-picker.d.ts +0 -47
  52. package/dist/date-time-range-picker.d.ts.map +0 -1
  53. package/dist/date-time-range-picker.js +0 -269
  54. package/dist/date-time-range-picker.js.map +0 -1
  55. package/dist/dialog.d.ts +0 -27
  56. package/dist/dialog.d.ts.map +0 -1
  57. package/dist/dialog.js +0 -15
  58. package/dist/dialog.js.map +0 -1
  59. package/dist/disclosure.d.ts +0 -24
  60. package/dist/disclosure.d.ts.map +0 -1
  61. package/dist/disclosure.js +0 -74
  62. package/dist/disclosure.js.map +0 -1
  63. package/dist/feed.d.ts +0 -33
  64. package/dist/feed.d.ts.map +0 -1
  65. package/dist/feed.js +0 -68
  66. package/dist/feed.js.map +0 -1
  67. package/dist/grid.d.ts +0 -43
  68. package/dist/grid.d.ts.map +0 -1
  69. package/dist/grid.js +0 -165
  70. package/dist/grid.js.map +0 -1
  71. package/dist/index.d.ts +0 -45
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/index.js +0 -44
  74. package/dist/index.js.map +0 -1
  75. package/dist/internal/checked-control.d.ts +0 -28
  76. package/dist/internal/checked-control.d.ts.map +0 -1
  77. package/dist/internal/checked-control.js +0 -45
  78. package/dist/internal/checked-control.js.map +0 -1
  79. package/dist/internal/controller.d.ts +0 -6
  80. package/dist/internal/controller.d.ts.map +0 -1
  81. package/dist/internal/controller.js +0 -35
  82. package/dist/internal/controller.js.map +0 -1
  83. package/dist/internal/delegated-event.d.ts +0 -2
  84. package/dist/internal/delegated-event.d.ts.map +0 -1
  85. package/dist/internal/delegated-event.js +0 -11
  86. package/dist/internal/delegated-event.js.map +0 -1
  87. package/dist/internal/disabled-items.d.ts +0 -6
  88. package/dist/internal/disabled-items.d.ts.map +0 -1
  89. package/dist/internal/disabled-items.js +0 -15
  90. package/dist/internal/disabled-items.js.map +0 -1
  91. package/dist/internal/facade.d.ts +0 -44
  92. package/dist/internal/facade.d.ts.map +0 -1
  93. package/dist/internal/facade.js +0 -58
  94. package/dist/internal/facade.js.map +0 -1
  95. package/dist/internal/interaction.d.ts +0 -14
  96. package/dist/internal/interaction.d.ts.map +0 -1
  97. package/dist/internal/interaction.js +0 -25
  98. package/dist/internal/interaction.js.map +0 -1
  99. package/dist/internal/menu-control.d.ts +0 -38
  100. package/dist/internal/menu-control.d.ts.map +0 -1
  101. package/dist/internal/menu-control.js +0 -251
  102. package/dist/internal/menu-control.js.map +0 -1
  103. package/dist/internal/popup-control.d.ts +0 -39
  104. package/dist/internal/popup-control.d.ts.map +0 -1
  105. package/dist/internal/popup-control.js +0 -140
  106. package/dist/internal/popup-control.js.map +0 -1
  107. package/dist/internal/semantic-controller.d.ts +0 -20
  108. package/dist/internal/semantic-controller.d.ts.map +0 -1
  109. package/dist/internal/semantic-controller.js +0 -42
  110. package/dist/internal/semantic-controller.js.map +0 -1
  111. package/dist/internal/text-element.d.ts +0 -16
  112. package/dist/internal/text-element.d.ts.map +0 -1
  113. package/dist/internal/text-element.js +0 -215
  114. package/dist/internal/text-element.js.map +0 -1
  115. package/dist/listbox.d.ts +0 -103
  116. package/dist/listbox.d.ts.map +0 -1
  117. package/dist/listbox.js +0 -416
  118. package/dist/listbox.js.map +0 -1
  119. package/dist/menu-button.d.ts +0 -10
  120. package/dist/menu-button.d.ts.map +0 -1
  121. package/dist/menu-button.js +0 -11
  122. package/dist/menu-button.js.map +0 -1
  123. package/dist/menu.d.ts +0 -8
  124. package/dist/menu.d.ts.map +0 -1
  125. package/dist/menu.js +0 -11
  126. package/dist/menu.js.map +0 -1
  127. package/dist/menubar.d.ts +0 -8
  128. package/dist/menubar.d.ts.map +0 -1
  129. package/dist/menubar.js +0 -11
  130. package/dist/menubar.js.map +0 -1
  131. package/dist/multi-thumb-slider.d.ts +0 -38
  132. package/dist/multi-thumb-slider.d.ts.map +0 -1
  133. package/dist/multi-thumb-slider.js +0 -190
  134. package/dist/multi-thumb-slider.js.map +0 -1
  135. package/dist/number-field.d.ts +0 -45
  136. package/dist/number-field.d.ts.map +0 -1
  137. package/dist/number-field.js +0 -136
  138. package/dist/number-field.js.map +0 -1
  139. package/dist/pagination.d.ts +0 -39
  140. package/dist/pagination.d.ts.map +0 -1
  141. package/dist/pagination.js +0 -169
  142. package/dist/pagination.js.map +0 -1
  143. package/dist/pin-input.d.ts +0 -27
  144. package/dist/pin-input.d.ts.map +0 -1
  145. package/dist/pin-input.js +0 -76
  146. package/dist/pin-input.js.map +0 -1
  147. package/dist/quantity-field.d.ts +0 -46
  148. package/dist/quantity-field.d.ts.map +0 -1
  149. package/dist/quantity-field.js +0 -172
  150. package/dist/quantity-field.js.map +0 -1
  151. package/dist/radio-group.d.ts +0 -40
  152. package/dist/radio-group.d.ts.map +0 -1
  153. package/dist/radio-group.js +0 -172
  154. package/dist/radio-group.js.map +0 -1
  155. package/dist/rating.d.ts +0 -22
  156. package/dist/rating.d.ts.map +0 -1
  157. package/dist/rating.js +0 -38
  158. package/dist/rating.js.map +0 -1
  159. package/dist/select.d.ts +0 -45
  160. package/dist/select.d.ts.map +0 -1
  161. package/dist/select.js +0 -87
  162. package/dist/select.js.map +0 -1
  163. package/dist/slider.d.ts +0 -73
  164. package/dist/slider.d.ts.map +0 -1
  165. package/dist/slider.js +0 -265
  166. package/dist/slider.js.map +0 -1
  167. package/dist/spin-button.d.ts +0 -41
  168. package/dist/spin-button.d.ts.map +0 -1
  169. package/dist/spin-button.js +0 -127
  170. package/dist/spin-button.js.map +0 -1
  171. package/dist/stepper.d.ts +0 -24
  172. package/dist/stepper.d.ts.map +0 -1
  173. package/dist/stepper.js +0 -32
  174. package/dist/stepper.js.map +0 -1
  175. package/dist/switch.d.ts +0 -16
  176. package/dist/switch.d.ts.map +0 -1
  177. package/dist/switch.js +0 -12
  178. package/dist/switch.js.map +0 -1
  179. package/dist/tabs.d.ts +0 -55
  180. package/dist/tabs.d.ts.map +0 -1
  181. package/dist/tabs.js +0 -193
  182. package/dist/tabs.js.map +0 -1
  183. package/dist/tags-input.d.ts +0 -32
  184. package/dist/tags-input.d.ts.map +0 -1
  185. package/dist/tags-input.js +0 -94
  186. package/dist/tags-input.js.map +0 -1
  187. package/dist/text.d.ts +0 -80
  188. package/dist/text.d.ts.map +0 -1
  189. package/dist/text.js +0 -203
  190. package/dist/text.js.map +0 -1
  191. package/dist/time-field.d.ts +0 -36
  192. package/dist/time-field.d.ts.map +0 -1
  193. package/dist/time-field.js +0 -57
  194. package/dist/time-field.js.map +0 -1
  195. package/dist/toggle-button.d.ts +0 -16
  196. package/dist/toggle-button.d.ts.map +0 -1
  197. package/dist/toggle-button.js +0 -12
  198. package/dist/toggle-button.js.map +0 -1
  199. package/dist/toolbar.d.ts +0 -37
  200. package/dist/toolbar.d.ts.map +0 -1
  201. package/dist/toolbar.js +0 -148
  202. package/dist/toolbar.js.map +0 -1
  203. package/dist/tooltip.d.ts +0 -18
  204. package/dist/tooltip.d.ts.map +0 -1
  205. package/dist/tooltip.js +0 -14
  206. package/dist/tooltip.js.map +0 -1
  207. package/dist/tree-grid.d.ts +0 -122
  208. package/dist/tree-grid.d.ts.map +0 -1
  209. package/dist/tree-grid.js +0 -449
  210. package/dist/tree-grid.js.map +0 -1
  211. package/dist/tree-view.d.ts +0 -92
  212. package/dist/tree-view.d.ts.map +0 -1
  213. package/dist/tree-view.js +0 -309
  214. package/dist/tree-view.js.map +0 -1
  215. package/dist/window-splitter.d.ts +0 -8
  216. package/dist/window-splitter.d.ts.map +0 -1
  217. package/dist/window-splitter.js +0 -13
  218. package/dist/window-splitter.js.map +0 -1
@@ -1,259 +0,0 @@
1
- import { unwrap } from '@sectile/core/result';
2
- import { compareDateValues } from '@sectile/core/date-field';
3
- import { compareDateTimeValues } from '@sectile/core/date-time-field';
4
- import { createDatePickerMonth, datePickerID, isDatePickerValueAvailable } from '@sectile/core/date-picker';
5
- import { applyDateTimePickerEvent, createDateTimePickerState, } from '@sectile/core/date-time-picker';
6
- import { createFacadeConnection } from './internal/facade.js';
7
- import { createSemanticController } from './internal/semantic-controller.js';
8
- import { setInteractionAttributes } from './internal/interaction.js';
9
- import { createDateTimeField } from './date-time-field.js';
10
- import { createTimeField } from './time-field.js';
11
- export function createDateTimePicker(options) {
12
- return unwrap(tryCreateDateTimePicker(options));
13
- }
14
- export function tryCreateDateTimePicker(options) {
15
- return createFacadeConnection(options, construct);
16
- }
17
- function construct(options) {
18
- const controls = {
19
- value: options.value !== undefined,
20
- highlighted: options.highlightedValue !== undefined,
21
- open: options.open !== undefined,
22
- };
23
- const requestedValue = controls.value ? options.value : options.defaultValue;
24
- const requestedHighlight = controls.highlighted
25
- ? options.highlightedValue
26
- : options.defaultHighlightedValue;
27
- const requestedOpen = controls.open ? options.open : options.defaultOpen;
28
- const initial = createDateTimePickerState({
29
- ...(requestedValue === undefined ? {} : { value: requestedValue }),
30
- ...(requestedValue == null && options.policies?.defaultTime !== undefined
31
- ? { time: options.policies.defaultTime }
32
- : {}),
33
- calendar: {
34
- ...(requestedHighlight === undefined ? {} : { highlighted: requestedHighlight }),
35
- ...(requestedOpen === undefined ? {} : { open: requestedOpen }),
36
- },
37
- });
38
- const policies = Object.freeze({
39
- ...options.policies,
40
- ...(options.required === undefined ? {} : { required: options.required }),
41
- });
42
- const runtime = createSemanticController({
43
- initial,
44
- reducer: (state, event) => applyDateTimePickerEvent(state, event, policies),
45
- reconcile: (previous, proposed) => createDateTimePickerState({
46
- value: controls.value ? previous.value : proposed.value,
47
- time: controls.value ? previous.time : proposed.time,
48
- calendar: {
49
- ...proposed.calendar,
50
- highlighted: controls.highlighted
51
- ? previous.calendar.highlighted
52
- : proposed.calendar.highlighted,
53
- view: controls.highlighted ? previous.calendar.view : proposed.calendar.view,
54
- open: controls.open ? previous.calendar.open : proposed.calendar.open,
55
- },
56
- }),
57
- notify: (previous, proposed) => {
58
- if (compareNullable(previous.value, proposed.value) !== 0) {
59
- options.onValueChange?.(proposed.value);
60
- }
61
- if (compareDateValues(previous.calendar.highlighted, proposed.calendar.highlighted) !== 0) {
62
- options.onHighlightedValueChange?.(proposed.calendar.highlighted);
63
- }
64
- if (previous.calendar.open !== proposed.calendar.open) {
65
- options.onOpenChange?.(proposed.calendar.open);
66
- }
67
- },
68
- toEffect: (command) => command,
69
- interaction: options,
70
- });
71
- return runtime.ok
72
- ? { ok: true, value: new DOMDateTimePicker(options, runtime.value, controls) }
73
- : runtime;
74
- }
75
- class DOMDateTimePicker {
76
- options;
77
- runtime;
78
- controls;
79
- #field;
80
- #timeField;
81
- #syncingFields = false;
82
- #trigger = () => { this.handleEvent('toggle'); };
83
- #keydown = (event) => {
84
- const semantic = keyEvent(event);
85
- if (semantic !== null) {
86
- event.preventDefault();
87
- this.handleEvent(semantic);
88
- }
89
- };
90
- #click = (event) => {
91
- const target = event.target instanceof Element
92
- ? event.target.closest('[data-date-picker-id]')
93
- : null;
94
- const parts = target?.dataset['datePickerId']?.split('-').map(Number);
95
- if (target !== null && this.options.grid.contains(target) && parts?.length === 3) {
96
- this.handleEvent({
97
- type: 'select-date',
98
- value: { year: parts[0], month: parts[1], day: parts[2] },
99
- });
100
- }
101
- };
102
- constructor(options, runtime, controls) {
103
- this.options = options;
104
- this.runtime = runtime;
105
- this.controls = controls;
106
- const state = runtime.getSnapshot().state;
107
- this.#field = options.input === undefined ? null : createDateTimeField({
108
- input: options.input,
109
- defaultValue: state.value,
110
- policies: {
111
- ...(options.policies?.min === undefined ? {} : { min: options.policies.min }),
112
- ...(options.policies?.max === undefined ? {} : { max: options.policies.max }),
113
- ...(options.policies?.unavailable === undefined ? {} : { unavailable: options.policies.unavailable }),
114
- ...(options.policies?.time?.step === undefined ? {} : { step: options.policies.time.step }),
115
- },
116
- ...(options.disabled === undefined ? {} : { disabled: options.disabled }),
117
- ...(options.readOnly === undefined ? {} : { readOnly: options.readOnly }),
118
- ...(options.required === undefined ? {} : { required: options.required }),
119
- ...(options.label === undefined ? {} : { label: options.label }),
120
- onValueChange: (value) => {
121
- if (!this.#syncingFields)
122
- this.handleEvent({ type: 'set-value', value });
123
- },
124
- });
125
- this.#timeField = options.timeInput === undefined ? null : createTimeField({
126
- input: options.timeInput,
127
- defaultValue: state.time,
128
- ...(options.policies?.time === undefined ? {} : { policies: options.policies.time }),
129
- ...(options.disabled === undefined ? {} : { disabled: options.disabled }),
130
- ...(options.readOnly === undefined ? {} : { readOnly: options.readOnly }),
131
- required: true,
132
- onValueChange: (value) => {
133
- if (!this.#syncingFields && value !== null)
134
- this.handleEvent({ type: 'set-time', value });
135
- },
136
- });
137
- options.trigger.addEventListener('click', this.#trigger);
138
- options.grid.addEventListener('keydown', this.#keydown);
139
- options.grid.addEventListener('click', this.#click);
140
- options.root.setAttribute('role', 'dialog');
141
- options.root.setAttribute('aria-modal', 'false');
142
- options.grid.setAttribute('role', 'grid');
143
- setInteractionAttributes(options.trigger, options, { native: true });
144
- setInteractionAttributes(options.grid, options);
145
- this.refresh();
146
- }
147
- getSnapshot() { return this.runtime.getSnapshot(); }
148
- getMonth() {
149
- const state = this.getSnapshot().state.calendar;
150
- return unwrap(createDatePickerMonth(state.view, this.options.policies?.date?.weekStartsOn));
151
- }
152
- syncControlledValues(values) {
153
- if (this.controls.value !== (values.value !== undefined)
154
- || this.controls.highlighted !== (values.highlightedValue !== undefined)
155
- || this.controls.open !== (values.open !== undefined)) {
156
- return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled date-time picker values must preserve their construction-time shape.' } };
157
- }
158
- const state = this.getSnapshot().state;
159
- const highlighted = this.controls.highlighted
160
- ? values.highlightedValue
161
- : state.calendar.highlighted;
162
- const result = this.runtime.replace(createDateTimePickerState({
163
- value: this.controls.value ? values.value : state.value,
164
- time: state.time,
165
- calendar: {
166
- highlighted,
167
- view: { year: highlighted.year, month: highlighted.month },
168
- open: this.controls.open ? values.open : state.calendar.open,
169
- },
170
- }));
171
- if (result.ok) {
172
- this.refresh();
173
- this.options.onUpdate?.();
174
- }
175
- return result;
176
- }
177
- setCellAttributes(element, value) {
178
- const state = this.getSnapshot().state;
179
- element.dataset['datePickerId'] = datePickerID(value);
180
- element.setAttribute('role', 'gridcell');
181
- element.setAttribute('aria-selected', String(state.value !== null && compareDateValues(state.value.date, value) === 0));
182
- element.setAttribute('aria-disabled', String(!isDatePickerValueAvailable(value, this.options.policies?.date)));
183
- element.tabIndex = compareDateValues(state.calendar.highlighted, value) === 0 ? 0 : -1;
184
- }
185
- handleEvent(event) {
186
- const result = this.runtime.handle(event);
187
- if (result.ok) {
188
- this.refresh();
189
- this.options.onUpdate?.();
190
- if (result.commands.some((command) => command.type === 'open-changed' && !command.open)) {
191
- this.options.trigger.focus();
192
- }
193
- else if (result.commands.some((command) => command.type === 'highlight-changed')) {
194
- queueMicrotask(() => this.options.grid.querySelector('[tabindex="0"]')?.focus());
195
- }
196
- }
197
- return result.ok;
198
- }
199
- refresh() {
200
- const state = this.getSnapshot().state;
201
- this.options.root.hidden = !state.calendar.open;
202
- this.options.trigger.setAttribute('aria-haspopup', 'dialog');
203
- this.options.trigger.setAttribute('aria-expanded', String(state.calendar.open));
204
- if (this.options.label !== undefined)
205
- this.options.grid.setAttribute('aria-label', this.options.label);
206
- this.#syncingFields = true;
207
- if (this.#field !== null && compareNullable(this.#field.getValue(), state.value) !== 0) {
208
- this.#field.handleEvent({ type: 'set-value', value: state.value });
209
- }
210
- if (this.#timeField !== null && compareTime(this.#timeField.getValue(), state.time) !== 0) {
211
- this.#timeField.handleEvent({ type: 'set-value', value: state.time });
212
- }
213
- this.#syncingFields = false;
214
- }
215
- disconnect() {
216
- this.#field?.disconnect();
217
- this.#timeField?.disconnect();
218
- this.options.trigger.removeEventListener('click', this.#trigger);
219
- this.options.grid.removeEventListener('keydown', this.#keydown);
220
- this.options.grid.removeEventListener('click', this.#click);
221
- }
222
- }
223
- function keyEvent(event) {
224
- if (event.altKey || event.ctrlKey || event.metaKey)
225
- return null;
226
- if (event.key === 'ArrowLeft')
227
- return 'previous-day';
228
- if (event.key === 'ArrowRight')
229
- return 'next-day';
230
- if (event.key === 'ArrowUp')
231
- return 'previous-week';
232
- if (event.key === 'ArrowDown')
233
- return 'next-week';
234
- if (event.key === 'Home')
235
- return 'start-of-week';
236
- if (event.key === 'End')
237
- return 'end-of-week';
238
- if (event.key === 'PageUp')
239
- return event.shiftKey ? 'previous-year' : 'previous-month';
240
- if (event.key === 'PageDown')
241
- return event.shiftKey ? 'next-year' : 'next-month';
242
- if (event.key === 'Enter' || event.key === ' ')
243
- return 'select-highlighted';
244
- if (event.key === 'Escape')
245
- return 'close';
246
- return null;
247
- }
248
- function compareNullable(left, right) {
249
- return left === null ? right === null ? 0 : -1 : right === null ? 1 : compareDateTimeValues(left, right);
250
- }
251
- function compareTime(left, right) {
252
- if (left === null)
253
- return -1;
254
- return left.hour - right.hour
255
- || left.minute - right.minute
256
- || left.second - right.second
257
- || left.millisecond - right.millisecond;
258
- }
259
- //# sourceMappingURL=date-time-picker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-time-picker.js","sourceRoot":"","sources":["../src/date-time-picker.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import type { Result } from '@sectile/core';
2
- import type { RevisionSnapshot } from '@sectile/core/revision';
3
- import { type DateValue } from '@sectile/core/date-field';
4
- import { type DateTimeRange } from '@sectile/core/date-time-field';
5
- import { type DateTimeRangePickerEvent, type DateTimeRangePickerPolicies, type DateTimeRangePickerState } from '@sectile/core/date-time-range-picker';
6
- import { type FacadeConnection } from './internal/facade.js';
7
- export interface DateTimeRangePickerOptions {
8
- readonly root: HTMLElement;
9
- readonly grid: HTMLElement;
10
- readonly trigger: HTMLElement;
11
- readonly startInput?: HTMLInputElement;
12
- readonly endInput?: HTMLInputElement;
13
- readonly startTimeInput?: HTMLInputElement;
14
- readonly endTimeInput?: HTMLInputElement;
15
- readonly policies?: DateTimeRangePickerPolicies;
16
- readonly value?: DateTimeRange | null;
17
- readonly defaultValue?: DateTimeRange | null;
18
- readonly highlightedValue?: DateValue;
19
- readonly defaultHighlightedValue?: DateValue;
20
- readonly open?: boolean;
21
- readonly defaultOpen?: boolean;
22
- readonly disabled?: boolean;
23
- readonly readOnly?: boolean;
24
- readonly required?: boolean;
25
- readonly label?: string;
26
- readonly onValueChange?: (value: DateTimeRange | null) => void;
27
- readonly onHighlightedValueChange?: (value: DateValue) => void;
28
- readonly onOpenChange?: (open: boolean) => void;
29
- readonly onUpdate?: () => void;
30
- }
31
- export interface DateTimeRangePickerControlledValues {
32
- readonly value?: DateTimeRange | null;
33
- readonly highlightedValue?: DateValue;
34
- readonly open?: boolean;
35
- }
36
- export interface DateTimeRangePickerConnection {
37
- getSnapshot(): RevisionSnapshot<DateTimeRangePickerState>;
38
- getMonth(): readonly (readonly DateValue[])[];
39
- syncControlledValues(values: DateTimeRangePickerControlledValues): Result<RevisionSnapshot<DateTimeRangePickerState>>;
40
- setCellAttributes(element: HTMLElement, value: DateValue): void;
41
- handleEvent(event: DateTimeRangePickerEvent): boolean;
42
- refresh(): void;
43
- disconnect(): void;
44
- }
45
- export declare function createDateTimeRangePicker(options: DateTimeRangePickerOptions): FacadeConnection<DateTimeRangePickerConnection>;
46
- export declare function tryCreateDateTimeRangePicker(options: DateTimeRangePickerOptions): Result<FacadeConnection<DateTimeRangePickerConnection>>;
47
- //# sourceMappingURL=date-time-range-picker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-time-range-picker.d.ts","sourceRoot":"","sources":["../src/date-time-range-picker.ts"],"names":[],"mappings":"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"}
@@ -1,269 +0,0 @@
1
- import { unwrap } from '@sectile/core/result';
2
- import { compareDateValues } from '@sectile/core/date-field';
3
- import { formatDateTimeRange, formatDateTimeValue } from '@sectile/core/date-time-field';
4
- import { createDatePickerMonth, datePickerID, isDatePickerValueAvailable } from '@sectile/core/date-picker';
5
- import { applyDateTimeRangePickerEvent, createDateTimeRangePickerState, } from '@sectile/core/date-time-range-picker';
6
- import { createFacadeConnection } from './internal/facade.js';
7
- import { createSemanticController } from './internal/semantic-controller.js';
8
- import { setInteractionAttributes } from './internal/interaction.js';
9
- import { createTimeField } from './time-field.js';
10
- export function createDateTimeRangePicker(options) {
11
- return unwrap(tryCreateDateTimeRangePicker(options));
12
- }
13
- export function tryCreateDateTimeRangePicker(options) {
14
- return createFacadeConnection(options, construct);
15
- }
16
- function construct(options) {
17
- const controls = {
18
- value: options.value !== undefined,
19
- highlighted: options.highlightedValue !== undefined,
20
- open: options.open !== undefined,
21
- };
22
- const requestedValue = controls.value ? options.value : options.defaultValue;
23
- const requestedHighlight = controls.highlighted
24
- ? options.highlightedValue
25
- : options.defaultHighlightedValue;
26
- const requestedOpen = controls.open ? options.open : options.defaultOpen;
27
- const initial = createDateTimeRangePickerState({
28
- ...(requestedValue === undefined ? {} : { value: requestedValue }),
29
- calendar: {
30
- ...(requestedHighlight === undefined ? {} : { highlighted: requestedHighlight }),
31
- ...(requestedOpen === undefined ? {} : { open: requestedOpen }),
32
- },
33
- });
34
- const policies = Object.freeze({
35
- ...options.policies,
36
- ...(options.required === undefined ? {} : { required: options.required }),
37
- });
38
- const runtime = createSemanticController({
39
- initial,
40
- reducer: (state, event) => applyDateTimeRangePickerEvent(state, event, policies),
41
- reconcile: (previous, proposed) => createDateTimeRangePickerState({
42
- value: controls.value ? previous.value : proposed.value,
43
- anchor: proposed.anchor,
44
- startTime: controls.value ? previous.startTime : proposed.startTime,
45
- endTime: controls.value ? previous.endTime : proposed.endTime,
46
- calendar: {
47
- ...proposed.calendar,
48
- highlighted: controls.highlighted
49
- ? previous.calendar.highlighted
50
- : proposed.calendar.highlighted,
51
- view: controls.highlighted ? previous.calendar.view : proposed.calendar.view,
52
- open: controls.open ? previous.calendar.open : proposed.calendar.open,
53
- },
54
- }),
55
- notify: (previous, proposed) => {
56
- if (rangeKey(previous.value) !== rangeKey(proposed.value))
57
- options.onValueChange?.(proposed.value);
58
- if (compareDateValues(previous.calendar.highlighted, proposed.calendar.highlighted) !== 0) {
59
- options.onHighlightedValueChange?.(proposed.calendar.highlighted);
60
- }
61
- if (previous.calendar.open !== proposed.calendar.open) {
62
- options.onOpenChange?.(proposed.calendar.open);
63
- }
64
- },
65
- toEffect: (command) => command,
66
- interaction: options,
67
- });
68
- return runtime.ok
69
- ? { ok: true, value: new DOMDateTimeRangePicker(options, runtime.value, controls) }
70
- : runtime;
71
- }
72
- class DOMDateTimeRangePicker {
73
- options;
74
- runtime;
75
- controls;
76
- #startTimeField;
77
- #endTimeField;
78
- #syncingFields = false;
79
- #trigger = () => { this.handleEvent('toggle'); };
80
- #keydown = (event) => {
81
- const semantic = keyEvent(event);
82
- if (semantic !== null) {
83
- event.preventDefault();
84
- this.handleEvent(semantic);
85
- }
86
- };
87
- #click = (event) => {
88
- const target = event.target instanceof Element
89
- ? event.target.closest('[data-date-picker-id]')
90
- : null;
91
- const parts = target?.dataset['datePickerId']?.split('-').map(Number);
92
- if (target !== null && this.options.grid.contains(target) && parts?.length === 3) {
93
- this.handleEvent({
94
- type: 'select-date',
95
- value: { year: parts[0], month: parts[1], day: parts[2] },
96
- });
97
- }
98
- };
99
- constructor(options, runtime, controls) {
100
- this.options = options;
101
- this.runtime = runtime;
102
- this.controls = controls;
103
- const state = runtime.getSnapshot().state;
104
- this.#startTimeField = options.startTimeInput === undefined ? null : createTimeField({
105
- input: options.startTimeInput,
106
- defaultValue: state.startTime,
107
- ...(options.policies?.startTime === undefined ? {} : { policies: options.policies.startTime }),
108
- ...(options.disabled === undefined ? {} : { disabled: options.disabled }),
109
- ...(options.readOnly === undefined ? {} : { readOnly: options.readOnly }),
110
- required: true,
111
- onValueChange: (value) => {
112
- if (!this.#syncingFields && value !== null)
113
- this.handleEvent({ type: 'set-start-time', value });
114
- },
115
- });
116
- this.#endTimeField = options.endTimeInput === undefined ? null : createTimeField({
117
- input: options.endTimeInput,
118
- defaultValue: state.endTime,
119
- ...(options.policies?.endTime === undefined ? {} : { policies: options.policies.endTime }),
120
- ...(options.disabled === undefined ? {} : { disabled: options.disabled }),
121
- ...(options.readOnly === undefined ? {} : { readOnly: options.readOnly }),
122
- required: true,
123
- onValueChange: (value) => {
124
- if (!this.#syncingFields && value !== null)
125
- this.handleEvent({ type: 'set-end-time', value });
126
- },
127
- });
128
- options.trigger.addEventListener('click', this.#trigger);
129
- options.grid.addEventListener('keydown', this.#keydown);
130
- options.grid.addEventListener('click', this.#click);
131
- options.root.setAttribute('role', 'dialog');
132
- options.root.setAttribute('aria-modal', 'false');
133
- options.grid.setAttribute('role', 'grid');
134
- setInteractionAttributes(options.trigger, options, { native: true });
135
- setInteractionAttributes(options.grid, options);
136
- this.refresh();
137
- }
138
- getSnapshot() { return this.runtime.getSnapshot(); }
139
- getMonth() {
140
- const state = this.getSnapshot().state.calendar;
141
- return unwrap(createDatePickerMonth(state.view, this.options.policies?.date?.weekStartsOn));
142
- }
143
- syncControlledValues(values) {
144
- if (this.controls.value !== (values.value !== undefined)
145
- || this.controls.highlighted !== (values.highlightedValue !== undefined)
146
- || this.controls.open !== (values.open !== undefined)) {
147
- return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled date-time range picker values must preserve their construction-time shape.' } };
148
- }
149
- const state = this.getSnapshot().state;
150
- const highlighted = this.controls.highlighted
151
- ? values.highlightedValue
152
- : state.calendar.highlighted;
153
- const result = this.runtime.replace(createDateTimeRangePickerState({
154
- value: this.controls.value ? values.value : state.value,
155
- anchor: state.anchor,
156
- startTime: state.startTime,
157
- endTime: state.endTime,
158
- calendar: {
159
- highlighted,
160
- view: { year: highlighted.year, month: highlighted.month },
161
- open: this.controls.open ? values.open : state.calendar.open,
162
- },
163
- }));
164
- if (result.ok) {
165
- this.refresh();
166
- this.options.onUpdate?.();
167
- }
168
- return result;
169
- }
170
- setCellAttributes(element, value) {
171
- const state = this.getSnapshot().state;
172
- element.dataset['datePickerId'] = datePickerID(value);
173
- element.setAttribute('role', 'gridcell');
174
- element.setAttribute('aria-selected', String(isSelected(state, value)));
175
- element.setAttribute('aria-disabled', String(!isDatePickerValueAvailable(value, this.options.policies?.date)));
176
- element.tabIndex = compareDateValues(state.calendar.highlighted, value) === 0 ? 0 : -1;
177
- }
178
- handleEvent(event) {
179
- const result = this.runtime.handle(event);
180
- if (result.ok) {
181
- this.refresh();
182
- this.options.onUpdate?.();
183
- if (result.commands.some((command) => command.type === 'open-changed' && !command.open)) {
184
- this.options.trigger.focus();
185
- }
186
- else if (result.commands.some((command) => command.type === 'highlight-changed')) {
187
- queueMicrotask(() => this.options.grid.querySelector('[tabindex="0"]')?.focus());
188
- }
189
- }
190
- return result.ok;
191
- }
192
- refresh() {
193
- const state = this.getSnapshot().state;
194
- this.options.root.hidden = !state.calendar.open;
195
- this.options.trigger.setAttribute('aria-haspopup', 'dialog');
196
- this.options.trigger.setAttribute('aria-expanded', String(state.calendar.open));
197
- if (this.options.label !== undefined)
198
- this.options.grid.setAttribute('aria-label', this.options.label);
199
- for (const [input, value] of [
200
- [this.options.startInput, state.value?.start],
201
- [this.options.endInput, state.value?.end],
202
- ]) {
203
- if (input !== undefined) {
204
- input.value = value === undefined ? '' : formatDateTimeValue(value);
205
- input.readOnly = true;
206
- setInteractionAttributes(input, this.options, { native: true, readOnly: true });
207
- }
208
- }
209
- this.#syncingFields = true;
210
- syncTimeField(this.#startTimeField, state.startTime);
211
- syncTimeField(this.#endTimeField, state.endTime);
212
- this.#syncingFields = false;
213
- }
214
- disconnect() {
215
- this.#startTimeField?.disconnect();
216
- this.#endTimeField?.disconnect();
217
- this.options.trigger.removeEventListener('click', this.#trigger);
218
- this.options.grid.removeEventListener('keydown', this.#keydown);
219
- this.options.grid.removeEventListener('click', this.#click);
220
- }
221
- }
222
- function keyEvent(event) {
223
- if (event.altKey || event.ctrlKey || event.metaKey)
224
- return null;
225
- if (event.key === 'ArrowLeft')
226
- return 'previous-day';
227
- if (event.key === 'ArrowRight')
228
- return 'next-day';
229
- if (event.key === 'ArrowUp')
230
- return 'previous-week';
231
- if (event.key === 'ArrowDown')
232
- return 'next-week';
233
- if (event.key === 'Home')
234
- return 'start-of-week';
235
- if (event.key === 'End')
236
- return 'end-of-week';
237
- if (event.key === 'PageUp')
238
- return event.shiftKey ? 'previous-year' : 'previous-month';
239
- if (event.key === 'PageDown')
240
- return event.shiftKey ? 'next-year' : 'next-month';
241
- if (event.key === 'Enter' || event.key === ' ')
242
- return 'select-highlighted';
243
- if (event.key === 'Escape')
244
- return 'close';
245
- return null;
246
- }
247
- function isSelected(state, value) {
248
- if (state.anchor !== null && compareDateValues(state.anchor, value) === 0)
249
- return true;
250
- return state.value !== null
251
- && compareDateValues(state.value.start.date, value) <= 0
252
- && compareDateValues(value, state.value.end.date) <= 0;
253
- }
254
- function syncTimeField(field, value) {
255
- if (field === null)
256
- return;
257
- const current = field.getValue();
258
- if (current === null
259
- || current.hour !== value.hour
260
- || current.minute !== value.minute
261
- || current.second !== value.second
262
- || current.millisecond !== value.millisecond) {
263
- field.handleEvent({ type: 'set-value', value });
264
- }
265
- }
266
- function rangeKey(value) {
267
- return value === null ? '' : formatDateTimeRange(value);
268
- }
269
- //# sourceMappingURL=date-time-range-picker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-time-range-picker.js","sourceRoot":"","sources":["../src/date-time-range-picker.ts"],"names":[],"mappings":"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"}