@zeyos/zx 2.1.0 → 2.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 (311) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +15 -0
  3. package/dist/types/compat/base.d.ts +156 -0
  4. package/dist/types/compat/globals.d.ts +20 -0
  5. package/dist/types/compat/index.d.ts +128 -0
  6. package/dist/types/compat/map/basic.d.ts +175 -0
  7. package/dist/types/compat/map/data.d.ts +102 -0
  8. package/dist/types/compat/map/date-time.d.ts +80 -0
  9. package/dist/types/compat/map/factory.d.ts +9 -0
  10. package/dist/types/compat/map/form.d.ts +98 -0
  11. package/dist/types/compat/map/helpers.d.ts +12 -0
  12. package/dist/types/compat/map/http.d.ts +36 -0
  13. package/dist/types/compat/map/layout.d.ts +106 -0
  14. package/dist/types/compat/map/options.d.ts +80 -0
  15. package/dist/types/compat/map/select.d.ts +95 -0
  16. package/dist/types/compat/map/stubs.d.ts +32 -0
  17. package/dist/types/compat/map/utilities.d.ts +37 -0
  18. package/dist/types/compat-entry.d.ts +5 -0
  19. package/dist/types/components/badge/badge.d.ts +46 -0
  20. package/dist/types/components/breadcrumb/breadcrumb.d.ts +200 -0
  21. package/dist/types/components/button/button.d.ts +42 -0
  22. package/dist/types/components/check-button/check-button.d.ts +98 -0
  23. package/dist/types/components/checklist/checklist.d.ts +143 -0
  24. package/dist/types/components/checklist/field-adapter.d.ts +5 -0
  25. package/dist/types/components/context-menu/context-menu.d.ts +130 -0
  26. package/dist/types/components/copy/copy-button.d.ts +48 -0
  27. package/dist/types/components/copy/copy-input.d.ts +91 -0
  28. package/dist/types/components/data-filter/data-filter.d.ts +250 -0
  29. package/dist/types/components/data-filter/filter-core.d.ts +52 -0
  30. package/dist/types/components/date-picker/date-picker.d.ts +137 -0
  31. package/dist/types/components/date-picker/date-range-picker.d.ts +350 -0
  32. package/dist/types/components/date-picker/field-adapter.d.ts +6 -0
  33. package/dist/types/components/date-picker/month-picker.d.ts +75 -0
  34. package/dist/types/components/date-picker/range-field-adapter.d.ts +7 -0
  35. package/dist/types/components/date-picker/time-picker.d.ts +127 -0
  36. package/dist/types/components/datebox/date-range-box.d.ts +218 -0
  37. package/dist/types/components/datebox/datebox.d.ts +160 -0
  38. package/dist/types/components/datebox/field-adapter.d.ts +5 -0
  39. package/dist/types/components/dialog/dialog.d.ts +284 -0
  40. package/dist/types/components/dropdown/dropdown.d.ts +118 -0
  41. package/dist/types/components/empty-state/empty-state.d.ts +38 -0
  42. package/dist/types/components/field/field.d.ts +231 -0
  43. package/dist/types/components/field-upload/field-adapter.d.ts +5 -0
  44. package/dist/types/components/field-upload/field-upload.d.ts +213 -0
  45. package/dist/types/components/fieldset/fieldset.d.ts +125 -0
  46. package/dist/types/components/finder/finder.d.ts +252 -0
  47. package/dist/types/components/form/form.d.ts +194 -0
  48. package/dist/types/components/groupbox/groupbox.d.ts +89 -0
  49. package/dist/types/components/layout/layout.d.ts +132 -0
  50. package/dist/types/components/loading/inline-loading.d.ts +86 -0
  51. package/dist/types/components/loading/progress-bar.d.ts +168 -0
  52. package/dist/types/components/loading/spinner.d.ts +34 -0
  53. package/dist/types/components/master-panel/master-panel.d.ts +112 -0
  54. package/dist/types/components/menu-button/menu-button.d.ts +142 -0
  55. package/dist/types/components/message/message.d.ts +212 -0
  56. package/dist/types/components/modal/modal.d.ts +105 -0
  57. package/dist/types/components/multi-value-editor/field-adapter.d.ts +5 -0
  58. package/dist/types/components/multi-value-editor/multi-value-editor.d.ts +66 -0
  59. package/dist/types/components/navigation-bar/navigation-bar.d.ts +229 -0
  60. package/dist/types/components/number-field/field-adapter.d.ts +5 -0
  61. package/dist/types/components/number-field/number-field.d.ts +292 -0
  62. package/dist/types/components/pagination/pagination.d.ts +267 -0
  63. package/dist/types/components/panel/panel.d.ts +194 -0
  64. package/dist/types/components/permission/permission.d.ts +93 -0
  65. package/dist/types/components/rating/field-adapter.d.ts +5 -0
  66. package/dist/types/components/rating/rating.d.ts +213 -0
  67. package/dist/types/components/search/search.d.ts +98 -0
  68. package/dist/types/components/select/field-adapter.d.ts +5 -0
  69. package/dist/types/components/select/filter.d.ts +11 -0
  70. package/dist/types/components/select/select.d.ts +235 -0
  71. package/dist/types/components/skeleton/skeleton.d.ts +97 -0
  72. package/dist/types/components/slider/field-adapter.d.ts +5 -0
  73. package/dist/types/components/slider/slider.d.ts +216 -0
  74. package/dist/types/components/split-view/split-view.d.ts +335 -0
  75. package/dist/types/components/stepper/stepper.d.ts +314 -0
  76. package/dist/types/components/stepper/steps.d.ts +131 -0
  77. package/dist/types/components/tabbox/tabbox.d.ts +230 -0
  78. package/dist/types/components/table/sort.d.ts +49 -0
  79. package/dist/types/components/table/table.d.ts +872 -0
  80. package/dist/types/components/tag-picker/field-adapter.d.ts +5 -0
  81. package/dist/types/components/tag-picker/tag-picker.d.ts +375 -0
  82. package/dist/types/components/timebox/field-adapter.d.ts +5 -0
  83. package/dist/types/components/timebox/timebox.d.ts +121 -0
  84. package/dist/types/components/toggle/field-adapter.d.ts +5 -0
  85. package/dist/types/components/toggle/toggle.d.ts +94 -0
  86. package/dist/types/components/toolbar/toolbar.d.ts +230 -0
  87. package/dist/types/components/tooltip/tooltip.d.ts +183 -0
  88. package/dist/types/components/tree/hierarchy.d.ts +113 -0
  89. package/dist/types/components/tree/tree.d.ts +383 -0
  90. package/dist/types/components/truncate/truncate.d.ts +61 -0
  91. package/dist/types/components/value-list/field-adapter.d.ts +5 -0
  92. package/dist/types/components/value-list/value-list.d.ts +143 -0
  93. package/dist/types/core/breakpoint.d.ts +68 -0
  94. package/dist/types/core/component.d.ts +115 -0
  95. package/dist/types/core/date.d.ts +50 -0
  96. package/dist/types/core/dom.d.ts +86 -0
  97. package/dist/types/core/export.d.ts +70 -0
  98. package/dist/types/core/fontawesome.d.ts +107 -0
  99. package/dist/types/core/format.d.ts +107 -0
  100. package/dist/types/core/http.d.ts +122 -0
  101. package/dist/types/core/i18n.d.ts +35 -0
  102. package/dist/types/core/icons.d.ts +137 -0
  103. package/dist/types/core/keyboard.d.ts +72 -0
  104. package/dist/types/core/position.d.ts +45 -0
  105. package/dist/types/core/storage.d.ts +46 -0
  106. package/dist/types/core/util.d.ts +117 -0
  107. package/dist/types/elements/define.d.ts +73 -0
  108. package/dist/types/elements/reflect.d.ts +27 -0
  109. package/dist/types/index.d.ts +79 -0
  110. package/dist/types/zeyos/connect.d.ts +65 -0
  111. package/dist/types/zeyos/form.d.ts +140 -0
  112. package/dist/types/zeyos/icons.d.ts +104 -0
  113. package/dist/types/zeyos/index.d.ts +12 -0
  114. package/dist/types/zeyos/modules.d.ts +110 -0
  115. package/dist/types/zeyos/query.d.ts +157 -0
  116. package/dist/types/zeyos/schema.d.ts +79 -0
  117. package/dist/types/zeyos/select.d.ts +167 -0
  118. package/dist/types/zeyos/table.d.ts +205 -0
  119. package/dist/zx-compat.esm.js +375 -39
  120. package/dist/zx-compat.esm.min.js +1 -1
  121. package/dist/zx-compat.global.js +372 -73
  122. package/dist/zx-compat.global.min.js +3 -3
  123. package/dist/zx-zeyos.esm.js +355 -49
  124. package/dist/zx-zeyos.esm.min.js +1 -1
  125. package/dist/zx.css +68 -6
  126. package/dist/zx.esm.js +359 -73
  127. package/dist/zx.esm.min.js +3 -3
  128. package/dist/zx.global.js +359 -73
  129. package/dist/zx.global.min.js +3 -3
  130. package/dist/zx.min.css +1 -1
  131. package/docs/api.json +48 -2
  132. package/docs/llms.md +31 -0
  133. package/package.json +37 -9
  134. package/src/compat/base.js +291 -0
  135. package/src/compat/globals.js +165 -0
  136. package/src/compat/index.js +84 -0
  137. package/src/compat/map/basic.js +464 -0
  138. package/src/compat/map/data.js +232 -0
  139. package/src/compat/map/date-time.js +177 -0
  140. package/src/compat/map/factory.js +45 -0
  141. package/src/compat/map/form.js +330 -0
  142. package/src/compat/map/helpers.js +46 -0
  143. package/src/compat/map/http.js +117 -0
  144. package/src/compat/map/layout.js +256 -0
  145. package/src/compat/map/options.js +267 -0
  146. package/src/compat/map/select.js +198 -0
  147. package/src/compat/map/stubs.js +26 -0
  148. package/src/compat/map/utilities.js +113 -0
  149. package/src/compat-entry.js +11 -0
  150. package/src/components/badge/badge.css +147 -0
  151. package/src/components/badge/badge.js +92 -0
  152. package/src/components/breadcrumb/breadcrumb.css +105 -0
  153. package/src/components/breadcrumb/breadcrumb.js +331 -0
  154. package/src/components/button/button.css +104 -0
  155. package/src/components/button/button.js +76 -0
  156. package/src/components/check-button/check-button.css +66 -0
  157. package/src/components/check-button/check-button.js +167 -0
  158. package/src/components/checklist/checklist.css +65 -0
  159. package/src/components/checklist/checklist.js +282 -0
  160. package/src/components/checklist/field-adapter.js +46 -0
  161. package/src/components/context-menu/context-menu.css +54 -0
  162. package/src/components/context-menu/context-menu.js +334 -0
  163. package/src/components/copy/copy-button.css +27 -0
  164. package/src/components/copy/copy-button.js +78 -0
  165. package/src/components/copy/copy-input.css +59 -0
  166. package/src/components/copy/copy-input.js +123 -0
  167. package/src/components/data-filter/data-filter.css +53 -0
  168. package/src/components/data-filter/data-filter.js +400 -0
  169. package/src/components/data-filter/filter-core.js +128 -0
  170. package/src/components/date-picker/date-picker.css +181 -0
  171. package/src/components/date-picker/date-picker.js +500 -0
  172. package/src/components/date-picker/date-range-picker.css +264 -0
  173. package/src/components/date-picker/date-range-picker.js +990 -0
  174. package/src/components/date-picker/field-adapter.js +36 -0
  175. package/src/components/date-picker/month-picker.js +223 -0
  176. package/src/components/date-picker/range-field-adapter.js +31 -0
  177. package/src/components/date-picker/time-picker.css +191 -0
  178. package/src/components/date-picker/time-picker.js +406 -0
  179. package/src/components/datebox/date-range-box.css +128 -0
  180. package/src/components/datebox/date-range-box.js +492 -0
  181. package/src/components/datebox/datebox.css +108 -0
  182. package/src/components/datebox/datebox.js +358 -0
  183. package/src/components/datebox/field-adapter.js +34 -0
  184. package/src/components/dialog/dialog.css +74 -0
  185. package/src/components/dialog/dialog.js +450 -0
  186. package/src/components/dropdown/dropdown.css +24 -0
  187. package/src/components/dropdown/dropdown.js +288 -0
  188. package/src/components/empty-state/empty-state.css +80 -0
  189. package/src/components/empty-state/empty-state.js +92 -0
  190. package/src/components/field/field.css +127 -0
  191. package/src/components/field/field.js +605 -0
  192. package/src/components/field-upload/field-adapter.js +21 -0
  193. package/src/components/field-upload/field-upload.css +108 -0
  194. package/src/components/field-upload/field-upload.js +475 -0
  195. package/src/components/fieldset/fieldset.css +37 -0
  196. package/src/components/fieldset/fieldset.js +307 -0
  197. package/src/components/finder/finder.css +98 -0
  198. package/src/components/finder/finder.js +509 -0
  199. package/src/components/form/form.css +32 -0
  200. package/src/components/form/form.js +302 -0
  201. package/src/components/groupbox/groupbox.css +51 -0
  202. package/src/components/groupbox/groupbox.js +199 -0
  203. package/src/components/layout/layout.css +117 -0
  204. package/src/components/layout/layout.js +136 -0
  205. package/src/components/loading/inline-loading.css +34 -0
  206. package/src/components/loading/inline-loading.js +140 -0
  207. package/src/components/loading/progress-bar.css +115 -0
  208. package/src/components/loading/progress-bar.js +259 -0
  209. package/src/components/loading/spinner.css +58 -0
  210. package/src/components/loading/spinner.js +57 -0
  211. package/src/components/master-panel/master-panel.css +51 -0
  212. package/src/components/master-panel/master-panel.js +203 -0
  213. package/src/components/menu-button/menu-button.css +49 -0
  214. package/src/components/menu-button/menu-button.js +294 -0
  215. package/src/components/message/message.css +122 -0
  216. package/src/components/message/message.js +499 -0
  217. package/src/components/modal/modal.css +47 -0
  218. package/src/components/modal/modal.js +203 -0
  219. package/src/components/multi-value-editor/field-adapter.js +44 -0
  220. package/src/components/multi-value-editor/multi-value-editor.css +56 -0
  221. package/src/components/multi-value-editor/multi-value-editor.js +170 -0
  222. package/src/components/navigation-bar/navigation-bar.css +130 -0
  223. package/src/components/navigation-bar/navigation-bar.js +450 -0
  224. package/src/components/number-field/field-adapter.js +40 -0
  225. package/src/components/number-field/number-field.css +77 -0
  226. package/src/components/number-field/number-field.js +545 -0
  227. package/src/components/pagination/pagination.css +95 -0
  228. package/src/components/pagination/pagination.js +481 -0
  229. package/src/components/panel/panel.css +123 -0
  230. package/src/components/panel/panel.js +336 -0
  231. package/src/components/permission/permission.css +47 -0
  232. package/src/components/permission/permission.js +198 -0
  233. package/src/components/rating/field-adapter.js +34 -0
  234. package/src/components/rating/rating.css +97 -0
  235. package/src/components/rating/rating.js +395 -0
  236. package/src/components/search/search.css +70 -0
  237. package/src/components/search/search.js +193 -0
  238. package/src/components/select/field-adapter.js +24 -0
  239. package/src/components/select/filter.js +39 -0
  240. package/src/components/select/select.css +180 -0
  241. package/src/components/select/select.js +663 -0
  242. package/src/components/skeleton/skeleton.css +76 -0
  243. package/src/components/skeleton/skeleton.js +139 -0
  244. package/src/components/slider/field-adapter.js +36 -0
  245. package/src/components/slider/slider.css +181 -0
  246. package/src/components/slider/slider.js +399 -0
  247. package/src/components/split-view/split-view.css +139 -0
  248. package/src/components/split-view/split-view.js +806 -0
  249. package/src/components/stepper/stepper.css +234 -0
  250. package/src/components/stepper/stepper.js +459 -0
  251. package/src/components/stepper/steps.js +131 -0
  252. package/src/components/tabbox/tabbox.css +281 -0
  253. package/src/components/tabbox/tabbox.js +484 -0
  254. package/src/components/table/sort.js +85 -0
  255. package/src/components/table/table.css +364 -0
  256. package/src/components/table/table.js +1711 -0
  257. package/src/components/tag-picker/field-adapter.js +35 -0
  258. package/src/components/tag-picker/tag-picker.css +169 -0
  259. package/src/components/tag-picker/tag-picker.js +837 -0
  260. package/src/components/timebox/field-adapter.js +24 -0
  261. package/src/components/timebox/timebox.css +51 -0
  262. package/src/components/timebox/timebox.js +276 -0
  263. package/src/components/toggle/field-adapter.js +24 -0
  264. package/src/components/toggle/toggle.css +66 -0
  265. package/src/components/toggle/toggle.js +150 -0
  266. package/src/components/toolbar/toolbar.css +81 -0
  267. package/src/components/toolbar/toolbar.js +511 -0
  268. package/src/components/tooltip/tooltip.css +36 -0
  269. package/src/components/tooltip/tooltip.js +420 -0
  270. package/src/components/tree/hierarchy.js +151 -0
  271. package/src/components/tree/tree.css +99 -0
  272. package/src/components/tree/tree.js +784 -0
  273. package/src/components/truncate/truncate.css +20 -0
  274. package/src/components/truncate/truncate.js +92 -0
  275. package/src/components/value-list/field-adapter.js +24 -0
  276. package/src/components/value-list/value-list.css +108 -0
  277. package/src/components/value-list/value-list.js +336 -0
  278. package/src/core/breakpoint.js +150 -0
  279. package/src/core/component.js +292 -0
  280. package/src/core/date.js +216 -0
  281. package/src/core/dom.js +260 -0
  282. package/src/core/export.js +204 -0
  283. package/src/core/fontawesome.js +177 -0
  284. package/src/core/format.js +283 -0
  285. package/src/core/http.js +246 -0
  286. package/src/core/i18n.js +83 -0
  287. package/src/core/icons.js +283 -0
  288. package/src/core/keyboard.js +240 -0
  289. package/src/core/position.js +177 -0
  290. package/src/core/storage.js +175 -0
  291. package/src/core/util.js +336 -0
  292. package/src/elements/define.js +715 -0
  293. package/src/elements/reflect.js +79 -0
  294. package/src/index.js +131 -0
  295. package/src/zeyos/connect.js +142 -0
  296. package/src/zeyos/form.js +254 -0
  297. package/src/zeyos/icons.js +92 -0
  298. package/src/zeyos/index.js +21 -0
  299. package/src/zeyos/modules.js +269 -0
  300. package/src/zeyos/query.js +199 -0
  301. package/src/zeyos/schema.js +474 -0
  302. package/src/zeyos/select.js +175 -0
  303. package/src/zeyos/table.js +272 -0
  304. package/styles/base.css +124 -0
  305. package/styles/icons.css +34 -0
  306. package/styles/tokens/dark.css +84 -0
  307. package/styles/tokens/density.css +9 -0
  308. package/styles/tokens/global.css +80 -0
  309. package/styles/tokens/modules.css +109 -0
  310. package/styles/tokens/semantic.css +49 -0
  311. package/styles/zx.css +61 -0
@@ -0,0 +1,350 @@
1
+ import { Component } from '../../core/component.js';
2
+ export type DateRange = {
3
+ start: Date | null;
4
+ end: Date | null;
5
+ };
6
+ export type DateRangeState = 'start' | 'middle' | 'end';
7
+ export type DateRangeBounds = {
8
+ /**
9
+ * Earliest selectable local calendar day.
10
+ */
11
+ min?: Date | null;
12
+ /**
13
+ * Latest selectable local calendar day.
14
+ */
15
+ max?: Date | null;
16
+ /**
17
+ * Smallest number of nights a complete range may span.
18
+ */
19
+ minNights?: number;
20
+ /**
21
+ * Largest number of nights a complete range may span.
22
+ */
23
+ maxNights?: number | null;
24
+ };
25
+ export type DateRangePreset = {
26
+ /**
27
+ * Stable identifier, emitted on the preset button as `data-preset`.
28
+ */
29
+ name: string;
30
+ /**
31
+ * Button text.
32
+ */
33
+ label: string;
34
+ /**
35
+ * Factory returning the range the preset applies.
36
+ */
37
+ range: () => DateRange;
38
+ };
39
+ export type DateRangePickerOptions = {
40
+ /**
41
+ * Initially selected first day.
42
+ */
43
+ start?: Date | null;
44
+ /**
45
+ * Initially selected last day.
46
+ */
47
+ end?: Date | null;
48
+ /**
49
+ * Earliest selectable local calendar day.
50
+ */
51
+ min?: Date | null;
52
+ /**
53
+ * Latest selectable local calendar day.
54
+ */
55
+ max?: Date | null;
56
+ /**
57
+ * Month panels to render; narrow containers show only the first.
58
+ */
59
+ months?: number;
60
+ /**
61
+ * First weekday, from 0 (Sunday) through 6 (Saturday).
62
+ */
63
+ weekStart?: number;
64
+ /**
65
+ * Show ISO week numbers.
66
+ */
67
+ showWeekNumbers?: boolean;
68
+ /**
69
+ * Smallest number of nights a complete range may span.
70
+ */
71
+ minNights?: number;
72
+ /**
73
+ * Largest number of nights a complete range may span.
74
+ */
75
+ maxNights?: number | null;
76
+ /**
77
+ * Preset buttons, or `true` for the built-in set.
78
+ */
79
+ presets?: DateRangePreset[] | boolean;
80
+ /**
81
+ * Disable every control.
82
+ */
83
+ disabled?: boolean;
84
+ /**
85
+ * Complete-range listener.
86
+ */
87
+ onchange?: (event: CustomEvent<DateRange>) => void;
88
+ /**
89
+ * Every-click listener.
90
+ */
91
+ onselect?: (event: CustomEvent<DateRange>) => void;
92
+ /**
93
+ * Visible-month listener.
94
+ */
95
+ onmonthchange?: (event: CustomEvent<{
96
+ year: number;
97
+ month: number;
98
+ }>) => void;
99
+ };
100
+ export type DateRangePickerSetOptions = {
101
+ silent?: boolean;
102
+ };
103
+ /**
104
+ * Puts a start/end pair in chronological order at local midnight.
105
+ * Values that are not usable `Date` instances become `null`.
106
+ * @param {unknown} start Range start.
107
+ * @param {unknown} end Range end.
108
+ * @returns {DateRange}
109
+ */
110
+ export declare function normalizeRange(start: unknown, end: unknown): DateRange;
111
+ /**
112
+ * Counts the nights between two days. The same day spans zero nights, and the count is derived
113
+ * from calendar days so daylight-saving transitions never add or drop a night.
114
+ * @param {unknown} start Range start.
115
+ * @param {unknown} end Range end.
116
+ * @returns {number} Nights, or `0` when the range is incomplete.
117
+ */
118
+ export declare function rangeNights(start: unknown, end: unknown): number;
119
+ /**
120
+ * Classifies one day against a range. A half-open range only matches its single endpoint, and a
121
+ * one-day range reports `'start'`.
122
+ * @param {unknown} day Day to classify.
123
+ * @param {unknown} start Range start.
124
+ * @param {unknown} end Range end.
125
+ * @returns {DateRangeState|null} The day's role, or `null` when it is outside the range.
126
+ */
127
+ export declare function rangeStateOf(day: unknown, start: unknown, end: unknown): DateRangeState | null;
128
+ /**
129
+ * Normalizes a range and pulls it inside the configured bounds: endpoints are clamped into
130
+ * `min`/`max`, an over-long range is shortened to `maxNights`, and a too-short one is stretched to
131
+ * `minNights` — moving `end` forward, or `start` backward when `max` blocks the way. When the
132
+ * `min`/`max` window itself is narrower than `minNights` the range cannot be honoured and both
133
+ * endpoints come back `null`.
134
+ * @param {DateRange|null|undefined} range Range to clamp.
135
+ * @param {DateRangeBounds} [bounds={}] Selection bounds.
136
+ * @returns {DateRange} A new range of new `Date` objects.
137
+ */
138
+ export declare function clampRange(range: DateRange | null | undefined, bounds?: DateRangeBounds): DateRange;
139
+ /**
140
+ * Inline two-month range calendar following the APG date-picker grid pattern. Both grids form a
141
+ * single roving-focus unit, so arrowing off the end of one month continues in the next.
142
+ * @fires DateRangePicker#change
143
+ * @fires DateRangePicker#select
144
+ * @fires DateRangePicker#monthchange
145
+ * @extends {Component<DateRangePickerOptions>}
146
+ */
147
+ export declare class DateRangePicker extends Component<DateRangePickerOptions> {
148
+ _rootAttributes: Map<string, string>;
149
+ _min: Date;
150
+ _max: Date;
151
+ _minNights: number;
152
+ _maxNights: number;
153
+ _weekStart: number;
154
+ _monthCount: number;
155
+ _presets: DateRangePreset[];
156
+ _disabled: boolean;
157
+ _hover: Date;
158
+ /** @type {{date: Date, cell: HTMLTableCellElement, button: HTMLButtonElement}[]} */
159
+ _dayCells: {
160
+ date: Date;
161
+ cell: HTMLTableCellElement;
162
+ button: HTMLButtonElement;
163
+ }[];
164
+ _start: Date;
165
+ _end: any;
166
+ _picking: boolean;
167
+ _focused: Date;
168
+ _viewYear: any;
169
+ _viewMonth: any;
170
+ _nodes: any[] | HTMLElement[];
171
+ _committedStart: any;
172
+ _committedEnd: any;
173
+ static cssName: string;
174
+ /** @type {DateRangePickerOptions} */
175
+ static defaults: DateRangePickerOptions;
176
+ /** @returns {HTMLElement} */
177
+ render(): HTMLElement;
178
+ /**
179
+ * Returns copies of the selected endpoints; the internal dates are never handed out.
180
+ * @returns {DateRange}
181
+ */
182
+ get(): DateRange;
183
+ /**
184
+ * Selects a range, clamped to the configured bounds, and scrolls the first visible month to the
185
+ * range start.
186
+ * @param {DateRange|null} [range={}] Range to select; omit either endpoint to clear it.
187
+ * @param {DateRangePickerSetOptions} [options={}] Update behavior.
188
+ * @returns {this}
189
+ * @fires DateRangePicker#change
190
+ * @fires DateRangePicker#monthchange
191
+ */
192
+ set(range?: DateRange | null, { silent }?: DateRangePickerSetOptions): this;
193
+ /**
194
+ * Clears the selection.
195
+ * @param {DateRangePickerSetOptions} [options={}] Update behavior.
196
+ * @returns {this}
197
+ * @fires DateRangePicker#change
198
+ */
199
+ clear({ silent }?: DateRangePickerSetOptions): this;
200
+ /**
201
+ * Moves focus to the currently roving calendar day.
202
+ * @returns {this}
203
+ */
204
+ focus(): this;
205
+ /** Enables every control. @returns {this} */
206
+ enable(): this;
207
+ /** Disables every control. @returns {this} */
208
+ disable(): this;
209
+ /** Removes generated content and restores the host element's attributes. @returns {void} */
210
+ destroy(): void;
211
+ /** @returns {DateRangeBounds} */
212
+ _bounds(): DateRangeBounds;
213
+ /**
214
+ * Reports whether a day may be clicked. Days before the pending start always may — they restart
215
+ * the range there instead of producing an inverted one.
216
+ * @param {Date} date Day to test.
217
+ * @returns {boolean}
218
+ */
219
+ _selectable(date: Date): boolean;
220
+ /**
221
+ * Applies one day click: the first sets the start, the second the end, and a click on or before
222
+ * the pending start restarts the range there.
223
+ * @param {Date} date Clicked day.
224
+ * @returns {void}
225
+ * @fires DateRangePicker#select
226
+ * @fires DateRangePicker#change
227
+ */
228
+ _choose(date: Date): void;
229
+ /**
230
+ * Snapshots the selection Escape falls back to. Only a complete range is worth restoring, so a
231
+ * half-open one is remembered as no selection at all.
232
+ * @returns {void}
233
+ */
234
+ _remember(): void;
235
+ /**
236
+ * Abandons a half-picked range, restoring the last complete selection.
237
+ * @returns {boolean} Whether a half-picked range was discarded.
238
+ * @fires DateRangePicker#select
239
+ */
240
+ _abandon(): boolean;
241
+ /** @param {Date} date @returns {Date} */
242
+ _clampFocus(date: Date): Date;
243
+ /**
244
+ * Counts the month panels the container query is currently showing, falling back to the
245
+ * configured count while the picker is not rendered.
246
+ * @returns {number}
247
+ */
248
+ _visibleMonthCount(): number;
249
+ /**
250
+ * Points the first visible month at a date's month.
251
+ * @param {Date} date Day whose month becomes the leftmost panel.
252
+ * @returns {void}
253
+ * @fires DateRangePicker#monthchange
254
+ */
255
+ _setView(date: Date): void;
256
+ /**
257
+ * Shifts the view by the smallest number of months that brings a date into a visible panel.
258
+ * @param {Date} date Day that must be visible.
259
+ * @returns {boolean} Whether the view moved.
260
+ */
261
+ _ensureVisible(date: Date): boolean;
262
+ /** @param {number} amount @returns {void} */
263
+ _pageView(amount: number): void;
264
+ /**
265
+ * Keeps the roving tab stop inside the visible panels after the view moved on its own.
266
+ * @param {Date} date Current roving day.
267
+ * @returns {Date}
268
+ */
269
+ _focusInView(date: Date): Date;
270
+ /** @param {Date} date @returns {void} */
271
+ _moveFocus(date: Date): void;
272
+ /** @returns {void} */
273
+ _emitMonthChange(): void;
274
+ /** @param {Event} event @returns {void} */
275
+ _onPresetClick(event: Event): void;
276
+ /** @param {Event} event @returns {void} */
277
+ _onCalendarClick(event: Event): void;
278
+ /** @param {Event} event @returns {void} */
279
+ _onDayHover(event: Event): void;
280
+ /** @param {Date|null} date @returns {void} */
281
+ _setHover(date: Date | null): void;
282
+ /** @param {KeyboardEvent} event @returns {void} */
283
+ _onDayKeydown(event: KeyboardEvent): void;
284
+ /** @returns {void} */
285
+ _renderCalendars(): void;
286
+ /** @param {Date} first First day of the month to render. @returns {HTMLElement} */
287
+ _renderMonth(first: Date): HTMLElement;
288
+ /** @returns {HTMLTableRowElement} */
289
+ _weekdayRow(): HTMLTableRowElement;
290
+ /**
291
+ * Refreshes every day cell's range, selection, and focus state without rebuilding the grids, so
292
+ * hovering and arrowing never disturb the focused element.
293
+ * @returns {void}
294
+ */
295
+ _paint(): void;
296
+ /**
297
+ * Resolves how a day should paint: committed endpoints and band, or the live preview while an
298
+ * end date is being picked.
299
+ * @param {Date} date Day to classify.
300
+ * @returns {{range: DateRangeState|'preview'|null, edge: 'start'|'end'|'both'|null}}
301
+ */
302
+ _dayState(date: Date): {
303
+ range: DateRangeState | 'preview' | null;
304
+ edge: 'start' | 'end' | 'both' | null;
305
+ };
306
+ /**
307
+ * The day the range would end at right now — the hovered day, or the roving focus when the
308
+ * pointer is elsewhere.
309
+ * @returns {Date|null}
310
+ */
311
+ _previewEnd(): Date | null;
312
+ /** @param {Date} date @param {string|null} state @returns {string} */
313
+ _dayLabel(date: Date, state: string | null): string;
314
+ /** @returns {void} */
315
+ _syncDisabled(): void;
316
+ /** Writes the current selection into the visually hidden live region. @returns {void} */
317
+ _announce(): void;
318
+ /** @returns {string} */
319
+ _selectionLabel(): string;
320
+ /** @param {Element|null} target @returns {{date: Date, cell: Element, button: Element}|null} */
321
+ _cellFor(target: Element | null): {
322
+ date: Date;
323
+ cell: Element;
324
+ button: Element;
325
+ } | null;
326
+ /** @param {Date} date @returns {HTMLButtonElement|null} */
327
+ _buttonForDate(date: Date): HTMLButtonElement | null;
328
+ }
329
+ /**
330
+ * Fired once a complete range is selected, and when the selection is cleared.
331
+ * @event DateRangePicker#change
332
+ * @type {CustomEvent<DateRange>}
333
+ */
334
+ /**
335
+ * Fired on every day click and preset, including the half-open state where `end` is still null,
336
+ * and when Escape abandons a half-picked range.
337
+ * @event DateRangePicker#select
338
+ * @type {CustomEvent<DateRange>}
339
+ */
340
+ /**
341
+ * Fired when the first visible month changes. Month is zero-based.
342
+ * @event DateRangePicker#monthchange
343
+ * @type {CustomEvent<{year: number, month: number}>}
344
+ */
345
+ /**
346
+ * Builds the shipped preset set: Today, Yesterday, Last 7 days, Last 30 days, This month,
347
+ * Last month, This quarter, This year.
348
+ * @returns {DateRangePreset[]}
349
+ */
350
+ export declare function defaultDateRangePresets(): DateRangePreset[];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Registers the MonthPicker-backed `month` field type. Date and datetime fields are registered
3
+ * by the Datebox adapter so those types retain formatted text-input behavior.
4
+ * @returns {void}
5
+ */
6
+ export declare function registerDatePickerFieldAdapters(): void;
@@ -0,0 +1,75 @@
1
+ import { DatePicker } from './date-picker.js';
2
+ export type MonthPickerOptions = {
3
+ /**
4
+ * Initially selected month.
5
+ */
6
+ value?: Date | null;
7
+ /**
8
+ * Earliest selectable month.
9
+ */
10
+ min?: Date | null;
11
+ /**
12
+ * Latest selectable month.
13
+ */
14
+ max?: Date | null;
15
+ /**
16
+ * Change listener.
17
+ */
18
+ onchange?: (event: CustomEvent<{
19
+ date: Date | null;
20
+ }>) => void;
21
+ };
22
+ export type MonthPickerSetOptions = {
23
+ silent?: boolean;
24
+ };
25
+ /**
26
+ * @typedef {Object} MonthPickerOptions
27
+ * @property {Date|null} [value=null] Initially selected month.
28
+ * @property {Date|null} [min=null] Earliest selectable month.
29
+ * @property {Date|null} [max=null] Latest selectable month.
30
+ * @property {(event: CustomEvent<{date: Date|null}>) => void} [onchange] Change listener.
31
+ */
32
+ /** @typedef {{silent?: boolean}} MonthPickerSetOptions */
33
+ /**
34
+ * Twelve-month grid with a year stepper.
35
+ * @fires MonthPicker#change
36
+ */
37
+ export declare class MonthPicker extends DatePicker {
38
+ _year: number;
39
+ _focusedMonth: number;
40
+ static cssName: string;
41
+ /** @type {MonthPickerOptions} */
42
+ static defaults: MonthPickerOptions;
43
+ /** @returns {HTMLElement} */
44
+ render(): HTMLElement;
45
+ /** @returns {Date|null} */
46
+ get(): Date | null;
47
+ /**
48
+ * Selects the first day of a month.
49
+ * @param {Date|null} date Month to select, or null to clear.
50
+ * @param {MonthPickerSetOptions} [options={}] Update behavior.
51
+ * @returns {this}
52
+ * @fires MonthPicker#change
53
+ */
54
+ set(date: Date | null, { silent }?: MonthPickerSetOptions): this;
55
+ /** @returns {this} */
56
+ focus(): this;
57
+ /** Removes generated content from an enhanced target. @returns {void} */
58
+ destroy(): void;
59
+ /** @param {Date|null} date @returns {Date|null} */
60
+ _normalizeMonth(date: Date | null): Date | null;
61
+ /** @returns {void} */
62
+ _renderMonths(): void;
63
+ /** @param {number} amount @returns {void} */
64
+ _stepYear(amount: number): void;
65
+ /** @param {Event} event @returns {void} */
66
+ _onMonthClick(event: Event): void;
67
+ /** @param {KeyboardEvent} event @returns {void} */
68
+ _onMonthKeydown(event: KeyboardEvent): void;
69
+ /** @param {number} month @returns {void} */
70
+ _selectMonth(month: number): void;
71
+ /** @param {Date} date @returns {boolean} */
72
+ _inRange(date: Date): boolean;
73
+ /** @param {number} month @returns {HTMLButtonElement|null} */
74
+ _button(month: number): HTMLButtonElement | null;
75
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Registers the DateRangeBox-backed `daterange` field type, so a Form field declared as
3
+ * `{ type: 'daterange', label, props: {…} }` renders a formatted range input with an anchored
4
+ * two-month calendar. Field values are `{start, end}` objects of `Date|null`.
5
+ * @returns {void}
6
+ */
7
+ export declare function registerDateRangeFieldAdapter(): void;
@@ -0,0 +1,127 @@
1
+ import { Component } from '../../core/component.js';
2
+ export type TimePickerValue = {
3
+ h: number;
4
+ m: number;
5
+ s: number;
6
+ };
7
+ export type ClockUnit = 'h' | 'm';
8
+ export type TimePickerOptions = {
9
+ /**
10
+ * Initial local time.
11
+ */
12
+ value?: TimePickerValue | Date | null;
13
+ /**
14
+ * Show the seconds spinbutton.
15
+ */
16
+ seconds?: boolean;
17
+ /**
18
+ * Minute increment used by arrow keys.
19
+ */
20
+ step?: number;
21
+ /**
22
+ * Offer a clock-face dial behind a toggle button.
23
+ */
24
+ clock?: boolean;
25
+ /**
26
+ * Change listener.
27
+ */
28
+ onchange?: (event: CustomEvent<{
29
+ time: TimePickerValue;
30
+ }>) => void;
31
+ };
32
+ export type TimePickerSetOptions = {
33
+ silent?: boolean;
34
+ };
35
+ export type ClockMark = {
36
+ value: number;
37
+ label: string;
38
+ angle: number;
39
+ ring: 'outer' | 'inner';
40
+ };
41
+ /**
42
+ * Accessible segmented time picker made from spinbutton inputs, with an optional clock face for
43
+ * picking an hour and a minute by eye. The spinbuttons stay the primary control: the dial is a
44
+ * second, visual route to the same value, and every mark is a radio in an APG radio group.
45
+ * @fires TimePicker#change
46
+ * @extends {Component<TimePickerOptions>}
47
+ */
48
+ export declare class TimePicker extends Component<TimePickerOptions> {
49
+ _value: TimePickerValue | {
50
+ h: number;
51
+ m: number;
52
+ s: number;
53
+ };
54
+ _display: TimePickerValue | {
55
+ h: number;
56
+ m: number;
57
+ s: number;
58
+ };
59
+ _inputs: any[];
60
+ _clockOpen: boolean;
61
+ /** @type {ClockUnit} */
62
+ _clockUnit: ClockUnit;
63
+ _clock: HTMLElement;
64
+ _content: HTMLElement;
65
+ static cssName: string;
66
+ /** @type {TimePickerOptions} */
67
+ static defaults: TimePickerOptions;
68
+ /** @returns {HTMLElement} */
69
+ render(): HTMLElement;
70
+ /**
71
+ * Returns a copy of the selected time, or null when no initial value has been committed.
72
+ * @returns {TimePickerValue|null}
73
+ */
74
+ get(): TimePickerValue | null;
75
+ /**
76
+ * Sets the displayed local time.
77
+ * @param {TimePickerValue|Date|null} value Time object, Date, or null.
78
+ * @param {TimePickerSetOptions} [options={}] Update behavior.
79
+ * @returns {this}
80
+ * @fires TimePicker#change
81
+ */
82
+ set(value: TimePickerValue | Date | null, { silent }?: TimePickerSetOptions): this;
83
+ /**
84
+ * Opens the clock face on the given unit.
85
+ * @param {ClockUnit} [unit='h'] Dial to show first.
86
+ * @returns {this}
87
+ */
88
+ openClock(unit?: ClockUnit): this;
89
+ /** Closes the clock face. @returns {this} */
90
+ closeClock(): this;
91
+ /** Toggles the clock face. @returns {this} */
92
+ toggleClock(): this;
93
+ /** Removes generated content from an enhanced target. @returns {void} */
94
+ destroy(): void;
95
+ /** @param {HTMLElement} parent @param {'h'|'m'|'s'} segment @param {string} label @param {number} max @returns {void} */
96
+ _addSpin(parent: HTMLElement, segment: 'h' | 'm' | 's', label: string, max: number): void;
97
+ /** @param {KeyboardEvent} event @param {'h'|'m'|'s'} segment @param {number} max @returns {void} */
98
+ _onKeydown(event: KeyboardEvent, segment: 'h' | 'm' | 's', max: number): void;
99
+ /** @param {HTMLInputElement} input @param {'h'|'m'|'s'} segment @param {number} max @returns {void} */
100
+ _onInput(input: HTMLInputElement, segment: 'h' | 'm' | 's', max: number): void;
101
+ /** @returns {void} */
102
+ _commitFromInputs(): void;
103
+ /** @returns {void} */
104
+ _writeInputs(): void;
105
+ /**
106
+ * Builds the collapsible clock face: a read-out that doubles as the hour/minute switch, and a
107
+ * dial whose marks are radios.
108
+ * @param {string} id Element id the toggle button controls.
109
+ * @returns {HTMLElement}
110
+ */
111
+ _buildClock(id: string): HTMLElement;
112
+ /**
113
+ * Applies a mark's value to the active unit, then moves on to the minutes so a whole time can
114
+ * be set with two clicks.
115
+ * @param {number} value Hour or minute the mark stands for.
116
+ * @returns {void}
117
+ */
118
+ _pick(value: number): void;
119
+ /** @param {KeyboardEvent} event @returns {void} */
120
+ _onDialKeydown(event: KeyboardEvent): void;
121
+ /** Reflects the open state, the active unit, the marks, and the hand. @returns {void} */
122
+ _syncClock(): void;
123
+ /** @param {ClockMark} mark @param {number} selected @returns {HTMLElement} */
124
+ _buildMark(mark: ClockMark, selected: number): HTMLElement;
125
+ /** @param {HTMLElement} element @param {ClockMark} mark @param {number} selected @returns {void} */
126
+ _syncMark(element: HTMLElement, mark: ClockMark, selected: number): void;
127
+ }