@zeyos/zx 2.1.0 → 2.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 (311) hide show
  1. package/CHANGELOG.md +39 -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 +362 -33
  120. package/dist/zx-compat.esm.min.js +1 -1
  121. package/dist/zx-compat.global.js +359 -67
  122. package/dist/zx-compat.global.min.js +3 -3
  123. package/dist/zx-zeyos.esm.js +342 -43
  124. package/dist/zx-zeyos.esm.min.js +1 -1
  125. package/dist/zx.css +68 -6
  126. package/dist/zx.esm.js +346 -67
  127. package/dist/zx.esm.min.js +3 -3
  128. package/dist/zx.global.js +346 -67
  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 +28 -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 +1693 -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,5 @@
1
+ /**
2
+ * Registers the TagPicker-backed `tagpicker` field type.
3
+ * @returns {void}
4
+ */
5
+ export declare function registerTagPickerFieldAdapter(): void;
@@ -0,0 +1,375 @@
1
+ import { Component } from '../../core/component.js';
2
+ export type TagItem = Record<string, any> | string | number;
3
+ export type TagValueReader = string | ((item: TagItem) => unknown);
4
+ export type TagLabelReader = string | ((item: TagItem) => string);
5
+ export type TagPickerOptions = {
6
+ /**
7
+ * Selectable items.
8
+ */
9
+ items?: TagItem[];
10
+ /**
11
+ * Initially selected IDs.
12
+ */
13
+ values?: unknown[];
14
+ /**
15
+ * Item ID property or reader.
16
+ */
17
+ valueKey?: TagValueReader;
18
+ /**
19
+ * Item label property or reader.
20
+ */
21
+ labelKey?: TagLabelReader;
22
+ /**
23
+ * Fields searched by local filtering.
24
+ */
25
+ searchKeys?: Array<TagValueReader> | null;
26
+ /**
27
+ * Filtering mode.
28
+ */
29
+ filter?: 'local' | ((query: string) => Promise<TagItem[]> | TagItem[]);
30
+ /**
31
+ * Minimum async query length.
32
+ */
33
+ minQuery?: number;
34
+ /**
35
+ * Async query delay in milliseconds.
36
+ */
37
+ debounce?: number;
38
+ /**
39
+ * Whether unknown values may be created from the query.
40
+ */
41
+ allowCreate?: boolean;
42
+ /**
43
+ * Maximum number of selected values.
44
+ */
45
+ max?: number | null;
46
+ /**
47
+ * Whether picking an item closes the list.
48
+ */
49
+ closeOnSelect?: boolean;
50
+ /**
51
+ * Empty-state input text.
52
+ */
53
+ placeholder?: string;
54
+ /**
55
+ * Maximum list height in pixels.
56
+ */
57
+ listHeight?: number;
58
+ /**
59
+ * Whether interaction is disabled.
60
+ */
61
+ disabled?: boolean;
62
+ /**
63
+ * Whether tags may be added or removed.
64
+ */
65
+ readonly?: boolean;
66
+ /**
67
+ * Option renderer.
68
+ */
69
+ renderItem?: ((item: TagItem) => Node | string) | null;
70
+ /**
71
+ * Tag-label renderer.
72
+ */
73
+ renderTag?: ((item: TagItem) => Node | string) | null;
74
+ /**
75
+ * Localized messages.
76
+ */
77
+ msg?: Record<string, string> | Record<string, Record<string, string>>;
78
+ /**
79
+ * Change listener.
80
+ */
81
+ onchange?: (event: CustomEvent<{
82
+ values: unknown[];
83
+ items: TagItem[];
84
+ }>) => void;
85
+ /**
86
+ * Add listener.
87
+ */
88
+ onadd?: (event: CustomEvent<{
89
+ value: unknown;
90
+ item: TagItem;
91
+ }>) => void;
92
+ /**
93
+ * Remove listener.
94
+ */
95
+ onremove?: (event: CustomEvent<{
96
+ value: unknown;
97
+ item: TagItem;
98
+ }>) => void;
99
+ /**
100
+ * Create listener.
101
+ */
102
+ oncreate?: (event: CustomEvent<{
103
+ value: unknown;
104
+ item: TagItem;
105
+ }>) => void;
106
+ /**
107
+ * Async-query listener.
108
+ */
109
+ onquery?: (event: CustomEvent<{
110
+ query: string;
111
+ }>) => void;
112
+ /**
113
+ * Open listener.
114
+ */
115
+ onopen?: (event: CustomEvent<Record<string, never>>) => void;
116
+ /**
117
+ * Close listener.
118
+ */
119
+ onclose?: (event: CustomEvent<Record<string, never>>) => void;
120
+ /**
121
+ * Async-failure listener.
122
+ */
123
+ onerror?: (event: CustomEvent<{
124
+ error: Error;
125
+ }>) => void;
126
+ };
127
+ /** @typedef {Record<string, any>|string|number} TagItem */
128
+ /** @typedef {string|((item: TagItem) => unknown)} TagValueReader */
129
+ /** @typedef {string|((item: TagItem) => string)} TagLabelReader */
130
+ /**
131
+ * @typedef {Object} TagPickerOptions
132
+ * @property {TagItem[]} [items=[]] Selectable items.
133
+ * @property {unknown[]} [values=[]] Initially selected IDs.
134
+ * @property {TagValueReader} [valueKey='ID'] Item ID property or reader.
135
+ * @property {TagLabelReader} [labelKey='name'] Item label property or reader.
136
+ * @property {Array<TagValueReader>|null} [searchKeys=null] Fields searched by local filtering.
137
+ * @property {'local'|((query: string) => Promise<TagItem[]>|TagItem[])} [filter='local'] Filtering mode.
138
+ * @property {number} [minQuery=0] Minimum async query length.
139
+ * @property {number} [debounce=200] Async query delay in milliseconds.
140
+ * @property {boolean} [allowCreate=false] Whether unknown values may be created from the query.
141
+ * @property {number|null} [max=null] Maximum number of selected values.
142
+ * @property {boolean} [closeOnSelect=false] Whether picking an item closes the list.
143
+ * @property {string} [placeholder=''] Empty-state input text.
144
+ * @property {number} [listHeight=260] Maximum list height in pixels.
145
+ * @property {boolean} [disabled=false] Whether interaction is disabled.
146
+ * @property {boolean} [readonly=false] Whether tags may be added or removed.
147
+ * @property {((item: TagItem) => Node|string)|null} [renderItem=null] Option renderer.
148
+ * @property {((item: TagItem) => Node|string)|null} [renderTag=null] Tag-label renderer.
149
+ * @property {Record<string, string>|Record<string, Record<string, string>>} [msg] Localized messages.
150
+ * @property {(event: CustomEvent<{values: unknown[], items: TagItem[]}>) => void} [onchange] Change listener.
151
+ * @property {(event: CustomEvent<{value: unknown, item: TagItem}>) => void} [onadd] Add listener.
152
+ * @property {(event: CustomEvent<{value: unknown, item: TagItem}>) => void} [onremove] Remove listener.
153
+ * @property {(event: CustomEvent<{value: unknown, item: TagItem}>) => void} [oncreate] Create listener.
154
+ * @property {(event: CustomEvent<{query: string}>) => void} [onquery] Async-query listener.
155
+ * @property {(event: CustomEvent<Record<string, never>>) => void} [onopen] Open listener.
156
+ * @property {(event: CustomEvent<Record<string, never>>) => void} [onclose] Close listener.
157
+ * @property {(event: CustomEvent<{error: Error}>) => void} [onerror] Async-failure listener.
158
+ */
159
+ /**
160
+ * Multi-select combobox that renders its selection as removable tags inside the control
161
+ * (APG combobox with a multi-selectable listbox).
162
+ *
163
+ * It differs from the two neighbouring components on purpose: `ValueList` takes free text with no
164
+ * catalogue behind it, `Checklist` shows a fixed set in full, and `TagPicker` searches a large
165
+ * catalogue and keeps the chosen values visible in the control.
166
+ *
167
+ * @fires TagPicker#change
168
+ * @fires TagPicker#add
169
+ * @fires TagPicker#remove
170
+ * @fires TagPicker#create
171
+ * @fires TagPicker#query
172
+ * @fires TagPicker#open
173
+ * @fires TagPicker#close
174
+ * @fires TagPicker#error
175
+ * @extends {Component<TagPickerOptions>}
176
+ */
177
+ export declare class TagPicker extends Component<TagPickerOptions> {
178
+ _items: any[] | TagItem[];
179
+ _selected: any[];
180
+ _visible: any[];
181
+ _entries: any[];
182
+ _activeIndex: number;
183
+ _open: boolean;
184
+ _disabled: boolean;
185
+ _readonly: boolean;
186
+ _loading: boolean;
187
+ _requestSequence: any;
188
+ _queryTimer: number;
189
+ _position: import("../../core/position.js").PositionController;
190
+ _activeId: string;
191
+ _createdRoot: boolean;
192
+ _snapshot: import("../../core/dom.js").TargetSnapshot;
193
+ static cssName: string;
194
+ /** @type {TagPickerOptions} */
195
+ static defaults: TagPickerOptions;
196
+ /** @returns {HTMLElement} */
197
+ render(): HTMLElement;
198
+ /** Selected IDs. @returns {unknown[]} */
199
+ get values(): unknown[];
200
+ /** @param {unknown[]} next Selected IDs. */
201
+ set values(next: unknown[]);
202
+ /**
203
+ * Returns the selected IDs in selection order.
204
+ * @returns {unknown[]}
205
+ */
206
+ getValues(): unknown[];
207
+ /**
208
+ * Returns the selected items.
209
+ * @returns {TagItem[]}
210
+ */
211
+ getItems(): TagItem[];
212
+ /**
213
+ * Replaces the whole selection.
214
+ * @param {unknown[]} values Item IDs, or items.
215
+ * @param {{silent?: boolean}} [options={}] Set `silent` to suppress `change`.
216
+ * @returns {this}
217
+ * @fires TagPicker#change
218
+ */
219
+ setValues(values: unknown[], { silent }?: {
220
+ silent?: boolean;
221
+ }): this;
222
+ /**
223
+ * Adds one value to the selection.
224
+ * @param {unknown} value Item ID, or an item.
225
+ * @param {{silent?: boolean}} [options={}] Set `silent` to suppress events.
226
+ * @returns {this}
227
+ * @fires TagPicker#add
228
+ * @fires TagPicker#change
229
+ */
230
+ addValue(value: unknown, { silent }?: {
231
+ silent?: boolean;
232
+ }): this;
233
+ /**
234
+ * Removes one value from the selection.
235
+ * @param {unknown} value Item ID, or an item.
236
+ * @param {{silent?: boolean}} [options={}] Set `silent` to suppress events.
237
+ * @returns {this}
238
+ * @fires TagPicker#remove
239
+ * @fires TagPicker#change
240
+ */
241
+ removeValue(value: unknown, { silent }?: {
242
+ silent?: boolean;
243
+ }): this;
244
+ /**
245
+ * Clears the selection.
246
+ * @param {{silent?: boolean}} [options={}] Set `silent` to suppress `change`.
247
+ * @returns {this}
248
+ */
249
+ clear({ silent }?: {
250
+ silent?: boolean;
251
+ }): this;
252
+ /**
253
+ * Restores the configured initial selection.
254
+ * @param {{silent?: boolean}} [options={}] Reset behavior.
255
+ * @returns {this}
256
+ */
257
+ reset({ silent }?: {
258
+ silent?: boolean;
259
+ }): this;
260
+ /**
261
+ * Replaces the catalogue of selectable items.
262
+ * @param {TagItem[]} items Available items.
263
+ * @returns {this}
264
+ */
265
+ setItems(items: TagItem[]): this;
266
+ /** Reports whether the configured maximum is reached. @returns {boolean} */
267
+ isFull(): boolean;
268
+ /** Opens the option list. @returns {this} */
269
+ open(): this;
270
+ /** Closes the option list. @returns {this} */
271
+ close(): this;
272
+ /** Focuses the text input. @returns {this} */
273
+ focus(): this;
274
+ /** Enables user interaction. @returns {this} */
275
+ enable(): this;
276
+ /** Disables user interaction and closes the list. @returns {this} */
277
+ disable(): this;
278
+ /**
279
+ * Sets the read-only state.
280
+ * @param {boolean} readonly Whether tags may be added or removed.
281
+ * @returns {this}
282
+ */
283
+ setReadonly(readonly: boolean): this;
284
+ /** Cancels pending work and restores an enhanced target. @returns {void} */
285
+ destroy(): void;
286
+ /** @returns {void} */
287
+ _renderTags(): void;
288
+ /** @returns {void} */
289
+ _renderOptions(): void;
290
+ /**
291
+ * Stable identity for an option entry across re-renders.
292
+ * @param {{item: TagItem|null, create: boolean}} entry Entry.
293
+ * @returns {string}
294
+ */
295
+ _entryId(entry: {
296
+ item: TagItem | null;
297
+ create: boolean;
298
+ }): string;
299
+ /** @returns {void} */
300
+ _syncPlaceholder(): void;
301
+ /** @returns {void} */
302
+ _onInput(): void;
303
+ /** @param {KeyboardEvent} event @returns {void} */
304
+ _onKeydown(event: KeyboardEvent): void;
305
+ /** @param {MouseEvent} event @returns {void} */
306
+ _onOptionClick(event: MouseEvent): void;
307
+ /**
308
+ * Applies the active entry: toggles an item, or creates one from the query.
309
+ * @param {{item: TagItem|null, element: HTMLElement, create: boolean}|undefined} entry Entry.
310
+ * @returns {void}
311
+ */
312
+ _commitEntry(entry: {
313
+ item: TagItem | null;
314
+ element: HTMLElement;
315
+ create: boolean;
316
+ } | undefined): void;
317
+ /**
318
+ * Moves the active option. The APG combobox map stops at the ends rather than wrapping.
319
+ * @param {number} delta Signed step.
320
+ * @returns {void}
321
+ */
322
+ _move(delta: number): void;
323
+ /** @param {number} index @returns {void} */
324
+ _setActive(index: number): void;
325
+ /** @param {string} query @returns {void} */
326
+ _applyLocalFilter(query: string): void;
327
+ /** @param {string} query @returns {void} */
328
+ _scheduleAsyncQuery(query: string): void;
329
+ /** @param {string} query @returns {Promise<void>} */
330
+ _runQuery(query: string): Promise<void>;
331
+ /** @returns {void} */
332
+ _cancelQuery(): void;
333
+ /** @param {boolean} loading @returns {void} */
334
+ _setLoading(loading: boolean): void;
335
+ /**
336
+ * Reports whether an item is already selected.
337
+ * @param {unknown} value Item ID.
338
+ * @returns {boolean}
339
+ */
340
+ _isSelected(value: unknown): boolean;
341
+ /** @param {string} query @returns {boolean} */
342
+ _canCreate(query: string): boolean;
343
+ /**
344
+ * Builds a stand-in item for a value that is not in the catalogue.
345
+ * @param {string} label Visible label.
346
+ * @param {unknown} [value=label] ID to keep, so the original type survives.
347
+ * @returns {TagItem}
348
+ */
349
+ _createItem(label: string, value?: unknown): TagItem;
350
+ /**
351
+ * Resolves an ID or an item to a catalogue item, falling back to a bare value.
352
+ * @param {unknown} value ID or item.
353
+ * @returns {TagItem|null}
354
+ */
355
+ _resolve(value: unknown): TagItem | null;
356
+ /** @param {TagItem} a @param {TagItem} b @returns {boolean} */
357
+ _sameValue(a: TagItem, b: TagItem): boolean;
358
+ /** @param {unknown} item @returns {unknown} */
359
+ _valueOf(item: unknown): unknown;
360
+ /** @param {unknown} item @returns {string} */
361
+ _labelOf(item: unknown): string;
362
+ /** @returns {void} */
363
+ _emitChange(): void;
364
+ /** Grows the input to fit its text so the caret stays visible next to the tags. @returns {void} */
365
+ _syncInputWidth(): void;
366
+ /** @returns {void} */
367
+ _syncDisabled(): void;
368
+ /**
369
+ * @param {string} key Message key.
370
+ * @param {string} fallback Template used when the host has no translation.
371
+ * @param {unknown[]} [args=[]] Positional interpolation values.
372
+ * @returns {string}
373
+ */
374
+ _message(key: string, fallback: string, args?: unknown[]): string;
375
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Registers the duration-oriented `time` field type.
3
+ * @returns {void}
4
+ */
5
+ export declare function registerTimeboxFieldAdapter(): void;
@@ -0,0 +1,121 @@
1
+ import { Component } from '../../core/component.js';
2
+ export type TimeUnit = 'minutes' | 'seconds' | 'hours';
3
+ export type TimeParts = {
4
+ hours: number;
5
+ minutes: number;
6
+ seconds: number;
7
+ negative: boolean;
8
+ };
9
+ export type TimeboxOptions = {
10
+ /**
11
+ * Initial duration in `unit`.
12
+ */
13
+ value?: number;
14
+ /**
15
+ * Default input and output unit.
16
+ */
17
+ unit?: TimeUnit;
18
+ /**
19
+ * Show a seconds segment.
20
+ */
21
+ seconds?: boolean;
22
+ /**
23
+ * Show a positive/negative toggle.
24
+ */
25
+ signed?: boolean;
26
+ /**
27
+ * Disable all controls.
28
+ */
29
+ disabled?: boolean;
30
+ /**
31
+ * Change listener.
32
+ */
33
+ onchange?: (event: CustomEvent<{
34
+ value: number;
35
+ }>) => void;
36
+ };
37
+ export type TimeboxSetOptions = {
38
+ silent?: boolean;
39
+ };
40
+ /** @typedef {'minutes'|'seconds'|'hours'} TimeUnit */
41
+ /** @typedef {{hours: number, minutes: number, seconds: number, negative: boolean}} TimeParts */
42
+ /**
43
+ * @typedef {Object} TimeboxOptions
44
+ * @property {number} [value=0] Initial duration in `unit`.
45
+ * @property {TimeUnit} [unit='minutes'] Default input and output unit.
46
+ * @property {boolean} [seconds=false] Show a seconds segment.
47
+ * @property {boolean} [signed=false] Show a positive/negative toggle.
48
+ * @property {boolean} [disabled=false] Disable all controls.
49
+ * @property {(event: CustomEvent<{value: number}>) => void} [onchange] Change listener.
50
+ */
51
+ /** @typedef {{silent?: boolean}} TimeboxSetOptions */
52
+ /**
53
+ * Splits a duration into unlimited hours and normalized minute/second segments.
54
+ * @param {number} value Duration value.
55
+ * @param {TimeUnit} [unit='minutes'] Unit of `value`.
56
+ * @returns {TimeParts}
57
+ */
58
+ export declare function splitTime(value: number, unit?: TimeUnit): TimeParts;
59
+ /**
60
+ * Joins duration segments and converts them to the requested unit.
61
+ * Minute and second overflow is carried into the unlimited hours value.
62
+ * @param {Partial<TimeParts>} parts Duration segments.
63
+ * @param {TimeUnit} [unit='minutes'] Unit of the returned number.
64
+ * @returns {number}
65
+ */
66
+ export declare function joinTime(parts: Partial<TimeParts>, unit?: TimeUnit): number;
67
+ /**
68
+ * Segmented duration input supporting unlimited and signed hours.
69
+ * @fires Timebox#change
70
+ * @extends {Component<TimeboxOptions>}
71
+ */
72
+ export declare class Timebox extends Component<TimeboxOptions> {
73
+ _originalAriaDisabled: string;
74
+ _disabled: boolean;
75
+ _parts: TimeParts | {
76
+ hours: number;
77
+ minutes: number;
78
+ seconds: number;
79
+ negative: boolean;
80
+ };
81
+ _inputs: any[];
82
+ _content: HTMLElement;
83
+ static cssName: string;
84
+ /** @type {TimeboxOptions} */
85
+ static defaults: TimeboxOptions;
86
+ /** @returns {HTMLElement} */
87
+ render(): HTMLElement;
88
+ /**
89
+ * Returns the current duration.
90
+ * @param {TimeUnit} [unit=this.options.unit] Output unit.
91
+ * @returns {number}
92
+ */
93
+ get(unit?: TimeUnit): number;
94
+ /**
95
+ * Sets the current duration.
96
+ * @param {number} value Duration value.
97
+ * @param {TimeUnit|TimeboxSetOptions} [unit=this.options.unit] Input unit, or options when omitted.
98
+ * @param {TimeboxSetOptions} [options={}] Update behavior.
99
+ * @returns {this}
100
+ * @fires Timebox#change
101
+ */
102
+ set(value: number, unit?: TimeUnit | TimeboxSetOptions, options?: TimeboxSetOptions): this;
103
+ /** Enables the timebox. @returns {this} */
104
+ enable(): this;
105
+ /** Disables the timebox. @returns {this} */
106
+ disable(): this;
107
+ /** Removes generated content from an enhanced target. @returns {void} */
108
+ destroy(): void;
109
+ /** @param {HTMLElement} parent @param {'hours'|'minutes'|'seconds'} name @param {string} label @param {boolean} bounded @returns {void} */
110
+ _addSegment(parent: HTMLElement, name: 'hours' | 'minutes' | 'seconds', label: string, bounded: boolean): void;
111
+ /** @returns {TimeParts} */
112
+ _readParts(): TimeParts;
113
+ /** @returns {void} */
114
+ _commitSegments(): void;
115
+ /** @returns {void} */
116
+ _writeParts(): void;
117
+ /** @returns {void} */
118
+ _syncDisabled(): void;
119
+ /** @returns {void} */
120
+ _emitChange(): void;
121
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Registers the boolean `toggle` field type.
3
+ * @returns {void}
4
+ */
5
+ export declare function registerToggleFieldAdapter(): void;
@@ -0,0 +1,94 @@
1
+ import { Component } from '../../core/component.js';
2
+ export type ToggleOptions = {
3
+ /**
4
+ * Initial switch state.
5
+ */
6
+ checked?: boolean;
7
+ /**
8
+ * Value returned while on.
9
+ */
10
+ value?: any;
11
+ /**
12
+ * Optional visible label.
13
+ */
14
+ label?: string | null;
15
+ /**
16
+ * Initial disabled state.
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Change callback.
21
+ */
22
+ onchange?: (event: CustomEvent<{
23
+ checked: boolean;
24
+ value: any;
25
+ }>) => void;
26
+ };
27
+ /**
28
+ * @typedef {Object} ToggleOptions
29
+ * @property {boolean} [checked=false] Initial switch state.
30
+ * @property {*} [value=true] Value returned while on.
31
+ * @property {string|null} [label=null] Optional visible label.
32
+ * @property {boolean} [disabled=false] Initial disabled state.
33
+ * @property {(event: CustomEvent<{checked: boolean, value: *}>) => void} [onchange] Change callback.
34
+ */
35
+ /**
36
+ * Accessible on/off switch.
37
+ * @fires Toggle#change
38
+ * @extends {Component<ToggleOptions>}
39
+ */
40
+ export declare class Toggle extends Component<ToggleOptions> {
41
+ _createdRoot: boolean;
42
+ _original: {
43
+ attributes: [string, string][];
44
+ children: Node[];
45
+ };
46
+ _checked: any;
47
+ _disabled: boolean;
48
+ _cleaned: boolean;
49
+ static cssName: string;
50
+ /** @type {Readonly<ToggleOptions>} */
51
+ static defaults: Readonly<ToggleOptions>;
52
+ /** @returns {HTMLButtonElement} */
53
+ render(): HTMLButtonElement;
54
+ /**
55
+ * Returns the current switch state.
56
+ * @returns {boolean}
57
+ */
58
+ get(): boolean;
59
+ /**
60
+ * Sets the switch state.
61
+ * @param {boolean} checked Next state.
62
+ * @param {{silent?: boolean}} [options={}] Set `silent` to suppress `change`.
63
+ * @returns {this}
64
+ * @fires Toggle#change
65
+ */
66
+ set(checked: boolean, { silent }?: {
67
+ silent?: boolean;
68
+ }): this;
69
+ /**
70
+ * Toggles the switch state.
71
+ * @returns {this}
72
+ * @fires Toggle#change
73
+ */
74
+ toggle(): this;
75
+ /**
76
+ * Returns the configured value while on, otherwise `false`.
77
+ * @returns {*}
78
+ */
79
+ getValue(): any;
80
+ /**
81
+ * Enables user interaction.
82
+ * @returns {this}
83
+ */
84
+ enable(): this;
85
+ /**
86
+ * Disables user interaction.
87
+ * @returns {this}
88
+ */
89
+ disable(): this;
90
+ /** @returns {void} */
91
+ destroy(): void;
92
+ /** @returns {void} */
93
+ _sync(): void;
94
+ }