@angular/aria 21.0.0-next.9 → 21.0.0-rc.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 (49) hide show
  1. package/_adev_assets/aria-accordion.json +373 -0
  2. package/_adev_assets/aria-combobox.json +383 -0
  3. package/_adev_assets/aria-grid.json +578 -0
  4. package/_adev_assets/aria-listbox.json +511 -0
  5. package/_adev_assets/aria-menu.json +752 -0
  6. package/_adev_assets/aria-radio-group.json +389 -0
  7. package/_adev_assets/aria-tabs.json +987 -0
  8. package/_adev_assets/aria-toolbar.json +717 -0
  9. package/_adev_assets/aria-tree.json +1067 -0
  10. package/fesm2022/_widget-chunk.mjs +827 -0
  11. package/fesm2022/_widget-chunk.mjs.map +1 -0
  12. package/fesm2022/accordion.mjs +371 -172
  13. package/fesm2022/accordion.mjs.map +1 -1
  14. package/fesm2022/aria.mjs +1 -2
  15. package/fesm2022/aria.mjs.map +1 -1
  16. package/fesm2022/combobox.mjs +304 -114
  17. package/fesm2022/combobox.mjs.map +1 -1
  18. package/fesm2022/deferred-content.mjs +89 -50
  19. package/fesm2022/deferred-content.mjs.map +1 -1
  20. package/fesm2022/grid.mjs +517 -0
  21. package/fesm2022/grid.mjs.map +1 -0
  22. package/fesm2022/listbox.mjs +384 -183
  23. package/fesm2022/listbox.mjs.map +1 -1
  24. package/fesm2022/menu.mjs +535 -0
  25. package/fesm2022/menu.mjs.map +1 -0
  26. package/fesm2022/private.mjs +2347 -0
  27. package/fesm2022/private.mjs.map +1 -0
  28. package/fesm2022/radio-group.mjs +320 -179
  29. package/fesm2022/radio-group.mjs.map +1 -1
  30. package/fesm2022/tabs.mjs +483 -274
  31. package/fesm2022/tabs.mjs.map +1 -1
  32. package/fesm2022/toolbar.mjs +330 -199
  33. package/fesm2022/toolbar.mjs.map +1 -1
  34. package/fesm2022/tree.mjs +509 -264
  35. package/fesm2022/tree.mjs.map +1 -1
  36. package/package.json +14 -6
  37. package/types/_grid-chunk.d.ts +546 -0
  38. package/types/accordion.d.ts +4 -4
  39. package/types/combobox.d.ts +18 -5
  40. package/types/grid.d.ts +111 -0
  41. package/types/listbox.d.ts +6 -3
  42. package/types/menu.d.ts +158 -0
  43. package/types/{ui-patterns.d.ts → private.d.ts} +333 -133
  44. package/types/radio-group.d.ts +5 -3
  45. package/types/tabs.d.ts +4 -4
  46. package/types/toolbar.d.ts +4 -4
  47. package/types/tree.d.ts +7 -4
  48. package/fesm2022/ui-patterns.mjs +0 -2504
  49. package/fesm2022/ui-patterns.mjs.map +0 -1
@@ -1,107 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
-
3
- /**
4
- * Options that are applicable to all event handlers.
5
- *
6
- * This library has not yet had a need for stopPropagationImmediate.
7
- */
8
- interface EventHandlerOptions {
9
- stopPropagation: boolean;
10
- preventDefault: boolean;
11
- }
12
- /** A basic event handler. */
13
- type EventHandler<T extends Event> = (event: T) => void;
14
- /** A function that determines whether an event is to be handled. */
15
- type EventMatcher<T extends Event> = (event: T) => boolean;
16
- /** A config that specifies how to handle a particular event. */
17
- interface EventHandlerConfig<T extends Event> extends EventHandlerOptions {
18
- matcher: EventMatcher<T>;
19
- handler: EventHandler<T>;
20
- }
21
- /** Bit flag representation of the possible modifier keys that can be present on an event. */
22
- declare enum Modifier {
23
- None = 0,
24
- Ctrl = 1,
25
- Shift = 2,
26
- Alt = 4,
27
- Meta = 8,
28
- Any = "Any"
29
- }
30
- type ModifierInputs = Modifier | Modifier[];
31
- /**
32
- * Abstract base class for all event managers.
33
- *
34
- * Event managers are designed to normalize how event handlers are authored and create a safety net
35
- * for common event handling gotchas like remembering to call preventDefault or stopPropagation.
36
- */
37
- declare abstract class EventManager<T extends Event> {
38
- protected configs: EventHandlerConfig<T>[];
39
- abstract options: EventHandlerOptions;
40
- /** Runs the handlers that match with the given event. */
41
- handle(event: T): void;
42
- /** Configures the event manager to handle specific events. (See subclasses for more). */
43
- abstract on(...args: [...unknown[]]): this;
44
- }
45
-
46
- type SignalLike<T> = () => T;
47
- interface WritableSignalLike<T> extends SignalLike<T> {
48
- set(value: T): void;
49
- update(updateFn: (value: T) => T): void;
50
- }
51
- /** Converts a getter setter style signal to a WritableSignalLike. */
52
- declare function convertGetterSetterToWritableSignalLike<T>(getter: () => T, setter: (v: T) => void): WritableSignalLike<T>;
53
-
54
- /**
55
- * Used to represent a keycode.
56
- *
57
- * This is used to match whether an events keycode should be handled. The ability to match using a
58
- * string, SignalLike, or Regexp gives us more flexibility when authoring event handlers.
59
- */
60
- type KeyCode = string | SignalLike<string> | RegExp;
61
- /**
62
- * An event manager that is specialized for handling keyboard events. By default this manager stops
63
- * propagation and prevents default on all events it handles.
64
- */
65
- declare class KeyboardEventManager<T extends KeyboardEvent> extends EventManager<T> {
66
- options: EventHandlerOptions;
67
- /** Configures this event manager to handle events with a specific key and no modifiers. */
68
- on(key: KeyCode, handler: EventHandler<T>): this;
69
- /** Configures this event manager to handle events with a specific modifer and key combination. */
70
- on(modifiers: ModifierInputs, key: KeyCode, handler: EventHandler<T>): this;
71
- private _normalizeInputs;
72
- private _isMatch;
73
- }
74
-
75
- /**
76
- * The different mouse buttons that may appear on a pointer event.
77
- */
78
- declare enum MouseButton {
79
- Main = 0,
80
- Auxiliary = 1,
81
- Secondary = 2
82
- }
83
- /** An event manager that is specialized for handling pointer events. */
84
- declare class PointerEventManager<T extends PointerEvent> extends EventManager<T> {
85
- options: EventHandlerOptions;
86
- /**
87
- * Configures this event manager to handle events with a specific modifer and mouse button
88
- * combination.
89
- */
90
- on(button: MouseButton, modifiers: ModifierInputs, handler: EventHandler<T>): this;
91
- /**
92
- * Configures this event manager to handle events with a specific mouse button and no modifiers.
93
- */
94
- on(modifiers: ModifierInputs, handler: EventHandler<T>): this;
95
- /**
96
- * Configures this event manager to handle events with the main mouse button and no modifiers.
97
- *
98
- * @param handler The handler function
99
- * @param options Options for whether to stop propagation or prevent default.
100
- */
101
- on(handler: EventHandler<T>): this;
102
- private _normalizeInputs;
103
- _isMatch(event: PointerEvent, button: MouseButton, modifiers: ModifierInputs): boolean;
104
- }
2
+ import { Signal } from '@angular/core';
3
+ import { SignalLike, WritableSignalLike, KeyboardEventManager, PointerEventManager } from './_grid-chunk.js';
4
+ export { GridCellInputs, GridCellPattern, GridCellWidgetInputs, GridCellWidgetPattern, GridInputs, GridPattern, GridRowInputs, GridRowPattern, convertGetterSetterToWritableSignalLike } from './_grid-chunk.js';
105
5
 
106
6
  /** Represents an item in a collection, such as a listbox option, than may receive focus. */
107
7
  interface ListFocusItem {
@@ -147,7 +47,9 @@ declare class ListFocus<T extends ListFocusItem> {
147
47
  /** Returns the tabindex for the given item. */
148
48
  getItemTabindex(item: T): -1 | 0;
149
49
  /** Moves focus to the given item if it is focusable. */
150
- focus(item: T): boolean;
50
+ focus(item: T, opts?: {
51
+ focusElement?: boolean;
52
+ }): boolean;
151
53
  /** Returns true if the given item can be navigated to. */
152
54
  isFocusable(item: T): boolean;
153
55
  }
@@ -173,19 +75,29 @@ declare class ListNavigation<T extends ListNavigationItem> {
173
75
  focusManager: ListFocus<T>;
174
76
  });
175
77
  /** Navigates to the given item. */
176
- goto(item?: T): boolean;
78
+ goto(item?: T, opts?: {
79
+ focusElement?: boolean;
80
+ }): boolean;
177
81
  /** Navigates to the next item in the list. */
178
- next(): boolean;
82
+ next(opts?: {
83
+ focusElement?: boolean;
84
+ }): boolean;
179
85
  /** Peeks the next item in the list. */
180
86
  peekNext(): T | undefined;
181
87
  /** Navigates to the previous item in the list. */
182
- prev(): boolean;
88
+ prev(opts?: {
89
+ focusElement?: boolean;
90
+ }): boolean;
183
91
  /** Peeks the previous item in the list. */
184
92
  peekPrev(): T | undefined;
185
93
  /** Navigates to the first item in the list. */
186
- first(): boolean;
94
+ first(opts?: {
95
+ focusElement?: boolean;
96
+ }): boolean;
187
97
  /** Navigates to the last item in the list. */
188
- last(): boolean;
98
+ last(opts?: {
99
+ focusElement?: boolean;
100
+ }): boolean;
189
101
  /** Advances to the next or previous focusable item in the list based on the given delta. */
190
102
  private _advance;
191
103
  /** Peeks the next or previous focusable item in the list based on the given delta. */
@@ -196,6 +108,8 @@ declare class ListNavigation<T extends ListNavigationItem> {
196
108
  interface ListSelectionItem<V> extends ListFocusItem {
197
109
  /** The value of the item. */
198
110
  value: SignalLike<V>;
111
+ /** Whether the item is selectable. */
112
+ selectable: SignalLike<boolean>;
199
113
  }
200
114
  /** Represents the required inputs for a collection that contains selectable items. */
201
115
  interface ListSelectionInputs<T extends ListSelectionItem<V>, V> extends ListFocusInputs<T> {
@@ -299,13 +213,14 @@ declare class ListTypeahead<T extends ListTypeaheadItem> {
299
213
  private _getItem;
300
214
  }
301
215
 
302
- /** The selection operations that the list can perform. */
303
- interface SelectOptions$1 {
216
+ /** The operations that the list can perform after navigation. */
217
+ interface NavOptions {
304
218
  toggle?: boolean;
305
219
  select?: boolean;
306
220
  selectOne?: boolean;
307
221
  selectRange?: boolean;
308
222
  anchor?: boolean;
223
+ focusElement?: boolean;
309
224
  }
310
225
  /** Represents an item in the list. */
311
226
  type ListItem<V> = ListTypeaheadItem & ListNavigationItem & ListSelectionItem<V> & ListFocusItem;
@@ -349,21 +264,21 @@ declare class List<T extends ListItem<V>, V> {
349
264
  /** Returns the tabindex for the given item. */
350
265
  getItemTabindex(item: T): 0 | -1;
351
266
  /** Navigates to the first option in the list. */
352
- first(opts?: SelectOptions$1): void;
267
+ first(opts?: NavOptions): void;
353
268
  /** Navigates to the last option in the list. */
354
- last(opts?: SelectOptions$1): void;
269
+ last(opts?: NavOptions): void;
355
270
  /** Navigates to the next option in the list. */
356
- next(opts?: SelectOptions$1): void;
271
+ next(opts?: NavOptions): void;
357
272
  /** Navigates to the previous option in the list. */
358
- prev(opts?: SelectOptions$1): void;
273
+ prev(opts?: NavOptions): void;
359
274
  /** Navigates to the given item in the list. */
360
- goto(item: T, opts?: SelectOptions$1): void;
275
+ goto(item: T, opts?: NavOptions): void;
361
276
  /** Removes focus from the list. */
362
277
  unfocus(): void;
363
278
  /** Marks the given index as the potential start of a range selection. */
364
279
  anchor(index: number): void;
365
280
  /** Handles typeahead search navigation for the list. */
366
- search(char: string, opts?: SelectOptions$1): void;
281
+ search(char: string, opts?: NavOptions): void;
367
282
  /** Checks if the list is currently typing for typeahead search. */
368
283
  isTyping(): boolean;
369
284
  /** Selects the currently active item in the list. */
@@ -383,7 +298,7 @@ declare class List<T extends ListItem<V>, V> {
383
298
  /** Checks if the given item is able to receive focus. */
384
299
  isFocusable(item: T): boolean;
385
300
  /** Handles updating selection for the list. */
386
- updateSelection(opts?: SelectOptions$1): void;
301
+ updateSelection(opts?: NavOptions): void;
387
302
  /**
388
303
  * Safely performs a navigation operation.
389
304
  *
@@ -410,6 +325,12 @@ interface ComboboxInputs<T extends ListItem<V>, V> {
410
325
  inputValue?: WritableSignalLike<string>;
411
326
  /** The value of the first matching item in the popup. */
412
327
  firstMatch: SignalLike<V | undefined>;
328
+ /** Whether the combobox is disabled. */
329
+ disabled: SignalLike<boolean>;
330
+ /** Whether the combobox is read-only. */
331
+ readonly: SignalLike<boolean>;
332
+ /** Whether the combobox is in a right-to-left context. */
333
+ textDirection: SignalLike<'rtl' | 'ltr'>;
413
334
  }
414
335
  /** An interface that allows combobox popups to expose the necessary controls for the combobox. */
415
336
  interface ComboboxListboxControls<T extends ListItem<V>, V> {
@@ -472,15 +393,17 @@ declare class ComboboxPattern<T extends ListItem<V>, V> {
472
393
  /** Whether the combobox is focused. */
473
394
  isFocused: _angular_core.WritableSignal<boolean>;
474
395
  /** The key used to navigate to the previous item in the list. */
475
- expandKey: _angular_core.Signal<string>;
396
+ expandKey: _angular_core.Signal<"ArrowLeft" | "ArrowRight">;
476
397
  /** The key used to navigate to the next item in the list. */
477
- collapseKey: _angular_core.Signal<string>;
398
+ collapseKey: _angular_core.Signal<"ArrowLeft" | "ArrowRight">;
478
399
  /** The ID of the popup associated with the combobox. */
479
400
  popupId: _angular_core.Signal<string | null>;
480
401
  /** The autocomplete behavior of the combobox. */
481
402
  autocomplete: _angular_core.Signal<"both" | "list">;
482
403
  /** The ARIA role of the popup associated with the combobox. */
483
404
  hasPopup: _angular_core.Signal<"listbox" | "tree" | "grid" | null>;
405
+ /** Whether the combobox is interactive. */
406
+ isInteractive: _angular_core.Signal<boolean>;
484
407
  /** The keydown event manager for the combobox. */
485
408
  keydown: _angular_core.Signal<KeyboardEventManager<KeyboardEvent>>;
486
409
  /** The pointerup event manager for the combobox. */
@@ -492,11 +415,15 @@ declare class ComboboxPattern<T extends ListItem<V>, V> {
492
415
  onPointerup(event: PointerEvent): void;
493
416
  /** Handles input events for the combobox. */
494
417
  onInput(event: Event): void;
418
+ /** Handles focus in events for the combobox. */
495
419
  onFocusIn(): void;
496
420
  /** Handles focus out events for the combobox. */
497
421
  onFocusOut(event: FocusEvent): void;
422
+ /** The first matching item in the combobox. */
498
423
  firstMatch: _angular_core.Signal<T | undefined>;
424
+ /** Handles filtering logic for the combobox. */
499
425
  onFilter(): void;
426
+ /** Highlights the currently selected item in the combobox. */
500
427
  highlight(): void;
501
428
  /** Closes the combobox. */
502
429
  close(): void;
@@ -513,7 +440,9 @@ declare class ComboboxPattern<T extends ListItem<V>, V> {
513
440
  first(): void;
514
441
  /** Navigates to the last focusable item in the combobox popup. */
515
442
  last(): void;
443
+ /** Collapses the currently focused item in the combobox. */
516
444
  collapseItem(): void;
445
+ /** Expands the currently focused item in the combobox. */
517
446
  expandItem(): void;
518
447
  /** Selects an item in the combobox popup. */
519
448
  select(opts?: {
@@ -536,7 +465,7 @@ interface ListboxPattern$1<V> {
536
465
  listBehavior: List<OptionPattern<V>, V>;
537
466
  }
538
467
  /** Represents the required inputs for an option in a listbox. */
539
- interface OptionInputs<V> extends Omit<ListItem<V>, 'index'> {
468
+ interface OptionInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {
540
469
  listbox: SignalLike<ListboxPattern$1<V> | undefined>;
541
470
  }
542
471
  /** Represents an option in a listbox. */
@@ -551,6 +480,8 @@ declare class OptionPattern<V> {
551
480
  active: _angular_core.Signal<boolean>;
552
481
  /** Whether the option is selected. */
553
482
  selected: _angular_core.Signal<boolean | undefined>;
483
+ /** Whether the option is selectable. */
484
+ selectable: () => boolean;
554
485
  /** Whether the option is disabled. */
555
486
  disabled: SignalLike<boolean>;
556
487
  /** The text used by the typeahead search. */
@@ -672,8 +603,225 @@ declare class ComboboxListboxPattern<V> extends ListboxPattern<V> implements Com
672
603
  setValue: (value: V | undefined) => void;
673
604
  }
674
605
 
606
+ /** The inputs for the MenuBarPattern class. */
607
+ interface MenuBarInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'disabled'> {
608
+ /** The menu items contained in the menu. */
609
+ items: SignalLike<MenuItemPattern<V>[]>;
610
+ /** Callback function triggered when a menu item is selected. */
611
+ onSubmit?: (value: V) => void;
612
+ }
613
+ /** The inputs for the MenuPattern class. */
614
+ interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value' | 'disabled'> {
615
+ /** The unique ID of the menu. */
616
+ id: SignalLike<string>;
617
+ /** The menu items contained in the menu. */
618
+ items: SignalLike<MenuItemPattern<V>[]>;
619
+ /** A reference to the parent menu or menu trigger. */
620
+ parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;
621
+ /** Callback function triggered when a menu item is selected. */
622
+ onSubmit?: (value: V) => void;
623
+ }
624
+ /** The inputs for the MenuTriggerPattern class. */
625
+ interface MenuTriggerInputs<V> {
626
+ /** A reference to the menu trigger element. */
627
+ element: SignalLike<HTMLElement | undefined>;
628
+ /** A reference to the submenu associated with the menu trigger. */
629
+ submenu: SignalLike<MenuPattern<V> | undefined>;
630
+ /** Callback function triggered when a menu item is selected. */
631
+ onSubmit?: (value: V) => void;
632
+ }
633
+ /** The inputs for the MenuItemPattern class. */
634
+ interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {
635
+ /** A reference to the parent menu or menu trigger. */
636
+ parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;
637
+ /** A reference to the submenu associated with the menu item. */
638
+ submenu: SignalLike<MenuPattern<V> | undefined>;
639
+ }
640
+ /** The menu ui pattern class. */
641
+ declare class MenuPattern<V> {
642
+ readonly inputs: MenuInputs<V>;
643
+ /** The unique ID of the menu. */
644
+ id: SignalLike<string>;
645
+ /** The role of the menu. */
646
+ role: () => string;
647
+ /** Whether the menu is visible. */
648
+ isVisible: Signal<boolean>;
649
+ /** Controls list behavior for the menu items. */
650
+ listBehavior: List<MenuItemPattern<V>, V>;
651
+ /** Whether the menu or any of its child elements are currently focused. */
652
+ isFocused: _angular_core.WritableSignal<boolean>;
653
+ /** Whether the menu has received focus. */
654
+ hasBeenFocused: _angular_core.WritableSignal<boolean>;
655
+ /** Whether the menu should be focused on mouse over. */
656
+ shouldFocus: Signal<boolean>;
657
+ /** The key used to expand sub-menus. */
658
+ private _expandKey;
659
+ /** The key used to collapse sub-menus. */
660
+ private _collapseKey;
661
+ /** Represents the space key. Does nothing when the user is actively using typeahead. */
662
+ dynamicSpaceKey: Signal<"" | " ">;
663
+ /** The regexp used to decide if a key should trigger typeahead. */
664
+ typeaheadRegexp: RegExp;
665
+ /** The root of the menu. */
666
+ root: Signal<MenuTriggerPattern<V> | MenuBarPattern<V> | MenuPattern<V> | undefined>;
667
+ /** Handles keyboard events for the menu. */
668
+ keydownManager: Signal<KeyboardEventManager<KeyboardEvent>>;
669
+ constructor(inputs: MenuInputs<V>);
670
+ /** Sets the default state for the menu. */
671
+ setDefaultState(): void;
672
+ /** Handles keyboard events for the menu. */
673
+ onKeydown(event: KeyboardEvent): void;
674
+ /** Handles mouseover events for the menu. */
675
+ onMouseOver(event: MouseEvent): void;
676
+ /** Handles mouseout events for the menu. */
677
+ onMouseOut(event: MouseEvent): void;
678
+ /** Handles click events for the menu. */
679
+ onClick(event: MouseEvent): void;
680
+ /** Handles focusin events for the menu. */
681
+ onFocusIn(): void;
682
+ /** Handles the focusout event for the menu. */
683
+ onFocusOut(event: FocusEvent): void;
684
+ /** Focuses the previous menu item. */
685
+ prev(): void;
686
+ /** Focuses the next menu item. */
687
+ next(): void;
688
+ /** Focuses the first menu item. */
689
+ first(): void;
690
+ /** Focuses the last menu item. */
691
+ last(): void;
692
+ /** Triggers the active menu item. */
693
+ trigger(): void;
694
+ /** Submits the menu. */
695
+ submit(item?: MenuItemPattern<V> | undefined): void;
696
+ /** Collapses the current menu or focuses the previous item in the menubar. */
697
+ collapse(): void;
698
+ /** Expands the current menu or focuses the next item in the menubar. */
699
+ expand(): void;
700
+ /** Closes the menu and all parent menus. */
701
+ closeAll(): void;
702
+ }
703
+ /** The menubar ui pattern class. */
704
+ declare class MenuBarPattern<V> {
705
+ readonly inputs: MenuBarInputs<V>;
706
+ /** Controls list behavior for the menu items. */
707
+ listBehavior: List<MenuItemPattern<V>, V>;
708
+ /** The key used to navigate to the next item. */
709
+ private _nextKey;
710
+ /** The key used to navigate to the previous item. */
711
+ private _previousKey;
712
+ /** Represents the space key. Does nothing when the user is actively using typeahead. */
713
+ dynamicSpaceKey: Signal<"" | " ">;
714
+ /** The regexp used to decide if a key should trigger typeahead. */
715
+ typeaheadRegexp: RegExp;
716
+ /** Whether the menubar or any of its children are currently focused. */
717
+ isFocused: _angular_core.WritableSignal<boolean>;
718
+ /** Whether the menubar has been focused. */
719
+ hasBeenFocused: _angular_core.WritableSignal<boolean>;
720
+ /** Handles keyboard events for the menu. */
721
+ keydownManager: Signal<KeyboardEventManager<KeyboardEvent>>;
722
+ constructor(inputs: MenuBarInputs<V>);
723
+ /** Sets the default state for the menubar. */
724
+ setDefaultState(): void;
725
+ /** Handles keyboard events for the menu. */
726
+ onKeydown(event: KeyboardEvent): void;
727
+ /** Handles click events for the menu bar. */
728
+ onClick(event: MouseEvent): void;
729
+ /** Handles mouseover events for the menu bar. */
730
+ onMouseOver(event: MouseEvent): void;
731
+ /** Handles focusin events for the menu bar. */
732
+ onFocusIn(): void;
733
+ /** Handles focusout events for the menu bar. */
734
+ onFocusOut(event: FocusEvent): void;
735
+ /** Goes to and optionally focuses the specified menu item. */
736
+ goto(item: MenuItemPattern<V>, opts?: {
737
+ focusElement?: boolean;
738
+ }): void;
739
+ /** Focuses the next menu item. */
740
+ next(): void;
741
+ /** Focuses the previous menu item. */
742
+ prev(): void;
743
+ /** Closes the menubar and refocuses the root menu bar item. */
744
+ close(): void;
745
+ }
746
+ /** The menu trigger ui pattern class. */
747
+ declare class MenuTriggerPattern<V> {
748
+ readonly inputs: MenuTriggerInputs<V>;
749
+ /** Whether the menu is expanded. */
750
+ expanded: _angular_core.WritableSignal<boolean>;
751
+ /** The role of the menu trigger. */
752
+ role: () => string;
753
+ /** Whether the menu trigger has a popup. */
754
+ hasPopup: () => boolean;
755
+ /** The submenu associated with the trigger. */
756
+ submenu: SignalLike<MenuPattern<V> | undefined>;
757
+ /** The tabindex of the menu trigger. */
758
+ tabindex: Signal<-1 | 0>;
759
+ /** Handles keyboard events for the menu trigger. */
760
+ keydownManager: Signal<KeyboardEventManager<KeyboardEvent>>;
761
+ constructor(inputs: MenuTriggerInputs<V>);
762
+ /** Handles keyboard events for the menu trigger. */
763
+ onKeydown(event: KeyboardEvent): void;
764
+ /** Handles click events for the menu trigger. */
765
+ onClick(): void;
766
+ /** Handles focusout events for the menu trigger. */
767
+ onFocusOut(event: FocusEvent): void;
768
+ /** Opens the menu. */
769
+ open(opts?: {
770
+ first?: boolean;
771
+ last?: boolean;
772
+ }): void;
773
+ /** Closes the menu. */
774
+ close(opts?: {
775
+ refocus?: boolean;
776
+ }): void;
777
+ }
778
+ /** The menu item ui pattern class. */
779
+ declare class MenuItemPattern<V> implements ListItem<V> {
780
+ readonly inputs: MenuItemInputs<V>;
781
+ /** The value of the menu item. */
782
+ value: SignalLike<V>;
783
+ /** The unique ID of the menu item. */
784
+ id: SignalLike<string>;
785
+ /** Whether the menu item is disabled. */
786
+ disabled: SignalLike<boolean>;
787
+ /** The search term for the menu item. */
788
+ searchTerm: SignalLike<string>;
789
+ /** The element of the menu item. */
790
+ element: SignalLike<HTMLElement>;
791
+ /** Whether the menu item is active. */
792
+ isActive: Signal<boolean>;
793
+ /** The tabindex of the menu item. */
794
+ tabindex: Signal<0 | -1>;
795
+ /** The position of the menu item in the menu. */
796
+ index: Signal<number>;
797
+ /** Whether the menu item is expanded. */
798
+ expanded: Signal<boolean | null>;
799
+ /** Whether the menu item is expanded. */
800
+ _expanded: _angular_core.WritableSignal<boolean>;
801
+ /** The ID of the menu that the menu item controls. */
802
+ controls: _angular_core.WritableSignal<string | undefined>;
803
+ /** The role of the menu item. */
804
+ role: () => string;
805
+ /** Whether the menu item has a popup. */
806
+ hasPopup: Signal<boolean>;
807
+ /** The submenu associated with the menu item. */
808
+ submenu: SignalLike<MenuPattern<V> | undefined>;
809
+ /** Whether the menu item is selectable. */
810
+ selectable: SignalLike<boolean>;
811
+ constructor(inputs: MenuItemInputs<V>);
812
+ /** Opens the submenu. */
813
+ open(opts?: {
814
+ first?: boolean;
815
+ last?: boolean;
816
+ }): void;
817
+ /** Closes the submenu. */
818
+ close(opts?: {
819
+ refocus?: boolean;
820
+ }): void;
821
+ }
822
+
675
823
  /** Represents the required inputs for a radio button in a radio group. */
676
- interface RadioButtonInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'index'> {
824
+ interface RadioButtonInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'index' | 'selectable'> {
677
825
  /** A reference to the parent radio group. */
678
826
  group: SignalLike<RadioGroupPattern<V> | undefined>;
679
827
  }
@@ -690,6 +838,8 @@ declare class RadioButtonPattern<V> {
690
838
  readonly active: _angular_core.Signal<boolean>;
691
839
  /** Whether the radio button is selected. */
692
840
  readonly selected: SignalLike<boolean>;
841
+ /** Whether the radio button is selectable. */
842
+ readonly selectable: () => boolean;
693
843
  /** Whether the radio button is disabled. */
694
844
  readonly disabled: SignalLike<boolean>;
695
845
  /** A reference to the parent radio group. */
@@ -758,7 +908,7 @@ declare class RadioGroupPattern<V> {
758
908
  }
759
909
 
760
910
  /** Represents the required inputs for a toolbar widget in a toolbar. */
761
- interface ToolbarWidgetInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'value' | 'index'> {
911
+ interface ToolbarWidgetInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'value' | 'index' | 'selectable'> {
762
912
  /** A reference to the parent toolbar. */
763
913
  toolbar: SignalLike<ToolbarPattern<V>>;
764
914
  }
@@ -778,6 +928,8 @@ declare class ToolbarWidgetPattern<V> implements ListItem<V> {
778
928
  readonly searchTerm: () => string;
779
929
  /** The value associated with the widget. */
780
930
  readonly value: () => V;
931
+ /** Whether the widget is selectable. */
932
+ readonly selectable: () => boolean;
781
933
  /** The position of the widget within the toolbar. */
782
934
  readonly index: _angular_core.Signal<number>;
783
935
  /** Whether the widget is currently the active one (focused). */
@@ -809,7 +961,7 @@ interface ToolbarWidgetGroupControls {
809
961
  setDefaultState(): void;
810
962
  }
811
963
  /** Represents the required inputs for a toolbar widget group. */
812
- interface ToolbarWidgetGroupInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'value' | 'index'> {
964
+ interface ToolbarWidgetGroupInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'value' | 'index' | 'selectable'> {
813
965
  /** A reference to the parent toolbar. */
814
966
  toolbar: SignalLike<ToolbarPattern<V> | undefined>;
815
967
  /** The controls for the sub patterns associated with the toolbar. */
@@ -830,6 +982,8 @@ declare class ToolbarWidgetGroupPattern<V> implements ListItem<V> {
830
982
  readonly searchTerm: () => string;
831
983
  /** The value associated with the widget. */
832
984
  readonly value: () => V;
985
+ /** Whether the widget is selectable. */
986
+ readonly selectable: () => boolean;
833
987
  /** The position of the widget within the toolbar. */
834
988
  readonly index: _angular_core.Signal<number>;
835
989
  /** The actions that can be performed on the widget group. */
@@ -1023,7 +1177,7 @@ declare class LabelControl {
1023
1177
  }
1024
1178
 
1025
1179
  /** The required inputs to tabs. */
1026
- interface TabInputs extends Omit<ListItem<string>, 'searchTerm' | 'index'>, Omit<ExpansionItem, 'expansionId' | 'expandable'> {
1180
+ interface TabInputs extends Omit<ListItem<string>, 'searchTerm' | 'index' | 'selectable'>, Omit<ExpansionItem, 'expansionId' | 'expandable'> {
1027
1181
  /** The parent tablist that controls the tab. */
1028
1182
  tablist: SignalLike<TabListPattern>;
1029
1183
  /** The remote tabpanel controlled by the tab. */
@@ -1044,6 +1198,8 @@ declare class TabPattern {
1044
1198
  readonly disabled: SignalLike<boolean>;
1045
1199
  /** The html element that should receive focus. */
1046
1200
  readonly element: SignalLike<HTMLElement>;
1201
+ /** Whether the tab is selectable. */
1202
+ readonly selectable: () => boolean;
1047
1203
  /** The text used by the typeahead search. */
1048
1204
  readonly searchTerm: () => string;
1049
1205
  /** Whether this tab has expandable content. */
@@ -1224,13 +1380,27 @@ interface TreeItemInputs<V> extends Omit<ListItem<V>, 'index'> {
1224
1380
  /** The tree pattern this item belongs to. */
1225
1381
  tree: SignalLike<TreePattern<V>>;
1226
1382
  }
1227
- interface TreeItemPattern<V> extends TreeItemInputs<V> {
1228
- }
1229
1383
  /**
1230
1384
  * Represents an item in a Tree.
1231
1385
  */
1232
- declare class TreeItemPattern<V> implements ExpansionItem {
1386
+ declare class TreeItemPattern<V> implements ListItem<V>, ExpansionItem {
1233
1387
  readonly inputs: TreeItemInputs<V>;
1388
+ /** A unique identifier for this item. */
1389
+ readonly id: SignalLike<string>;
1390
+ /** The value of this item. */
1391
+ readonly value: SignalLike<V>;
1392
+ /** A reference to the item element. */
1393
+ readonly element: SignalLike<HTMLElement>;
1394
+ /** Whether the item is disabled. */
1395
+ readonly disabled: SignalLike<boolean>;
1396
+ /** The text used by the typeahead search. */
1397
+ readonly searchTerm: SignalLike<string>;
1398
+ /** The tree pattern this item belongs to. */
1399
+ readonly tree: SignalLike<TreePattern<V>>;
1400
+ /** The parent item. */
1401
+ readonly parent: SignalLike<TreeItemPattern<V> | TreePattern<V>>;
1402
+ /** The children items. */
1403
+ readonly children: SignalLike<TreeItemPattern<V>[]>;
1234
1404
  /** The position of this item among its siblings. */
1235
1405
  readonly index: _angular_core.Signal<number>;
1236
1406
  /** The unique identifier used by the expansion behavior. */
@@ -1241,6 +1411,8 @@ declare class TreeItemPattern<V> implements ExpansionItem {
1241
1411
  readonly expansion: ExpansionControl;
1242
1412
  /** Whether the item is expandable. It's expandable if children item exist. */
1243
1413
  readonly expandable: SignalLike<boolean>;
1414
+ /** Whether the item is selectable. */
1415
+ readonly selectable: SignalLike<boolean>;
1244
1416
  /** The level of the current item in a tree. */
1245
1417
  readonly level: SignalLike<number>;
1246
1418
  /** Whether this item is currently expanded. */
@@ -1256,9 +1428,9 @@ declare class TreeItemPattern<V> implements ExpansionItem {
1256
1428
  /** The tabindex of the item. */
1257
1429
  readonly tabindex: _angular_core.Signal<0 | -1>;
1258
1430
  /** Whether the item is selected. */
1259
- readonly selected: _angular_core.Signal<boolean | undefined>;
1431
+ readonly selected: SignalLike<boolean | undefined>;
1260
1432
  /** The current type of this item. */
1261
- readonly current: _angular_core.Signal<"page" | "step" | "location" | "date" | "time" | "true" | "false" | undefined>;
1433
+ readonly current: SignalLike<string | undefined>;
1262
1434
  constructor(inputs: TreeItemInputs<V>);
1263
1435
  }
1264
1436
  /** The selection operations that the tree can perform. */
@@ -1293,7 +1465,7 @@ declare class TreePattern<V> {
1293
1465
  /** The root is always expanded. */
1294
1466
  readonly expanded: () => boolean;
1295
1467
  /** The tabindex of the tree. */
1296
- tabindex: SignalLike<-1 | 0>;
1468
+ readonly tabindex: SignalLike<-1 | 0>;
1297
1469
  /** The id of the current active item. */
1298
1470
  readonly activedescendant: _angular_core.Signal<string | undefined>;
1299
1471
  /** The direct children of the root (top-level tree items). */
@@ -1318,6 +1490,34 @@ declare class TreePattern<V> {
1318
1490
  readonly keydown: _angular_core.Signal<KeyboardEventManager<KeyboardEvent>>;
1319
1491
  /** The pointerdown event manager for the tree. */
1320
1492
  pointerdown: _angular_core.Signal<PointerEventManager<PointerEvent>>;
1493
+ /** A unique identifier for the tree. */
1494
+ id: SignalLike<string>;
1495
+ /** Whether the tree is in navigation mode. */
1496
+ nav: SignalLike<boolean>;
1497
+ /** The aria-current type. */
1498
+ currentType: SignalLike<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>;
1499
+ /** All items in the tree, in document order (DFS-like, a flattened list). */
1500
+ allItems: SignalLike<TreeItemPattern<V>[]>;
1501
+ /** Whether the tree is disabled. */
1502
+ disabled: SignalLike<boolean>;
1503
+ /** The currently active item in the tree. */
1504
+ activeItem: WritableSignalLike<TreeItemPattern<V> | undefined>;
1505
+ /** Whether disabled items should be skipped when navigating. */
1506
+ skipDisabled: SignalLike<boolean>;
1507
+ /** Whether the focus should wrap when navigating past the first or last item. */
1508
+ wrap: SignalLike<boolean>;
1509
+ /** The orientation of the tree. */
1510
+ orientation: SignalLike<'vertical' | 'horizontal'>;
1511
+ /** The text direction of the tree. */
1512
+ textDirection: SignalLike<'ltr' | 'rtl'>;
1513
+ /** Whether multiple items can be selected at the same time. */
1514
+ multi: SignalLike<boolean>;
1515
+ /** The selection mode of the tree. */
1516
+ selectionMode: SignalLike<'follow' | 'explicit'>;
1517
+ /** The delay in milliseconds to wait before clearing the typeahead buffer. */
1518
+ typeaheadDelay: SignalLike<number>;
1519
+ /** The current value of the tree (the selected items). */
1520
+ value: WritableSignalLike<V[]>;
1321
1521
  constructor(inputs: TreeInputs<V>);
1322
1522
  /**
1323
1523
  * Sets the tree to it's default initial state.
@@ -1400,5 +1600,5 @@ declare class ComboboxTreePattern<V> extends TreePattern<V> implements ComboboxT
1400
1600
  collapseAll: () => void;
1401
1601
  }
1402
1602
 
1403
- export { AccordionGroupPattern, AccordionPanelPattern, AccordionTriggerPattern, ComboboxListboxPattern, ComboboxPattern, ComboboxTreePattern, ListboxPattern, OptionPattern, RadioButtonPattern, RadioGroupPattern, TabListPattern, TabPanelPattern, TabPattern, ToolbarPattern, ToolbarRadioGroupPattern, ToolbarWidgetGroupPattern, ToolbarWidgetPattern, TreeItemPattern, TreePattern, convertGetterSetterToWritableSignalLike };
1404
- export type { AccordionGroupInputs, AccordionPanelInputs, AccordionTriggerInputs, ComboboxInputs, ComboboxListboxControls, ComboboxListboxInputs, ComboboxTreeControls, ComboboxTreeInputs, ListboxInputs, OptionInputs, RadioButtonInputs, RadioGroupInputs, SignalLike, TabInputs, TabListInputs, TabPanelInputs, ToolbarInputs, ToolbarRadioGroupInputs, ToolbarWidgetGroupControls, ToolbarWidgetGroupInputs, ToolbarWidgetInputs, TreeInputs, TreeItemInputs, WritableSignalLike };
1603
+ export { AccordionGroupPattern, AccordionPanelPattern, AccordionTriggerPattern, ComboboxListboxPattern, ComboboxPattern, ComboboxTreePattern, ListboxPattern, MenuBarPattern, MenuItemPattern, MenuPattern, MenuTriggerPattern, OptionPattern, RadioButtonPattern, RadioGroupPattern, SignalLike, TabListPattern, TabPanelPattern, TabPattern, ToolbarPattern, ToolbarRadioGroupPattern, ToolbarWidgetGroupPattern, ToolbarWidgetPattern, TreeItemPattern, TreePattern, WritableSignalLike };
1604
+ export type { AccordionGroupInputs, AccordionPanelInputs, AccordionTriggerInputs, ComboboxInputs, ComboboxListboxControls, ComboboxListboxInputs, ComboboxTreeControls, ComboboxTreeInputs, ListboxInputs, MenuBarInputs, MenuInputs, MenuItemInputs, MenuTriggerInputs, OptionInputs, RadioButtonInputs, RadioGroupInputs, TabInputs, TabListInputs, TabPanelInputs, ToolbarInputs, ToolbarRadioGroupInputs, ToolbarWidgetGroupControls, ToolbarWidgetGroupInputs, ToolbarWidgetInputs, TreeInputs, TreeItemInputs };