stimeo-ui 0.16.0 → 0.18.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.
- package/CHANGELOG.md +136 -0
- package/README.md +27 -11
- package/dist/cable/index.d.ts +88 -31
- package/dist/cable/index.js +384 -449
- package/dist/cable/index.js.map +1 -1
- package/dist/coerce-JtZVNG5h.d.ts +20 -0
- package/dist/controllers/accordion_controller.d.ts +4 -2
- package/dist/controllers/accordion_controller.js +174 -55
- package/dist/controllers/accordion_controller.js.map +1 -1
- package/dist/controllers/alert_dialog_controller.d.ts +12 -2
- package/dist/controllers/alert_dialog_controller.js +903 -235
- package/dist/controllers/alert_dialog_controller.js.map +1 -1
- package/dist/controllers/announcer_controller.d.ts +37 -5
- package/dist/controllers/announcer_controller.js +238 -205
- package/dist/controllers/announcer_controller.js.map +1 -1
- package/dist/controllers/aspect_ratio_controller.js +0 -10
- package/dist/controllers/aspect_ratio_controller.js.map +1 -1
- package/dist/controllers/auto_submit_controller.d.ts +30 -6
- package/dist/controllers/auto_submit_controller.js +414 -145
- package/dist/controllers/auto_submit_controller.js.map +1 -1
- package/dist/controllers/avatar_controller.js +185 -107
- package/dist/controllers/avatar_controller.js.map +1 -1
- package/dist/controllers/breadcrumb_controller.js +0 -130
- package/dist/controllers/breadcrumb_controller.js.map +1 -1
- package/dist/controllers/bulk_select_controller.d.ts +21 -3
- package/dist/controllers/bulk_select_controller.js +282 -58
- package/dist/controllers/bulk_select_controller.js.map +1 -1
- package/dist/controllers/calendar_controller.d.ts +38 -16
- package/dist/controllers/calendar_controller.js +228 -260
- package/dist/controllers/calendar_controller.js.map +1 -1
- package/dist/controllers/carousel_controller.d.ts +43 -12
- package/dist/controllers/carousel_controller.js +536 -436
- package/dist/controllers/carousel_controller.js.map +1 -1
- package/dist/controllers/character_counter_controller.d.ts +44 -7
- package/dist/controllers/character_counter_controller.js +493 -207
- package/dist/controllers/character_counter_controller.js.map +1 -1
- package/dist/controllers/checkbox_controller.d.ts +7 -2
- package/dist/controllers/checkbox_controller.js +38 -74
- package/dist/controllers/checkbox_controller.js.map +1 -1
- package/dist/controllers/clipboard_controller.d.ts +16 -5
- package/dist/controllers/clipboard_controller.js +261 -149
- package/dist/controllers/clipboard_controller.js.map +1 -1
- package/dist/controllers/collapsible_controller.d.ts +17 -5
- package/dist/controllers/collapsible_controller.js +304 -120
- package/dist/controllers/collapsible_controller.js.map +1 -1
- package/dist/controllers/color_picker_controller.d.ts +18 -6
- package/dist/controllers/color_picker_controller.js +178 -146
- package/dist/controllers/color_picker_controller.js.map +1 -1
- package/dist/controllers/combobox_controller.d.ts +24 -6
- package/dist/controllers/combobox_controller.js +522 -156
- package/dist/controllers/combobox_controller.js.map +1 -1
- package/dist/controllers/command_palette_controller.d.ts +51 -20
- package/dist/controllers/command_palette_controller.js +1156 -395
- package/dist/controllers/command_palette_controller.js.map +1 -1
- package/dist/controllers/conditional_fields_controller.d.ts +15 -2
- package/dist/controllers/conditional_fields_controller.js +300 -171
- package/dist/controllers/conditional_fields_controller.js.map +1 -1
- package/dist/controllers/confirm_controller.d.ts +49 -12
- package/dist/controllers/confirm_controller.js +980 -262
- package/dist/controllers/confirm_controller.js.map +1 -1
- package/dist/controllers/context_menu_controller.d.ts +80 -18
- package/dist/controllers/context_menu_controller.js +346 -153
- package/dist/controllers/context_menu_controller.js.map +1 -1
- package/dist/controllers/count_up_controller.d.ts +13 -1
- package/dist/controllers/count_up_controller.js +73 -21
- package/dist/controllers/count_up_controller.js.map +1 -1
- package/dist/controllers/countdown_controller.d.ts +47 -3
- package/dist/controllers/countdown_controller.js +281 -158
- package/dist/controllers/countdown_controller.js.map +1 -1
- package/dist/controllers/currency_input_controller.d.ts +93 -10
- package/dist/controllers/currency_input_controller.js +575 -225
- package/dist/controllers/currency_input_controller.js.map +1 -1
- package/dist/controllers/data_grid_controller.d.ts +25 -12
- package/dist/controllers/data_grid_controller.js +248 -214
- package/dist/controllers/data_grid_controller.js.map +1 -1
- package/dist/controllers/date_range_picker_controller.d.ts +42 -14
- package/dist/controllers/date_range_picker_controller.js +338 -235
- package/dist/controllers/date_range_picker_controller.js.map +1 -1
- package/dist/controllers/dialog_controller.d.ts +17 -6
- package/dist/controllers/dialog_controller.js +899 -237
- package/dist/controllers/dialog_controller.js.map +1 -1
- package/dist/controllers/direct_upload_controller.d.ts +25 -8
- package/dist/controllers/direct_upload_controller.js +97 -167
- package/dist/controllers/direct_upload_controller.js.map +1 -1
- package/dist/controllers/dirty_form_controller.d.ts +6 -1
- package/dist/controllers/dirty_form_controller.js +72 -69
- package/dist/controllers/dirty_form_controller.js.map +1 -1
- package/dist/controllers/dismissible_controller.d.ts +19 -0
- package/dist/controllers/dismissible_controller.js +196 -24
- package/dist/controllers/dismissible_controller.js.map +1 -1
- package/dist/controllers/drawer_controller.d.ts +39 -11
- package/dist/controllers/drawer_controller.js +974 -355
- package/dist/controllers/drawer_controller.js.map +1 -1
- package/dist/controllers/dropdown_controller.d.ts +31 -1
- package/dist/controllers/dropdown_controller.js +339 -96
- package/dist/controllers/dropdown_controller.js.map +1 -1
- package/dist/controllers/editable_controller.d.ts +12 -1
- package/dist/controllers/editable_controller.js +315 -88
- package/dist/controllers/editable_controller.js.map +1 -1
- package/dist/controllers/empty_state_controller.js +79 -58
- package/dist/controllers/empty_state_controller.js.map +1 -1
- package/dist/controllers/file_dropzone_controller.d.ts +63 -18
- package/dist/controllers/file_dropzone_controller.js +322 -211
- package/dist/controllers/file_dropzone_controller.js.map +1 -1
- package/dist/controllers/filter_controller.js +77 -42
- package/dist/controllers/filter_controller.js.map +1 -1
- package/dist/controllers/flash_controller.d.ts +35 -12
- package/dist/controllers/flash_controller.js +238 -347
- package/dist/controllers/flash_controller.js.map +1 -1
- package/dist/controllers/focus_controller.d.ts +15 -6
- package/dist/controllers/focus_controller.js +679 -240
- package/dist/controllers/focus_controller.js.map +1 -1
- package/dist/controllers/form_field_controller.js +156 -132
- package/dist/controllers/form_field_controller.js.map +1 -1
- package/dist/controllers/form_validation_controller.d.ts +3 -3
- package/dist/controllers/form_validation_controller.js +31 -97
- package/dist/controllers/form_validation_controller.js.map +1 -1
- package/dist/controllers/frame_loading_controller.d.ts +47 -14
- package/dist/controllers/frame_loading_controller.js +275 -217
- package/dist/controllers/frame_loading_controller.js.map +1 -1
- package/dist/controllers/highlight_controller.d.ts +27 -6
- package/dist/controllers/highlight_controller.js +107 -75
- package/dist/controllers/highlight_controller.js.map +1 -1
- package/dist/controllers/hover_card_controller.d.ts +60 -4
- package/dist/controllers/hover_card_controller.js +327 -130
- package/dist/controllers/hover_card_controller.js.map +1 -1
- package/dist/controllers/idle_controller.d.ts +48 -6
- package/dist/controllers/idle_controller.js +271 -101
- package/dist/controllers/idle_controller.js.map +1 -1
- package/dist/controllers/input_mask_controller.d.ts +30 -13
- package/dist/controllers/input_mask_controller.js +483 -97
- package/dist/controllers/input_mask_controller.js.map +1 -1
- package/dist/controllers/intersection_controller.d.ts +32 -13
- package/dist/controllers/intersection_controller.js +150 -106
- package/dist/controllers/intersection_controller.js.map +1 -1
- package/dist/controllers/lazy_frame_controller.d.ts +19 -2
- package/dist/controllers/lazy_frame_controller.js +24 -68
- package/dist/controllers/lazy_frame_controller.js.map +1 -1
- package/dist/controllers/listbox_controller.d.ts +44 -9
- package/dist/controllers/listbox_controller.js +523 -240
- package/dist/controllers/listbox_controller.js.map +1 -1
- package/dist/controllers/local_time_controller.d.ts +9 -7
- package/dist/controllers/local_time_controller.js +102 -77
- package/dist/controllers/local_time_controller.js.map +1 -1
- package/dist/controllers/masonry_controller.d.ts +11 -3
- package/dist/controllers/masonry_controller.js +80 -96
- package/dist/controllers/masonry_controller.js.map +1 -1
- package/dist/controllers/menu_controller.d.ts +55 -11
- package/dist/controllers/menu_controller.js +302 -188
- package/dist/controllers/menu_controller.js.map +1 -1
- package/dist/controllers/menubar_controller.d.ts +51 -9
- package/dist/controllers/menubar_controller.js +232 -345
- package/dist/controllers/menubar_controller.js.map +1 -1
- package/dist/controllers/meter_controller.d.ts +33 -20
- package/dist/controllers/meter_controller.js +417 -87
- package/dist/controllers/meter_controller.js.map +1 -1
- package/dist/controllers/multi_select_controller.d.ts +48 -18
- package/dist/controllers/multi_select_controller.js +785 -393
- package/dist/controllers/multi_select_controller.js.map +1 -1
- package/dist/controllers/navigation_menu_controller.d.ts +27 -6
- package/dist/controllers/navigation_menu_controller.js +190 -250
- package/dist/controllers/navigation_menu_controller.js.map +1 -1
- package/dist/controllers/nested_form_controller.d.ts +10 -0
- package/dist/controllers/nested_form_controller.js +396 -192
- package/dist/controllers/nested_form_controller.js.map +1 -1
- package/dist/controllers/network_status_controller.d.ts +23 -0
- package/dist/controllers/network_status_controller.js +268 -62
- package/dist/controllers/network_status_controller.js.map +1 -1
- package/dist/controllers/number_input_controller.d.ts +50 -8
- package/dist/controllers/number_input_controller.js +610 -303
- package/dist/controllers/number_input_controller.js.map +1 -1
- package/dist/controllers/optimistic_controller.d.ts +8 -5
- package/dist/controllers/optimistic_controller.js +45 -87
- package/dist/controllers/optimistic_controller.js.map +1 -1
- package/dist/controllers/otp_controller.d.ts +55 -8
- package/dist/controllers/otp_controller.js +658 -255
- package/dist/controllers/otp_controller.js.map +1 -1
- package/dist/controllers/overflow_indicator_controller.d.ts +5 -0
- package/dist/controllers/overflow_indicator_controller.js +122 -113
- package/dist/controllers/overflow_indicator_controller.js.map +1 -1
- package/dist/controllers/overflow_menu_controller.d.ts +58 -20
- package/dist/controllers/overflow_menu_controller.js +470 -295
- package/dist/controllers/overflow_menu_controller.js.map +1 -1
- package/dist/controllers/pagination_controller.d.ts +37 -7
- package/dist/controllers/pagination_controller.js +332 -123
- package/dist/controllers/pagination_controller.js.map +1 -1
- package/dist/controllers/password_reveal_controller.d.ts +46 -8
- package/dist/controllers/password_reveal_controller.js +392 -121
- package/dist/controllers/password_reveal_controller.js.map +1 -1
- package/dist/controllers/password_strength_controller.d.ts +15 -6
- package/dist/controllers/password_strength_controller.js +111 -158
- package/dist/controllers/password_strength_controller.js.map +1 -1
- package/dist/controllers/persist_controller.d.ts +11 -4
- package/dist/controllers/persist_controller.js +165 -111
- package/dist/controllers/persist_controller.js.map +1 -1
- package/dist/controllers/pointer_drag_controller.d.ts +35 -12
- package/dist/controllers/pointer_drag_controller.js +434 -188
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +41 -5
- package/dist/controllers/popover_controller.js +269 -113
- package/dist/controllers/popover_controller.js.map +1 -1
- package/dist/controllers/portal_controller.d.ts +44 -4
- package/dist/controllers/portal_controller.js +215 -76
- package/dist/controllers/portal_controller.js.map +1 -1
- package/dist/controllers/preview_guard_controller.d.ts +10 -4
- package/dist/controllers/preview_guard_controller.js +243 -116
- package/dist/controllers/preview_guard_controller.js.map +1 -1
- package/dist/controllers/progress_controller.d.ts +20 -19
- package/dist/controllers/progress_controller.js +391 -78
- package/dist/controllers/progress_controller.js.map +1 -1
- package/dist/controllers/radio_group_controller.d.ts +21 -9
- package/dist/controllers/radio_group_controller.js +278 -211
- package/dist/controllers/radio_group_controller.js.map +1 -1
- package/dist/controllers/range_slider_controller.d.ts +47 -6
- package/dist/controllers/range_slider_controller.js +220 -113
- package/dist/controllers/range_slider_controller.js.map +1 -1
- package/dist/controllers/rating_controller.d.ts +20 -4
- package/dist/controllers/rating_controller.js +458 -211
- package/dist/controllers/rating_controller.js.map +1 -1
- package/dist/controllers/read_more_controller.d.ts +2 -0
- package/dist/controllers/read_more_controller.js +138 -63
- package/dist/controllers/read_more_controller.js.map +1 -1
- package/dist/controllers/reading_progress_controller.d.ts +1 -1
- package/dist/controllers/reading_progress_controller.js +166 -137
- package/dist/controllers/reading_progress_controller.js.map +1 -1
- package/dist/controllers/relative_time_controller.d.ts +20 -6
- package/dist/controllers/relative_time_controller.js +211 -112
- package/dist/controllers/relative_time_controller.js.map +1 -1
- package/dist/controllers/reset_on_restore_controller.d.ts +85 -0
- package/dist/controllers/{reset_before_cache_controller.js → reset_on_restore_controller.js} +103 -38
- package/dist/controllers/reset_on_restore_controller.js.map +1 -0
- package/dist/controllers/resizable_controller.d.ts +31 -2
- package/dist/controllers/resizable_controller.js +299 -150
- package/dist/controllers/resizable_controller.js.map +1 -1
- package/dist/controllers/roving_controller.d.ts +3 -3
- package/dist/controllers/roving_controller.js +49 -88
- package/dist/controllers/roving_controller.js.map +1 -1
- package/dist/controllers/scroll_area_controller.d.ts +7 -3
- package/dist/controllers/scroll_area_controller.js +490 -246
- package/dist/controllers/scroll_area_controller.js.map +1 -1
- package/dist/controllers/scroll_restore_controller.d.ts +3 -3
- package/dist/controllers/scroll_restore_controller.js +14 -55
- package/dist/controllers/scroll_restore_controller.js.map +1 -1
- package/dist/controllers/scroll_visibility_controller.d.ts +28 -12
- package/dist/controllers/scroll_visibility_controller.js +432 -149
- package/dist/controllers/scroll_visibility_controller.js.map +1 -1
- package/dist/controllers/scrollspy_controller.d.ts +6 -1
- package/dist/controllers/scrollspy_controller.js +193 -248
- package/dist/controllers/scrollspy_controller.js.map +1 -1
- package/dist/controllers/separator_controller.d.ts +20 -5
- package/dist/controllers/separator_controller.js +285 -142
- package/dist/controllers/separator_controller.js.map +1 -1
- package/dist/controllers/sidebar_controller.d.ts +65 -8
- package/dist/controllers/sidebar_controller.js +1069 -404
- package/dist/controllers/sidebar_controller.js.map +1 -1
- package/dist/controllers/skeleton_controller.d.ts +23 -0
- package/dist/controllers/skeleton_controller.js +259 -101
- package/dist/controllers/skeleton_controller.js.map +1 -1
- package/dist/controllers/slider_controller.d.ts +29 -2
- package/dist/controllers/slider_controller.js +187 -86
- package/dist/controllers/slider_controller.js.map +1 -1
- package/dist/controllers/smart_sticky_header_controller.d.ts +22 -4
- package/dist/controllers/smart_sticky_header_controller.js +173 -66
- package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
- package/dist/controllers/sortable_controller.d.ts +4 -4
- package/dist/controllers/sortable_controller.js +26 -125
- package/dist/controllers/sortable_controller.js.map +1 -1
- package/dist/controllers/spinner_controller.d.ts +39 -4
- package/dist/controllers/spinner_controller.js +288 -173
- package/dist/controllers/spinner_controller.js.map +1 -1
- package/dist/controllers/step_indicator_controller.d.ts +9 -4
- package/dist/controllers/step_indicator_controller.js +105 -46
- package/dist/controllers/step_indicator_controller.js.map +1 -1
- package/dist/controllers/stepper_controller.d.ts +14 -6
- package/dist/controllers/stepper_controller.js +120 -73
- package/dist/controllers/stepper_controller.js.map +1 -1
- package/dist/controllers/stick_to_bottom_controller.d.ts +9 -1
- package/dist/controllers/stick_to_bottom_controller.js +275 -140
- package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
- package/dist/controllers/sticky_observer_controller.d.ts +11 -0
- package/dist/controllers/sticky_observer_controller.js +220 -49
- package/dist/controllers/sticky_observer_controller.js.map +1 -1
- package/dist/controllers/submit_once_controller.d.ts +24 -8
- package/dist/controllers/submit_once_controller.js +376 -227
- package/dist/controllers/submit_once_controller.js.map +1 -1
- package/dist/controllers/switch_controller.d.ts +18 -4
- package/dist/controllers/switch_controller.js +201 -84
- package/dist/controllers/switch_controller.js.map +1 -1
- package/dist/controllers/tabs_controller.d.ts +9 -6
- package/dist/controllers/tabs_controller.js +41 -30
- package/dist/controllers/tabs_controller.js.map +1 -1
- package/dist/controllers/tags_input_controller.d.ts +16 -3
- package/dist/controllers/tags_input_controller.js +293 -173
- package/dist/controllers/tags_input_controller.js.map +1 -1
- package/dist/controllers/textarea_autosize_controller.d.ts +11 -1
- package/dist/controllers/textarea_autosize_controller.js +108 -74
- package/dist/controllers/textarea_autosize_controller.js.map +1 -1
- package/dist/controllers/theme_controller.d.ts +24 -11
- package/dist/controllers/theme_controller.js +140 -116
- package/dist/controllers/theme_controller.js.map +1 -1
- package/dist/controllers/time_picker_controller.d.ts +55 -5
- package/dist/controllers/time_picker_controller.js +331 -127
- package/dist/controllers/time_picker_controller.js.map +1 -1
- package/dist/controllers/toast_controller.d.ts +40 -16
- package/dist/controllers/toast_controller.js +244 -324
- package/dist/controllers/toast_controller.js.map +1 -1
- package/dist/controllers/toggle_group_controller.d.ts +14 -6
- package/dist/controllers/toggle_group_controller.js +252 -191
- package/dist/controllers/toggle_group_controller.js.map +1 -1
- package/dist/controllers/toolbar_controller.d.ts +8 -6
- package/dist/controllers/toolbar_controller.js +219 -120
- package/dist/controllers/toolbar_controller.js.map +1 -1
- package/dist/controllers/tooltip_controller.d.ts +49 -4
- package/dist/controllers/tooltip_controller.js +158 -124
- package/dist/controllers/tooltip_controller.js.map +1 -1
- package/dist/controllers/transition_controller.d.ts +22 -4
- package/dist/controllers/transition_controller.js +123 -119
- package/dist/controllers/transition_controller.js.map +1 -1
- package/dist/controllers/tree_view_controller.d.ts +22 -12
- package/dist/controllers/tree_view_controller.js +283 -369
- package/dist/controllers/tree_view_controller.js.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.js +8573 -10410
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +38 -14
- package/dist/inspector/cli.js +108 -40
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.js +145 -64
- package/dist/inspector/cli_bin.js.map +1 -1
- package/dist/inspector/examples.json +20 -20
- package/dist/inspector/manifest.json +802 -101
- package/dist/positioning/index.d.ts +15 -7
- package/dist/positioning/index.js +154 -47
- package/dist/positioning/index.js.map +1 -1
- package/package.json +11 -10
- package/dist/controllers/reset_before_cache_controller.d.ts +0 -76
- package/dist/controllers/reset_before_cache_controller.js.map +0 -1
|
@@ -6,7 +6,8 @@ import { Controller } from '@hotwired/stimulus';
|
|
|
6
6
|
* Markup contract (identifier: `stimeo--context-menu`):
|
|
7
7
|
* <div data-controller="stimeo--context-menu">
|
|
8
8
|
* <div data-stimeo--context-menu-target="region" tabindex="0"
|
|
9
|
-
*
|
|
9
|
+
* role="group" aria-label="Files"
|
|
10
|
+
* aria-keyshortcuts="Shift+F10" aria-controls="ctx"
|
|
10
11
|
* data-action="contextmenu->stimeo--context-menu#open
|
|
11
12
|
* keydown->stimeo--context-menu#onRegionKeydown">…</div>
|
|
12
13
|
* <ul id="ctx" role="menu" data-stimeo--context-menu-target="menu" hidden>
|
|
@@ -32,12 +33,25 @@ import { Controller } from '@hotwired/stimulus';
|
|
|
32
33
|
* required). Viewport-edge flip/shift is delegated to the opt-in
|
|
33
34
|
* `stimeo-ui/positioning` module, which this controller never imports.
|
|
34
35
|
*
|
|
36
|
+
* The region's role and name are the author's: a `role="group"` with
|
|
37
|
+
* `aria-label`, or an element that has a role of its own (a table row, a list
|
|
38
|
+
* item, a button), chosen to match what the region holds. The controller writes
|
|
39
|
+
* no role. The author also points `aria-controls` at the menu and advertises the
|
|
40
|
+
* opening key with `aria-keyshortcuts="Shift+F10"`. The region carries no
|
|
41
|
+
* `aria-haspopup`, whatever its role. On a role that supports it, such as a
|
|
42
|
+
* button, the attribute conveys what ARIA 1.2's note says its visual
|
|
43
|
+
* counterparts, such as a downward-pointing triangle, signal: that activating
|
|
44
|
+
* the control (a click, `Enter`) displays a popup. This menu opens on a
|
|
45
|
+
* `contextmenu` event or the `Shift+F10` / `ContextMenu` key instead, so the
|
|
46
|
+
* attribute would point to the wrong gesture. On a role that does not, such as
|
|
47
|
+
* `generic`, `group`, `row` or `listitem`, it would be a global use of the
|
|
48
|
+
* attribute, which ARIA 1.2 deprecates.
|
|
49
|
+
*
|
|
35
50
|
* Open state is exposed on the region as `data-state` (`open`/`closed`) — a CSS
|
|
36
|
-
* hook, not an ARIA one. `aria-expanded` is deliberately *not* set on the region
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* `role="menu"`.
|
|
51
|
+
* hook, not an ARIA one. `aria-expanded` is deliberately *not* set on the region:
|
|
52
|
+
* the role is the author's, and ARIA 1.2 lists neither `generic` nor `group`
|
|
53
|
+
* among the roles that support that state. Assistive tech perceives the open
|
|
54
|
+
* state when focus moves into the `role="menu"`.
|
|
41
55
|
*
|
|
42
56
|
* Behavior provided:
|
|
43
57
|
* - `contextmenu` on the region suppresses the browser menu and opens this one at
|
|
@@ -45,24 +59,41 @@ import { Controller } from '@hotwired/stimulus';
|
|
|
45
59
|
* - On open, focus moves to the first item; the region's `data-state` syncs.
|
|
46
60
|
* - Roving focus inside the menu: `ArrowUp`/`ArrowDown` (wrapping), `Home`/`End`.
|
|
47
61
|
* - Activating an enabled item (click / native `Enter`/`Space` on the button)
|
|
48
|
-
* closes the menu and restores focus to the region. `
|
|
49
|
-
*
|
|
62
|
+
* closes the menu and restores focus to the region. An item that is `hidden`,
|
|
63
|
+
* natively `disabled`, or `aria-disabled="true"` itself or through an ancestor
|
|
64
|
+
* is not activated on any path, and a click on an `aria-disabled` one is also
|
|
65
|
+
* stopped, in a capture listener on the controller element, before the click
|
|
66
|
+
* handlers inside that element run. Items can nest, and an event is
|
|
67
|
+
* refused when any item holding its target refuses. A click is judged once, in
|
|
68
|
+
* that capture pass, so a consumer handler that disables the item while the
|
|
69
|
+
* click runs does not take back the activation. The verdict holds only for an
|
|
70
|
+
* item that held the click's target when it was taken: an item it was not taken
|
|
71
|
+
* for — a handler moved the target into another one — is judged when
|
|
72
|
+
* {@link activate} runs, as is any other event.
|
|
50
73
|
* - `Escape` closes and restores focus to the region. While open the menu is a
|
|
51
74
|
* layer on the shared `EscapeLayer` stack; it claims a press only while
|
|
52
75
|
* focus is inside the controller or fell to the body, so one keypress closes
|
|
53
76
|
* exactly one layer. `Tab` lets the browser move focus first, then closes on
|
|
54
77
|
* the next task. An outside click or context-menu invocation closes without
|
|
55
78
|
* stealing focus from its destination.
|
|
79
|
+
* - A region or a menu that takes over — in one task, or after an earlier one
|
|
80
|
+
* leaves in a later task — carries the open state, and the menu that takes over
|
|
81
|
+
* an open one is placed where it was opened; focus stays where the swap left it.
|
|
82
|
+
* With no menu left the region reads closed and the menu leaves the Escape stack.
|
|
83
|
+
* One that stops resolving as the target gets back the `data-state` or `hidden` it
|
|
84
|
+
* carried before this controller wrote on it.
|
|
56
85
|
* - Each move of the open state is reported: `stimeo--context-menu:open` and
|
|
57
86
|
* `stimeo--context-menu:close` dispatch `{ reason: StateReason }`, after the
|
|
58
87
|
* state attributes are written. Both are informational, so neither is
|
|
59
88
|
* cancelable. A call that leaves the state where it already was, the
|
|
60
|
-
* normalization in {@link connect},
|
|
89
|
+
* normalization in {@link connect}, a region or a menu that takes over, and
|
|
90
|
+
* {@link disconnect} are all silent.
|
|
61
91
|
*
|
|
62
|
-
* Roving focus skips `hidden` and natively `disabled` items. An
|
|
63
|
-
* `aria-disabled="true"`
|
|
64
|
-
* attribute precisely for controls that must remain
|
|
65
|
-
* activation is suppressed, so it announces itself and
|
|
92
|
+
* Roving focus skips `hidden` and natively `disabled` items. An item that
|
|
93
|
+
* `aria-disabled="true"` reaches, on the item or an ancestor, stays reachable by
|
|
94
|
+
* arrow keys — APG marks that attribute precisely for controls that must remain
|
|
95
|
+
* discoverable — while its activation is suppressed, so it announces itself and
|
|
96
|
+
* does nothing.
|
|
66
97
|
*/
|
|
67
98
|
declare class ContextMenuController extends Controller<HTMLElement> {
|
|
68
99
|
#private;
|
|
@@ -70,7 +101,9 @@ declare class ContextMenuController extends Controller<HTMLElement> {
|
|
|
70
101
|
static actions: readonly ["activate", "onItemKeydown", "onRegionKeydown", "open"];
|
|
71
102
|
static events: readonly ["close", "open"];
|
|
72
103
|
readonly regionTarget: HTMLElement;
|
|
104
|
+
readonly regionTargets: HTMLElement[];
|
|
73
105
|
readonly menuTarget: HTMLElement;
|
|
106
|
+
readonly menuTargets: HTMLElement[];
|
|
74
107
|
readonly itemTargets: HTMLButtonElement[];
|
|
75
108
|
readonly hasRegionTarget: boolean;
|
|
76
109
|
readonly hasMenuTarget: boolean;
|
|
@@ -78,17 +111,46 @@ declare class ContextMenuController extends Controller<HTMLElement> {
|
|
|
78
111
|
connect(): void;
|
|
79
112
|
/** Releases the listeners, stack membership, and pending Tab-close task. */
|
|
80
113
|
disconnect(): void;
|
|
114
|
+
/** Brings a region that arrives after connect to the open state. */
|
|
115
|
+
regionTargetConnected(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Gives a region that no longer resolves as one its own `data-state` back — after
|
|
118
|
+
* `disconnect()` too, since dropping the identifier leaves the element on the page — and
|
|
119
|
+
* brings the region that stays to the open state.
|
|
120
|
+
*/
|
|
121
|
+
regionTargetDisconnected(region: HTMLElement): void;
|
|
122
|
+
/** Applies the open state to a menu that arrives after connect in front of the others. */
|
|
123
|
+
menuTargetConnected(): void;
|
|
81
124
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
125
|
+
* Applies the open state to the menu left, then gives a menu that no longer resolves as the
|
|
126
|
+
* target its own `hidden` back — after `disconnect()` too, since dropping the identifier
|
|
127
|
+
* leaves the element on the page. The open state is read off the departing menu first,
|
|
128
|
+
* while it still carries it.
|
|
84
129
|
*/
|
|
85
|
-
|
|
130
|
+
menuTargetDisconnected(menu: HTMLElement): void;
|
|
131
|
+
/**
|
|
132
|
+
* Opens at a mouse event's coordinate, an explicit element's center, or the
|
|
133
|
+
* region's center with no argument. Opening focuses the new menu in all paths.
|
|
134
|
+
* An explicit element may be an anchor outside the controller.
|
|
135
|
+
*/
|
|
136
|
+
open(input?: Event | HTMLElement): void;
|
|
86
137
|
/** Keyboard entry on the region: `Shift+F10` / `ContextMenu` open at center. */
|
|
87
138
|
onRegionKeydown(event: KeyboardEvent): void;
|
|
88
139
|
/** Roving focus and closing keys inside the menu. */
|
|
89
140
|
onItemKeydown(event: KeyboardEvent): void;
|
|
90
|
-
/**
|
|
91
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Closes after an item is activated and restores focus to the region. An event
|
|
143
|
+
* whose target lies in an item that is `hidden`, natively `disabled`, or
|
|
144
|
+
* `aria-disabled="true"` itself or through an ancestor does nothing: the menu
|
|
145
|
+
* stays open, nothing is dispatched and focus stays where it is. Every item
|
|
146
|
+
* holding the target counts, so an item nested in another one refuses for both,
|
|
147
|
+
* wherever the action is bound. A click is judged as its capture pass found the
|
|
148
|
+
* items, before the handlers inside the controller element ran, when the
|
|
149
|
+
* item this resolves was among them; an item that was not, and any other event, is
|
|
150
|
+
* judged when this runs.
|
|
151
|
+
* An event that resolves to no item, and a call with no event, always close.
|
|
152
|
+
*/
|
|
153
|
+
activate(event?: Event): void;
|
|
92
154
|
}
|
|
93
155
|
|
|
94
156
|
export { ContextMenuController };
|