stimeo-ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/dist/controllers/aspect_ratio_controller.d.ts +1 -3
  3. package/dist/controllers/aspect_ratio_controller.js +19 -11
  4. package/dist/controllers/aspect_ratio_controller.js.map +1 -1
  5. package/dist/controllers/avatar_controller.d.ts +36 -15
  6. package/dist/controllers/avatar_controller.js +195 -40
  7. package/dist/controllers/avatar_controller.js.map +1 -1
  8. package/dist/controllers/carousel_controller.d.ts +12 -3
  9. package/dist/controllers/carousel_controller.js +85 -9
  10. package/dist/controllers/carousel_controller.js.map +1 -1
  11. package/dist/controllers/checkbox_controller.d.ts +31 -5
  12. package/dist/controllers/checkbox_controller.js +136 -25
  13. package/dist/controllers/checkbox_controller.js.map +1 -1
  14. package/dist/controllers/color_picker_controller.d.ts +7 -1
  15. package/dist/controllers/color_picker_controller.js +35 -9
  16. package/dist/controllers/color_picker_controller.js.map +1 -1
  17. package/dist/controllers/date_range_picker_controller.d.ts +23 -4
  18. package/dist/controllers/date_range_picker_controller.js +157 -30
  19. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  20. package/dist/controllers/file_dropzone_controller.d.ts +7 -1
  21. package/dist/controllers/file_dropzone_controller.js +26 -3
  22. package/dist/controllers/file_dropzone_controller.js.map +1 -1
  23. package/dist/controllers/focus_controller.d.ts +2 -3
  24. package/dist/controllers/focus_controller.js.map +1 -1
  25. package/dist/controllers/hover_card_controller.d.ts +2 -2
  26. package/dist/controllers/hover_card_controller.js.map +1 -1
  27. package/dist/controllers/idle_controller.d.ts +3 -3
  28. package/dist/controllers/idle_controller.js +27 -5
  29. package/dist/controllers/idle_controller.js.map +1 -1
  30. package/dist/controllers/menubar_controller.js +5 -3
  31. package/dist/controllers/menubar_controller.js.map +1 -1
  32. package/dist/controllers/multi_select_controller.d.ts +46 -12
  33. package/dist/controllers/multi_select_controller.js +460 -151
  34. package/dist/controllers/multi_select_controller.js.map +1 -1
  35. package/dist/controllers/number_input_controller.d.ts +24 -6
  36. package/dist/controllers/number_input_controller.js +275 -51
  37. package/dist/controllers/number_input_controller.js.map +1 -1
  38. package/dist/controllers/overflow_menu_controller.js +4 -0
  39. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  40. package/dist/controllers/pagination_controller.js +33 -0
  41. package/dist/controllers/pagination_controller.js.map +1 -1
  42. package/dist/controllers/password_strength_controller.d.ts +3 -3
  43. package/dist/controllers/password_strength_controller.js +20 -2
  44. package/dist/controllers/password_strength_controller.js.map +1 -1
  45. package/dist/controllers/persist_controller.d.ts +4 -4
  46. package/dist/controllers/persist_controller.js +24 -5
  47. package/dist/controllers/persist_controller.js.map +1 -1
  48. package/dist/controllers/popover_controller.d.ts +2 -2
  49. package/dist/controllers/popover_controller.js.map +1 -1
  50. package/dist/controllers/portal_controller.d.ts +1 -2
  51. package/dist/controllers/portal_controller.js.map +1 -1
  52. package/dist/controllers/radio_group_controller.d.ts +41 -15
  53. package/dist/controllers/radio_group_controller.js +540 -56
  54. package/dist/controllers/radio_group_controller.js.map +1 -1
  55. package/dist/controllers/rating_controller.d.ts +36 -31
  56. package/dist/controllers/rating_controller.js +272 -89
  57. package/dist/controllers/rating_controller.js.map +1 -1
  58. package/dist/controllers/resizable_controller.js +33 -0
  59. package/dist/controllers/resizable_controller.js.map +1 -1
  60. package/dist/controllers/roving_controller.d.ts +4 -0
  61. package/dist/controllers/roving_controller.js +60 -5
  62. package/dist/controllers/roving_controller.js.map +1 -1
  63. package/dist/controllers/scroll_area_controller.d.ts +6 -0
  64. package/dist/controllers/scroll_area_controller.js +154 -22
  65. package/dist/controllers/scroll_area_controller.js.map +1 -1
  66. package/dist/controllers/scroll_visibility_controller.js +33 -0
  67. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  68. package/dist/controllers/tags_input_controller.d.ts +41 -11
  69. package/dist/controllers/tags_input_controller.js +356 -120
  70. package/dist/controllers/tags_input_controller.js.map +1 -1
  71. package/dist/controllers/time_picker_controller.d.ts +42 -13
  72. package/dist/controllers/time_picker_controller.js +296 -107
  73. package/dist/controllers/time_picker_controller.js.map +1 -1
  74. package/dist/controllers/toggle_group_controller.d.ts +39 -13
  75. package/dist/controllers/toggle_group_controller.js +378 -55
  76. package/dist/controllers/toggle_group_controller.js.map +1 -1
  77. package/dist/controllers/toolbar_controller.js +5 -3
  78. package/dist/controllers/toolbar_controller.js.map +1 -1
  79. package/dist/controllers/tooltip_controller.d.ts +2 -2
  80. package/dist/controllers/tooltip_controller.js.map +1 -1
  81. package/dist/controllers/transition_controller.d.ts +2 -3
  82. package/dist/controllers/transition_controller.js.map +1 -1
  83. package/dist/controllers/tree_view_controller.js +5 -3
  84. package/dist/controllers/tree_view_controller.js.map +1 -1
  85. package/dist/index.js +2637 -781
  86. package/dist/index.js.map +1 -1
  87. package/dist/inspector/cli.d.ts +16 -3
  88. package/dist/inspector/cli.js +22 -6
  89. package/dist/inspector/cli.js.map +1 -1
  90. package/dist/inspector/cli_bin.js +22 -6
  91. package/dist/inspector/cli_bin.js.map +1 -1
  92. package/dist/inspector/examples.json +8 -8
  93. package/dist/inspector/manifest.json +169 -37
  94. package/dist/positioning/index.d.ts +2 -2
  95. package/dist/positioning/index.js.map +1 -1
  96. package/package.json +1 -1
@@ -1,48 +1,74 @@
1
1
  import { Controller } from '@hotwired/stimulus';
2
2
 
3
3
  /**
4
- * Headless, accessible radio-group behavior for **custom** (non-native) radios.
4
+ * Headless, accessible radio-group behavior for **custom** radios.
5
5
  *
6
6
  * Markup contract (identifier: `stimeo--radio-group`):
7
7
  * <div data-controller="stimeo--radio-group" role="radiogroup" aria-label="Plan">
8
8
  * <div role="radio" aria-checked="true" tabindex="0" data-value="basic"
9
- * data-stimeo--radio-group-target="radio"
10
- * data-action="click->stimeo--radio-group#select
11
- * keydown->stimeo--radio-group#onKeydown">Basic</div>
12
- * <!-- more radios; exactly one tabindex=0 -->
9
+ * data-stimeo--radio-group-target="radio">Basic</div>
10
+ * <!-- more radios; exactly one navigable radio has tabindex=0 -->
13
11
  * <input type="hidden" data-stimeo--radio-group-target="field" />
14
12
  * </div>
15
13
  *
16
14
  * Implements the WAI-ARIA APG **Radio Group** pattern. Use this only for custom
17
- * radios (e.g. button-styled cards); native `<input type="radio">` already does
18
- * this and should be preferred when its look suffices.
15
+ * radios; native `<input type="radio">` already owns its activation and form
16
+ * semantics and should be preferred when its appearance is sufficient.
19
17
  *
20
18
  * @remarks
21
19
  * Behavior only — selection is exposed through `aria-checked`, the single Tab
22
20
  * stop through roving `tabindex` ({@link RovingTabindex}); the consumer styles
23
- * off `[role="radio"][aria-checked="true"]`. Per APG, **selection follows
24
- * focus**: arrow keys move focus and select in one step.
21
+ * those attributes. Selection follows focus for enabled radios.
22
+ *
23
+ * A supported radio is either `<button type="button">` or a non-interactive
24
+ * host such as `<div role="radio">`. Other native interactive elements retain
25
+ * their activation model and this controller stands down on them.
26
+ *
27
+ * Click and keydown handling are delegated from the group, so radios added at
28
+ * runtime need only the `radio` target. Per-radio `data-action` bindings to
29
+ * {@link select} and {@link onKeydown} remain supported and are idempotent when
30
+ * combined with delegation.
25
31
  *
26
32
  * Behavior provided:
27
33
  * - Click selects a radio.
28
34
  * - `ArrowDown`/`ArrowRight` select the next, `ArrowUp`/`ArrowLeft` the previous
29
35
  * (wrapping); `Home`/`End` the first/last; `Space` selects the focused radio.
30
- * - The selected radio's `data-value` is mirrored to the optional hidden `field`,
31
- * and `stimeo--radio-group:change` is dispatched on every change.
36
+ * - Native-disabled and hidden radios are skipped. ARIA-disabled radios remain
37
+ * discoverable in the roving order but cannot be selected.
38
+ * - The selected radio's `data-value` is mirrored to the optional hidden field.
39
+ * `stimeo--radio-group:change` is dispatched only when selection identity
40
+ * changes through user interaction.
41
+ * - `stimeo--radio-group:reconcile` reports a selection this controller decided
42
+ * on its own — a removed selection, or first-wins over duplicate checked state
43
+ * — carrying the same detail as `change`. The hidden field's native `change`
44
+ * stays reserved for user edits, so form automation never sees a repair as one.
32
45
  */
33
46
  declare class RadioGroupController extends Controller<HTMLElement> {
34
47
  #private;
35
48
  static targets: string[];
36
49
  static actions: readonly ["onKeydown", "select"];
37
- static events: readonly ["change"];
50
+ static events: readonly ["change", "reconcile"];
38
51
  readonly radioTargets: HTMLElement[];
39
52
  readonly fieldTarget: HTMLInputElement;
40
53
  readonly hasFieldTarget: boolean;
41
- /** Establishes the roving entry point and reflects the initial selection. */
54
+ /**
55
+ * Normalizes authored selection, establishes the APG Tab entry point, and
56
+ * reflects derived form state without reporting a user edit.
57
+ */
42
58
  connect(): void;
43
- /** Selects the clicked radio. Bound via `data-action` (click). */
59
+ /** Releases every listener, observer, and queued pass while retaining live DOM state. */
60
+ disconnect(): void;
61
+ /** Removes a newly connected radio from the Tab sequence before batch reconciliation. */
62
+ radioTargetConnected(radio: HTMLElement): void;
63
+ /** Releases target-only attributes and repairs selection, form state, focus, and roving. */
64
+ radioTargetDisconnected(radio: HTMLElement): void;
65
+ /** Reflects the current selection into a field added or replaced at runtime. */
66
+ fieldTargetConnected(): void;
67
+ /** Reconciles after a field target is removed from a retained group. */
68
+ fieldTargetDisconnected(): void;
69
+ /** Selects the action's radio. Per-radio action wiring is optional. */
44
70
  select(event: Event): void;
45
- /** Arrow/Home/End/Space navigation with selection-follows-focus. */
71
+ /** Applies the APG key map to the action's radio. Per-radio action wiring is optional. */
46
72
  onKeydown(event: KeyboardEvent): void;
47
73
  }
48
74