stimeo-ui 0.17.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/CHANGELOG.md +136 -2
  2. package/README.md +19 -10
  3. package/dist/cable/index.d.ts +11 -9
  4. package/dist/cable/index.js +22 -14
  5. package/dist/cable/index.js.map +1 -1
  6. package/dist/coerce-JtZVNG5h.d.ts +20 -0
  7. package/dist/controllers/accordion_controller.js +14 -6
  8. package/dist/controllers/accordion_controller.js.map +1 -1
  9. package/dist/controllers/alert_dialog_controller.js +145 -118
  10. package/dist/controllers/alert_dialog_controller.js.map +1 -1
  11. package/dist/controllers/announcer_controller.d.ts +5 -3
  12. package/dist/controllers/announcer_controller.js +113 -17
  13. package/dist/controllers/announcer_controller.js.map +1 -1
  14. package/dist/controllers/auto_submit_controller.js +185 -60
  15. package/dist/controllers/auto_submit_controller.js.map +1 -1
  16. package/dist/controllers/avatar_controller.js +55 -43
  17. package/dist/controllers/avatar_controller.js.map +1 -1
  18. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  19. package/dist/controllers/bulk_select_controller.d.ts +3 -3
  20. package/dist/controllers/bulk_select_controller.js +64 -50
  21. package/dist/controllers/bulk_select_controller.js.map +1 -1
  22. package/dist/controllers/calendar_controller.d.ts +15 -12
  23. package/dist/controllers/calendar_controller.js +55 -53
  24. package/dist/controllers/calendar_controller.js.map +1 -1
  25. package/dist/controllers/carousel_controller.d.ts +9 -5
  26. package/dist/controllers/carousel_controller.js +124 -86
  27. package/dist/controllers/carousel_controller.js.map +1 -1
  28. package/dist/controllers/character_counter_controller.d.ts +27 -6
  29. package/dist/controllers/character_counter_controller.js +291 -95
  30. package/dist/controllers/character_counter_controller.js.map +1 -1
  31. package/dist/controllers/checkbox_controller.js +6 -0
  32. package/dist/controllers/checkbox_controller.js.map +1 -1
  33. package/dist/controllers/clipboard_controller.js +118 -27
  34. package/dist/controllers/clipboard_controller.js.map +1 -1
  35. package/dist/controllers/collapsible_controller.d.ts +1 -1
  36. package/dist/controllers/collapsible_controller.js +52 -49
  37. package/dist/controllers/collapsible_controller.js.map +1 -1
  38. package/dist/controllers/color_picker_controller.js +29 -7
  39. package/dist/controllers/color_picker_controller.js.map +1 -1
  40. package/dist/controllers/combobox_controller.d.ts +1 -1
  41. package/dist/controllers/combobox_controller.js +210 -71
  42. package/dist/controllers/combobox_controller.js.map +1 -1
  43. package/dist/controllers/command_palette_controller.d.ts +9 -9
  44. package/dist/controllers/command_palette_controller.js +290 -140
  45. package/dist/controllers/command_palette_controller.js.map +1 -1
  46. package/dist/controllers/conditional_fields_controller.js +145 -58
  47. package/dist/controllers/conditional_fields_controller.js.map +1 -1
  48. package/dist/controllers/confirm_controller.js +145 -118
  49. package/dist/controllers/confirm_controller.js.map +1 -1
  50. package/dist/controllers/context_menu_controller.d.ts +49 -14
  51. package/dist/controllers/context_menu_controller.js +138 -73
  52. package/dist/controllers/context_menu_controller.js.map +1 -1
  53. package/dist/controllers/count_up_controller.js.map +1 -1
  54. package/dist/controllers/countdown_controller.d.ts +2 -2
  55. package/dist/controllers/countdown_controller.js +109 -21
  56. package/dist/controllers/countdown_controller.js.map +1 -1
  57. package/dist/controllers/currency_input_controller.d.ts +75 -11
  58. package/dist/controllers/currency_input_controller.js +446 -72
  59. package/dist/controllers/currency_input_controller.js.map +1 -1
  60. package/dist/controllers/data_grid_controller.d.ts +10 -8
  61. package/dist/controllers/data_grid_controller.js +134 -28
  62. package/dist/controllers/data_grid_controller.js.map +1 -1
  63. package/dist/controllers/date_range_picker_controller.d.ts +12 -9
  64. package/dist/controllers/date_range_picker_controller.js +93 -72
  65. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  66. package/dist/controllers/dialog_controller.d.ts +4 -5
  67. package/dist/controllers/dialog_controller.js +145 -118
  68. package/dist/controllers/dialog_controller.js.map +1 -1
  69. package/dist/controllers/direct_upload_controller.d.ts +1 -1
  70. package/dist/controllers/direct_upload_controller.js +24 -14
  71. package/dist/controllers/direct_upload_controller.js.map +1 -1
  72. package/dist/controllers/dirty_form_controller.d.ts +6 -1
  73. package/dist/controllers/dirty_form_controller.js +68 -31
  74. package/dist/controllers/dirty_form_controller.js.map +1 -1
  75. package/dist/controllers/dismissible_controller.js +66 -46
  76. package/dist/controllers/dismissible_controller.js.map +1 -1
  77. package/dist/controllers/drawer_controller.js +145 -118
  78. package/dist/controllers/drawer_controller.js.map +1 -1
  79. package/dist/controllers/dropdown_controller.js +76 -63
  80. package/dist/controllers/dropdown_controller.js.map +1 -1
  81. package/dist/controllers/editable_controller.js +200 -62
  82. package/dist/controllers/editable_controller.js.map +1 -1
  83. package/dist/controllers/empty_state_controller.js +13 -6
  84. package/dist/controllers/empty_state_controller.js.map +1 -1
  85. package/dist/controllers/file_dropzone_controller.d.ts +3 -0
  86. package/dist/controllers/file_dropzone_controller.js +55 -48
  87. package/dist/controllers/file_dropzone_controller.js.map +1 -1
  88. package/dist/controllers/filter_controller.js +9 -2
  89. package/dist/controllers/filter_controller.js.map +1 -1
  90. package/dist/controllers/flash_controller.d.ts +4 -4
  91. package/dist/controllers/flash_controller.js +66 -33
  92. package/dist/controllers/flash_controller.js.map +1 -1
  93. package/dist/controllers/focus_controller.d.ts +3 -3
  94. package/dist/controllers/focus_controller.js +39 -14
  95. package/dist/controllers/focus_controller.js.map +1 -1
  96. package/dist/controllers/form_field_controller.d.ts +2 -1
  97. package/dist/controllers/form_field_controller.js +52 -43
  98. package/dist/controllers/form_field_controller.js.map +1 -1
  99. package/dist/controllers/form_validation_controller.d.ts +3 -3
  100. package/dist/controllers/form_validation_controller.js +18 -11
  101. package/dist/controllers/form_validation_controller.js.map +1 -1
  102. package/dist/controllers/frame_loading_controller.d.ts +13 -12
  103. package/dist/controllers/frame_loading_controller.js +55 -48
  104. package/dist/controllers/frame_loading_controller.js.map +1 -1
  105. package/dist/controllers/highlight_controller.d.ts +5 -4
  106. package/dist/controllers/highlight_controller.js.map +1 -1
  107. package/dist/controllers/hover_card_controller.d.ts +4 -1
  108. package/dist/controllers/hover_card_controller.js +67 -61
  109. package/dist/controllers/hover_card_controller.js.map +1 -1
  110. package/dist/controllers/idle_controller.d.ts +6 -5
  111. package/dist/controllers/idle_controller.js +10 -6
  112. package/dist/controllers/idle_controller.js.map +1 -1
  113. package/dist/controllers/input_mask_controller.d.ts +31 -13
  114. package/dist/controllers/input_mask_controller.js +434 -24
  115. package/dist/controllers/input_mask_controller.js.map +1 -1
  116. package/dist/controllers/intersection_controller.js +3 -0
  117. package/dist/controllers/intersection_controller.js.map +1 -1
  118. package/dist/controllers/lazy_frame_controller.d.ts +3 -2
  119. package/dist/controllers/lazy_frame_controller.js +15 -3
  120. package/dist/controllers/lazy_frame_controller.js.map +1 -1
  121. package/dist/controllers/listbox_controller.d.ts +10 -7
  122. package/dist/controllers/listbox_controller.js +260 -79
  123. package/dist/controllers/listbox_controller.js.map +1 -1
  124. package/dist/controllers/local_time_controller.d.ts +8 -6
  125. package/dist/controllers/local_time_controller.js +48 -13
  126. package/dist/controllers/local_time_controller.js.map +1 -1
  127. package/dist/controllers/masonry_controller.js +11 -4
  128. package/dist/controllers/masonry_controller.js.map +1 -1
  129. package/dist/controllers/menu_controller.d.ts +24 -5
  130. package/dist/controllers/menu_controller.js +138 -82
  131. package/dist/controllers/menu_controller.js.map +1 -1
  132. package/dist/controllers/menubar_controller.d.ts +49 -7
  133. package/dist/controllers/menubar_controller.js +65 -19
  134. package/dist/controllers/menubar_controller.js.map +1 -1
  135. package/dist/controllers/meter_controller.d.ts +13 -20
  136. package/dist/controllers/meter_controller.js +270 -24
  137. package/dist/controllers/meter_controller.js.map +1 -1
  138. package/dist/controllers/multi_select_controller.d.ts +19 -16
  139. package/dist/controllers/multi_select_controller.js +272 -95
  140. package/dist/controllers/multi_select_controller.js.map +1 -1
  141. package/dist/controllers/navigation_menu_controller.d.ts +19 -5
  142. package/dist/controllers/navigation_menu_controller.js +67 -19
  143. package/dist/controllers/navigation_menu_controller.js.map +1 -1
  144. package/dist/controllers/nested_form_controller.js +98 -64
  145. package/dist/controllers/nested_form_controller.js.map +1 -1
  146. package/dist/controllers/network_status_controller.js +70 -52
  147. package/dist/controllers/network_status_controller.js.map +1 -1
  148. package/dist/controllers/number_input_controller.d.ts +24 -6
  149. package/dist/controllers/number_input_controller.js +344 -94
  150. package/dist/controllers/number_input_controller.js.map +1 -1
  151. package/dist/controllers/optimistic_controller.d.ts +8 -5
  152. package/dist/controllers/optimistic_controller.js +29 -11
  153. package/dist/controllers/optimistic_controller.js.map +1 -1
  154. package/dist/controllers/otp_controller.d.ts +35 -4
  155. package/dist/controllers/otp_controller.js +502 -104
  156. package/dist/controllers/otp_controller.js.map +1 -1
  157. package/dist/controllers/overflow_indicator_controller.js +6 -0
  158. package/dist/controllers/overflow_indicator_controller.js.map +1 -1
  159. package/dist/controllers/overflow_menu_controller.d.ts +10 -9
  160. package/dist/controllers/overflow_menu_controller.js +136 -21
  161. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  162. package/dist/controllers/pagination_controller.d.ts +3 -2
  163. package/dist/controllers/pagination_controller.js +47 -14
  164. package/dist/controllers/pagination_controller.js.map +1 -1
  165. package/dist/controllers/password_reveal_controller.d.ts +5 -4
  166. package/dist/controllers/password_reveal_controller.js +52 -49
  167. package/dist/controllers/password_reveal_controller.js.map +1 -1
  168. package/dist/controllers/password_strength_controller.d.ts +1 -1
  169. package/dist/controllers/password_strength_controller.js +13 -6
  170. package/dist/controllers/password_strength_controller.js.map +1 -1
  171. package/dist/controllers/persist_controller.js +48 -128
  172. package/dist/controllers/persist_controller.js.map +1 -1
  173. package/dist/controllers/pointer_drag_controller.d.ts +20 -8
  174. package/dist/controllers/pointer_drag_controller.js +255 -24
  175. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  176. package/dist/controllers/popover_controller.d.ts +9 -5
  177. package/dist/controllers/popover_controller.js +91 -65
  178. package/dist/controllers/popover_controller.js.map +1 -1
  179. package/dist/controllers/portal_controller.js +6 -0
  180. package/dist/controllers/portal_controller.js.map +1 -1
  181. package/dist/controllers/preview_guard_controller.js +14 -3
  182. package/dist/controllers/preview_guard_controller.js.map +1 -1
  183. package/dist/controllers/progress_controller.d.ts +9 -19
  184. package/dist/controllers/progress_controller.js +271 -27
  185. package/dist/controllers/progress_controller.js.map +1 -1
  186. package/dist/controllers/radio_group_controller.d.ts +11 -8
  187. package/dist/controllers/radio_group_controller.js +167 -80
  188. package/dist/controllers/radio_group_controller.js.map +1 -1
  189. package/dist/controllers/range_slider_controller.d.ts +4 -3
  190. package/dist/controllers/range_slider_controller.js +27 -7
  191. package/dist/controllers/range_slider_controller.js.map +1 -1
  192. package/dist/controllers/rating_controller.js +93 -57
  193. package/dist/controllers/rating_controller.js.map +1 -1
  194. package/dist/controllers/read_more_controller.js +10 -6
  195. package/dist/controllers/read_more_controller.js.map +1 -1
  196. package/dist/controllers/reading_progress_controller.js +22 -5
  197. package/dist/controllers/reading_progress_controller.js.map +1 -1
  198. package/dist/controllers/relative_time_controller.d.ts +4 -4
  199. package/dist/controllers/relative_time_controller.js +75 -11
  200. package/dist/controllers/relative_time_controller.js.map +1 -1
  201. package/dist/controllers/reset_on_restore_controller.d.ts +3 -3
  202. package/dist/controllers/reset_on_restore_controller.js +6 -0
  203. package/dist/controllers/reset_on_restore_controller.js.map +1 -1
  204. package/dist/controllers/resizable_controller.d.ts +3 -0
  205. package/dist/controllers/resizable_controller.js +55 -22
  206. package/dist/controllers/resizable_controller.js.map +1 -1
  207. package/dist/controllers/roving_controller.d.ts +3 -3
  208. package/dist/controllers/roving_controller.js +10 -4
  209. package/dist/controllers/roving_controller.js.map +1 -1
  210. package/dist/controllers/scroll_area_controller.js +129 -88
  211. package/dist/controllers/scroll_area_controller.js.map +1 -1
  212. package/dist/controllers/scroll_restore_controller.d.ts +3 -3
  213. package/dist/controllers/scroll_restore_controller.js +14 -2
  214. package/dist/controllers/scroll_restore_controller.js.map +1 -1
  215. package/dist/controllers/scroll_visibility_controller.js +93 -60
  216. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  217. package/dist/controllers/scrollspy_controller.js +11 -5
  218. package/dist/controllers/scrollspy_controller.js.map +1 -1
  219. package/dist/controllers/separator_controller.d.ts +1 -1
  220. package/dist/controllers/separator_controller.js +59 -43
  221. package/dist/controllers/separator_controller.js.map +1 -1
  222. package/dist/controllers/sidebar_controller.d.ts +1 -1
  223. package/dist/controllers/sidebar_controller.js +150 -122
  224. package/dist/controllers/sidebar_controller.js.map +1 -1
  225. package/dist/controllers/skeleton_controller.js +55 -48
  226. package/dist/controllers/skeleton_controller.js.map +1 -1
  227. package/dist/controllers/slider_controller.d.ts +2 -1
  228. package/dist/controllers/slider_controller.js +27 -6
  229. package/dist/controllers/slider_controller.js.map +1 -1
  230. package/dist/controllers/smart_sticky_header_controller.d.ts +1 -1
  231. package/dist/controllers/smart_sticky_header_controller.js +13 -5
  232. package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
  233. package/dist/controllers/sortable_controller.d.ts +4 -4
  234. package/dist/controllers/sortable_controller.js +27 -14
  235. package/dist/controllers/sortable_controller.js.map +1 -1
  236. package/dist/controllers/spinner_controller.js +55 -48
  237. package/dist/controllers/spinner_controller.js.map +1 -1
  238. package/dist/controllers/step_indicator_controller.d.ts +4 -4
  239. package/dist/controllers/step_indicator_controller.js +6 -0
  240. package/dist/controllers/step_indicator_controller.js.map +1 -1
  241. package/dist/controllers/stepper_controller.d.ts +2 -3
  242. package/dist/controllers/stepper_controller.js +6 -0
  243. package/dist/controllers/stepper_controller.js.map +1 -1
  244. package/dist/controllers/stick_to_bottom_controller.d.ts +3 -1
  245. package/dist/controllers/stick_to_bottom_controller.js +19 -8
  246. package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
  247. package/dist/controllers/sticky_observer_controller.js +49 -43
  248. package/dist/controllers/sticky_observer_controller.js.map +1 -1
  249. package/dist/controllers/submit_once_controller.d.ts +2 -1
  250. package/dist/controllers/submit_once_controller.js +145 -85
  251. package/dist/controllers/submit_once_controller.js.map +1 -1
  252. package/dist/controllers/switch_controller.d.ts +7 -4
  253. package/dist/controllers/switch_controller.js +172 -28
  254. package/dist/controllers/switch_controller.js.map +1 -1
  255. package/dist/controllers/tabs_controller.d.ts +7 -4
  256. package/dist/controllers/tabs_controller.js +6 -1
  257. package/dist/controllers/tabs_controller.js.map +1 -1
  258. package/dist/controllers/tags_input_controller.d.ts +4 -3
  259. package/dist/controllers/tags_input_controller.js +157 -28
  260. package/dist/controllers/tags_input_controller.js.map +1 -1
  261. package/dist/controllers/textarea_autosize_controller.d.ts +1 -1
  262. package/dist/controllers/textarea_autosize_controller.js +40 -19
  263. package/dist/controllers/textarea_autosize_controller.js.map +1 -1
  264. package/dist/controllers/theme_controller.d.ts +3 -2
  265. package/dist/controllers/theme_controller.js +10 -4
  266. package/dist/controllers/theme_controller.js.map +1 -1
  267. package/dist/controllers/time_picker_controller.d.ts +38 -5
  268. package/dist/controllers/time_picker_controller.js +192 -54
  269. package/dist/controllers/time_picker_controller.js.map +1 -1
  270. package/dist/controllers/toast_controller.d.ts +4 -5
  271. package/dist/controllers/toast_controller.js +58 -27
  272. package/dist/controllers/toast_controller.js.map +1 -1
  273. package/dist/controllers/toggle_group_controller.d.ts +2 -3
  274. package/dist/controllers/toggle_group_controller.js +158 -56
  275. package/dist/controllers/toggle_group_controller.js.map +1 -1
  276. package/dist/controllers/toolbar_controller.d.ts +8 -6
  277. package/dist/controllers/toolbar_controller.js +150 -21
  278. package/dist/controllers/toolbar_controller.js.map +1 -1
  279. package/dist/controllers/tooltip_controller.d.ts +4 -1
  280. package/dist/controllers/tooltip_controller.js.map +1 -1
  281. package/dist/controllers/transition_controller.js.map +1 -1
  282. package/dist/controllers/tree_view_controller.d.ts +1 -1
  283. package/dist/controllers/tree_view_controller.js +134 -25
  284. package/dist/controllers/tree_view_controller.js.map +1 -1
  285. package/dist/index.d.ts +4 -1
  286. package/dist/index.js +2515 -1315
  287. package/dist/index.js.map +1 -1
  288. package/dist/inspector/cli.d.ts +25 -12
  289. package/dist/inspector/cli.js +21 -3
  290. package/dist/inspector/cli.js.map +1 -1
  291. package/dist/inspector/cli_bin.d.ts +1 -1
  292. package/dist/inspector/cli_bin.js +62 -8
  293. package/dist/inspector/cli_bin.js.map +1 -1
  294. package/dist/inspector/examples.json +13 -13
  295. package/dist/inspector/manifest.json +19 -5
  296. package/dist/positioning/index.d.ts +9 -8
  297. package/dist/positioning/index.js +6 -0
  298. package/dist/positioning/index.js.map +1 -1
  299. package/package.json +11 -10
@@ -22,6 +22,13 @@ function actionSource(source) {
22
22
  };
23
23
  }
24
24
 
25
+ function isAriaDisabled(element) {
26
+ for (let current = element; current; current = current.parentElement) {
27
+ if (current.getAttribute("aria-disabled") === "true") return true;
28
+ }
29
+ return false;
30
+ }
31
+
25
32
  function isRtl(element) {
26
33
  return window.getComputedStyle(element).direction === "rtl";
27
34
  }
@@ -30,6 +37,21 @@ function isReservedArrowChord(event, allow = []) {
30
37
  if (!event.key.startsWith("Arrow")) return false;
31
38
  return event.altKey && !allow.includes("alt") || event.ctrlKey && !allow.includes("ctrl") || event.metaKey && !allow.includes("meta") || event.shiftKey && !allow.includes("shift");
32
39
  }
40
+ function hasModifierChord(event) {
41
+ return event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
42
+ }
43
+
44
+ var ClickVerdicts = class {
45
+ #verdicts = /* @__PURE__ */ new WeakMap();
46
+ record(event, entries, refused) {
47
+ this.#verdicts.set(event, { entries, refused });
48
+ }
49
+ for(event, entry) {
50
+ const verdict = event && this.#verdicts.get(event);
51
+ if (!verdict?.entries.includes(entry)) return void 0;
52
+ return verdict.refused;
53
+ }
54
+ };
33
55
 
34
56
  function sharedRegistry(key, create) {
35
57
  const symbol = Symbol.for(key);
@@ -117,6 +139,10 @@ function ownerIndex(candidates, node) {
117
139
  function ownerOf(candidates, node) {
118
140
  return candidates[ownerIndex(candidates, node)] ?? null;
119
141
  }
142
+ function ownersOf(candidates, node) {
143
+ if (!(node instanceof Node)) return [];
144
+ return candidates.filter((candidate) => candidate.contains(node));
145
+ }
120
146
 
121
147
  var ListenerSet = class {
122
148
  #abort = new AbortController();
@@ -145,6 +171,9 @@ var MicrotaskCoalescer = class {
145
171
  this.#queued = false;
146
172
  this.#generation += 1;
147
173
  }
174
+ get pending() {
175
+ return this.#queued;
176
+ }
148
177
  schedule() {
149
178
  if (!this.#active || this.#queued) return;
150
179
  this.#queued = true;
@@ -175,6 +204,9 @@ var MorphRenderWatcher = class {
175
204
  schedule() {
176
205
  this.#pass.schedule();
177
206
  }
207
+ get pending() {
208
+ return this.#pass.pending;
209
+ }
178
210
  disconnect() {
179
211
  this.#listeners.dispose();
180
212
  this.#pass.cancel();
@@ -298,6 +330,7 @@ var MenubarController = class extends Controller {
298
330
  #connected = false;
299
331
  #reporting = false;
300
332
  #focused = null;
333
+ #clickVerdicts = new ClickVerdicts();
301
334
  #onFocusIn = (event) => {
302
335
  this.#focused = event.target;
303
336
  };
@@ -306,14 +339,15 @@ var MenubarController = class extends Controller {
306
339
  if (next && !this.element.contains(next)) this.#focused = null;
307
340
  };
308
341
  #morph = new MorphRenderWatcher(() => this.#reconcile());
342
+ #listeners = new ListenerSet();
309
343
  connect() {
310
344
  this.#morph.observe(this.element);
311
345
  this.#closeAllMenus("api");
312
346
  this.#reconcile();
313
- this.element.addEventListener("click", this.#onDisabledClickCapture, true);
314
- this.element.addEventListener("focusin", this.#onFocusIn);
315
- this.element.addEventListener("focusout", this.#onFocusOut);
316
- document.addEventListener("click", this.#onOutsideClick, true);
347
+ this.#listeners.add(this.element, "click", this.#onClickCapture, { capture: true });
348
+ this.#listeners.add(this.element, "focusin", this.#onFocusIn);
349
+ this.#listeners.add(this.element, "focusout", this.#onFocusOut);
350
+ this.#listeners.add(document, "click", this.#onOutsideClick, { capture: true });
317
351
  if (typeof MutationObserver !== "undefined") {
318
352
  this.#observer = new MutationObserver(() => this.#morph.schedule());
319
353
  this.#observer.observe(this.element, {
@@ -332,10 +366,7 @@ var MenubarController = class extends Controller {
332
366
  this.#reporting = false;
333
367
  this.#escapeLayer.deactivate();
334
368
  this.#layerActive = false;
335
- this.element.removeEventListener("click", this.#onDisabledClickCapture, true);
336
- this.element.removeEventListener("focusin", this.#onFocusIn);
337
- this.element.removeEventListener("focusout", this.#onFocusOut);
338
- document.removeEventListener("click", this.#onOutsideClick, true);
369
+ this.#listeners.dispose();
339
370
  this.#focused = null;
340
371
  this.#observer?.disconnect();
341
372
  this.#observer = null;
@@ -368,16 +399,18 @@ var MenubarController = class extends Controller {
368
399
  if (!top || !this.topTargets.includes(top)) return;
369
400
  if (origin && origin.closest(`[data-controller~="${this.identifier}"]`) !== this.element)
370
401
  return;
402
+ if (this.#refuses(top, event, origin)) return;
371
403
  const moveFocus = event !== null || this.element.contains(document.activeElement);
372
404
  if (this.#isExpanded(top)) {
373
405
  this.#closeMenu(top, reason);
374
406
  } else {
375
- this.#openMenu(top, "first", reason, moveFocus);
407
+ this.#openMenu(top, "first", reason, moveFocus, true);
376
408
  }
377
409
  }
378
410
  onTopKeydown(event) {
379
411
  if (event.defaultPrevented) return;
380
412
  if (isReservedArrowChord(event)) return;
413
+ if ((event.key === "Home" || event.key === "End") && hasModifierChord(event)) return;
381
414
  const tops = this.#navigableTops;
382
415
  const index = tops.indexOf(event.currentTarget);
383
416
  if (index === -1) return;
@@ -417,6 +450,7 @@ var MenubarController = class extends Controller {
417
450
  onItemKeydown(event) {
418
451
  if (event.defaultPrevented) return;
419
452
  if (isReservedArrowChord(event)) return;
453
+ if ((event.key === "Home" || event.key === "End") && hasModifierChord(event)) return;
420
454
  const item = event.currentTarget;
421
455
  const menu = item.closest("[role='menu']");
422
456
  if (!menu) return;
@@ -465,6 +499,7 @@ var MenubarController = class extends Controller {
465
499
  if (!item || !this.itemTargets.includes(item)) return;
466
500
  if (origin && origin.closest(`[data-controller~="${this.identifier}"]`) !== this.element)
467
501
  return;
502
+ if (this.#refuses(item, event, origin)) return;
468
503
  const moveFocus = event !== null || this.element.contains(document.activeElement);
469
504
  const menu = item.closest("[role='menu']");
470
505
  const top = this.#topFor(menu);
@@ -482,10 +517,10 @@ var MenubarController = class extends Controller {
482
517
  this.#roving.setActive(this.topTargets.indexOf(destination), { focus: true });
483
518
  }
484
519
  }
485
- #openMenu(opener, focus, reason, moveFocus = true) {
520
+ #openMenu(opener, focus, reason, moveFocus = true, judged = false) {
486
521
  if (!opener) return;
487
522
  const menu = this.#menuFor(opener);
488
- if (!menu || this.#isActivationBlocked(opener)) {
523
+ if (!menu || !judged && isAriaDisabled(opener)) {
489
524
  if (menu || !opener.hasAttribute("aria-controls")) {
490
525
  this.#closeAllMenus(reason);
491
526
  this.#focusTop(
@@ -562,13 +597,14 @@ var MenubarController = class extends Controller {
562
597
  this.#closeAllMenus("outside");
563
598
  }
564
599
  };
565
- #onDisabledClickCapture = (event) => {
566
- const target = event.target;
567
- if (!(target instanceof Node)) return;
568
- const blocked = [...this.topTargets, ...this.itemTargets].some(
569
- (element) => this.#isActivationBlocked(element) && element.contains(target)
600
+ #onClickCapture = (event) => {
601
+ const entries = ownersOf(this.#entries, event.target);
602
+ this.#clickVerdicts.record(
603
+ event,
604
+ entries,
605
+ entries.some((entry) => this.#isActivationDisabled(entry))
570
606
  );
571
- if (!blocked) return;
607
+ if (!entries.some((entry) => isAriaDisabled(entry))) return;
572
608
  event.preventDefault();
573
609
  event.stopImmediatePropagation();
574
610
  };
@@ -637,6 +673,9 @@ var MenubarController = class extends Controller {
637
673
  #itemsIn(menu) {
638
674
  return this.itemTargets.filter((item) => menu.contains(item) && this.#isNavigable(item));
639
675
  }
676
+ get #entries() {
677
+ return [...this.topTargets, ...this.itemTargets];
678
+ }
640
679
  get #navigableTops() {
641
680
  return this.topTargets.filter((top) => this.#isNavigable(top));
642
681
  }
@@ -644,8 +683,15 @@ var MenubarController = class extends Controller {
644
683
  if (element.hasAttribute("hidden")) return false;
645
684
  return !element.disabled;
646
685
  }
647
- #isActivationBlocked(element) {
648
- return element.getAttribute("aria-disabled") === "true";
686
+ #isActivationDisabled(element) {
687
+ return !this.#isNavigable(element) || isAriaDisabled(element);
688
+ }
689
+ #refuses(entry, event, origin) {
690
+ const recorded = this.#clickVerdicts.for(event, entry);
691
+ if (recorded !== void 0) return recorded;
692
+ if (this.#isActivationDisabled(entry)) return true;
693
+ const target = event ? event.target : origin;
694
+ return ownersOf(this.#entries, target).some((owner) => this.#isActivationDisabled(owner));
649
695
  }
650
696
  #focusAt(items, index) {
651
697
  items[index]?.focus();