@angular/aria 22.2.0-next.3 → 22.2.0-next.5

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 (52) hide show
  1. package/fesm2022/_accordion-chunk.mjs.map +1 -1
  2. package/fesm2022/_click-event-manager-chunk.mjs.map +1 -1
  3. package/fesm2022/_deferred-content-chunk.mjs +6 -6
  4. package/fesm2022/_deferred-content-chunk.mjs.map +1 -1
  5. package/fesm2022/_expansion-chunk.mjs.map +1 -1
  6. package/fesm2022/_list-chunk.mjs.map +1 -1
  7. package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
  8. package/fesm2022/_list-typeahead-chunk.mjs.map +1 -1
  9. package/fesm2022/_menu-chunk.mjs +6 -4
  10. package/fesm2022/_menu-chunk.mjs.map +1 -1
  11. package/fesm2022/_option-chunk.mjs.map +1 -1
  12. package/fesm2022/_tabs-chunk.mjs.map +1 -1
  13. package/fesm2022/_toolbar-widget-group-chunk.mjs +34 -53
  14. package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
  15. package/fesm2022/_transforms-chunk.mjs.map +1 -1
  16. package/fesm2022/_tree-chunk.mjs.map +1 -1
  17. package/fesm2022/_violations-chunk.mjs.map +1 -1
  18. package/fesm2022/_widget-chunk.mjs.map +1 -1
  19. package/fesm2022/accordion-testing.mjs.map +1 -1
  20. package/fesm2022/accordion.mjs +12 -12
  21. package/fesm2022/accordion.mjs.map +1 -1
  22. package/fesm2022/aria.mjs +1 -1
  23. package/fesm2022/aria.mjs.map +1 -1
  24. package/fesm2022/combobox-testing.mjs.map +1 -1
  25. package/fesm2022/combobox.mjs +11 -10
  26. package/fesm2022/combobox.mjs.map +1 -1
  27. package/fesm2022/grid-testing.mjs.map +1 -1
  28. package/fesm2022/grid.mjs +12 -12
  29. package/fesm2022/grid.mjs.map +1 -1
  30. package/fesm2022/listbox-testing.mjs.map +1 -1
  31. package/fesm2022/listbox.mjs +6 -6
  32. package/fesm2022/listbox.mjs.map +1 -1
  33. package/fesm2022/menu-testing.mjs.map +1 -1
  34. package/fesm2022/menu.mjs +18 -18
  35. package/fesm2022/menu.mjs.map +1 -1
  36. package/fesm2022/private.mjs +6 -1
  37. package/fesm2022/private.mjs.map +1 -1
  38. package/fesm2022/tabs-testing.mjs.map +1 -1
  39. package/fesm2022/tabs.mjs +15 -15
  40. package/fesm2022/tabs.mjs.map +1 -1
  41. package/fesm2022/toolbar-testing.mjs.map +1 -1
  42. package/fesm2022/toolbar.mjs +11 -86
  43. package/fesm2022/toolbar.mjs.map +1 -1
  44. package/fesm2022/tree-testing.mjs.map +1 -1
  45. package/fesm2022/tree.mjs +9 -9
  46. package/fesm2022/tree.mjs.map +1 -1
  47. package/package.json +2 -2
  48. package/types/_menu-chunk.d.ts +15 -11
  49. package/types/_toolbar-chunk.d.ts +52 -48
  50. package/types/menu.d.ts +4 -4
  51. package/types/private.d.ts +6 -0
  52. package/types/toolbar.d.ts +26 -35
package/fesm2022/tree.mjs CHANGED
@@ -124,7 +124,7 @@ class Tree {
124
124
  }
125
125
  static ɵfac = i0.ɵɵngDeclareFactory({
126
126
  minVersion: "12.0.0",
127
- version: "22.2.0-next.3",
127
+ version: "22.2.0-next.5",
128
128
  ngImport: i0,
129
129
  type: Tree,
130
130
  deps: [],
@@ -132,7 +132,7 @@ class Tree {
132
132
  });
133
133
  static ɵdir = i0.ɵɵngDeclareDirective({
134
134
  minVersion: "17.1.0",
135
- version: "22.2.0-next.3",
135
+ version: "22.2.0-next.5",
136
136
  type: Tree,
137
137
  isStandalone: true,
138
138
  selector: "[ngTree]",
@@ -256,7 +256,7 @@ class Tree {
256
256
  }
257
257
  i0.ɵɵngDeclareClassMetadata({
258
258
  minVersion: "12.0.0",
259
- version: "22.2.0-next.3",
259
+ version: "22.2.0-next.5",
260
260
  ngImport: i0,
261
261
  type: Tree,
262
262
  decorators: [{
@@ -420,7 +420,7 @@ class TreeItemGroup {
420
420
  }
421
421
  static ɵfac = i0.ɵɵngDeclareFactory({
422
422
  minVersion: "12.0.0",
423
- version: "22.2.0-next.3",
423
+ version: "22.2.0-next.5",
424
424
  ngImport: i0,
425
425
  type: TreeItemGroup,
426
426
  deps: [],
@@ -428,7 +428,7 @@ class TreeItemGroup {
428
428
  });
429
429
  static ɵdir = i0.ɵɵngDeclareDirective({
430
430
  minVersion: "17.1.0",
431
- version: "22.2.0-next.3",
431
+ version: "22.2.0-next.5",
432
432
  type: TreeItemGroup,
433
433
  isStandalone: true,
434
434
  selector: "ng-template[ngTreeItemGroup]",
@@ -450,7 +450,7 @@ class TreeItemGroup {
450
450
  }
451
451
  i0.ɵɵngDeclareClassMetadata({
452
452
  minVersion: "12.0.0",
453
- version: "22.2.0-next.3",
453
+ version: "22.2.0-next.5",
454
454
  ngImport: i0,
455
455
  type: TreeItemGroup,
456
456
  decorators: [{
@@ -578,7 +578,7 @@ class TreeItem extends DeferredContentAware {
578
578
  }
579
579
  static ɵfac = i0.ɵɵngDeclareFactory({
580
580
  minVersion: "12.0.0",
581
- version: "22.2.0-next.3",
581
+ version: "22.2.0-next.5",
582
582
  ngImport: i0,
583
583
  type: TreeItem,
584
584
  deps: [],
@@ -586,7 +586,7 @@ class TreeItem extends DeferredContentAware {
586
586
  });
587
587
  static ɵdir = i0.ɵɵngDeclareDirective({
588
588
  minVersion: "17.1.0",
589
- version: "22.2.0-next.3",
589
+ version: "22.2.0-next.5",
590
590
  type: TreeItem,
591
591
  isStandalone: true,
592
592
  selector: "[ngTreeItem]",
@@ -668,7 +668,7 @@ class TreeItem extends DeferredContentAware {
668
668
  }
669
669
  i0.ɵɵngDeclareClassMetadata({
670
670
  minVersion: "12.0.0",
671
- version: "22.2.0-next.3",
671
+ version: "22.2.0-next.5",
672
672
  ngImport: i0,
673
673
  type: TreeItem,
674
674
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n SortedCollection,\n tabIndexTransform,\n TreeItemPattern,\n TreePattern,\n reportViolations,\n} from '../private';\nimport type {TreeItem} from './tree-item';\n\n/**\n * A container that transforms nested lists into an accessible, ARIA-compliant tree structure.\n * It manages the overall state of the tree, including selection, expansion, and keyboard\n * navigation.\n *\n * ```html\n * <ul ngTree [(value)]=\"selectedItems\" [multi]=\"true\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: treeData, parent: tree}\"\n * />\n * </ul>\n *\n * <ng-template #treeNodes let-nodes=\"nodes\" let-parent=\"parent\">\n * @for (node of nodes; track node.name) {\n * <li ngTreeItem [parent]=\"parent\" [value]=\"node.name\" [label]=\"node.name\">\n * {{ node.name }}\n * @if (node.children) {\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"treeItem\" #group=\"ngTreeItemGroup\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: node.children, parent: group}\"\n * />\n * </ng-template>\n * </ul>\n * }\n * </li>\n * }\n * </ng-template>\n * ```\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: '[ngTree]',\n exportAs: 'ngTree',\n host: {\n 'role': 'tree',\n '[attr.id]': 'id()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class Tree<V> implements OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of tree items. */\n readonly _collection = new SortedCollection<TreeItem<V>>();\n\n /** A unique identifier for the tree. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-', true));\n\n /** Orientation of the tree. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multi-selection is allowed. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether the tree is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the tree.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n * - `follow`: The focused item is automatically selected.\n */\n readonly selectionMode = input<'explicit' | 'follow'>('explicit');\n\n /**\n * The focus strategy used by the tree.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the tree container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** Whether navigation wraps. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The delay in seconds before the typeahead search is reset. */\n readonly typeaheadDelay = input(500);\n\n /** The tabindex of the tree. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether the tree is in navigation mode. */\n readonly nav = input(false, {transform: booleanAttribute});\n\n /**\n * The `aria-current` type. It can be used in navigation trees to indicate the currently active item.\n * See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current for more details.\n */\n readonly currentType = input<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>(\n 'page',\n );\n\n /** The UI pattern for the tree. */\n readonly _pattern: TreePattern<V>;\n\n /** The ID of the active descendant in the tree. */\n readonly activeDescendant: Signal<string | undefined>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: computed(() => this._collection.orderedItems().map(item => item._pattern)),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n element: () => this.element,\n };\n\n this._pattern = new TreePattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n // Resets default focus based on selection state until interacted.\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.treeBehavior.unfocus();\n this._pattern.setDefaultState();\n }\n },\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TreeItemPattern, DeferredContent, sortDirectives} from '../private';\nimport type {TreeItem} from './tree-item';\n\n/**\n * Group that contains children tree items.\n *\n * The `ngTreeItemGroup` structural directive should be applied to an `ng-template` that\n * wraps the child `ngTreeItem` elements. It is used to define a group of children for an\n * expandable `ngTreeItem`. The `ownedBy` input links the group to its parent `ngTreeItem`.\n *\n * ```html\n * <li ngTreeItem [value]=\"'parent-id'\">\n * Parent Item\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"parentTreeItemRef\">\n * <li ngTreeItem [value]=\"'child-id'\">Child Item</li>\n * </ng-template>\n * </ul>\n * </li>\n * ```\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: 'ng-template[ngTreeItemGroup]',\n exportAs: 'ngTreeItemGroup',\n hostDirectives: [DeferredContent],\n})\nexport class TreeItemGroup<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContent host directive. */\n private readonly _deferredContent = inject(DeferredContent);\n\n /** All groupable items that are descendants of the group. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** Child items within this group. */\n readonly _childPatterns = computed<TreeItemPattern<V>[]>(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(c => c._pattern),\n );\n\n /** Tree item that owns the group. */\n readonly ownedBy = input.required<TreeItem<V>>();\n\n ngOnInit() {\n this._deferredContent.deferredContentAware.set(this.ownedBy());\n this.ownedBy()._register(this);\n }\n\n ngOnDestroy() {\n this.ownedBy()._unregister();\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {TreeItemPattern, DeferredContentAware, HasElement} from '../private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\n\n/**\n * A selectable and expandable item in an `ngTree`.\n *\n * The `ngTreeItem` directive represents an individual node within an `ngTree`. It can be\n * selected, expanded (if it has children), and disabled. The `parent` input establishes\n * the hierarchical relationship within the tree.\n *\n * ```html\n * <li ngTreeItem [parent]=\"parentTreeOrGroup\" value=\"item-id\" label=\"Item Label\">\n * Item Label\n * </li>\n * ```\n */\n@Directive({\n selector: '[ngTreeItem]',\n exportAs: 'ngTreeItem',\n host: {\n '[attr.data-active]': 'active()',\n 'role': 'treeitem',\n '[id]': '_pattern.id()',\n '[attr.aria-expanded]': '_expanded()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-current]': '_pattern.current()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-level]': 'level()',\n '[attr.aria-setsize]': '_pattern.setsize()',\n '[attr.aria-posinset]': '_pattern.posinset()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class TreeItem<V> extends DeferredContentAware implements OnInit, OnDestroy, HasElement {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The owned tree item group. */\n private readonly _group = signal<TreeItemGroup<V> | undefined>(undefined);\n\n /** A unique identifier for the tree item. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-item-', true));\n\n /** The value of the tree item. */\n readonly value = input.required<V>();\n\n /** The parent tree root or tree item group. */\n readonly parent = input.required<Tree<V> | TreeItemGroup<V>>();\n\n /** Whether the tree item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the tree item is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** Whether the tree item is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** Optional label for typeahead. Defaults to the element's textContent. */\n readonly label = input<string>();\n\n /** Search term for typeahead. */\n readonly searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The tree root. */\n readonly tree: Signal<Tree<V>> = computed(() => {\n if (this.parent() instanceof Tree) {\n return this.parent() as Tree<V>;\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy().tree();\n });\n\n /** Whether the item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** The level of the current item in a tree. */\n readonly level = computed(() => this._pattern.level());\n\n /** Whether the item is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** Whether this item is visible due to all of its parents being expanded. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** Whether the tree is expanded. Use this value for aria-expanded. */\n protected readonly _expanded: Signal<boolean | undefined> = computed(() =>\n this._pattern.expandable() ? this._pattern.expanded() : undefined,\n );\n\n /** The UI pattern for this item. */\n _pattern!: TreeItemPattern<V>;\n\n constructor() {\n super();\n afterRenderEffect({\n write: () => {\n this.contentVisible.set(this._pattern.expanded());\n },\n });\n }\n\n ngOnInit() {\n if (this.parent() instanceof TreeItemGroup) {\n (this.parent() as TreeItemGroup<V>)._register(this);\n }\n this.tree()._collection.register(this);\n\n const treePattern = computed(() => this.tree()._pattern);\n const parentPattern = computed(() => {\n if (this.parent() instanceof Tree) {\n return treePattern();\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy()._pattern;\n });\n this._pattern = new TreeItemPattern<V>({\n ...this,\n tree: treePattern,\n parent: parentPattern,\n children: computed(() => this._group()?._childPatterns()),\n hasChildren: computed(() => !!this._group()),\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n }\n\n ngOnDestroy() {\n if (this.parent() instanceof TreeItemGroup) {\n (this.parent() as TreeItemGroup<V>)._unregister(this);\n }\n this.tree()._collection.unregister(this);\n }\n\n _register(group: TreeItemGroup<V>) {\n this._group.set(group);\n }\n\n _unregister() {\n this._group.set(undefined);\n }\n}\n"],"names":["i1.DeferredContent"],"mappings":"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"}
1
+ {"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n SortedCollection,\n tabIndexTransform,\n TreeItemPattern,\n TreePattern,\n reportViolations,\n} from '../private';\nimport type {TreeItem} from './tree-item';\n\n/**\n * A container that transforms nested lists into an accessible, ARIA-compliant tree structure.\n * It manages the overall state of the tree, including selection, expansion, and keyboard\n * navigation.\n *\n * ```html\n * <ul ngTree [(value)]=\"selectedItems\" [multi]=\"true\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: treeData, parent: tree}\"\n * />\n * </ul>\n *\n * <ng-template #treeNodes let-nodes=\"nodes\" let-parent=\"parent\">\n * @for (node of nodes; track node.name) {\n * <li ngTreeItem [parent]=\"parent\" [value]=\"node.name\" [label]=\"node.name\">\n * {{ node.name }}\n * @if (node.children) {\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"treeItem\" #group=\"ngTreeItemGroup\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: node.children, parent: group}\"\n * />\n * </ng-template>\n * </ul>\n * }\n * </li>\n * }\n * </ng-template>\n * ```\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: '[ngTree]',\n exportAs: 'ngTree',\n host: {\n 'role': 'tree',\n '[attr.id]': 'id()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class Tree<V> implements OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of tree items. */\n readonly _collection = new SortedCollection<TreeItem<V>>();\n\n /** A unique identifier for the tree. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-', true));\n\n /** Orientation of the tree. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multi-selection is allowed. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether the tree is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the tree.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n * - `follow`: The focused item is automatically selected.\n */\n readonly selectionMode = input<'explicit' | 'follow'>('explicit');\n\n /**\n * The focus strategy used by the tree.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the tree container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** Whether navigation wraps. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The delay in seconds before the typeahead search is reset. */\n readonly typeaheadDelay = input(500);\n\n /** The tabindex of the tree. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether the tree is in navigation mode. */\n readonly nav = input(false, {transform: booleanAttribute});\n\n /**\n * The `aria-current` type. It can be used in navigation trees to indicate the currently active item.\n * See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current for more details.\n */\n readonly currentType = input<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>(\n 'page',\n );\n\n /** The UI pattern for the tree. */\n readonly _pattern: TreePattern<V>;\n\n /** The ID of the active descendant in the tree. */\n readonly activeDescendant: Signal<string | undefined>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: computed(() => this._collection.orderedItems().map(item => item._pattern)),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n element: () => this.element,\n };\n\n this._pattern = new TreePattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n // Resets default focus based on selection state until interacted.\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.treeBehavior.unfocus();\n this._pattern.setDefaultState();\n }\n },\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TreeItemPattern, DeferredContent, sortDirectives} from '../private';\nimport type {TreeItem} from './tree-item';\n\n/**\n * Group that contains children tree items.\n *\n * The `ngTreeItemGroup` structural directive should be applied to an `ng-template` that\n * wraps the child `ngTreeItem` elements. It is used to define a group of children for an\n * expandable `ngTreeItem`. The `ownedBy` input links the group to its parent `ngTreeItem`.\n *\n * ```html\n * <li ngTreeItem [value]=\"'parent-id'\">\n * Parent Item\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"parentTreeItemRef\">\n * <li ngTreeItem [value]=\"'child-id'\">Child Item</li>\n * </ng-template>\n * </ul>\n * </li>\n * ```\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: 'ng-template[ngTreeItemGroup]',\n exportAs: 'ngTreeItemGroup',\n hostDirectives: [DeferredContent],\n})\nexport class TreeItemGroup<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContent host directive. */\n private readonly _deferredContent = inject(DeferredContent);\n\n /** All groupable items that are descendants of the group. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** Child items within this group. */\n readonly _childPatterns = computed<TreeItemPattern<V>[]>(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(c => c._pattern),\n );\n\n /** Tree item that owns the group. */\n readonly ownedBy = input.required<TreeItem<V>>();\n\n ngOnInit() {\n this._deferredContent.deferredContentAware.set(this.ownedBy());\n this.ownedBy()._register(this);\n }\n\n ngOnDestroy() {\n this.ownedBy()._unregister();\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {TreeItemPattern, DeferredContentAware, HasElement} from '../private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\n\n/**\n * A selectable and expandable item in an `ngTree`.\n *\n * The `ngTreeItem` directive represents an individual node within an `ngTree`. It can be\n * selected, expanded (if it has children), and disabled. The `parent` input establishes\n * the hierarchical relationship within the tree.\n *\n * ```html\n * <li ngTreeItem [parent]=\"parentTreeOrGroup\" value=\"item-id\" label=\"Item Label\">\n * Item Label\n * </li>\n * ```\n */\n@Directive({\n selector: '[ngTreeItem]',\n exportAs: 'ngTreeItem',\n host: {\n '[attr.data-active]': 'active()',\n 'role': 'treeitem',\n '[id]': '_pattern.id()',\n '[attr.aria-expanded]': '_expanded()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-current]': '_pattern.current()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-level]': 'level()',\n '[attr.aria-setsize]': '_pattern.setsize()',\n '[attr.aria-posinset]': '_pattern.posinset()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class TreeItem<V> extends DeferredContentAware implements OnInit, OnDestroy, HasElement {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The owned tree item group. */\n private readonly _group = signal<TreeItemGroup<V> | undefined>(undefined);\n\n /** A unique identifier for the tree item. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-item-', true));\n\n /** The value of the tree item. */\n readonly value = input.required<V>();\n\n /** The parent tree root or tree item group. */\n readonly parent = input.required<Tree<V> | TreeItemGroup<V>>();\n\n /** Whether the tree item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the tree item is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** Whether the tree item is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** Optional label for typeahead. Defaults to the element's textContent. */\n readonly label = input<string>();\n\n /** Search term for typeahead. */\n readonly searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The tree root. */\n readonly tree: Signal<Tree<V>> = computed(() => {\n if (this.parent() instanceof Tree) {\n return this.parent() as Tree<V>;\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy().tree();\n });\n\n /** Whether the item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** The level of the current item in a tree. */\n readonly level = computed(() => this._pattern.level());\n\n /** Whether the item is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** Whether this item is visible due to all of its parents being expanded. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** Whether the tree is expanded. Use this value for aria-expanded. */\n protected readonly _expanded: Signal<boolean | undefined> = computed(() =>\n this._pattern.expandable() ? this._pattern.expanded() : undefined,\n );\n\n /** The UI pattern for this item. */\n _pattern!: TreeItemPattern<V>;\n\n constructor() {\n super();\n afterRenderEffect({\n write: () => {\n this.contentVisible.set(this._pattern.expanded());\n },\n });\n }\n\n ngOnInit() {\n if (this.parent() instanceof TreeItemGroup) {\n (this.parent() as TreeItemGroup<V>)._register(this);\n }\n this.tree()._collection.register(this);\n\n const treePattern = computed(() => this.tree()._pattern);\n const parentPattern = computed(() => {\n if (this.parent() instanceof Tree) {\n return treePattern();\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy()._pattern;\n });\n this._pattern = new TreeItemPattern<V>({\n ...this,\n tree: treePattern,\n parent: parentPattern,\n children: computed(() => this._group()?._childPatterns()),\n hasChildren: computed(() => !!this._group()),\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n }\n\n ngOnDestroy() {\n if (this.parent() instanceof TreeItemGroup) {\n (this.parent() as TreeItemGroup<V>)._unregister(this);\n }\n this.tree()._collection.unregister(this);\n }\n\n _register(group: TreeItemGroup<V>) {\n this._group.set(group);\n }\n\n _unregister() {\n this._group.set(undefined);\n }\n}\n"],"names":["i1.DeferredContent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/aria",
3
- "version": "22.2.0-next.3",
3
+ "version": "22.2.0-next.5",
4
4
  "description": "Angular Aria",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "homepage": "https://github.com/angular/components#readme",
14
14
  "peerDependencies": {
15
- "@angular/cdk": "22.2.0-next.3",
15
+ "@angular/cdk": "22.2.0-next.5",
16
16
  "@angular/core": "^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0"
17
17
  },
18
18
  "devDependencies": {
@@ -3,16 +3,16 @@ import { KeyboardEventManager } from './_keyboard-event-manager-chunk.js';
3
3
  import { ListInputs, ListItem, List } from './_list-chunk.js';
4
4
 
5
5
  /** The inputs for the MenuBarPattern class. */
6
- interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V> {
6
+ interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V | undefined> {
7
7
  /** The menu items contained in the menu. */
8
8
  items: SignalLike<MenuItemPattern<V>[]>;
9
9
  /** Callback function triggered when a menu item is selected. */
10
- itemSelected?: (value: V) => void;
10
+ itemSelected?: (value: V | undefined) => void;
11
11
  /** The text direction of the menu bar. */
12
12
  textDirection: SignalLike<'ltr' | 'rtl'>;
13
13
  }
14
14
  /** The inputs for the MenuPattern class. */
15
- interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'> {
15
+ interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V | undefined>, 'value'> {
16
16
  /** The unique ID of the menu. */
17
17
  id: SignalLike<string>;
18
18
  /** The menu items contained in the menu. */
@@ -20,7 +20,7 @@ interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'>
20
20
  /** A reference to the parent menu or menu trigger. */
21
21
  parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;
22
22
  /** Callback function triggered when a menu item is selected. */
23
- itemSelected?: (value: V) => void;
23
+ itemSelected?: (value: V | undefined) => void;
24
24
  /** The text direction of the menu bar. */
25
25
  textDirection: SignalLike<'ltr' | 'rtl'>;
26
26
  /** The delay in milliseconds before expanding sub-menus on hover. */
@@ -38,7 +38,9 @@ interface MenuTriggerInputs<V> {
38
38
  disabled: SignalLike<boolean>;
39
39
  }
40
40
  /** The inputs for the MenuItemPattern class. */
41
- interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {
41
+ interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable' | 'value'> {
42
+ /** The value of the menu item. */
43
+ value?: SignalLike<V | undefined>;
42
44
  /** A reference to the parent menu or menu trigger. */
43
45
  parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;
44
46
  /** A reference to the submenu associated with the menu item. */
@@ -58,17 +60,19 @@ declare class MenuPattern<V> {
58
60
  /** Whether the menu is visible. */
59
61
  readonly visible: SignalLike<boolean>;
60
62
  /** Controls list behavior for the menu items. */
61
- readonly listBehavior: List<MenuItemPattern<V>, V>;
63
+ readonly listBehavior: List<MenuItemPattern<V>, V | undefined>;
62
64
  /** Whether the menu or any of its child elements are currently focused. */
63
65
  readonly isFocused: WritableSignalLike<boolean>;
64
66
  /** Whether the menu has received interaction. */
65
67
  readonly hasBeenInteracted: WritableSignalLike<boolean>;
66
68
  /** Whether the menu trigger has been hovered. */
67
69
  readonly hasBeenHovered: WritableSignalLike<boolean>;
70
+ /** Items currently inside the menu. */
71
+ readonly items: () => MenuItemPattern<V>[];
68
72
  /** Timeout used to open sub-menus on hover. */
69
- _openTimeout: any;
73
+ private _openTimeout;
70
74
  /** Timeout used to close sub-menus on hover out. */
71
- _closeTimeout: any;
75
+ private _closeTimeout;
72
76
  /** The tab index of the menu. */
73
77
  readonly tabIndex: () => -1 | 0;
74
78
  /** Whether the menu should be focused on mouse over. */
@@ -139,7 +143,7 @@ declare class MenuPattern<V> {
139
143
  declare class MenuBarPattern<V> {
140
144
  readonly inputs: MenuBarInputs<V>;
141
145
  /** Controls list behavior for the menu items. */
142
- readonly listBehavior: List<MenuItemPattern<V>, V>;
146
+ readonly listBehavior: List<MenuItemPattern<V>, V | undefined>;
143
147
  /** The tab index of the menu. */
144
148
  readonly tabIndex: () => -1 | 0;
145
149
  /** The key used to navigate to the next item. */
@@ -227,10 +231,10 @@ declare class MenuTriggerPattern<V> {
227
231
  }): void;
228
232
  }
229
233
  /** The menu item ui pattern class. */
230
- declare class MenuItemPattern<V> implements ListItem<V> {
234
+ declare class MenuItemPattern<V> implements ListItem<V | undefined> {
231
235
  readonly inputs: MenuItemInputs<V>;
232
236
  /** The value of the menu item. */
233
- readonly value: SignalLike<V>;
237
+ readonly value: SignalLike<V | undefined>;
234
238
  /** The unique ID of the menu item. */
235
239
  readonly id: SignalLike<string>;
236
240
  /** Whether the menu item is disabled. */
@@ -1,42 +1,40 @@
1
1
  import { SignalLike, WritableSignalLike } from './_collection-chunk.js';
2
- import { ListItem, ListInputs, List } from './_list-chunk.js';
2
+ import { ListFocusItem, ListNavigationItem, ListFocus, ListNavigation } from './_list-navigation-chunk.js';
3
3
 
4
4
  /** Represents the required inputs for a toolbar widget group. */
5
- interface ToolbarWidgetGroupInputs<T extends ListItem<V>, V> {
5
+ interface ToolbarWidgetGroupInputs {
6
6
  /** A reference to the parent toolbar. */
7
- toolbar: SignalLike<ToolbarPattern<V> | undefined>;
7
+ toolbar: SignalLike<ToolbarPattern | undefined>;
8
8
  /** Whether the widget group is disabled. */
9
9
  disabled: SignalLike<boolean>;
10
10
  /** The list of items within the widget group. */
11
- items: SignalLike<T[]>;
12
- /** Whether the group allows multiple widgets to be selected. */
13
- multi: SignalLike<boolean>;
11
+ items: SignalLike<ToolbarWidgetPattern[]>;
14
12
  }
15
13
  /** A group of widgets within a toolbar that provides nested navigation. */
16
- declare class ToolbarWidgetGroupPattern<T extends ListItem<V>, V> {
17
- readonly inputs: ToolbarWidgetGroupInputs<T, V>;
14
+ declare class ToolbarWidgetGroupPattern {
15
+ readonly inputs: ToolbarWidgetGroupInputs;
18
16
  /** Whether the widget is disabled. */
19
17
  readonly disabled: () => boolean;
20
18
  /** A reference to the parent toolbar. */
21
- readonly toolbar: () => ToolbarPattern<V> | undefined;
22
- /** Whether the group allows multiple widgets to be selected. */
23
- readonly multi: () => boolean;
24
- readonly searchTerm: () => string;
25
- readonly value: () => V;
26
- readonly selectable: () => boolean;
27
- readonly element: () => undefined;
28
- constructor(inputs: ToolbarWidgetGroupInputs<T, V>);
19
+ readonly toolbar: () => ToolbarPattern | undefined;
20
+ constructor(inputs: ToolbarWidgetGroupInputs);
29
21
  }
30
22
 
31
23
  /** Represents the required inputs for a toolbar widget in a toolbar. */
32
- interface ToolbarWidgetInputs<V> extends Omit<ListItem<V>, 'searchTerm' | 'index' | 'selectable'> {
24
+ interface ToolbarWidgetInputs {
25
+ /** A unique identifier for the widget. */
26
+ id: SignalLike<string>;
27
+ /** The html element that should receive focus. */
28
+ element: SignalLike<HTMLElement | undefined>;
29
+ /** Whether the widget is disabled. */
30
+ disabled: SignalLike<boolean>;
33
31
  /** A reference to the parent toolbar. */
34
- toolbar: SignalLike<ToolbarPattern<V>>;
32
+ toolbar: SignalLike<ToolbarPattern>;
35
33
  /** A reference to the parent widget group. */
36
- group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined>;
34
+ group: SignalLike<ToolbarWidgetGroupPattern | undefined>;
37
35
  }
38
- declare class ToolbarWidgetPattern<V> implements ListItem<V> {
39
- readonly inputs: ToolbarWidgetInputs<V>;
36
+ declare class ToolbarWidgetPattern implements ListFocusItem, ListNavigationItem {
37
+ readonly inputs: ToolbarWidgetInputs;
40
38
  /** A unique identifier for the widget. */
41
39
  readonly id: () => string;
42
40
  /** The html element that should receive focus. */
@@ -44,50 +42,60 @@ declare class ToolbarWidgetPattern<V> implements ListItem<V> {
44
42
  /** Whether the widget is disabled. */
45
43
  readonly disabled: () => boolean;
46
44
  /** A reference to the parent toolbar. */
47
- readonly group: () => ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined;
45
+ readonly group: () => ToolbarWidgetGroupPattern | undefined;
48
46
  /** A reference to the toolbar containing the widget. */
49
- readonly toolbar: () => ToolbarPattern<V>;
47
+ readonly toolbar: () => ToolbarPattern;
50
48
  /** The tabindex of the widget. */
51
49
  readonly tabIndex: SignalLike<-1 | 0>;
52
- /** The text used by the typeahead search. */
53
- readonly searchTerm: () => string;
54
- /** The value associated with the widget. */
55
- readonly value: () => V;
56
- /** Whether the widget is selectable. */
57
- readonly selectable: () => boolean;
58
50
  /** The position of the widget within the toolbar. */
59
51
  readonly index: SignalLike<number>;
60
- /** Whether the widget is selected (only relevant in a selection group). */
61
- readonly selected: SignalLike<boolean>;
62
52
  /** Whether the widget is currently the active one (focused). */
63
53
  readonly active: SignalLike<boolean>;
64
- constructor(inputs: ToolbarWidgetInputs<V>);
54
+ constructor(inputs: ToolbarWidgetInputs);
65
55
  }
66
56
 
67
57
  /** Represents the required inputs for a toolbar. */
68
- type ToolbarInputs<V> = Omit<ListInputs<ToolbarWidgetPattern<V>, V>, 'multi' | 'typeaheadDelay' | 'selectionMode' | 'focusMode'> & {
58
+ type ToolbarInputs = {
59
+ /** The html element that should receive focus. */
60
+ element: SignalLike<HTMLElement | undefined>;
61
+ /** The active item. */
62
+ activeItem: WritableSignalLike<ToolbarWidgetPattern | undefined>;
63
+ /** The items in the toolbar. */
64
+ items: SignalLike<ToolbarWidgetPattern[]>;
65
+ /** Whether disabled items in the toolbar should be focusable. */
66
+ softDisabled: SignalLike<boolean>;
67
+ /** Whether the toolbar is disabled. */
68
+ disabled: SignalLike<boolean>;
69
+ /** Whether the toolbar is vertically or horizontally oriented. */
70
+ orientation: SignalLike<'vertical' | 'horizontal'>;
71
+ /** The direction that text is read based on the users locale. */
72
+ textDirection: SignalLike<'rtl' | 'ltr'>;
73
+ /** Whether focus should wrap when navigating. */
74
+ wrap: SignalLike<boolean>;
69
75
  /** A function that returns the toolbar item associated with a given element. */
70
- getItem: (e: Element) => ToolbarWidgetPattern<V> | undefined;
76
+ getItem: (e: Element) => ToolbarWidgetPattern | undefined;
71
77
  };
72
78
  /** Controls the state of a toolbar. */
73
- declare class ToolbarPattern<V> {
74
- readonly inputs: ToolbarInputs<V>;
75
- /** The list behavior for the toolbar. */
76
- readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;
79
+ declare class ToolbarPattern {
80
+ readonly inputs: ToolbarInputs;
81
+ /** Controls focus for the toolbar. */
82
+ readonly focusManager: ListFocus<ToolbarWidgetPattern>;
83
+ /** Controls navigation for the toolbar. */
84
+ readonly navigationBehavior: ListNavigation<ToolbarWidgetPattern>;
77
85
  /** Whether the toolbar has been interacted with. */
78
86
  readonly hasBeenInteracted: WritableSignalLike<boolean>;
79
- /** Whether the tablist is vertically or horizontally oriented. */
87
+ /** Whether the toolbar is vertically or horizontally oriented. */
80
88
  readonly orientation: SignalLike<'vertical' | 'horizontal'>;
81
89
  /** Whether disabled items in the group should be focusable. */
82
90
  readonly softDisabled: SignalLike<boolean>;
83
91
  /** Whether the toolbar is disabled. */
84
92
  readonly disabled: SignalLike<boolean>;
85
- /** The tab index of the toolbar (if using activedescendant). */
93
+ /** The tab index of the toolbar. */
86
94
  readonly tabIndex: SignalLike<-1 | 0>;
87
- /** The id of the current active widget (if using activedescendant). */
95
+ /** The id of the current active widget. */
88
96
  readonly activeDescendant: SignalLike<string | undefined>;
89
97
  /** The currently active item in the toolbar. */
90
- readonly activeItem: () => ToolbarWidgetPattern<V> | undefined;
98
+ readonly activeItem: () => ToolbarWidgetPattern | undefined;
91
99
  /** The key used to navigate to the previous widget. */
92
100
  private readonly _prevKey;
93
101
  /** The key used to navigate to the next widget. */
@@ -104,10 +112,7 @@ declare class ToolbarPattern<V> {
104
112
  private _groupPrev;
105
113
  /** Navigates to the widget targeted by a pointer event. */
106
114
  private _goto;
107
- select(): void;
108
- constructor(inputs: ToolbarInputs<V>);
109
- /** Returns a set of violations */
110
- validate(): string[];
115
+ constructor(inputs: ToolbarInputs);
111
116
  /** Handles keydown events for the toolbar. */
112
117
  onKeydown(event: KeyboardEvent): void;
113
118
  onPointerdown(event: PointerEvent): void;
@@ -117,8 +122,7 @@ declare class ToolbarPattern<V> {
117
122
  /**
118
123
  * Sets the toolbar to its default initial state.
119
124
  *
120
- * Sets the active index to the selected widget if one exists and is focusable.
121
- * Otherwise, sets the active index to the first focusable widget.
125
+ * Sets the active index to the first focusable widget.
122
126
  */
123
127
  setDefaultState(): void;
124
128
  /** Sets the default active state of the toolbar before receiving interaction for the first time. */
package/types/menu.d.ts CHANGED
@@ -60,7 +60,7 @@ declare class MenuBar<V> implements OnDestroy {
60
60
  /** The menu items as a writable signal. */
61
61
  private readonly _itemPatterns;
62
62
  /** A callback function triggered when a menu item is selected. */
63
- readonly itemSelected: _angular_core.OutputEmitterRef<V>;
63
+ readonly itemSelected: _angular_core.OutputEmitterRef<V | undefined>;
64
64
  constructor();
65
65
  ngOnDestroy(): void;
66
66
  /** Closes the menubar. */
@@ -93,7 +93,7 @@ declare class MenuItem<V> implements OnInit, OnDestroy {
93
93
  /** The unique ID of the menu item. */
94
94
  readonly id: _angular_core.InputSignal<string>;
95
95
  /** The value of the menu item. */
96
- readonly value: _angular_core.InputSignal<V>;
96
+ readonly value: _angular_core.InputSignal<V | undefined>;
97
97
  /** Whether the menu item is disabled. */
98
98
  readonly disabled: _angular_core.InputSignal<boolean>;
99
99
  /** The search term associated with the menu item. */
@@ -120,7 +120,7 @@ declare class MenuItem<V> implements OnInit, OnDestroy {
120
120
  /** Closes the submenu. */
121
121
  close(): void;
122
122
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItem<any>, never>;
123
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItem<any>, "[ngMenuItem]", ["ngMenuItem"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
123
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItem<any>, "[ngMenuItem]", ["ngMenuItem"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
124
124
  }
125
125
 
126
126
  /**
@@ -191,7 +191,7 @@ declare class Menu<V> implements OnDestroy {
191
191
  /** The tab index of the menu. */
192
192
  readonly tabIndex: Signal<-1 | 0>;
193
193
  /** A callback function triggered when a menu item is selected. */
194
- readonly itemSelected: _angular_core.OutputEmitterRef<V>;
194
+ readonly itemSelected: _angular_core.OutputEmitterRef<V | undefined>;
195
195
  /** The delay in milliseconds before expanding sub-menus on hover. */
196
196
  readonly expansionDelay: _angular_core.InputSignal<number>;
197
197
  constructor();
@@ -96,6 +96,8 @@ declare class ComboboxPattern {
96
96
  onFocusin(): void;
97
97
  /** Handles focus out events for the combobox. */
98
98
  onFocusout(): void;
99
+ /** Closes the popup once focus has left both the combobox and the popup. */
100
+ closePopupOnFocusout(): void;
99
101
  /** Handles input events for the combobox. */
100
102
  onInput(event: Event): void;
101
103
  /** Highlights the currently selected item in the combobox. */
@@ -113,6 +115,8 @@ interface ComboboxPopupInputs {
113
115
  activeDescendant: SignalLike<string | undefined>;
114
116
  /** The ID of the popup. */
115
117
  popupId: SignalLike<string | undefined>;
118
+ /** A reference to the parent combobox. */
119
+ combobox: SignalLike<ComboboxPattern | undefined>;
116
120
  }
117
121
  /** Controls the state of a simple combobox popup. */
118
122
  declare class ComboboxPopupPattern {
@@ -125,6 +129,8 @@ declare class ComboboxPopupPattern {
125
129
  readonly activeDescendant: () => string | undefined;
126
130
  /** The ID of the popup. */
127
131
  readonly popupId: () => string | undefined;
132
+ /** A reference to the parent combobox. */
133
+ readonly combobox: () => ComboboxPattern | undefined;
128
134
  /** Whether the popup is focused. */
129
135
  readonly isFocused: _angular_core.WritableSignal<boolean>;
130
136
  constructor(inputs: ComboboxPopupInputs);