stimeo-ui 0.4.0 → 0.6.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 (173) hide show
  1. package/CHANGELOG.md +184 -0
  2. package/dist/controllers/announcer_controller.js.map +1 -1
  3. package/dist/controllers/aspect_ratio_controller.d.ts +3 -5
  4. package/dist/controllers/aspect_ratio_controller.js +19 -11
  5. package/dist/controllers/aspect_ratio_controller.js.map +1 -1
  6. package/dist/controllers/avatar_controller.d.ts +36 -15
  7. package/dist/controllers/avatar_controller.js +195 -40
  8. package/dist/controllers/avatar_controller.js.map +1 -1
  9. package/dist/controllers/breadcrumb_controller.js +5 -1
  10. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  11. package/dist/controllers/carousel_controller.d.ts +12 -3
  12. package/dist/controllers/carousel_controller.js +90 -10
  13. package/dist/controllers/carousel_controller.js.map +1 -1
  14. package/dist/controllers/checkbox_controller.d.ts +31 -5
  15. package/dist/controllers/checkbox_controller.js +136 -25
  16. package/dist/controllers/checkbox_controller.js.map +1 -1
  17. package/dist/controllers/clipboard_controller.js +8 -3
  18. package/dist/controllers/clipboard_controller.js.map +1 -1
  19. package/dist/controllers/collapsible_controller.d.ts +1 -1
  20. package/dist/controllers/collapsible_controller.js +4 -1
  21. package/dist/controllers/collapsible_controller.js.map +1 -1
  22. package/dist/controllers/color_picker_controller.d.ts +9 -3
  23. package/dist/controllers/color_picker_controller.js +41 -11
  24. package/dist/controllers/color_picker_controller.js.map +1 -1
  25. package/dist/controllers/combobox_controller.js.map +1 -1
  26. package/dist/controllers/command_palette_controller.js.map +1 -1
  27. package/dist/controllers/context_menu_controller.d.ts +1 -1
  28. package/dist/controllers/context_menu_controller.js +2 -2
  29. package/dist/controllers/context_menu_controller.js.map +1 -1
  30. package/dist/controllers/countdown_controller.d.ts +5 -3
  31. package/dist/controllers/countdown_controller.js +5 -1
  32. package/dist/controllers/countdown_controller.js.map +1 -1
  33. package/dist/controllers/date_range_picker_controller.d.ts +23 -4
  34. package/dist/controllers/date_range_picker_controller.js +162 -31
  35. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  36. package/dist/controllers/direct_upload_controller.d.ts +1 -1
  37. package/dist/controllers/direct_upload_controller.js +3 -3
  38. package/dist/controllers/direct_upload_controller.js.map +1 -1
  39. package/dist/controllers/empty_state_controller.d.ts +27 -7
  40. package/dist/controllers/empty_state_controller.js +107 -16
  41. package/dist/controllers/empty_state_controller.js.map +1 -1
  42. package/dist/controllers/file_dropzone_controller.d.ts +7 -1
  43. package/dist/controllers/file_dropzone_controller.js +26 -3
  44. package/dist/controllers/file_dropzone_controller.js.map +1 -1
  45. package/dist/controllers/flash_controller.d.ts +25 -5
  46. package/dist/controllers/flash_controller.js +161 -21
  47. package/dist/controllers/flash_controller.js.map +1 -1
  48. package/dist/controllers/focus_controller.d.ts +2 -3
  49. package/dist/controllers/focus_controller.js.map +1 -1
  50. package/dist/controllers/form_validation_controller.js +8 -2
  51. package/dist/controllers/form_validation_controller.js.map +1 -1
  52. package/dist/controllers/frame_loading_controller.d.ts +19 -2
  53. package/dist/controllers/frame_loading_controller.js +94 -22
  54. package/dist/controllers/frame_loading_controller.js.map +1 -1
  55. package/dist/controllers/highlight_controller.d.ts +8 -4
  56. package/dist/controllers/highlight_controller.js +38 -1
  57. package/dist/controllers/highlight_controller.js.map +1 -1
  58. package/dist/controllers/hover_card_controller.d.ts +2 -2
  59. package/dist/controllers/hover_card_controller.js.map +1 -1
  60. package/dist/controllers/idle_controller.d.ts +5 -4
  61. package/dist/controllers/idle_controller.js +39 -6
  62. package/dist/controllers/idle_controller.js.map +1 -1
  63. package/dist/controllers/listbox_controller.js.map +1 -1
  64. package/dist/controllers/local_time_controller.js +2 -0
  65. package/dist/controllers/local_time_controller.js.map +1 -1
  66. package/dist/controllers/masonry_controller.d.ts +1 -1
  67. package/dist/controllers/masonry_controller.js +1 -1
  68. package/dist/controllers/masonry_controller.js.map +1 -1
  69. package/dist/controllers/menubar_controller.js +5 -3
  70. package/dist/controllers/menubar_controller.js.map +1 -1
  71. package/dist/controllers/meter_controller.js +3 -1
  72. package/dist/controllers/meter_controller.js.map +1 -1
  73. package/dist/controllers/multi_select_controller.d.ts +46 -12
  74. package/dist/controllers/multi_select_controller.js +460 -151
  75. package/dist/controllers/multi_select_controller.js.map +1 -1
  76. package/dist/controllers/network_status_controller.d.ts +15 -13
  77. package/dist/controllers/network_status_controller.js +1 -3
  78. package/dist/controllers/network_status_controller.js.map +1 -1
  79. package/dist/controllers/number_input_controller.d.ts +29 -3
  80. package/dist/controllers/number_input_controller.js +455 -64
  81. package/dist/controllers/number_input_controller.js.map +1 -1
  82. package/dist/controllers/overflow_menu_controller.js +5 -1
  83. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  84. package/dist/controllers/pagination_controller.js +38 -1
  85. package/dist/controllers/pagination_controller.js.map +1 -1
  86. package/dist/controllers/password_strength_controller.d.ts +4 -4
  87. package/dist/controllers/password_strength_controller.js +21 -3
  88. package/dist/controllers/password_strength_controller.js.map +1 -1
  89. package/dist/controllers/persist_controller.d.ts +4 -4
  90. package/dist/controllers/persist_controller.js +24 -5
  91. package/dist/controllers/persist_controller.js.map +1 -1
  92. package/dist/controllers/pointer_drag_controller.js +10 -0
  93. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  94. package/dist/controllers/popover_controller.d.ts +2 -2
  95. package/dist/controllers/popover_controller.js.map +1 -1
  96. package/dist/controllers/portal_controller.d.ts +1 -2
  97. package/dist/controllers/portal_controller.js +10 -0
  98. package/dist/controllers/portal_controller.js.map +1 -1
  99. package/dist/controllers/progress_controller.d.ts +1 -1
  100. package/dist/controllers/progress_controller.js +7 -3
  101. package/dist/controllers/progress_controller.js.map +1 -1
  102. package/dist/controllers/radio_group_controller.d.ts +41 -15
  103. package/dist/controllers/radio_group_controller.js +540 -56
  104. package/dist/controllers/radio_group_controller.js.map +1 -1
  105. package/dist/controllers/range_slider_controller.d.ts +23 -0
  106. package/dist/controllers/range_slider_controller.js +385 -94
  107. package/dist/controllers/range_slider_controller.js.map +1 -1
  108. package/dist/controllers/rating_controller.d.ts +36 -31
  109. package/dist/controllers/rating_controller.js +274 -89
  110. package/dist/controllers/rating_controller.js.map +1 -1
  111. package/dist/controllers/relative_time_controller.js +2 -0
  112. package/dist/controllers/relative_time_controller.js.map +1 -1
  113. package/dist/controllers/resizable_controller.js +33 -0
  114. package/dist/controllers/resizable_controller.js.map +1 -1
  115. package/dist/controllers/roving_controller.d.ts +4 -0
  116. package/dist/controllers/roving_controller.js +60 -5
  117. package/dist/controllers/roving_controller.js.map +1 -1
  118. package/dist/controllers/scroll_area_controller.d.ts +7 -1
  119. package/dist/controllers/scroll_area_controller.js +155 -23
  120. package/dist/controllers/scroll_area_controller.js.map +1 -1
  121. package/dist/controllers/scroll_visibility_controller.js +33 -0
  122. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  123. package/dist/controllers/separator_controller.js +13 -17
  124. package/dist/controllers/separator_controller.js.map +1 -1
  125. package/dist/controllers/skeleton_controller.d.ts +2 -2
  126. package/dist/controllers/skeleton_controller.js +71 -3
  127. package/dist/controllers/skeleton_controller.js.map +1 -1
  128. package/dist/controllers/slider_controller.d.ts +17 -1
  129. package/dist/controllers/slider_controller.js +325 -48
  130. package/dist/controllers/slider_controller.js.map +1 -1
  131. package/dist/controllers/spinner_controller.d.ts +15 -10
  132. package/dist/controllers/spinner_controller.js +18 -3
  133. package/dist/controllers/spinner_controller.js.map +1 -1
  134. package/dist/controllers/step_indicator_controller.d.ts +1 -1
  135. package/dist/controllers/step_indicator_controller.js +3 -1
  136. package/dist/controllers/step_indicator_controller.js.map +1 -1
  137. package/dist/controllers/stepper_controller.js +2 -0
  138. package/dist/controllers/stepper_controller.js.map +1 -1
  139. package/dist/controllers/switch_controller.d.ts +12 -8
  140. package/dist/controllers/switch_controller.js +162 -18
  141. package/dist/controllers/switch_controller.js.map +1 -1
  142. package/dist/controllers/tags_input_controller.d.ts +41 -11
  143. package/dist/controllers/tags_input_controller.js +356 -120
  144. package/dist/controllers/tags_input_controller.js.map +1 -1
  145. package/dist/controllers/textarea_autosize_controller.js +1 -1
  146. package/dist/controllers/textarea_autosize_controller.js.map +1 -1
  147. package/dist/controllers/time_picker_controller.d.ts +42 -10
  148. package/dist/controllers/time_picker_controller.js +296 -104
  149. package/dist/controllers/time_picker_controller.js.map +1 -1
  150. package/dist/controllers/toggle_group_controller.d.ts +39 -13
  151. package/dist/controllers/toggle_group_controller.js +378 -55
  152. package/dist/controllers/toggle_group_controller.js.map +1 -1
  153. package/dist/controllers/toolbar_controller.js +5 -3
  154. package/dist/controllers/toolbar_controller.js.map +1 -1
  155. package/dist/controllers/tooltip_controller.d.ts +2 -2
  156. package/dist/controllers/tooltip_controller.js.map +1 -1
  157. package/dist/controllers/transition_controller.d.ts +2 -3
  158. package/dist/controllers/transition_controller.js.map +1 -1
  159. package/dist/controllers/tree_view_controller.d.ts +1 -2
  160. package/dist/controllers/tree_view_controller.js +24 -4
  161. package/dist/controllers/tree_view_controller.js.map +1 -1
  162. package/dist/index.js +3811 -1048
  163. package/dist/index.js.map +1 -1
  164. package/dist/inspector/cli.d.ts +92 -4
  165. package/dist/inspector/cli.js +174 -6
  166. package/dist/inspector/cli.js.map +1 -1
  167. package/dist/inspector/cli_bin.js +234 -8
  168. package/dist/inspector/cli_bin.js.map +1 -1
  169. package/dist/inspector/examples.json +24 -24
  170. package/dist/inspector/manifest.json +573 -59
  171. package/dist/positioning/index.d.ts +2 -2
  172. package/dist/positioning/index.js.map +1 -1
  173. package/package.json +3 -3
@@ -4,7 +4,9 @@ import { Controller } from '@hotwired/stimulus';
4
4
  * Headless, accessible multi-select combobox with chips.
5
5
  *
6
6
  * Markup contract (identifier: `stimeo--multi-select`):
7
- * <div data-controller="stimeo--multi-select">
7
+ * <div data-controller="stimeo--multi-select"
8
+ * data-stimeo--multi-select-announce-text-value="{label} selected; {count} total"
9
+ * data-stimeo--multi-select-announce-removed-text-value="{label} removed; {count} total">
8
10
  * <ul data-stimeo--multi-select-target="tags" aria-label="Selected"></ul>
9
11
  * <input type="text" role="combobox" aria-expanded="false"
10
12
  * aria-autocomplete="list" aria-controls="ms-list"
@@ -18,11 +20,15 @@ import { Controller } from '@hotwired/stimulus';
18
20
  * data-stimeo--multi-select-target="option"
19
21
  * data-action="click->stimeo--multi-select#toggleOption">Apple</li>
20
22
  * </ul>
21
- * <span role="status" aria-live="polite" class="visually-hidden"
22
- * data-stimeo--multi-select-target="status"></span>
23
23
  * <!-- Optional: submit the selection as name="fruits[]" hidden inputs. -->
24
24
  * <div data-stimeo--multi-select-target="fields"></div>
25
- * <template data-stimeo--multi-select-target="tagTemplate">…</template>
25
+ * <template data-stimeo--multi-select-target="tagTemplate">
26
+ * <li data-stimeo--multi-select-target="tag">
27
+ * <span data-stimeo--multi-select-target="label"></span>
28
+ * <button type="button" tabindex="-1" aria-label="Remove {label}"
29
+ * data-stimeo--multi-select-target="remove">×</button>
30
+ * </li>
31
+ * </template>
26
32
  * </div>
27
33
  *
28
34
  * Implements the WAI-ARIA APG **Combobox** pattern in its list-autocomplete,
@@ -35,13 +41,19 @@ import { Controller } from '@hotwired/stimulus';
35
41
  * - Typing filters options by substring and opens the list; `ArrowDown`/`ArrowUp`
36
42
  * (wrapping), `Home`/`End` move the active option; `Enter` toggles it (the list
37
43
  * stays open); `Escape`/`Tab`/outside click close.
38
- * - Toggling syncs `aria-selected`, adds/removes a `Remove {label}` chip, mirrors
39
- * the live region, and dispatches `stimeo--multi-select:change` with `values`;
40
- * filtering dispatches `stimeo--multi-select:filter` for async candidates.
44
+ * - Toggling syncs `aria-selected`, expands the author-localized remove-button
45
+ * name from the chip template, adds/removes the chip, sends localized text to
46
+ * the shared announcer, and dispatches
47
+ * `stimeo--multi-select:change` with `values`; filtering dispatches
48
+ * `stimeo--multi-select:filter` for async candidates. Option churn or a lowered
49
+ * `max` that moves the selection without a user edit is reported as
50
+ * `stimeo--multi-select:reconcile`, carrying the same `values` detail.
41
51
  * - The chips are one roving Tab stop: `ArrowLeft`/`ArrowRight` move between them,
42
52
  * `Delete`/`Backspace` remove the focused chip, and `Backspace` on an empty
43
- * input removes the last; removal re-homes focus to a neighbor or the input.
44
- * - `max` caps the selection (`0` = unlimited).
53
+ * input removes the last and keeps input focus; removal from a chip re-homes
54
+ * focus to a neighbor or the input.
55
+ * - `max` is a permanent selection invariant across initial markup, interaction,
56
+ * runtime options, and runtime cap changes (`0` = unlimited).
45
57
  * - With a `fields` target the selected values are mirrored into named hidden
46
58
  * inputs (default name `options[]`), so the selection submits with a normal
47
59
  * form and no consumer JS — parity with {@link TagsInputController}. An optional
@@ -65,27 +77,37 @@ declare class MultiSelectController extends Controller<HTMLElement> {
65
77
  type: StringConstructor;
66
78
  default: string;
67
79
  };
80
+ announceText: {
81
+ type: StringConstructor;
82
+ default: string;
83
+ };
84
+ announceRemovedText: {
85
+ type: StringConstructor;
86
+ default: string;
87
+ };
68
88
  };
69
89
  static actions: readonly ["close", "filter", "onKeydown", "open", "toggleOption"];
70
- static events: readonly ["change", "filter"];
90
+ static events: readonly ["change", "filter", "reconcile"];
71
91
  readonly inputTarget: HTMLInputElement;
72
92
  readonly listTarget: HTMLElement;
73
93
  readonly optionTargets: HTMLElement[];
74
94
  readonly tagsTarget: HTMLElement;
75
95
  readonly tagTargets: HTMLElement[];
76
96
  readonly tagTemplateTarget: HTMLTemplateElement;
77
- readonly statusTarget: HTMLElement;
97
+ readonly labelTargets: HTMLElement[];
98
+ readonly removeTargets: HTMLButtonElement[];
78
99
  readonly fieldsTarget: HTMLElement;
79
100
  readonly hasListTarget: boolean;
80
101
  readonly hasInputTarget: boolean;
81
102
  readonly hasTagsTarget: boolean;
82
103
  readonly hasTagTemplateTarget: boolean;
83
- readonly hasStatusTarget: boolean;
84
104
  readonly hasFieldsTarget: boolean;
85
105
  maxValue: number;
86
106
  nameValue: string;
87
107
  formValue: string;
88
108
  readonly hasFormValue: boolean;
109
+ announceTextValue: string;
110
+ announceRemovedTextValue: string;
89
111
  /** Starts closed, syncs chips for any pre-selected options, and listens out. */
90
112
  connect(): void;
91
113
  /** Tears down document and chip listeners on disconnect (Turbo included). */
@@ -94,6 +116,18 @@ declare class MultiSelectController extends Controller<HTMLElement> {
94
116
  optionTargetConnected(): void;
95
117
  /** Cleans a removed target and reconciles active state against the surviving DOM. */
96
118
  optionTargetDisconnected(option: HTMLElement): void;
119
+ /** Rebinds delegated chip interaction when Turbo replaces the tags container. */
120
+ tagsTargetConnected(tags: HTMLElement): void;
121
+ /** Releases only the row that actually disconnected, never a newer replacement. */
122
+ tagsTargetDisconnected(tags: HTMLElement): void;
123
+ /** Seeds a fields target inserted after connect from the current selection. */
124
+ fieldsTargetConnected(): void;
125
+ /** Reconciles a runtime max change, including dropping any newly invalid overflow. */
126
+ maxValueChanged(): void;
127
+ /** Rebuilds submitted fields when their public name changes at runtime. */
128
+ nameValueChanged(): void;
129
+ /** Rebuilds submitted fields when their associated form changes at runtime. */
130
+ formValueChanged(): void;
97
131
  /**
98
132
  * Tracks an input added initially or after connect, and makes it describe the
99
133
  * widget that is actually on screen: a swapped-in input arrives with the