stimeo-ui 0.16.0 → 0.17.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 (328) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +8 -1
  3. package/dist/cable/index.d.ts +79 -23
  4. package/dist/cable/index.js +363 -436
  5. package/dist/cable/index.js.map +1 -1
  6. package/dist/controllers/accordion_controller.d.ts +4 -2
  7. package/dist/controllers/accordion_controller.js +166 -55
  8. package/dist/controllers/accordion_controller.js.map +1 -1
  9. package/dist/controllers/alert_dialog_controller.d.ts +12 -2
  10. package/dist/controllers/alert_dialog_controller.js +862 -221
  11. package/dist/controllers/alert_dialog_controller.js.map +1 -1
  12. package/dist/controllers/announcer_controller.d.ts +35 -5
  13. package/dist/controllers/announcer_controller.js +135 -198
  14. package/dist/controllers/announcer_controller.js.map +1 -1
  15. package/dist/controllers/aspect_ratio_controller.js +0 -10
  16. package/dist/controllers/aspect_ratio_controller.js.map +1 -1
  17. package/dist/controllers/auto_submit_controller.d.ts +30 -6
  18. package/dist/controllers/auto_submit_controller.js +271 -127
  19. package/dist/controllers/auto_submit_controller.js.map +1 -1
  20. package/dist/controllers/avatar_controller.js +171 -105
  21. package/dist/controllers/avatar_controller.js.map +1 -1
  22. package/dist/controllers/breadcrumb_controller.js +0 -130
  23. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  24. package/dist/controllers/bulk_select_controller.d.ts +18 -0
  25. package/dist/controllers/bulk_select_controller.js +262 -52
  26. package/dist/controllers/bulk_select_controller.js.map +1 -1
  27. package/dist/controllers/calendar_controller.d.ts +24 -5
  28. package/dist/controllers/calendar_controller.js +175 -209
  29. package/dist/controllers/calendar_controller.js.map +1 -1
  30. package/dist/controllers/carousel_controller.d.ts +34 -7
  31. package/dist/controllers/carousel_controller.js +461 -399
  32. package/dist/controllers/carousel_controller.js.map +1 -1
  33. package/dist/controllers/character_counter_controller.d.ts +17 -1
  34. package/dist/controllers/character_counter_controller.js +246 -156
  35. package/dist/controllers/character_counter_controller.js.map +1 -1
  36. package/dist/controllers/checkbox_controller.d.ts +7 -2
  37. package/dist/controllers/checkbox_controller.js +32 -74
  38. package/dist/controllers/checkbox_controller.js.map +1 -1
  39. package/dist/controllers/clipboard_controller.d.ts +16 -5
  40. package/dist/controllers/clipboard_controller.js +168 -147
  41. package/dist/controllers/clipboard_controller.js.map +1 -1
  42. package/dist/controllers/collapsible_controller.d.ts +16 -4
  43. package/dist/controllers/collapsible_controller.js +301 -120
  44. package/dist/controllers/collapsible_controller.js.map +1 -1
  45. package/dist/controllers/color_picker_controller.d.ts +18 -6
  46. package/dist/controllers/color_picker_controller.js +149 -139
  47. package/dist/controllers/color_picker_controller.js.map +1 -1
  48. package/dist/controllers/combobox_controller.d.ts +23 -5
  49. package/dist/controllers/combobox_controller.js +360 -133
  50. package/dist/controllers/combobox_controller.js.map +1 -1
  51. package/dist/controllers/command_palette_controller.d.ts +45 -14
  52. package/dist/controllers/command_palette_controller.js +970 -358
  53. package/dist/controllers/command_palette_controller.js.map +1 -1
  54. package/dist/controllers/conditional_fields_controller.d.ts +15 -2
  55. package/dist/controllers/conditional_fields_controller.js +166 -124
  56. package/dist/controllers/conditional_fields_controller.js.map +1 -1
  57. package/dist/controllers/confirm_controller.d.ts +49 -12
  58. package/dist/controllers/confirm_controller.js +939 -248
  59. package/dist/controllers/confirm_controller.js.map +1 -1
  60. package/dist/controllers/context_menu_controller.d.ts +31 -4
  61. package/dist/controllers/context_menu_controller.js +256 -128
  62. package/dist/controllers/context_menu_controller.js.map +1 -1
  63. package/dist/controllers/count_up_controller.d.ts +13 -1
  64. package/dist/controllers/count_up_controller.js +73 -21
  65. package/dist/controllers/count_up_controller.js.map +1 -1
  66. package/dist/controllers/countdown_controller.d.ts +45 -1
  67. package/dist/controllers/countdown_controller.js +183 -148
  68. package/dist/controllers/countdown_controller.js.map +1 -1
  69. package/dist/controllers/currency_input_controller.d.ts +21 -2
  70. package/dist/controllers/currency_input_controller.js +134 -158
  71. package/dist/controllers/currency_input_controller.js.map +1 -1
  72. package/dist/controllers/data_grid_controller.d.ts +15 -4
  73. package/dist/controllers/data_grid_controller.js +114 -186
  74. package/dist/controllers/data_grid_controller.js.map +1 -1
  75. package/dist/controllers/date_range_picker_controller.d.ts +30 -5
  76. package/dist/controllers/date_range_picker_controller.js +288 -206
  77. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  78. package/dist/controllers/dialog_controller.d.ts +13 -1
  79. package/dist/controllers/dialog_controller.js +858 -223
  80. package/dist/controllers/dialog_controller.js.map +1 -1
  81. package/dist/controllers/direct_upload_controller.d.ts +24 -7
  82. package/dist/controllers/direct_upload_controller.js +73 -153
  83. package/dist/controllers/direct_upload_controller.js.map +1 -1
  84. package/dist/controllers/dirty_form_controller.js +14 -48
  85. package/dist/controllers/dirty_form_controller.js.map +1 -1
  86. package/dist/controllers/dismissible_controller.d.ts +19 -0
  87. package/dist/controllers/dismissible_controller.js +175 -21
  88. package/dist/controllers/dismissible_controller.js.map +1 -1
  89. package/dist/controllers/drawer_controller.d.ts +39 -11
  90. package/dist/controllers/drawer_controller.js +933 -341
  91. package/dist/controllers/drawer_controller.js.map +1 -1
  92. package/dist/controllers/dropdown_controller.d.ts +31 -1
  93. package/dist/controllers/dropdown_controller.js +312 -82
  94. package/dist/controllers/dropdown_controller.js.map +1 -1
  95. package/dist/controllers/editable_controller.d.ts +12 -1
  96. package/dist/controllers/editable_controller.js +158 -68
  97. package/dist/controllers/editable_controller.js.map +1 -1
  98. package/dist/controllers/empty_state_controller.js +67 -53
  99. package/dist/controllers/empty_state_controller.js.map +1 -1
  100. package/dist/controllers/file_dropzone_controller.d.ts +60 -18
  101. package/dist/controllers/file_dropzone_controller.js +311 -207
  102. package/dist/controllers/file_dropzone_controller.js.map +1 -1
  103. package/dist/controllers/filter_controller.js +67 -39
  104. package/dist/controllers/filter_controller.js.map +1 -1
  105. package/dist/controllers/flash_controller.d.ts +31 -8
  106. package/dist/controllers/flash_controller.js +172 -314
  107. package/dist/controllers/flash_controller.js.map +1 -1
  108. package/dist/controllers/focus_controller.d.ts +12 -3
  109. package/dist/controllers/focus_controller.js +654 -240
  110. package/dist/controllers/focus_controller.js.map +1 -1
  111. package/dist/controllers/form_field_controller.js +147 -132
  112. package/dist/controllers/form_field_controller.js.map +1 -1
  113. package/dist/controllers/form_validation_controller.js +13 -86
  114. package/dist/controllers/form_validation_controller.js.map +1 -1
  115. package/dist/controllers/frame_loading_controller.d.ts +41 -9
  116. package/dist/controllers/frame_loading_controller.js +264 -213
  117. package/dist/controllers/frame_loading_controller.js.map +1 -1
  118. package/dist/controllers/highlight_controller.d.ts +22 -2
  119. package/dist/controllers/highlight_controller.js +107 -75
  120. package/dist/controllers/highlight_controller.js.map +1 -1
  121. package/dist/controllers/hover_card_controller.d.ts +56 -3
  122. package/dist/controllers/hover_card_controller.js +309 -118
  123. package/dist/controllers/hover_card_controller.js.map +1 -1
  124. package/dist/controllers/idle_controller.d.ts +42 -1
  125. package/dist/controllers/idle_controller.js +267 -101
  126. package/dist/controllers/idle_controller.js.map +1 -1
  127. package/dist/controllers/input_mask_controller.js +71 -72
  128. package/dist/controllers/input_mask_controller.js.map +1 -1
  129. package/dist/controllers/intersection_controller.d.ts +32 -13
  130. package/dist/controllers/intersection_controller.js +147 -106
  131. package/dist/controllers/intersection_controller.js.map +1 -1
  132. package/dist/controllers/lazy_frame_controller.d.ts +16 -0
  133. package/dist/controllers/lazy_frame_controller.js +9 -65
  134. package/dist/controllers/lazy_frame_controller.js.map +1 -1
  135. package/dist/controllers/listbox_controller.d.ts +34 -2
  136. package/dist/controllers/listbox_controller.js +306 -204
  137. package/dist/controllers/listbox_controller.js.map +1 -1
  138. package/dist/controllers/local_time_controller.d.ts +1 -1
  139. package/dist/controllers/local_time_controller.js +54 -64
  140. package/dist/controllers/local_time_controller.js.map +1 -1
  141. package/dist/controllers/masonry_controller.d.ts +11 -3
  142. package/dist/controllers/masonry_controller.js +70 -93
  143. package/dist/controllers/masonry_controller.js.map +1 -1
  144. package/dist/controllers/menu_controller.d.ts +32 -7
  145. package/dist/controllers/menu_controller.js +214 -156
  146. package/dist/controllers/menu_controller.js.map +1 -1
  147. package/dist/controllers/menubar_controller.d.ts +4 -4
  148. package/dist/controllers/menubar_controller.js +170 -329
  149. package/dist/controllers/menubar_controller.js.map +1 -1
  150. package/dist/controllers/meter_controller.d.ts +20 -0
  151. package/dist/controllers/meter_controller.js +151 -67
  152. package/dist/controllers/meter_controller.js.map +1 -1
  153. package/dist/controllers/multi_select_controller.d.ts +32 -4
  154. package/dist/controllers/multi_select_controller.js +593 -358
  155. package/dist/controllers/multi_select_controller.js.map +1 -1
  156. package/dist/controllers/navigation_menu_controller.d.ts +8 -1
  157. package/dist/controllers/navigation_menu_controller.js +124 -232
  158. package/dist/controllers/navigation_menu_controller.js.map +1 -1
  159. package/dist/controllers/nested_form_controller.d.ts +10 -0
  160. package/dist/controllers/nested_form_controller.js +352 -182
  161. package/dist/controllers/nested_form_controller.js.map +1 -1
  162. package/dist/controllers/network_status_controller.d.ts +23 -0
  163. package/dist/controllers/network_status_controller.js +242 -54
  164. package/dist/controllers/network_status_controller.js.map +1 -1
  165. package/dist/controllers/number_input_controller.d.ts +26 -2
  166. package/dist/controllers/number_input_controller.js +320 -263
  167. package/dist/controllers/number_input_controller.js.map +1 -1
  168. package/dist/controllers/optimistic_controller.js +16 -76
  169. package/dist/controllers/optimistic_controller.js.map +1 -1
  170. package/dist/controllers/otp_controller.d.ts +20 -4
  171. package/dist/controllers/otp_controller.js +198 -193
  172. package/dist/controllers/otp_controller.js.map +1 -1
  173. package/dist/controllers/overflow_indicator_controller.d.ts +5 -0
  174. package/dist/controllers/overflow_indicator_controller.js +116 -113
  175. package/dist/controllers/overflow_indicator_controller.js.map +1 -1
  176. package/dist/controllers/overflow_menu_controller.d.ts +48 -11
  177. package/dist/controllers/overflow_menu_controller.js +343 -283
  178. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  179. package/dist/controllers/pagination_controller.d.ts +35 -6
  180. package/dist/controllers/pagination_controller.js +295 -119
  181. package/dist/controllers/pagination_controller.js.map +1 -1
  182. package/dist/controllers/password_reveal_controller.d.ts +45 -8
  183. package/dist/controllers/password_reveal_controller.js +389 -121
  184. package/dist/controllers/password_reveal_controller.js.map +1 -1
  185. package/dist/controllers/password_strength_controller.d.ts +14 -5
  186. package/dist/controllers/password_strength_controller.js +99 -153
  187. package/dist/controllers/password_strength_controller.js.map +1 -1
  188. package/dist/controllers/persist_controller.d.ts +11 -4
  189. package/dist/controllers/persist_controller.js +237 -103
  190. package/dist/controllers/persist_controller.js.map +1 -1
  191. package/dist/controllers/pointer_drag_controller.d.ts +19 -7
  192. package/dist/controllers/pointer_drag_controller.js +185 -165
  193. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  194. package/dist/controllers/popover_controller.d.ts +38 -2
  195. package/dist/controllers/popover_controller.js +236 -97
  196. package/dist/controllers/popover_controller.js.map +1 -1
  197. package/dist/controllers/portal_controller.d.ts +44 -4
  198. package/dist/controllers/portal_controller.js +209 -76
  199. package/dist/controllers/portal_controller.js.map +1 -1
  200. package/dist/controllers/preview_guard_controller.d.ts +10 -4
  201. package/dist/controllers/preview_guard_controller.js +232 -116
  202. package/dist/controllers/preview_guard_controller.js.map +1 -1
  203. package/dist/controllers/progress_controller.d.ts +11 -0
  204. package/dist/controllers/progress_controller.js +125 -56
  205. package/dist/controllers/progress_controller.js.map +1 -1
  206. package/dist/controllers/radio_group_controller.d.ts +14 -5
  207. package/dist/controllers/radio_group_controller.js +117 -137
  208. package/dist/controllers/radio_group_controller.js.map +1 -1
  209. package/dist/controllers/range_slider_controller.d.ts +43 -3
  210. package/dist/controllers/range_slider_controller.js +192 -105
  211. package/dist/controllers/range_slider_controller.js.map +1 -1
  212. package/dist/controllers/rating_controller.d.ts +20 -4
  213. package/dist/controllers/rating_controller.js +418 -207
  214. package/dist/controllers/rating_controller.js.map +1 -1
  215. package/dist/controllers/read_more_controller.d.ts +2 -0
  216. package/dist/controllers/read_more_controller.js +134 -63
  217. package/dist/controllers/read_more_controller.js.map +1 -1
  218. package/dist/controllers/reading_progress_controller.d.ts +1 -1
  219. package/dist/controllers/reading_progress_controller.js +147 -135
  220. package/dist/controllers/reading_progress_controller.js.map +1 -1
  221. package/dist/controllers/relative_time_controller.d.ts +18 -4
  222. package/dist/controllers/relative_time_controller.js +145 -110
  223. package/dist/controllers/relative_time_controller.js.map +1 -1
  224. package/dist/controllers/reset_on_restore_controller.d.ts +85 -0
  225. package/dist/controllers/{reset_before_cache_controller.js → reset_on_restore_controller.js} +97 -38
  226. package/dist/controllers/reset_on_restore_controller.js.map +1 -0
  227. package/dist/controllers/resizable_controller.d.ts +28 -2
  228. package/dist/controllers/resizable_controller.js +255 -139
  229. package/dist/controllers/resizable_controller.js.map +1 -1
  230. package/dist/controllers/roving_controller.js +39 -84
  231. package/dist/controllers/roving_controller.js.map +1 -1
  232. package/dist/controllers/scroll_area_controller.d.ts +7 -3
  233. package/dist/controllers/scroll_area_controller.js +428 -225
  234. package/dist/controllers/scroll_area_controller.js.map +1 -1
  235. package/dist/controllers/scroll_restore_controller.js +0 -53
  236. package/dist/controllers/scroll_restore_controller.js.map +1 -1
  237. package/dist/controllers/scroll_visibility_controller.d.ts +28 -12
  238. package/dist/controllers/scroll_visibility_controller.js +395 -145
  239. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  240. package/dist/controllers/scrollspy_controller.d.ts +6 -1
  241. package/dist/controllers/scrollspy_controller.js +181 -242
  242. package/dist/controllers/scrollspy_controller.js.map +1 -1
  243. package/dist/controllers/separator_controller.d.ts +19 -4
  244. package/dist/controllers/separator_controller.js +267 -140
  245. package/dist/controllers/separator_controller.js.map +1 -1
  246. package/dist/controllers/sidebar_controller.d.ts +64 -7
  247. package/dist/controllers/sidebar_controller.js +1023 -386
  248. package/dist/controllers/sidebar_controller.js.map +1 -1
  249. package/dist/controllers/skeleton_controller.d.ts +23 -0
  250. package/dist/controllers/skeleton_controller.js +248 -97
  251. package/dist/controllers/skeleton_controller.js.map +1 -1
  252. package/dist/controllers/slider_controller.d.ts +27 -1
  253. package/dist/controllers/slider_controller.js +159 -79
  254. package/dist/controllers/slider_controller.js.map +1 -1
  255. package/dist/controllers/smart_sticky_header_controller.d.ts +21 -3
  256. package/dist/controllers/smart_sticky_header_controller.js +162 -63
  257. package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
  258. package/dist/controllers/sortable_controller.js +0 -112
  259. package/dist/controllers/sortable_controller.js.map +1 -1
  260. package/dist/controllers/spinner_controller.d.ts +39 -4
  261. package/dist/controllers/spinner_controller.js +277 -169
  262. package/dist/controllers/spinner_controller.js.map +1 -1
  263. package/dist/controllers/step_indicator_controller.d.ts +5 -0
  264. package/dist/controllers/step_indicator_controller.js +99 -46
  265. package/dist/controllers/step_indicator_controller.js.map +1 -1
  266. package/dist/controllers/stepper_controller.d.ts +12 -3
  267. package/dist/controllers/stepper_controller.js +114 -73
  268. package/dist/controllers/stepper_controller.js.map +1 -1
  269. package/dist/controllers/stick_to_bottom_controller.d.ts +6 -0
  270. package/dist/controllers/stick_to_bottom_controller.js +262 -138
  271. package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
  272. package/dist/controllers/sticky_observer_controller.d.ts +11 -0
  273. package/dist/controllers/sticky_observer_controller.js +214 -49
  274. package/dist/controllers/sticky_observer_controller.js.map +1 -1
  275. package/dist/controllers/submit_once_controller.d.ts +23 -8
  276. package/dist/controllers/submit_once_controller.js +294 -205
  277. package/dist/controllers/submit_once_controller.js.map +1 -1
  278. package/dist/controllers/switch_controller.d.ts +12 -1
  279. package/dist/controllers/switch_controller.js +33 -60
  280. package/dist/controllers/switch_controller.js.map +1 -1
  281. package/dist/controllers/tabs_controller.d.ts +2 -2
  282. package/dist/controllers/tabs_controller.js +35 -29
  283. package/dist/controllers/tabs_controller.js.map +1 -1
  284. package/dist/controllers/tags_input_controller.d.ts +12 -0
  285. package/dist/controllers/tags_input_controller.js +136 -145
  286. package/dist/controllers/tags_input_controller.js.map +1 -1
  287. package/dist/controllers/textarea_autosize_controller.d.ts +10 -0
  288. package/dist/controllers/textarea_autosize_controller.js +71 -58
  289. package/dist/controllers/textarea_autosize_controller.js.map +1 -1
  290. package/dist/controllers/theme_controller.d.ts +21 -9
  291. package/dist/controllers/theme_controller.js +130 -112
  292. package/dist/controllers/theme_controller.js.map +1 -1
  293. package/dist/controllers/time_picker_controller.d.ts +18 -1
  294. package/dist/controllers/time_picker_controller.js +146 -80
  295. package/dist/controllers/time_picker_controller.js.map +1 -1
  296. package/dist/controllers/toast_controller.d.ts +36 -11
  297. package/dist/controllers/toast_controller.js +186 -297
  298. package/dist/controllers/toast_controller.js.map +1 -1
  299. package/dist/controllers/toggle_group_controller.d.ts +12 -3
  300. package/dist/controllers/toggle_group_controller.js +95 -136
  301. package/dist/controllers/toggle_group_controller.js.map +1 -1
  302. package/dist/controllers/toolbar_controller.js +68 -98
  303. package/dist/controllers/toolbar_controller.js.map +1 -1
  304. package/dist/controllers/tooltip_controller.d.ts +45 -3
  305. package/dist/controllers/tooltip_controller.js +158 -124
  306. package/dist/controllers/tooltip_controller.js.map +1 -1
  307. package/dist/controllers/transition_controller.d.ts +22 -4
  308. package/dist/controllers/transition_controller.js +123 -119
  309. package/dist/controllers/transition_controller.js.map +1 -1
  310. package/dist/controllers/tree_view_controller.d.ts +21 -11
  311. package/dist/controllers/tree_view_controller.js +150 -345
  312. package/dist/controllers/tree_view_controller.js.map +1 -1
  313. package/dist/index.d.ts +8 -5
  314. package/dist/index.js +6370 -9346
  315. package/dist/index.js.map +1 -1
  316. package/dist/inspector/cli.d.ts +23 -3
  317. package/dist/inspector/cli.js +92 -37
  318. package/dist/inspector/cli.js.map +1 -1
  319. package/dist/inspector/cli_bin.js +92 -56
  320. package/dist/inspector/cli_bin.js.map +1 -1
  321. package/dist/inspector/examples.json +8 -8
  322. package/dist/inspector/manifest.json +787 -100
  323. package/dist/positioning/index.d.ts +8 -0
  324. package/dist/positioning/index.js +148 -47
  325. package/dist/positioning/index.js.map +1 -1
  326. package/package.json +6 -6
  327. package/dist/controllers/reset_before_cache_controller.d.ts +0 -76
  328. package/dist/controllers/reset_before_cache_controller.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
  While the version is `0.x`, the public API (the `stimeo--*` data attributes) may
8
8
  change between releases.
9
9
 
10
+ ## [Unreleased]
11
+
12
+ ## [0.17.0] - 2026-10-04
13
+
14
+ ### Changed
15
+
16
+ - **Breaking** Replace `reset-before-cache` with `reset-on-restore` (class, export,
17
+ and subpath).
18
+ Reset runs on restoration; remove `dispatchReset` and `:request` bindings.
19
+ Restored drawers and command palettes start closed.
20
+ - **Breaking** Rename calendar, combobox, and command-palette `selectByClick`, and
21
+ tree-view `onClick`, to `select`; replace calendar `selectDayElement` with
22
+ `select(element)`.
23
+ Accordion `toggle`, theme `set`, and scrollspy `scrollTo` require owned targets.
24
+ - **Breaking** State events are silent for unchanged state and superseded pending
25
+ reports.
26
+ For child edits within partial checkbox groups, use the children's native `change`.
27
+ Number Values and action params enforce finite values and their declared domains.
28
+ Update Inspector integrations to schema v15 and run `stimeo check` before deploying.
29
+ - Target actions accept owned elements; user state reports include `detail.reason`.
30
+ Toast duration, persist debounce, and count-up duration changes apply to the next
31
+ operation. Portal destination changes update mounts; Cable params cannot replace
32
+ the declared channel.
33
+
34
+ ### Fixed
35
+
36
+ - Preserve live state across Turbo caching, repair derived state after retained
37
+ morphs, and restore focus reliably across nested layers and Shadow DOM.
38
+
10
39
  ## [0.16.0] - 2026-09-26
11
40
 
12
41
  Minor release with no new components. Widgets now report their own state
@@ -1278,6 +1307,8 @@ Initial public alpha: 101 behavior-only, accessible Stimulus controllers driven
1278
1307
  by `data-*` attributes, shipping no CSS. Published to npm (with provenance) and
1279
1308
  RubyGems.
1280
1309
 
1310
+ [Unreleased]: https://github.com/taiyaky/stimeo-ui/compare/v0.17.0...HEAD
1311
+ [0.17.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.17.0
1281
1312
  [0.16.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.16.0
1282
1313
  [0.15.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.15.0
1283
1314
  [0.14.0]: https://github.com/taiyaky/stimeo-ui/releases/tag/v0.14.0
package/README.md CHANGED
@@ -62,7 +62,14 @@ registerStimeo(application); // registers every stimeo--* controller
62
62
  ```
63
63
 
64
64
  Need only a few controllers? Import them individually from
65
- `stimeo-ui/controllers/*` and register them under your own identifiers.
65
+ `stimeo-ui/controllers/*` and register them under your own identifiers. Each
66
+ file loads on its own, yet the coordination between components — which layer
67
+ Escape closes, a focus trap's `Tab` and background, the value two components
68
+ lend the same attribute — is kept once per page, whichever files the
69
+ controllers came from, `stimeo-ui` itself included.
70
+ Copies of the same controller also share dirty-form confirmations, highlight
71
+ deadlines and portal origins. Opt-in Cable copies share the consumer, subscriptions
72
+ and peer departure decisions; generated ARIA ids stay distinct across copies too.
66
73
 
67
74
  - **Peer dependencies:** `@hotwired/stimulus` (always), `@floating-ui/dom` (only
68
75
  if you use the opt-in `stimeo-ui/positioning` module — tooltips, popovers, etc.
@@ -62,9 +62,10 @@ import { Controller, Application } from '@hotwired/stimulus';
62
62
  * (local-only) counters never disable their triggers. `announceText` is opt-in
63
63
  * and empty by default; when set, reconciled counts reach the page's shared
64
64
  * announcer, debounced so a burst is one message. The subscription follows the
65
- * declaration — a `channel` or `params` change moves it — and is released on
66
- * `disconnect()` (Turbo navigation included) along with any pending
67
- * announcement.
65
+ * declaration — a `channel` or `params` change moves it, once per batch of
66
+ * changes and only when the identifier they name differs from the one it was
67
+ * opened for — and is released on `disconnect()` (Turbo navigation included)
68
+ * along with any pending announcement.
68
69
  */
69
70
  declare class LiveCounterController extends Controller<HTMLElement> {
70
71
  #private;
@@ -96,13 +97,7 @@ declare class LiveCounterController extends Controller<HTMLElement> {
96
97
  paramsValue: string;
97
98
  idValue: string;
98
99
  announceTextValue: string;
99
- /**
100
- * Re-parses the identifier parameters and moves the subscription to the
101
- * identifier they now name.
102
- *
103
- * A malformed declaration falls back to no parameters, so the identifier keeps
104
- * naming the channel instead of the subscription never being created at all.
105
- */
100
+ /** Moves the subscription to the identifier the parameters now name. */
106
101
  paramsValueChanged(): void;
107
102
  /** Moves the subscription when the declaration names a different channel. */
108
103
  channelValueChanged(): void;
@@ -197,6 +192,22 @@ declare class LiveCounterController extends Controller<HTMLElement> {
197
192
  * Stream or a morph arrives empty and is drawn from the roster as it connects; the subscription, heartbeat interval,
198
193
  * per-peer expiry timers, and the `pagehide` listener are all released on
199
194
  * `disconnect()` (Turbo navigation included).
195
+ *
196
+ * The live resources follow the declaration; Values changed together move them
197
+ * once, after the batch, and nothing moves before `connect()` or after
198
+ * `disconnect()`. A `channel` or `params` change moves the subscription: the room
199
+ * being left gets the leaving notice under the same rules as `disconnect()`
200
+ * (confirmed, an own `id`, the last voice for it), and its roster, expiry timers,
201
+ * pending beacon and announcement, throttle window and rejected hook are dropped
202
+ * without an event, as a fresh connection would, since none of them is a fact of
203
+ * the new room. An `id` change keeps the subscription and its roster: the old id's
204
+ * voice is released once (the last voice leaves), the new id beacons at once —
205
+ * which also stands in for a convergence answer still queued — and a peer already
206
+ * listed under the new id is this client now, so it stops being counted without a
207
+ * `leave`: it went nowhere. A `heartbeat` change re-arms the running interval,
208
+ * counted from the change. `timeout` arms each peer's expiry when its beacon
209
+ * arrives, so a change applies from that peer's next beacon and never moves a
210
+ * deadline already set.
200
211
  */
201
212
  declare class PresenceController extends Controller<HTMLElement> {
202
213
  #private;
@@ -235,6 +246,18 @@ declare class PresenceController extends Controller<HTMLElement> {
235
246
  default: string;
236
247
  };
237
248
  };
249
+ static valueConstraints: {
250
+ heartbeat: {
251
+ readonly finite: true;
252
+ readonly exclusiveMin: 0;
253
+ readonly max: 2147483647;
254
+ };
255
+ timeout: {
256
+ readonly finite: true;
257
+ readonly exclusiveMin: 0;
258
+ readonly max: 2147483647;
259
+ };
260
+ };
238
261
  static events: readonly ["join", "leave", "change"];
239
262
  readonly hasCountTarget: boolean;
240
263
  readonly countTarget: HTMLElement;
@@ -250,13 +273,14 @@ declare class PresenceController extends Controller<HTMLElement> {
250
273
  timeoutValue: number;
251
274
  announceJoinTextValue: string;
252
275
  announceLeaveTextValue: string;
253
- /**
254
- * Re-parses the identifier parameters when the declaration changes.
255
- *
256
- * A malformed declaration falls back to no parameters, so the identifier keeps
257
- * naming the channel instead of the subscription never being created at all.
258
- */
276
+ /** Moves the subscription to the declared channel. */
277
+ channelValueChanged(): void;
278
+ /** Moves the subscription to the identifier the parameters name. */
259
279
  paramsValueChanged(): void;
280
+ /** Moves this element's voice to the declared id. */
281
+ idValueChanged(): void;
282
+ /** Re-arms a running heartbeat on the declared period. */
283
+ heartbeatValueChanged(): void;
260
284
  /**
261
285
  * Draws the roster into a list target, which arrives empty from a Turbo Stream
262
286
  * replacement or a morph. Stimulus runs this before `connect()` on the first mount
@@ -264,8 +288,12 @@ declare class PresenceController extends Controller<HTMLElement> {
264
288
  * preserved is what `connect()` goes on to do anyway.
265
289
  */
266
290
  listTargetConnected(): void;
291
+ /** Draws the roster into the list target that stays when an earlier one leaves. */
292
+ listTargetDisconnected(): void;
267
293
  /** Paints the roster size into a count target that arrives blank, for the same reason. */
268
294
  countTargetConnected(): void;
295
+ /** Paints the roster size into the count target that stays when an earlier one leaves. */
296
+ countTargetDisconnected(): void;
269
297
  connect(): void;
270
298
  disconnect(): void;
271
299
  }
@@ -324,6 +352,22 @@ declare class PresenceController extends Controller<HTMLElement> {
324
352
  * from the stream. The subscription, the per-typer timers, and the delegated
325
353
  * `input` listener are all released on `disconnect()` (Turbo navigation
326
354
  * included).
355
+ *
356
+ * The declared `channel` names the subscription: `params` *adds* identifier
357
+ * parameters except `channel`, which is ignored. Without a declared channel
358
+ * nothing is subscribed whatever `params` holds.
359
+ *
360
+ * The subscription follows the declaration: a `channel` or `params` change moves
361
+ * it — once, after the batch, however many of the two changed together, and never
362
+ * before `connect()` or after `disconnect()` — and drops the typers, their expiry
363
+ * timers, a pending announcement, the throttle window and the rejected hook
364
+ * without an event, as a fresh connection would, since none of them is a fact of
365
+ * the new room. A `name` change keeps the subscription and the typers, except one
366
+ * shown under the new name: that is this client now, so it is dropped with its
367
+ * expiry and the display redrawn, without a `change` — it did not stop typing.
368
+ * The own echo is still filtered by the current `name`. `timeout` arms each
369
+ * typer's expiry when its signal arrives, so a change applies from that typer's
370
+ * next signal and never moves a deadline already set.
327
371
  */
328
372
  declare class TypingIndicatorController extends Controller<HTMLElement> {
329
373
  #private;
@@ -358,6 +402,17 @@ declare class TypingIndicatorController extends Controller<HTMLElement> {
358
402
  default: string;
359
403
  };
360
404
  };
405
+ static valueConstraints: {
406
+ timeout: {
407
+ readonly finite: true;
408
+ readonly min: 0;
409
+ readonly max: 2147483647;
410
+ };
411
+ throttle: {
412
+ readonly finite: true;
413
+ readonly min: 0;
414
+ };
415
+ };
361
416
  static events: readonly ["change"];
362
417
  readonly hasStatusTarget: boolean;
363
418
  readonly statusTarget: HTMLElement;
@@ -368,22 +423,23 @@ declare class TypingIndicatorController extends Controller<HTMLElement> {
368
423
  throttleValue: number;
369
424
  announceOneTextValue: string;
370
425
  announceManyTextValue: string;
371
- /**
372
- * Re-parses the identifier parameters when the declaration changes.
373
- *
374
- * A malformed declaration falls back to no parameters, so the identifier keeps
375
- * naming the channel instead of the subscription never being created at all.
376
- */
426
+ /** Moves the subscription to the declared channel. */
427
+ channelValueChanged(): void;
428
+ /** Moves the subscription to the identifier the parameters name. */
377
429
  paramsValueChanged(): void;
430
+ /** Stops showing a typer under the name this client now declares. */
431
+ nameValueChanged(): void;
378
432
  /**
379
433
  * Paints the current copy into a `status` target that arrived at runtime.
380
434
  *
381
435
  * No event: the set of typers did not change, only the element that displays it.
382
436
  * Without this a region swapped in mid-conversation stays empty while `data-typing`
383
437
  * still says someone is typing, leaving the state in the visual hook alone. An empty
384
- * set needs no paint — a fresh region already shows it.
438
+ * set paints the empty copy, so a region that arrives with an old one is cleared.
385
439
  */
386
440
  statusTargetConnected(): void;
441
+ /** Paints the current copy, empty when nobody types, into the `status` target that stays. */
442
+ statusTargetDisconnected(): void;
387
443
  connect(): void;
388
444
  disconnect(): void;
389
445
  }