stimeo-ui 0.6.0 → 0.8.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 (212) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/controllers/alert_dialog_controller.d.ts +2 -0
  3. package/dist/controllers/alert_dialog_controller.js +75 -4
  4. package/dist/controllers/alert_dialog_controller.js.map +1 -1
  5. package/dist/controllers/auto_submit_controller.d.ts +16 -3
  6. package/dist/controllers/auto_submit_controller.js +94 -16
  7. package/dist/controllers/auto_submit_controller.js.map +1 -1
  8. package/dist/controllers/avatar_controller.js +47 -5
  9. package/dist/controllers/avatar_controller.js.map +1 -1
  10. package/dist/controllers/breadcrumb_controller.d.ts +2 -0
  11. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  12. package/dist/controllers/bulk_select_controller.d.ts +2 -0
  13. package/dist/controllers/bulk_select_controller.js.map +1 -1
  14. package/dist/controllers/calendar_controller.d.ts +2 -0
  15. package/dist/controllers/calendar_controller.js.map +1 -1
  16. package/dist/controllers/carousel_controller.d.ts +81 -47
  17. package/dist/controllers/carousel_controller.js +451 -100
  18. package/dist/controllers/carousel_controller.js.map +1 -1
  19. package/dist/controllers/character_counter_controller.d.ts +52 -20
  20. package/dist/controllers/character_counter_controller.js +338 -63
  21. package/dist/controllers/character_counter_controller.js.map +1 -1
  22. package/dist/controllers/checkbox_controller.d.ts +3 -0
  23. package/dist/controllers/checkbox_controller.js.map +1 -1
  24. package/dist/controllers/color_picker_controller.d.ts +3 -0
  25. package/dist/controllers/color_picker_controller.js.map +1 -1
  26. package/dist/controllers/combobox_controller.d.ts +2 -0
  27. package/dist/controllers/combobox_controller.js.map +1 -1
  28. package/dist/controllers/command_palette_controller.d.ts +2 -0
  29. package/dist/controllers/command_palette_controller.js +75 -4
  30. package/dist/controllers/command_palette_controller.js.map +1 -1
  31. package/dist/controllers/conditional_fields_controller.d.ts +42 -14
  32. package/dist/controllers/conditional_fields_controller.js +345 -51
  33. package/dist/controllers/conditional_fields_controller.js.map +1 -1
  34. package/dist/controllers/confirm_controller.d.ts +2 -0
  35. package/dist/controllers/confirm_controller.js +75 -4
  36. package/dist/controllers/confirm_controller.js.map +1 -1
  37. package/dist/controllers/count_up_controller.d.ts +2 -0
  38. package/dist/controllers/count_up_controller.js.map +1 -1
  39. package/dist/controllers/countdown_controller.d.ts +4 -0
  40. package/dist/controllers/countdown_controller.js.map +1 -1
  41. package/dist/controllers/currency_input_controller.d.ts +40 -4
  42. package/dist/controllers/currency_input_controller.js +305 -74
  43. package/dist/controllers/currency_input_controller.js.map +1 -1
  44. package/dist/controllers/data_grid_controller.d.ts +3 -0
  45. package/dist/controllers/data_grid_controller.js.map +1 -1
  46. package/dist/controllers/dialog_controller.js +75 -4
  47. package/dist/controllers/dialog_controller.js.map +1 -1
  48. package/dist/controllers/direct_upload_controller.d.ts +59 -25
  49. package/dist/controllers/direct_upload_controller.js +212 -46
  50. package/dist/controllers/direct_upload_controller.js.map +1 -1
  51. package/dist/controllers/dirty_form_controller.d.ts +14 -6
  52. package/dist/controllers/dirty_form_controller.js +192 -29
  53. package/dist/controllers/dirty_form_controller.js.map +1 -1
  54. package/dist/controllers/dismissible_controller.d.ts +2 -0
  55. package/dist/controllers/dismissible_controller.js +83 -18
  56. package/dist/controllers/dismissible_controller.js.map +1 -1
  57. package/dist/controllers/drawer_controller.js +75 -4
  58. package/dist/controllers/drawer_controller.js.map +1 -1
  59. package/dist/controllers/empty_state_controller.d.ts +2 -0
  60. package/dist/controllers/empty_state_controller.js.map +1 -1
  61. package/dist/controllers/file_dropzone_controller.d.ts +123 -27
  62. package/dist/controllers/file_dropzone_controller.js +386 -63
  63. package/dist/controllers/file_dropzone_controller.js.map +1 -1
  64. package/dist/controllers/filter_controller.d.ts +2 -0
  65. package/dist/controllers/filter_controller.js.map +1 -1
  66. package/dist/controllers/flash_controller.d.ts +7 -1
  67. package/dist/controllers/flash_controller.js +3 -1
  68. package/dist/controllers/flash_controller.js.map +1 -1
  69. package/dist/controllers/focus_controller.d.ts +2 -0
  70. package/dist/controllers/focus_controller.js +75 -4
  71. package/dist/controllers/focus_controller.js.map +1 -1
  72. package/dist/controllers/form_field_controller.d.ts +50 -10
  73. package/dist/controllers/form_field_controller.js +280 -62
  74. package/dist/controllers/form_field_controller.js.map +1 -1
  75. package/dist/controllers/form_validation_controller.d.ts +10 -8
  76. package/dist/controllers/form_validation_controller.js +208 -83
  77. package/dist/controllers/form_validation_controller.js.map +1 -1
  78. package/dist/controllers/frame_loading_controller.d.ts +5 -1
  79. package/dist/controllers/frame_loading_controller.js +2 -1
  80. package/dist/controllers/frame_loading_controller.js.map +1 -1
  81. package/dist/controllers/highlight_controller.d.ts +2 -0
  82. package/dist/controllers/highlight_controller.js.map +1 -1
  83. package/dist/controllers/idle_controller.d.ts +2 -0
  84. package/dist/controllers/idle_controller.js.map +1 -1
  85. package/dist/controllers/input_mask_controller.d.ts +43 -15
  86. package/dist/controllers/input_mask_controller.js +251 -76
  87. package/dist/controllers/input_mask_controller.js.map +1 -1
  88. package/dist/controllers/lazy_frame_controller.d.ts +2 -0
  89. package/dist/controllers/lazy_frame_controller.js.map +1 -1
  90. package/dist/controllers/listbox_controller.d.ts +2 -0
  91. package/dist/controllers/listbox_controller.js.map +1 -1
  92. package/dist/controllers/local_time_controller.d.ts +2 -0
  93. package/dist/controllers/local_time_controller.js.map +1 -1
  94. package/dist/controllers/masonry_controller.d.ts +2 -0
  95. package/dist/controllers/masonry_controller.js.map +1 -1
  96. package/dist/controllers/meter_controller.d.ts +2 -0
  97. package/dist/controllers/meter_controller.js.map +1 -1
  98. package/dist/controllers/multi_select_controller.d.ts +2 -0
  99. package/dist/controllers/multi_select_controller.js.map +1 -1
  100. package/dist/controllers/nested_form_controller.d.ts +52 -13
  101. package/dist/controllers/nested_form_controller.js +450 -42
  102. package/dist/controllers/nested_form_controller.js.map +1 -1
  103. package/dist/controllers/network_status_controller.d.ts +2 -0
  104. package/dist/controllers/network_status_controller.js.map +1 -1
  105. package/dist/controllers/number_input_controller.d.ts +2 -0
  106. package/dist/controllers/number_input_controller.js +47 -5
  107. package/dist/controllers/number_input_controller.js.map +1 -1
  108. package/dist/controllers/otp_controller.d.ts +62 -23
  109. package/dist/controllers/otp_controller.js +472 -114
  110. package/dist/controllers/otp_controller.js.map +1 -1
  111. package/dist/controllers/overflow_indicator_controller.d.ts +2 -0
  112. package/dist/controllers/overflow_indicator_controller.js.map +1 -1
  113. package/dist/controllers/overflow_menu_controller.d.ts +2 -0
  114. package/dist/controllers/overflow_menu_controller.js +2 -1
  115. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  116. package/dist/controllers/pagination_controller.d.ts +2 -0
  117. package/dist/controllers/pagination_controller.js +2 -1
  118. package/dist/controllers/pagination_controller.js.map +1 -1
  119. package/dist/controllers/password_reveal_controller.d.ts +2 -0
  120. package/dist/controllers/password_reveal_controller.js.map +1 -1
  121. package/dist/controllers/password_strength_controller.d.ts +2 -0
  122. package/dist/controllers/password_strength_controller.js.map +1 -1
  123. package/dist/controllers/persist_controller.d.ts +30 -16
  124. package/dist/controllers/persist_controller.js +432 -122
  125. package/dist/controllers/persist_controller.js.map +1 -1
  126. package/dist/controllers/pointer_drag_controller.d.ts +3 -0
  127. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  128. package/dist/controllers/popover_controller.js +77 -4
  129. package/dist/controllers/popover_controller.js.map +1 -1
  130. package/dist/controllers/portal_controller.d.ts +2 -0
  131. package/dist/controllers/portal_controller.js.map +1 -1
  132. package/dist/controllers/preview_guard_controller.d.ts +2 -0
  133. package/dist/controllers/preview_guard_controller.js.map +1 -1
  134. package/dist/controllers/progress_controller.d.ts +3 -0
  135. package/dist/controllers/progress_controller.js.map +1 -1
  136. package/dist/controllers/radio_group_controller.d.ts +3 -0
  137. package/dist/controllers/radio_group_controller.js.map +1 -1
  138. package/dist/controllers/rating_controller.d.ts +2 -0
  139. package/dist/controllers/rating_controller.js +9 -5
  140. package/dist/controllers/rating_controller.js.map +1 -1
  141. package/dist/controllers/reading_progress_controller.d.ts +2 -0
  142. package/dist/controllers/reading_progress_controller.js.map +1 -1
  143. package/dist/controllers/resizable_controller.d.ts +2 -0
  144. package/dist/controllers/resizable_controller.js.map +1 -1
  145. package/dist/controllers/roving_controller.d.ts +2 -0
  146. package/dist/controllers/roving_controller.js.map +1 -1
  147. package/dist/controllers/scroll_area_controller.d.ts +23 -15
  148. package/dist/controllers/scroll_area_controller.js +462 -162
  149. package/dist/controllers/scroll_area_controller.js.map +1 -1
  150. package/dist/controllers/scroll_visibility_controller.d.ts +2 -0
  151. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  152. package/dist/controllers/scrollspy_controller.d.ts +2 -0
  153. package/dist/controllers/scrollspy_controller.js.map +1 -1
  154. package/dist/controllers/separator_controller.d.ts +54 -11
  155. package/dist/controllers/separator_controller.js +354 -38
  156. package/dist/controllers/separator_controller.js.map +1 -1
  157. package/dist/controllers/sidebar_controller.js +83 -10
  158. package/dist/controllers/sidebar_controller.js.map +1 -1
  159. package/dist/controllers/skeleton_controller.d.ts +2 -0
  160. package/dist/controllers/skeleton_controller.js.map +1 -1
  161. package/dist/controllers/slider_controller.d.ts +2 -0
  162. package/dist/controllers/slider_controller.js.map +1 -1
  163. package/dist/controllers/smart_sticky_header_controller.d.ts +2 -0
  164. package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
  165. package/dist/controllers/spinner_controller.d.ts +4 -1
  166. package/dist/controllers/spinner_controller.js +7 -5
  167. package/dist/controllers/spinner_controller.js.map +1 -1
  168. package/dist/controllers/step_indicator_controller.d.ts +2 -0
  169. package/dist/controllers/step_indicator_controller.js.map +1 -1
  170. package/dist/controllers/stepper_controller.d.ts +2 -0
  171. package/dist/controllers/stepper_controller.js.map +1 -1
  172. package/dist/controllers/stick_to_bottom_controller.d.ts +2 -0
  173. package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
  174. package/dist/controllers/sticky_observer_controller.d.ts +2 -0
  175. package/dist/controllers/sticky_observer_controller.js.map +1 -1
  176. package/dist/controllers/submit_once_controller.d.ts +98 -39
  177. package/dist/controllers/submit_once_controller.js +402 -122
  178. package/dist/controllers/submit_once_controller.js.map +1 -1
  179. package/dist/controllers/switch_controller.d.ts +2 -0
  180. package/dist/controllers/switch_controller.js.map +1 -1
  181. package/dist/controllers/tags_input_controller.d.ts +2 -0
  182. package/dist/controllers/tags_input_controller.js.map +1 -1
  183. package/dist/controllers/textarea_autosize_controller.d.ts +31 -9
  184. package/dist/controllers/textarea_autosize_controller.js +131 -3
  185. package/dist/controllers/textarea_autosize_controller.js.map +1 -1
  186. package/dist/controllers/theme_controller.d.ts +2 -0
  187. package/dist/controllers/theme_controller.js +8 -6
  188. package/dist/controllers/theme_controller.js.map +1 -1
  189. package/dist/controllers/time_picker_controller.d.ts +2 -0
  190. package/dist/controllers/time_picker_controller.js.map +1 -1
  191. package/dist/controllers/toast_controller.d.ts +4 -0
  192. package/dist/controllers/toast_controller.js.map +1 -1
  193. package/dist/controllers/toggle_group_controller.d.ts +2 -0
  194. package/dist/controllers/toggle_group_controller.js.map +1 -1
  195. package/dist/controllers/toolbar_controller.js.map +1 -1
  196. package/dist/controllers/transition_controller.d.ts +2 -0
  197. package/dist/controllers/transition_controller.js.map +1 -1
  198. package/dist/controllers/tree_view_controller.d.ts +2 -0
  199. package/dist/controllers/tree_view_controller.js +2 -1
  200. package/dist/controllers/tree_view_controller.js.map +1 -1
  201. package/dist/index.js +4293 -1447
  202. package/dist/index.js.map +1 -1
  203. package/dist/inspector/cli.d.ts +115 -4
  204. package/dist/inspector/cli.js +195 -15
  205. package/dist/inspector/cli.js.map +1 -1
  206. package/dist/inspector/cli_bin.js +257 -47
  207. package/dist/inspector/cli_bin.js.map +1 -1
  208. package/dist/inspector/examples.json +11 -11
  209. package/dist/inspector/manifest.json +615 -66
  210. package/dist/positioning/index.d.ts +2 -0
  211. package/dist/positioning/index.js.map +1 -1
  212. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
- "schemaVersion": 11,
3
- "packageVersion": "0.6.0",
2
+ "schemaVersion": 12,
3
+ "packageVersion": "0.8.0",
4
4
  "controllers": {
5
5
  "stimeo--accordion": {
6
6
  "targets": [
@@ -22,6 +22,8 @@
22
22
  "panel"
23
23
  ],
24
24
  "conditionalTargets": [],
25
+ "requiredActions": [],
26
+ "actionCompletion": [],
25
27
  "a11y": [],
26
28
  "keyboard": [],
27
29
  "hosts": [],
@@ -55,6 +57,8 @@
55
57
  "dialog"
56
58
  ],
57
59
  "conditionalTargets": [],
60
+ "requiredActions": [],
61
+ "actionCompletion": [],
58
62
  "a11y": [
59
63
  {
60
64
  "target": "dialog",
@@ -111,6 +115,8 @@
111
115
  "events": [],
112
116
  "requiredTargets": [],
113
117
  "conditionalTargets": [],
118
+ "requiredActions": [],
119
+ "actionCompletion": [],
114
120
  "a11y": [],
115
121
  "keyboard": [],
116
122
  "hosts": [],
@@ -132,6 +138,8 @@
132
138
  "events": [],
133
139
  "requiredTargets": [],
134
140
  "conditionalTargets": [],
141
+ "requiredActions": [],
142
+ "actionCompletion": [],
135
143
  "a11y": [],
136
144
  "keyboard": [],
137
145
  "hosts": [],
@@ -159,10 +167,13 @@
159
167
  ],
160
168
  "events": [
161
169
  "submit",
162
- "done"
170
+ "done",
171
+ "reconcile"
163
172
  ],
164
173
  "requiredTargets": [],
165
174
  "conditionalTargets": [],
175
+ "requiredActions": [],
176
+ "actionCompletion": [],
166
177
  "a11y": [],
167
178
  "keyboard": [],
168
179
  "hosts": [],
@@ -192,6 +203,8 @@
192
203
  ],
193
204
  "requiredTargets": [],
194
205
  "conditionalTargets": [],
206
+ "requiredActions": [],
207
+ "actionCompletion": [],
195
208
  "a11y": [],
196
209
  "keyboard": [],
197
210
  "hosts": [],
@@ -232,6 +245,8 @@
232
245
  "suggestion": "Add the disclosure an author-marked \"collapsible\" needs: an \"ellipsis\" item and a \"trigger\" button inside it. Without both, the trail never collapses."
233
246
  }
234
247
  ],
248
+ "requiredActions": [],
249
+ "actionCompletion": [],
235
250
  "a11y": [],
236
251
  "keyboard": [],
237
252
  "hosts": [],
@@ -268,6 +283,8 @@
268
283
  "bar"
269
284
  ],
270
285
  "conditionalTargets": [],
286
+ "requiredActions": [],
287
+ "actionCompletion": [],
271
288
  "a11y": [],
272
289
  "keyboard": [],
273
290
  "hosts": [],
@@ -307,6 +324,8 @@
307
324
  "grid"
308
325
  ],
309
326
  "conditionalTargets": [],
327
+ "requiredActions": [],
328
+ "actionCompletion": [],
310
329
  "a11y": [],
311
330
  "keyboard": [],
312
331
  "hosts": [],
@@ -331,7 +350,15 @@
331
350
  "interval",
332
351
  "loop"
333
352
  ],
334
- "valueConstraints": [],
353
+ "valueConstraints": [
354
+ {
355
+ "value": "interval",
356
+ "type": "number",
357
+ "finite": true,
358
+ "greaterThan": 0,
359
+ "suggestion": "Set interval to a finite number of milliseconds greater than 0 — anything else falls back to 5000 at runtime."
360
+ }
361
+ ],
335
362
  "valueRelations": [],
336
363
  "actions": [
337
364
  "goto",
@@ -349,10 +376,26 @@
349
376
  "reconcile"
350
377
  ],
351
378
  "requiredTargets": [
352
- "slide",
353
- "picker"
379
+ "slide"
354
380
  ],
355
- "conditionalTargets": [],
381
+ "conditionalTargets": [
382
+ {
383
+ "whenPresent": "prev",
384
+ "require": [
385
+ "next"
386
+ ],
387
+ "suggestion": "Add the \"next\" button that pairs with \"prev\" — a carousel the reader can only step backwards through cannot reach the slides ahead of it."
388
+ },
389
+ {
390
+ "whenPresent": "next",
391
+ "require": [
392
+ "prev"
393
+ ],
394
+ "suggestion": "Add the \"prev\" button that pairs with \"next\" — a carousel the reader can only step forwards through cannot return to a slide they passed."
395
+ }
396
+ ],
397
+ "requiredActions": [],
398
+ "actionCompletion": [],
356
399
  "a11y": [
357
400
  {
358
401
  "target": "",
@@ -380,7 +423,27 @@
380
423
  "values": [
381
424
  "tabpanel"
382
425
  ],
383
- "suggestion": "Add role=\"tabpanel\" to each slide target."
426
+ "whenContains": {
427
+ "target": "picker",
428
+ "within": "scope",
429
+ "min": 1
430
+ },
431
+ "suggestion": "Add role=\"tabpanel\" to each slide target — its picker is the tab."
432
+ },
433
+ {
434
+ "target": "slide",
435
+ "attrs": [
436
+ "role"
437
+ ],
438
+ "values": [
439
+ "group"
440
+ ],
441
+ "whenContains": {
442
+ "target": "picker",
443
+ "within": "scope",
444
+ "max": 0
445
+ },
446
+ "suggestion": "Add role=\"group\" to each slide target — a carousel with no pickers has no tabs, so its slides are groups rather than tabpanels."
384
447
  },
385
448
  {
386
449
  "target": "slide",
@@ -413,7 +476,44 @@
413
476
  ],
414
477
  "keyboard": [],
415
478
  "hosts": [],
416
- "managedAria": [],
479
+ "managedAria": [
480
+ {
481
+ "target": "playToggle",
482
+ "attrs": [
483
+ "aria-pressed"
484
+ ],
485
+ "suggestion": "Remove aria-pressed from the playToggle target — the controller mirrors the autoplay Value onto it. Set data-stimeo--carousel-autoplay-value to choose the initial state."
486
+ },
487
+ {
488
+ "target": "playToggle",
489
+ "attrs": [
490
+ "aria-disabled"
491
+ ],
492
+ "suggestion": "Remove aria-disabled from the playToggle target — the controller marks it when the carousel has no slide left to rotate to."
493
+ },
494
+ {
495
+ "target": "prev",
496
+ "attrs": [
497
+ "aria-disabled"
498
+ ],
499
+ "suggestion": "Remove aria-disabled from the prev target — the controller marks it at the first slide of a non-looping carousel."
500
+ },
501
+ {
502
+ "target": "next",
503
+ "attrs": [
504
+ "aria-disabled"
505
+ ],
506
+ "suggestion": "Remove aria-disabled from the next target — the controller marks it at the last slide of a non-looping carousel."
507
+ },
508
+ {
509
+ "target": "viewport",
510
+ "attrs": [
511
+ "aria-live",
512
+ "aria-atomic"
513
+ ],
514
+ "suggestion": "Remove aria-live and aria-atomic from the viewport target — the controller switches the region between off while rotating and polite while stopped."
515
+ }
516
+ ],
417
517
  "compositions": [],
418
518
  "companions": [],
419
519
  "targetDeclarations": [],
@@ -427,6 +527,20 @@
427
527
  ],
428
528
  "max": 1,
429
529
  "suggestion": "Leave aria-selected=\"true\" on exactly one picker and set the others to \"false\" — the carousel shows one slide, and connect keeps the first."
530
+ },
531
+ {
532
+ "within": "",
533
+ "target": "playToggle",
534
+ "min": 1,
535
+ "when": {
536
+ "value": "autoplay",
537
+ "type": "boolean",
538
+ "equals": [
539
+ "true"
540
+ ],
541
+ "default": "false"
542
+ },
543
+ "suggestion": "Add a \"playToggle\" button wired to stimeo--carousel#togglePlay — a carousel that rotates on its own needs a control that stops it (WCAG 2.2.2)."
430
544
  }
431
545
  ],
432
546
  "forbiddenAria": []
@@ -439,16 +553,37 @@
439
553
  "values": [
440
554
  "max",
441
555
  "warnAt",
442
- "mode"
556
+ "mode",
557
+ "announceText"
558
+ ],
559
+ "valueConstraints": [
560
+ {
561
+ "value": "max",
562
+ "type": "number",
563
+ "finite": true,
564
+ "greaterThan": -1,
565
+ "integer": true,
566
+ "suggestion": "Set max to a non-negative integer."
567
+ },
568
+ {
569
+ "value": "warnAt",
570
+ "type": "number",
571
+ "finite": true,
572
+ "greaterThan": -1,
573
+ "integer": true,
574
+ "suggestion": "Set warnAt to a non-negative integer."
575
+ }
443
576
  ],
444
- "valueConstraints": [],
445
577
  "valueRelations": [],
446
578
  "actions": [],
447
579
  "events": [
448
- "change"
580
+ "change",
581
+ "reconcile"
449
582
  ],
450
583
  "requiredTargets": [],
451
584
  "conditionalTargets": [],
585
+ "requiredActions": [],
586
+ "actionCompletion": [],
452
587
  "a11y": [],
453
588
  "keyboard": [],
454
589
  "hosts": [],
@@ -477,6 +612,8 @@
477
612
  ],
478
613
  "requiredTargets": [],
479
614
  "conditionalTargets": [],
615
+ "requiredActions": [],
616
+ "actionCompletion": [],
480
617
  "a11y": [],
481
618
  "keyboard": [],
482
619
  "hosts": [],
@@ -519,6 +656,8 @@
519
656
  "feedback"
520
657
  ],
521
658
  "conditionalTargets": [],
659
+ "requiredActions": [],
660
+ "actionCompletion": [],
522
661
  "a11y": [],
523
662
  "keyboard": [],
524
663
  "hosts": [],
@@ -548,6 +687,8 @@
548
687
  "content"
549
688
  ],
550
689
  "conditionalTargets": [],
690
+ "requiredActions": [],
691
+ "actionCompletion": [],
551
692
  "a11y": [],
552
693
  "keyboard": [],
553
694
  "hosts": [],
@@ -585,6 +726,8 @@
585
726
  "slider"
586
727
  ],
587
728
  "conditionalTargets": [],
729
+ "requiredActions": [],
730
+ "actionCompletion": [],
588
731
  "a11y": [
589
732
  {
590
733
  "target": "slider",
@@ -644,6 +787,8 @@
644
787
  "list"
645
788
  ],
646
789
  "conditionalTargets": [],
790
+ "requiredActions": [],
791
+ "actionCompletion": [],
647
792
  "a11y": [
648
793
  {
649
794
  "target": "input",
@@ -765,6 +910,8 @@
765
910
  "list"
766
911
  ],
767
912
  "conditionalTargets": [],
913
+ "requiredActions": [],
914
+ "actionCompletion": [],
768
915
  "a11y": [
769
916
  {
770
917
  "target": "dialog",
@@ -904,13 +1051,16 @@
904
1051
  "evaluate"
905
1052
  ],
906
1053
  "events": [
907
- "change"
1054
+ "change",
1055
+ "reconcile"
908
1056
  ],
909
1057
  "requiredTargets": [
910
1058
  "trigger",
911
1059
  "region"
912
1060
  ],
913
1061
  "conditionalTargets": [],
1062
+ "requiredActions": [],
1063
+ "actionCompletion": [],
914
1064
  "a11y": [],
915
1065
  "keyboard": [],
916
1066
  "hosts": [],
@@ -949,6 +1099,8 @@
949
1099
  "dialog"
950
1100
  ],
951
1101
  "conditionalTargets": [],
1102
+ "requiredActions": [],
1103
+ "actionCompletion": [],
952
1104
  "a11y": [
953
1105
  {
954
1106
  "target": "dialog",
@@ -1010,6 +1162,8 @@
1010
1162
  "item"
1011
1163
  ],
1012
1164
  "conditionalTargets": [],
1165
+ "requiredActions": [],
1166
+ "actionCompletion": [],
1013
1167
  "a11y": [
1014
1168
  {
1015
1169
  "target": "menu",
@@ -1080,6 +1234,8 @@
1080
1234
  ],
1081
1235
  "requiredTargets": [],
1082
1236
  "conditionalTargets": [],
1237
+ "requiredActions": [],
1238
+ "actionCompletion": [],
1083
1239
  "a11y": [],
1084
1240
  "keyboard": [],
1085
1241
  "hosts": [],
@@ -1120,6 +1276,8 @@
1120
1276
  ],
1121
1277
  "requiredTargets": [],
1122
1278
  "conditionalTargets": [],
1279
+ "requiredActions": [],
1280
+ "actionCompletion": [],
1123
1281
  "a11y": [],
1124
1282
  "keyboard": [],
1125
1283
  "hosts": [],
@@ -1155,6 +1313,8 @@
1155
1313
  "field"
1156
1314
  ],
1157
1315
  "conditionalTargets": [],
1316
+ "requiredActions": [],
1317
+ "actionCompletion": [],
1158
1318
  "a11y": [],
1159
1319
  "keyboard": [],
1160
1320
  "hosts": [],
@@ -1191,6 +1351,8 @@
1191
1351
  "cell"
1192
1352
  ],
1193
1353
  "conditionalTargets": [],
1354
+ "requiredActions": [],
1355
+ "actionCompletion": [],
1194
1356
  "a11y": [
1195
1357
  {
1196
1358
  "target": "",
@@ -1233,6 +1395,7 @@
1233
1395
  "max": 1,
1234
1396
  "when": {
1235
1397
  "value": "selection",
1398
+ "type": "string",
1236
1399
  "equals": [
1237
1400
  "single"
1238
1401
  ],
@@ -1276,6 +1439,8 @@
1276
1439
  "cell"
1277
1440
  ],
1278
1441
  "conditionalTargets": [],
1442
+ "requiredActions": [],
1443
+ "actionCompletion": [],
1279
1444
  "a11y": [
1280
1445
  {
1281
1446
  "target": "grid",
@@ -1339,6 +1504,8 @@
1339
1504
  "dialog"
1340
1505
  ],
1341
1506
  "conditionalTargets": [],
1507
+ "requiredActions": [],
1508
+ "actionCompletion": [],
1342
1509
  "a11y": [
1343
1510
  {
1344
1511
  "target": "dialog",
@@ -1381,14 +1548,12 @@
1381
1548
  "stimeo--direct-upload": {
1382
1549
  "targets": [
1383
1550
  "list",
1384
- "row",
1385
- "status"
1551
+ "row"
1386
1552
  ],
1387
1553
  "values": [
1388
- "announce",
1389
1554
  "removeOnDone",
1390
- "doneLabel",
1391
- "errorLabel",
1555
+ "announceDoneText",
1556
+ "announceErrorText",
1392
1557
  "scope"
1393
1558
  ],
1394
1559
  "valueConstraints": [],
@@ -1397,13 +1562,16 @@
1397
1562
  "events": [
1398
1563
  "progress",
1399
1564
  "done",
1400
- "error"
1565
+ "error",
1566
+ "reconcile"
1401
1567
  ],
1402
1568
  "requiredTargets": [
1403
1569
  "list",
1404
1570
  "row"
1405
1571
  ],
1406
1572
  "conditionalTargets": [],
1573
+ "requiredActions": [],
1574
+ "actionCompletion": [],
1407
1575
  "a11y": [],
1408
1576
  "keyboard": [],
1409
1577
  "hosts": [],
@@ -1423,7 +1591,8 @@
1423
1591
  "valueConstraints": [],
1424
1592
  "valueRelations": [],
1425
1593
  "actions": [
1426
- "markClean"
1594
+ "markClean",
1595
+ "acceptRestore"
1427
1596
  ],
1428
1597
  "events": [
1429
1598
  "dirty",
@@ -1431,6 +1600,8 @@
1431
1600
  ],
1432
1601
  "requiredTargets": [],
1433
1602
  "conditionalTargets": [],
1603
+ "requiredActions": [],
1604
+ "actionCompletion": [],
1434
1605
  "a11y": [],
1435
1606
  "keyboard": [],
1436
1607
  "hosts": [],
@@ -1460,6 +1631,8 @@
1460
1631
  ],
1461
1632
  "requiredTargets": [],
1462
1633
  "conditionalTargets": [],
1634
+ "requiredActions": [],
1635
+ "actionCompletion": [],
1463
1636
  "a11y": [],
1464
1637
  "keyboard": [],
1465
1638
  "hosts": [],
@@ -1492,6 +1665,8 @@
1492
1665
  "panel"
1493
1666
  ],
1494
1667
  "conditionalTargets": [],
1668
+ "requiredActions": [],
1669
+ "actionCompletion": [],
1495
1670
  "a11y": [
1496
1671
  {
1497
1672
  "target": "panel",
@@ -1550,6 +1725,8 @@
1550
1725
  "menu"
1551
1726
  ],
1552
1727
  "conditionalTargets": [],
1728
+ "requiredActions": [],
1729
+ "actionCompletion": [],
1553
1730
  "a11y": [],
1554
1731
  "keyboard": [],
1555
1732
  "hosts": [],
@@ -1585,6 +1762,8 @@
1585
1762
  "input"
1586
1763
  ],
1587
1764
  "conditionalTargets": [],
1765
+ "requiredActions": [],
1766
+ "actionCompletion": [],
1588
1767
  "a11y": [],
1589
1768
  "keyboard": [],
1590
1769
  "hosts": [],
@@ -1615,6 +1794,8 @@
1615
1794
  "list"
1616
1795
  ],
1617
1796
  "conditionalTargets": [],
1797
+ "requiredActions": [],
1798
+ "actionCompletion": [],
1618
1799
  "a11y": [],
1619
1800
  "keyboard": [],
1620
1801
  "hosts": [],
@@ -1633,12 +1814,21 @@
1633
1814
  "list",
1634
1815
  "item",
1635
1816
  "itemTemplate",
1636
- "status"
1817
+ "name",
1818
+ "thumb",
1819
+ "remove"
1637
1820
  ],
1638
1821
  "values": [
1639
1822
  "maxSize",
1640
1823
  "maxFiles",
1641
- "dragLabel"
1824
+ "allowDuplicates",
1825
+ "announceDragText",
1826
+ "announceAddedText",
1827
+ "announceRemovedText",
1828
+ "announceRejectedTypeText",
1829
+ "announceRejectedSizeText",
1830
+ "announceRejectedDuplicateText",
1831
+ "announceRejectedCountText"
1642
1832
  ],
1643
1833
  "valueConstraints": [],
1644
1834
  "valueRelations": [],
@@ -1651,7 +1841,8 @@
1651
1841
  ],
1652
1842
  "events": [
1653
1843
  "change",
1654
- "reject"
1844
+ "reject",
1845
+ "reconcile"
1655
1846
  ],
1656
1847
  "requiredTargets": [
1657
1848
  "input",
@@ -1671,8 +1862,20 @@
1671
1862
  "itemTemplate"
1672
1863
  ],
1673
1864
  "suggestion": "Add an \"itemTemplate\" target — a \"list\" has no item markup to clone without it."
1865
+ },
1866
+ {
1867
+ "whenPresent": "itemTemplate",
1868
+ "require": [
1869
+ "item",
1870
+ "name",
1871
+ "remove"
1872
+ ],
1873
+ "requireInside": true,
1874
+ "suggestion": "Complete the item template: inside it, it needs an \"item\" root, a \"name\" element for the file name, and a \"remove\" button. Parts declared outside the template never reach the clone, so no file can render."
1674
1875
  }
1675
1876
  ],
1877
+ "requiredActions": [],
1878
+ "actionCompletion": [],
1676
1879
  "a11y": [],
1677
1880
  "keyboard": [],
1678
1881
  "hosts": [],
@@ -1706,6 +1909,8 @@
1706
1909
  "item"
1707
1910
  ],
1708
1911
  "conditionalTargets": [],
1912
+ "requiredActions": [],
1913
+ "actionCompletion": [],
1709
1914
  "a11y": [],
1710
1915
  "keyboard": [],
1711
1916
  "hosts": [],
@@ -1733,12 +1938,15 @@
1733
1938
  ],
1734
1939
  "events": [
1735
1940
  "show",
1736
- "dismiss"
1941
+ "dismiss",
1942
+ "reconcile"
1737
1943
  ],
1738
1944
  "requiredTargets": [
1739
1945
  "region"
1740
1946
  ],
1741
1947
  "conditionalTargets": [],
1948
+ "requiredActions": [],
1949
+ "actionCompletion": [],
1742
1950
  "a11y": [],
1743
1951
  "keyboard": [],
1744
1952
  "hosts": [],
@@ -1771,6 +1979,8 @@
1771
1979
  ],
1772
1980
  "requiredTargets": [],
1773
1981
  "conditionalTargets": [],
1982
+ "requiredActions": [],
1983
+ "actionCompletion": [],
1774
1984
  "a11y": [],
1775
1985
  "keyboard": [],
1776
1986
  "hosts": [],
@@ -1803,37 +2013,23 @@
1803
2013
  "control"
1804
2014
  ],
1805
2015
  "conditionalTargets": [],
1806
- "a11y": [
1807
- {
1808
- "target": "error",
1809
- "attrs": [
1810
- "role"
1811
- ],
1812
- "values": [
1813
- "alert",
1814
- "status"
1815
- ],
1816
- "or": [
1817
- {
1818
- "attrs": [
1819
- "aria-live"
1820
- ],
1821
- "values": [
1822
- "assertive",
1823
- "polite"
1824
- ]
1825
- }
1826
- ],
1827
- "suggestion": "Add role=\"alert\" (or aria-live=\"assertive\") to the error target."
1828
- }
1829
- ],
2016
+ "requiredActions": [],
2017
+ "actionCompletion": [],
2018
+ "a11y": [],
1830
2019
  "keyboard": [],
1831
2020
  "hosts": [],
1832
2021
  "managedAria": [],
1833
2022
  "compositions": [],
1834
2023
  "companions": [],
1835
2024
  "targetDeclarations": [],
1836
- "cardinality": [],
2025
+ "cardinality": [
2026
+ {
2027
+ "within": "",
2028
+ "target": "control",
2029
+ "max": 1,
2030
+ "suggestion": "Keep exactly one \"control\" target in each form field — split multiple inputs into separate stimeo--form-field scopes."
2031
+ }
2032
+ ],
1837
2033
  "forbiddenAria": []
1838
2034
  },
1839
2035
  "stimeo--form-validation": {
@@ -1855,6 +2051,8 @@
1855
2051
  ],
1856
2052
  "requiredTargets": [],
1857
2053
  "conditionalTargets": [],
2054
+ "requiredActions": [],
2055
+ "actionCompletion": [],
1858
2056
  "a11y": [],
1859
2057
  "keyboard": [],
1860
2058
  "hosts": [],
@@ -1882,10 +2080,13 @@
1882
2080
  "actions": [],
1883
2081
  "events": [
1884
2082
  "start",
1885
- "end"
2083
+ "end",
2084
+ "reconcile"
1886
2085
  ],
1887
2086
  "requiredTargets": [],
1888
2087
  "conditionalTargets": [],
2088
+ "requiredActions": [],
2089
+ "actionCompletion": [],
1889
2090
  "a11y": [],
1890
2091
  "keyboard": [],
1891
2092
  "hosts": [],
@@ -1911,6 +2112,8 @@
1911
2112
  ],
1912
2113
  "requiredTargets": [],
1913
2114
  "conditionalTargets": [],
2115
+ "requiredActions": [],
2116
+ "actionCompletion": [],
1914
2117
  "a11y": [],
1915
2118
  "keyboard": [],
1916
2119
  "hosts": [],
@@ -1943,6 +2146,8 @@
1943
2146
  "card"
1944
2147
  ],
1945
2148
  "conditionalTargets": [],
2149
+ "requiredActions": [],
2150
+ "actionCompletion": [],
1946
2151
  "a11y": [],
1947
2152
  "keyboard": [],
1948
2153
  "hosts": [],
@@ -1970,6 +2175,8 @@
1970
2175
  ],
1971
2176
  "requiredTargets": [],
1972
2177
  "conditionalTargets": [],
2178
+ "requiredActions": [],
2179
+ "actionCompletion": [],
1973
2180
  "a11y": [],
1974
2181
  "keyboard": [],
1975
2182
  "hosts": [],
@@ -1993,10 +2200,13 @@
1993
2200
  "format"
1994
2201
  ],
1995
2202
  "events": [
1996
- "change"
2203
+ "change",
2204
+ "reconcile"
1997
2205
  ],
1998
2206
  "requiredTargets": [],
1999
2207
  "conditionalTargets": [],
2208
+ "requiredActions": [],
2209
+ "actionCompletion": [],
2000
2210
  "a11y": [],
2001
2211
  "keyboard": [],
2002
2212
  "hosts": [],
@@ -2029,6 +2239,8 @@
2029
2239
  ],
2030
2240
  "requiredTargets": [],
2031
2241
  "conditionalTargets": [],
2242
+ "requiredActions": [],
2243
+ "actionCompletion": [],
2032
2244
  "a11y": [],
2033
2245
  "keyboard": [],
2034
2246
  "hosts": [],
@@ -2054,6 +2266,8 @@
2054
2266
  ],
2055
2267
  "requiredTargets": [],
2056
2268
  "conditionalTargets": [],
2269
+ "requiredActions": [],
2270
+ "actionCompletion": [],
2057
2271
  "a11y": [],
2058
2272
  "keyboard": [],
2059
2273
  "hosts": [],
@@ -2091,6 +2305,8 @@
2091
2305
  "option"
2092
2306
  ],
2093
2307
  "conditionalTargets": [],
2308
+ "requiredActions": [],
2309
+ "actionCompletion": [],
2094
2310
  "a11y": [
2095
2311
  {
2096
2312
  "target": "trigger",
@@ -2184,6 +2400,8 @@
2184
2400
  ],
2185
2401
  "requiredTargets": [],
2186
2402
  "conditionalTargets": [],
2403
+ "requiredActions": [],
2404
+ "actionCompletion": [],
2187
2405
  "a11y": [],
2188
2406
  "keyboard": [],
2189
2407
  "hosts": [],
@@ -2212,6 +2430,8 @@
2212
2430
  "item"
2213
2431
  ],
2214
2432
  "conditionalTargets": [],
2433
+ "requiredActions": [],
2434
+ "actionCompletion": [],
2215
2435
  "a11y": [],
2216
2436
  "keyboard": [],
2217
2437
  "hosts": [],
@@ -2245,6 +2465,8 @@
2245
2465
  "menu"
2246
2466
  ],
2247
2467
  "conditionalTargets": [],
2468
+ "requiredActions": [],
2469
+ "actionCompletion": [],
2248
2470
  "a11y": [
2249
2471
  {
2250
2472
  "target": "trigger",
@@ -2325,6 +2547,8 @@
2325
2547
  "menu"
2326
2548
  ],
2327
2549
  "conditionalTargets": [],
2550
+ "requiredActions": [],
2551
+ "actionCompletion": [],
2328
2552
  "a11y": [
2329
2553
  {
2330
2554
  "target": "",
@@ -2449,6 +2673,8 @@
2449
2673
  ],
2450
2674
  "requiredTargets": [],
2451
2675
  "conditionalTargets": [],
2676
+ "requiredActions": [],
2677
+ "actionCompletion": [],
2452
2678
  "a11y": [
2453
2679
  {
2454
2680
  "target": "",
@@ -2528,6 +2754,8 @@
2528
2754
  "suggestion": "Complete the chip template: inside it, it needs a \"tag\" root, a \"label\" element for the option text, and a \"remove\" button. Parts declared outside the template never reach the clone, so no selection can commit."
2529
2755
  }
2530
2756
  ],
2757
+ "requiredActions": [],
2758
+ "actionCompletion": [],
2531
2759
  "a11y": [
2532
2760
  {
2533
2761
  "target": "input",
@@ -2649,6 +2877,8 @@
2649
2877
  "panel"
2650
2878
  ],
2651
2879
  "conditionalTargets": [],
2880
+ "requiredActions": [],
2881
+ "actionCompletion": [],
2652
2882
  "a11y": [],
2653
2883
  "keyboard": [],
2654
2884
  "hosts": [],
@@ -2689,13 +2919,16 @@
2689
2919
  ],
2690
2920
  "events": [
2691
2921
  "add",
2692
- "remove"
2922
+ "remove",
2923
+ "reconcile"
2693
2924
  ],
2694
2925
  "requiredTargets": [
2695
2926
  "list",
2696
2927
  "template"
2697
2928
  ],
2698
2929
  "conditionalTargets": [],
2930
+ "requiredActions": [],
2931
+ "actionCompletion": [],
2699
2932
  "a11y": [],
2700
2933
  "keyboard": [],
2701
2934
  "hosts": [],
@@ -2724,6 +2957,8 @@
2724
2957
  ],
2725
2958
  "requiredTargets": [],
2726
2959
  "conditionalTargets": [],
2960
+ "requiredActions": [],
2961
+ "actionCompletion": [],
2727
2962
  "a11y": [],
2728
2963
  "keyboard": [],
2729
2964
  "hosts": [],
@@ -2770,6 +3005,8 @@
2770
3005
  "input"
2771
3006
  ],
2772
3007
  "conditionalTargets": [],
3008
+ "requiredActions": [],
3009
+ "actionCompletion": [],
2773
3010
  "a11y": [],
2774
3011
  "keyboard": [],
2775
3012
  "hosts": [],
@@ -2795,6 +3032,8 @@
2795
3032
  ],
2796
3033
  "requiredTargets": [],
2797
3034
  "conditionalTargets": [],
3035
+ "requiredActions": [],
3036
+ "actionCompletion": [],
2798
3037
  "a11y": [],
2799
3038
  "keyboard": [],
2800
3039
  "hosts": [],
@@ -2812,7 +3051,6 @@
2812
3051
  "error"
2813
3052
  ],
2814
3053
  "values": [
2815
- "length",
2816
3054
  "pattern"
2817
3055
  ],
2818
3056
  "valueConstraints": [],
@@ -2820,21 +3058,62 @@
2820
3058
  "actions": [
2821
3059
  "onInput",
2822
3060
  "onKeydown",
2823
- "onPaste"
3061
+ "onPaste",
3062
+ "onPointerDown",
3063
+ "clear"
2824
3064
  ],
2825
3065
  "events": [
2826
3066
  "change",
2827
3067
  "complete",
2828
- "invalid"
3068
+ "invalid",
3069
+ "reconcile"
2829
3070
  ],
2830
3071
  "requiredTargets": [
2831
3072
  "field"
2832
3073
  ],
2833
3074
  "conditionalTargets": [],
2834
- "a11y": [],
3075
+ "requiredActions": [],
3076
+ "actionCompletion": [],
3077
+ "a11y": [
3078
+ {
3079
+ "target": "",
3080
+ "attrs": [
3081
+ "role"
3082
+ ],
3083
+ "values": [
3084
+ "group"
3085
+ ],
3086
+ "suggestion": "Add role=\"group\" to the controller element."
3087
+ },
3088
+ {
3089
+ "target": "",
3090
+ "attrs": [
3091
+ "aria-label",
3092
+ "aria-labelledby"
3093
+ ],
3094
+ "suggestion": "Name the passcode group via aria-label or aria-labelledby."
3095
+ },
3096
+ {
3097
+ "target": "field",
3098
+ "attrs": [
3099
+ "aria-label",
3100
+ "aria-labelledby"
3101
+ ],
3102
+ "suggestion": "Name each field target after its position via aria-label or aria-labelledby."
3103
+ }
3104
+ ],
2835
3105
  "keyboard": [],
2836
3106
  "hosts": [],
2837
- "managedAria": [],
3107
+ "managedAria": [
3108
+ {
3109
+ "target": "field",
3110
+ "attrs": [
3111
+ "aria-invalid",
3112
+ "aria-errormessage"
3113
+ ],
3114
+ "suggestion": "Remove aria-invalid and aria-errormessage from the field target — the controller writes them while it reports discarded input and returns them once the input is accepted."
3115
+ }
3116
+ ],
2838
3117
  "compositions": [],
2839
3118
  "companions": [],
2840
3119
  "targetDeclarations": [],
@@ -2862,6 +3141,8 @@
2862
3141
  "viewport"
2863
3142
  ],
2864
3143
  "conditionalTargets": [],
3144
+ "requiredActions": [],
3145
+ "actionCompletion": [],
2865
3146
  "a11y": [],
2866
3147
  "keyboard": [],
2867
3148
  "hosts": [],
@@ -2894,6 +3175,8 @@
2894
3175
  "more"
2895
3176
  ],
2896
3177
  "conditionalTargets": [],
3178
+ "requiredActions": [],
3179
+ "actionCompletion": [],
2897
3180
  "a11y": [],
2898
3181
  "keyboard": [],
2899
3182
  "hosts": [],
@@ -2932,6 +3215,8 @@
2932
3215
  ],
2933
3216
  "requiredTargets": [],
2934
3217
  "conditionalTargets": [],
3218
+ "requiredActions": [],
3219
+ "actionCompletion": [],
2935
3220
  "a11y": [],
2936
3221
  "keyboard": [],
2937
3222
  "hosts": [],
@@ -2963,6 +3248,8 @@
2963
3248
  "toggle"
2964
3249
  ],
2965
3250
  "conditionalTargets": [],
3251
+ "requiredActions": [],
3252
+ "actionCompletion": [],
2966
3253
  "a11y": [],
2967
3254
  "keyboard": [],
2968
3255
  "hosts": [],
@@ -2996,6 +3283,8 @@
2996
3283
  "meter"
2997
3284
  ],
2998
3285
  "conditionalTargets": [],
3286
+ "requiredActions": [],
3287
+ "actionCompletion": [],
2999
3288
  "a11y": [
3000
3289
  {
3001
3290
  "target": "meter",
@@ -3043,10 +3332,13 @@
3043
3332
  "events": [
3044
3333
  "restore",
3045
3334
  "save",
3046
- "clear"
3335
+ "clear",
3336
+ "error"
3047
3337
  ],
3048
3338
  "requiredTargets": [],
3049
3339
  "conditionalTargets": [],
3340
+ "requiredActions": [],
3341
+ "actionCompletion": [],
3050
3342
  "a11y": [],
3051
3343
  "keyboard": [],
3052
3344
  "hosts": [],
@@ -3079,6 +3371,8 @@
3079
3371
  ],
3080
3372
  "requiredTargets": [],
3081
3373
  "conditionalTargets": [],
3374
+ "requiredActions": [],
3375
+ "actionCompletion": [],
3082
3376
  "a11y": [],
3083
3377
  "keyboard": [],
3084
3378
  "hosts": [],
@@ -3110,6 +3404,8 @@
3110
3404
  "panel"
3111
3405
  ],
3112
3406
  "conditionalTargets": [],
3407
+ "requiredActions": [],
3408
+ "actionCompletion": [],
3113
3409
  "a11y": [
3114
3410
  {
3115
3411
  "target": "panel",
@@ -3157,6 +3453,8 @@
3157
3453
  ],
3158
3454
  "requiredTargets": [],
3159
3455
  "conditionalTargets": [],
3456
+ "requiredActions": [],
3457
+ "actionCompletion": [],
3160
3458
  "a11y": [],
3161
3459
  "keyboard": [],
3162
3460
  "hosts": [],
@@ -3182,6 +3480,8 @@
3182
3480
  ],
3183
3481
  "requiredTargets": [],
3184
3482
  "conditionalTargets": [],
3483
+ "requiredActions": [],
3484
+ "actionCompletion": [],
3185
3485
  "a11y": [],
3186
3486
  "keyboard": [],
3187
3487
  "hosts": [],
@@ -3215,6 +3515,8 @@
3215
3515
  ],
3216
3516
  "requiredTargets": [],
3217
3517
  "conditionalTargets": [],
3518
+ "requiredActions": [],
3519
+ "actionCompletion": [],
3218
3520
  "a11y": [
3219
3521
  {
3220
3522
  "target": "",
@@ -3264,6 +3566,8 @@
3264
3566
  "radio"
3265
3567
  ],
3266
3568
  "conditionalTargets": [],
3569
+ "requiredActions": [],
3570
+ "actionCompletion": [],
3267
3571
  "a11y": [
3268
3572
  {
3269
3573
  "target": "",
@@ -3398,6 +3702,8 @@
3398
3702
  "endThumb"
3399
3703
  ],
3400
3704
  "conditionalTargets": [],
3705
+ "requiredActions": [],
3706
+ "actionCompletion": [],
3401
3707
  "a11y": [
3402
3708
  {
3403
3709
  "target": "startThumb",
@@ -3482,6 +3788,8 @@
3482
3788
  "symbol"
3483
3789
  ],
3484
3790
  "conditionalTargets": [],
3791
+ "requiredActions": [],
3792
+ "actionCompletion": [],
3485
3793
  "a11y": [],
3486
3794
  "keyboard": [],
3487
3795
  "hosts": [],
@@ -3511,6 +3819,8 @@
3511
3819
  "trigger"
3512
3820
  ],
3513
3821
  "conditionalTargets": [],
3822
+ "requiredActions": [],
3823
+ "actionCompletion": [],
3514
3824
  "a11y": [],
3515
3825
  "keyboard": [],
3516
3826
  "hosts": [],
@@ -3533,6 +3843,8 @@
3533
3843
  ],
3534
3844
  "requiredTargets": [],
3535
3845
  "conditionalTargets": [],
3846
+ "requiredActions": [],
3847
+ "actionCompletion": [],
3536
3848
  "a11y": [],
3537
3849
  "keyboard": [],
3538
3850
  "hosts": [],
@@ -3556,6 +3868,8 @@
3556
3868
  "events": [],
3557
3869
  "requiredTargets": [],
3558
3870
  "conditionalTargets": [],
3871
+ "requiredActions": [],
3872
+ "actionCompletion": [],
3559
3873
  "a11y": [],
3560
3874
  "keyboard": [],
3561
3875
  "hosts": [],
@@ -3583,6 +3897,8 @@
3583
3897
  ],
3584
3898
  "requiredTargets": [],
3585
3899
  "conditionalTargets": [],
3900
+ "requiredActions": [],
3901
+ "actionCompletion": [],
3586
3902
  "a11y": [],
3587
3903
  "keyboard": [],
3588
3904
  "hosts": [],
@@ -3621,6 +3937,8 @@
3621
3937
  "separator"
3622
3938
  ],
3623
3939
  "conditionalTargets": [],
3940
+ "requiredActions": [],
3941
+ "actionCompletion": [],
3624
3942
  "a11y": [
3625
3943
  {
3626
3944
  "target": "separator",
@@ -3681,6 +3999,8 @@
3681
3999
  "item"
3682
4000
  ],
3683
4001
  "conditionalTargets": [],
4002
+ "requiredActions": [],
4003
+ "actionCompletion": [],
3684
4004
  "a11y": [],
3685
4005
  "keyboard": [],
3686
4006
  "hosts": [],
@@ -3708,6 +4028,8 @@
3708
4028
  "viewport"
3709
4029
  ],
3710
4030
  "conditionalTargets": [],
4031
+ "requiredActions": [],
4032
+ "actionCompletion": [],
3711
4033
  "a11y": [],
3712
4034
  "keyboard": [],
3713
4035
  "hosts": [],
@@ -3730,6 +4052,8 @@
3730
4052
  "events": [],
3731
4053
  "requiredTargets": [],
3732
4054
  "conditionalTargets": [],
4055
+ "requiredActions": [],
4056
+ "actionCompletion": [],
3733
4057
  "a11y": [],
3734
4058
  "keyboard": [],
3735
4059
  "hosts": [],
@@ -3762,6 +4086,8 @@
3762
4086
  "element"
3763
4087
  ],
3764
4088
  "conditionalTargets": [],
4089
+ "requiredActions": [],
4090
+ "actionCompletion": [],
3765
4091
  "a11y": [],
3766
4092
  "keyboard": [],
3767
4093
  "hosts": [],
@@ -3794,6 +4120,8 @@
3794
4120
  "link"
3795
4121
  ],
3796
4122
  "conditionalTargets": [],
4123
+ "requiredActions": [],
4124
+ "actionCompletion": [],
3797
4125
  "a11y": [],
3798
4126
  "keyboard": [],
3799
4127
  "hosts": [],
@@ -3809,10 +4137,57 @@
3809
4137
  "values": [
3810
4138
  "orientation",
3811
4139
  "focusable",
3812
- "step"
4140
+ "min",
4141
+ "max",
4142
+ "step",
4143
+ "value"
4144
+ ],
4145
+ "valueConstraints": [
4146
+ {
4147
+ "value": "orientation",
4148
+ "type": "string",
4149
+ "allowedValues": [
4150
+ "horizontal",
4151
+ "vertical"
4152
+ ],
4153
+ "suggestion": "Set orientation to \"horizontal\" or \"vertical\"."
4154
+ },
4155
+ {
4156
+ "value": "min",
4157
+ "type": "number",
4158
+ "finite": true,
4159
+ "suggestion": "Set min to a finite number."
4160
+ },
4161
+ {
4162
+ "value": "max",
4163
+ "type": "number",
4164
+ "finite": true,
4165
+ "suggestion": "Set max to a finite number."
4166
+ },
4167
+ {
4168
+ "value": "step",
4169
+ "type": "number",
4170
+ "finite": true,
4171
+ "greaterThan": 0,
4172
+ "suggestion": "Set step to a finite number greater than 0."
4173
+ },
4174
+ {
4175
+ "value": "value",
4176
+ "type": "number",
4177
+ "finite": true,
4178
+ "suggestion": "Set value to a finite number."
4179
+ }
4180
+ ],
4181
+ "valueRelations": [
4182
+ {
4183
+ "left": "min",
4184
+ "operator": "less-than-or-equal",
4185
+ "right": "max",
4186
+ "leftDefault": 0,
4187
+ "rightDefault": 100,
4188
+ "suggestion": "Set min to a finite number less than or equal to max."
4189
+ }
3813
4190
  ],
3814
- "valueConstraints": [],
3815
- "valueRelations": [],
3816
4191
  "actions": [
3817
4192
  "onKeydown"
3818
4193
  ],
@@ -3821,7 +4196,58 @@
3821
4196
  ],
3822
4197
  "requiredTargets": [],
3823
4198
  "conditionalTargets": [],
3824
- "a11y": [],
4199
+ "requiredActions": [
4200
+ {
4201
+ "target": "",
4202
+ "action": "onKeydown",
4203
+ "eventTypes": [
4204
+ "keydown"
4205
+ ],
4206
+ "when": {
4207
+ "value": "focusable",
4208
+ "type": "boolean",
4209
+ "equals": [
4210
+ "true"
4211
+ ],
4212
+ "default": "false"
4213
+ },
4214
+ "suggestion": "Add data-action=\"keydown->stimeo--separator#onKeydown\" to the separator element."
4215
+ }
4216
+ ],
4217
+ "actionCompletion": [],
4218
+ "a11y": [
4219
+ {
4220
+ "target": "",
4221
+ "attrs": [
4222
+ "aria-controls"
4223
+ ],
4224
+ "when": {
4225
+ "value": "focusable",
4226
+ "type": "boolean",
4227
+ "equals": [
4228
+ "true"
4229
+ ],
4230
+ "default": "false"
4231
+ },
4232
+ "suggestion": "Point the separator at its primary pane via aria-controls."
4233
+ },
4234
+ {
4235
+ "target": "",
4236
+ "attrs": [
4237
+ "aria-label",
4238
+ "aria-labelledby"
4239
+ ],
4240
+ "when": {
4241
+ "value": "focusable",
4242
+ "type": "boolean",
4243
+ "equals": [
4244
+ "true"
4245
+ ],
4246
+ "default": "false"
4247
+ },
4248
+ "suggestion": "Name the focusable separator after its primary pane via aria-label or aria-labelledby."
4249
+ }
4250
+ ],
3825
4251
  "keyboard": [],
3826
4252
  "hosts": [],
3827
4253
  "managedAria": [],
@@ -3854,6 +4280,8 @@
3854
4280
  "panel"
3855
4281
  ],
3856
4282
  "conditionalTargets": [],
4283
+ "requiredActions": [],
4284
+ "actionCompletion": [],
3857
4285
  "a11y": [],
3858
4286
  "keyboard": [],
3859
4287
  "hosts": [],
@@ -3884,6 +4312,8 @@
3884
4312
  ],
3885
4313
  "requiredTargets": [],
3886
4314
  "conditionalTargets": [],
4315
+ "requiredActions": [],
4316
+ "actionCompletion": [],
3887
4317
  "a11y": [],
3888
4318
  "keyboard": [],
3889
4319
  "hosts": [],
@@ -3928,6 +4358,8 @@
3928
4358
  "thumb"
3929
4359
  ],
3930
4360
  "conditionalTargets": [],
4361
+ "requiredActions": [],
4362
+ "actionCompletion": [],
3931
4363
  "a11y": [
3932
4364
  {
3933
4365
  "target": "thumb",
@@ -3978,6 +4410,8 @@
3978
4410
  ],
3979
4411
  "requiredTargets": [],
3980
4412
  "conditionalTargets": [],
4413
+ "requiredActions": [],
4414
+ "actionCompletion": [],
3981
4415
  "a11y": [],
3982
4416
  "keyboard": [],
3983
4417
  "hosts": [],
@@ -4007,6 +4441,8 @@
4007
4441
  "item"
4008
4442
  ],
4009
4443
  "conditionalTargets": [],
4444
+ "requiredActions": [],
4445
+ "actionCompletion": [],
4010
4446
  "a11y": [
4011
4447
  {
4012
4448
  "target": "status",
@@ -4041,6 +4477,7 @@
4041
4477
  "coController": "stimeo--roving",
4042
4478
  "when": {
4043
4479
  "value": "orientation",
4480
+ "type": "string",
4044
4481
  "equals": [
4045
4482
  "vertical"
4046
4483
  ],
@@ -4062,6 +4499,7 @@
4062
4499
  "coController": "stimeo--roving",
4063
4500
  "when": {
4064
4501
  "value": "orientation",
4502
+ "type": "string",
4065
4503
  "equals": [
4066
4504
  "horizontal"
4067
4505
  ],
@@ -4082,6 +4520,7 @@
4082
4520
  "coController": "stimeo--pointer-drag",
4083
4521
  "when": {
4084
4522
  "value": "orientation",
4523
+ "type": "string",
4085
4524
  "equals": [
4086
4525
  "vertical"
4087
4526
  ],
@@ -4102,6 +4541,7 @@
4102
4541
  "coController": "stimeo--pointer-drag",
4103
4542
  "when": {
4104
4543
  "value": "orientation",
4544
+ "type": "string",
4105
4545
  "equals": [
4106
4546
  "horizontal"
4107
4547
  ],
@@ -4145,10 +4585,13 @@
4145
4585
  "events": [
4146
4586
  "hide",
4147
4587
  "show",
4148
- "timeout"
4588
+ "timeout",
4589
+ "reconcile"
4149
4590
  ],
4150
4591
  "requiredTargets": [],
4151
4592
  "conditionalTargets": [],
4593
+ "requiredActions": [],
4594
+ "actionCompletion": [],
4152
4595
  "a11y": [],
4153
4596
  "keyboard": [],
4154
4597
  "hosts": [],
@@ -4178,6 +4621,8 @@
4178
4621
  "step"
4179
4622
  ],
4180
4623
  "conditionalTargets": [],
4624
+ "requiredActions": [],
4625
+ "actionCompletion": [],
4181
4626
  "a11y": [],
4182
4627
  "keyboard": [],
4183
4628
  "hosts": [],
@@ -4210,6 +4655,8 @@
4210
4655
  "step"
4211
4656
  ],
4212
4657
  "conditionalTargets": [],
4658
+ "requiredActions": [],
4659
+ "actionCompletion": [],
4213
4660
  "a11y": [],
4214
4661
  "keyboard": [],
4215
4662
  "hosts": [],
@@ -4240,6 +4687,8 @@
4240
4687
  ],
4241
4688
  "requiredTargets": [],
4242
4689
  "conditionalTargets": [],
4690
+ "requiredActions": [],
4691
+ "actionCompletion": [],
4243
4692
  "a11y": [],
4244
4693
  "keyboard": [],
4245
4694
  "hosts": [],
@@ -4270,6 +4719,8 @@
4270
4719
  "element"
4271
4720
  ],
4272
4721
  "conditionalTargets": [],
4722
+ "requiredActions": [],
4723
+ "actionCompletion": [],
4273
4724
  "a11y": [],
4274
4725
  "keyboard": [],
4275
4726
  "hosts": [],
@@ -4282,9 +4733,13 @@
4282
4733
  },
4283
4734
  "stimeo--submit-once": {
4284
4735
  "targets": [
4285
- "submit"
4736
+ "submit",
4737
+ "idle",
4738
+ "busy"
4286
4739
  ],
4287
4740
  "values": [
4741
+ "announceText",
4742
+ "announceReadyText",
4288
4743
  "busyLabel",
4289
4744
  "timeout",
4290
4745
  "restoreFocus"
@@ -4292,14 +4747,75 @@
4292
4747
  "valueConstraints": [],
4293
4748
  "valueRelations": [],
4294
4749
  "actions": [
4750
+ "cancel",
4751
+ "finish",
4295
4752
  "start"
4296
4753
  ],
4297
4754
  "events": [
4298
4755
  "start",
4299
- "end"
4756
+ "end",
4757
+ "reconcile"
4300
4758
  ],
4301
4759
  "requiredTargets": [],
4302
- "conditionalTargets": [],
4760
+ "conditionalTargets": [
4761
+ {
4762
+ "whenPresent": "idle",
4763
+ "require": [
4764
+ "busy"
4765
+ ],
4766
+ "requireSameHost": [
4767
+ {
4768
+ "tag": "button"
4769
+ },
4770
+ {
4771
+ "tag": "input",
4772
+ "attr": "type",
4773
+ "values": [
4774
+ "submit",
4775
+ "image"
4776
+ ]
4777
+ }
4778
+ ],
4779
+ "hostLabel": "submit control",
4780
+ "suggestion": "Add a \"busy\" target inside the same submit button, or remove the \"idle\" target and use busyLabel for a plain-text button."
4781
+ },
4782
+ {
4783
+ "whenPresent": "busy",
4784
+ "require": [
4785
+ "idle"
4786
+ ],
4787
+ "requireSameHost": [
4788
+ {
4789
+ "tag": "button"
4790
+ },
4791
+ {
4792
+ "tag": "input",
4793
+ "attr": "type",
4794
+ "values": [
4795
+ "submit",
4796
+ "image"
4797
+ ]
4798
+ }
4799
+ ],
4800
+ "hostLabel": "submit control",
4801
+ "suggestion": "Add an \"idle\" target inside the same submit button, or remove the \"busy\" target and use busyLabel for a plain-text button."
4802
+ }
4803
+ ],
4804
+ "requiredActions": [],
4805
+ "actionCompletion": [
4806
+ {
4807
+ "opens": "start",
4808
+ "whenTriggeredBy": [
4809
+ "submit"
4810
+ ],
4811
+ "closedBy": [
4812
+ "finish",
4813
+ "cancel"
4814
+ ],
4815
+ "escapeValue": "timeout",
4816
+ "suggestion": "Wire \"finish\" when the request settles and \"cancel\" when it never ran, or set a non-zero timeout Value. On a Turbo form drop the \"start\" action entirely — Turbo's own events already drive it."
4817
+ }
4818
+ ],
4303
4819
  "a11y": [],
4304
4820
  "keyboard": [],
4305
4821
  "hosts": [],
@@ -4324,6 +4840,8 @@
4324
4840
  ],
4325
4841
  "requiredTargets": [],
4326
4842
  "conditionalTargets": [],
4843
+ "requiredActions": [],
4844
+ "actionCompletion": [],
4327
4845
  "a11y": [],
4328
4846
  "keyboard": [],
4329
4847
  "hosts": [
@@ -4363,6 +4881,8 @@
4363
4881
  "list"
4364
4882
  ],
4365
4883
  "conditionalTargets": [],
4884
+ "requiredActions": [],
4885
+ "actionCompletion": [],
4366
4886
  "a11y": [
4367
4887
  {
4368
4888
  "target": "tab",
@@ -4477,6 +4997,8 @@
4477
4997
  "suggestion": "Complete the chip template: inside it, it needs a \"tag\" root, a \"label\" element for the entered text, and a \"remove\" button. Parts declared outside the template never reach the clone, so no tag can commit."
4478
4998
  }
4479
4999
  ],
5000
+ "requiredActions": [],
5001
+ "actionCompletion": [],
4480
5002
  "a11y": [
4481
5003
  {
4482
5004
  "target": "remove",
@@ -4511,6 +5033,8 @@
4511
5033
  ],
4512
5034
  "requiredTargets": [],
4513
5035
  "conditionalTargets": [],
5036
+ "requiredActions": [],
5037
+ "actionCompletion": [],
4514
5038
  "a11y": [],
4515
5039
  "keyboard": [],
4516
5040
  "hosts": [],
@@ -4541,6 +5065,8 @@
4541
5065
  ],
4542
5066
  "requiredTargets": [],
4543
5067
  "conditionalTargets": [],
5068
+ "requiredActions": [],
5069
+ "actionCompletion": [],
4544
5070
  "a11y": [],
4545
5071
  "keyboard": [],
4546
5072
  "hosts": [],
@@ -4584,6 +5110,8 @@
4584
5110
  "segment"
4585
5111
  ],
4586
5112
  "conditionalTargets": [],
5113
+ "requiredActions": [],
5114
+ "actionCompletion": [],
4587
5115
  "a11y": [
4588
5116
  {
4589
5117
  "target": "segment",
@@ -4646,6 +5174,8 @@
4646
5174
  "list"
4647
5175
  ],
4648
5176
  "conditionalTargets": [],
5177
+ "requiredActions": [],
5178
+ "actionCompletion": [],
4649
5179
  "a11y": [],
4650
5180
  "keyboard": [],
4651
5181
  "hosts": [],
@@ -4676,6 +5206,8 @@
4676
5206
  "item"
4677
5207
  ],
4678
5208
  "conditionalTargets": [],
5209
+ "requiredActions": [],
5210
+ "actionCompletion": [],
4679
5211
  "a11y": [
4680
5212
  {
4681
5213
  "target": "",
@@ -4753,6 +5285,8 @@
4753
5285
  "control"
4754
5286
  ],
4755
5287
  "conditionalTargets": [],
5288
+ "requiredActions": [],
5289
+ "actionCompletion": [],
4756
5290
  "a11y": [
4757
5291
  {
4758
5292
  "target": "",
@@ -4768,6 +5302,7 @@
4768
5302
  "target": "",
4769
5303
  "when": {
4770
5304
  "value": "orientation",
5305
+ "type": "string",
4771
5306
  "equals": [
4772
5307
  "vertical"
4773
5308
  ],
@@ -4826,6 +5361,8 @@
4826
5361
  "content"
4827
5362
  ],
4828
5363
  "conditionalTargets": [],
5364
+ "requiredActions": [],
5365
+ "actionCompletion": [],
4829
5366
  "a11y": [
4830
5367
  {
4831
5368
  "target": "content",
@@ -4878,6 +5415,8 @@
4878
5415
  ],
4879
5416
  "requiredTargets": [],
4880
5417
  "conditionalTargets": [],
5418
+ "requiredActions": [],
5419
+ "actionCompletion": [],
4881
5420
  "a11y": [],
4882
5421
  "keyboard": [],
4883
5422
  "hosts": [],
@@ -4909,6 +5448,8 @@
4909
5448
  "item"
4910
5449
  ],
4911
5450
  "conditionalTargets": [],
5451
+ "requiredActions": [],
5452
+ "actionCompletion": [],
4912
5453
  "a11y": [
4913
5454
  {
4914
5455
  "target": "",
@@ -5009,6 +5550,8 @@
5009
5550
  "floating"
5010
5551
  ],
5011
5552
  "conditionalTargets": [],
5553
+ "requiredActions": [],
5554
+ "actionCompletion": [],
5012
5555
  "a11y": [],
5013
5556
  "keyboard": [],
5014
5557
  "hosts": [],
@@ -5039,6 +5582,8 @@
5039
5582
  ],
5040
5583
  "requiredTargets": [],
5041
5584
  "conditionalTargets": [],
5585
+ "requiredActions": [],
5586
+ "actionCompletion": [],
5042
5587
  "a11y": [],
5043
5588
  "keyboard": [],
5044
5589
  "hosts": [],
@@ -5073,6 +5618,8 @@
5073
5618
  ],
5074
5619
  "requiredTargets": [],
5075
5620
  "conditionalTargets": [],
5621
+ "requiredActions": [],
5622
+ "actionCompletion": [],
5076
5623
  "a11y": [],
5077
5624
  "keyboard": [],
5078
5625
  "hosts": [],
@@ -5103,6 +5650,8 @@
5103
5650
  ],
5104
5651
  "requiredTargets": [],
5105
5652
  "conditionalTargets": [],
5653
+ "requiredActions": [],
5654
+ "actionCompletion": [],
5106
5655
  "a11y": [
5107
5656
  {
5108
5657
  "target": "status",