@angular/aria 22.0.0-next.8 → 22.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.
- package/fesm2022/_accordion-chunk.mjs +11 -1
- package/fesm2022/_accordion-chunk.mjs.map +1 -1
- package/fesm2022/_click-event-manager-chunk.mjs +1 -1
- package/fesm2022/_deferred-content-chunk.mjs +6 -6
- package/fesm2022/_list-chunk.mjs +1 -1
- package/fesm2022/_list-navigation-chunk.mjs +1 -1
- package/fesm2022/_list-typeahead-chunk.mjs +1 -1
- package/fesm2022/_menu-chunk.mjs +10 -1
- package/fesm2022/_menu-chunk.mjs.map +1 -1
- package/fesm2022/_option-chunk.mjs +11 -1
- package/fesm2022/_option-chunk.mjs.map +1 -1
- package/fesm2022/_tabs-chunk.mjs +1 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs +10 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
- package/fesm2022/_tree-chunk.mjs +6 -1
- package/fesm2022/_tree-chunk.mjs.map +1 -1
- package/fesm2022/{_collection-chunk.mjs → _violations-chunk.mjs} +11 -2
- package/fesm2022/_violations-chunk.mjs.map +1 -0
- package/fesm2022/_widget-chunk.mjs +11 -1
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +102 -48
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +9 -9
- package/fesm2022/grid.mjs +20 -13
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox.mjs +15 -17
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu.mjs +35 -17
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +2 -2
- package/fesm2022/tabs.mjs +117 -54
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +31 -10
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +18 -20
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -2
- package/types/_accordion-chunk.d.ts +2 -0
- package/types/_grid-chunk.d.ts +2 -0
- package/types/_menu-chunk.d.ts +2 -0
- package/types/_toolbar-chunk.d.ts +2 -0
- package/types/accordion.d.ts +3 -5
- package/types/grid.d.ts +0 -8
- package/types/listbox.d.ts +0 -4
- package/types/menu.d.ts +0 -10
- package/types/private.d.ts +4 -1
- package/types/tabs.d.ts +3 -11
- package/types/toolbar.d.ts +1 -6
- package/types/tree.d.ts +0 -6
- package/fesm2022/_collection-chunk.mjs.map +0 -1
package/fesm2022/tree.mjs.map
CHANGED
|
@@ -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 {SortedCollection, tabIndexTransform, TreeItemPattern, TreePattern} 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 * @developerPreview 21.0\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 afterRenderEffect({\n read: () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\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 (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.treeBehavior.unfocus();\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 * @developerPreview 21.0\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 * @developerPreview 21.0\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":["Tree","_elementRef","inject","ElementRef","element","nativeElement","_collection","SortedCollection","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","tabIndex","undefined","ngDevMode","debugName","alias","tabIndexTransform","value","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","activeDescendant","constructor","inputs","items","computed","orderedItems","map","item","activeItem","signal","TreePattern","afterNextRender","startObserving","afterRenderEffect","read","violations","validate","violation","console","error","write","setDefaultStateEffect","untracked","some","i","treeBehavior","unfocus","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","TreeItemGroup","_deferredContent","DeferredContent","_unorderedItems","Set","_childPatterns","sort","sortDirectives","c","ownedBy","required","ngOnInit","deferredContentAware","set","_register","_unregister","child","add","delete","hostDirectives","directive","i1","TreeItem","DeferredContentAware","_group","parent","selectable","expanded","label","searchTerm","textContent","tree","active","level","selected","visible","_expanded","expandable","contentVisible","register","treePattern","parentPattern","TreeItemPattern","children","hasChildren","unregister","group","usesInheritance"],"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":["Tree","_elementRef","inject","ElementRef","element","nativeElement","_collection","SortedCollection","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","tabIndex","undefined","ngDevMode","debugName","alias","tabIndexTransform","value","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","activeDescendant","constructor","inputs","items","computed","orderedItems","map","item","activeItem","signal","TreePattern","afterNextRender","startObserving","afterRenderEffect","read","reportViolations","validate","write","setDefaultStateEffect","untracked","some","i","treeBehavior","unfocus","setDefaultState","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","TreeItemGroup","_deferredContent","DeferredContent","_unorderedItems","Set","_childPatterns","sort","sortDirectives","c","ownedBy","required","ngOnInit","deferredContentAware","set","_register","_unregister","child","add","delete","hostDirectives","directive","i1","TreeItem","DeferredContentAware","_group","parent","selectable","expanded","label","searchTerm","textContent","tree","active","level","selected","visible","_expanded","expandable","contentVisible","register","treePattern","parentPattern","TreeItemPattern","children","hasChildren","unregister","group","usesInheritance"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/aria",
|
|
3
|
-
"version": "22.0.0-
|
|
3
|
+
"version": "22.0.0-rc.0",
|
|
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.0.0-
|
|
15
|
+
"@angular/cdk": "22.0.0-rc.0",
|
|
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": {
|
|
@@ -37,6 +37,8 @@ declare class AccordionGroupPattern {
|
|
|
37
37
|
expandAll(): void;
|
|
38
38
|
/** Collapses all accordion panels. */
|
|
39
39
|
collapseAll(): void;
|
|
40
|
+
/** Returns a set of violations */
|
|
41
|
+
validate(): string[];
|
|
40
42
|
/** Finds the trigger pattern for a given element. */
|
|
41
43
|
private _findTriggerPattern;
|
|
42
44
|
}
|
package/types/_grid-chunk.d.ts
CHANGED
|
@@ -538,6 +538,8 @@ declare class GridPattern {
|
|
|
538
538
|
/** Whether the grid state is stale and needs to be reconciled. */
|
|
539
539
|
private readonly _stateStale;
|
|
540
540
|
constructor(inputs: GridInputs);
|
|
541
|
+
/** Returns a set of violations */
|
|
542
|
+
validate(): string[];
|
|
541
543
|
/** Handles keydown events on the grid. */
|
|
542
544
|
onKeydown(event: KeyboardEvent): void;
|
|
543
545
|
/** Handles click events on the grid. */
|
package/types/_menu-chunk.d.ts
CHANGED
|
@@ -84,6 +84,8 @@ declare class MenuPattern<V> {
|
|
|
84
84
|
/** Handles keyboard events for the menu. */
|
|
85
85
|
readonly keydownManager: SignalLike<KeyboardEventManager<KeyboardEvent>>;
|
|
86
86
|
constructor(inputs: MenuInputs<V>);
|
|
87
|
+
/** Returns a set of violations */
|
|
88
|
+
validate(): string[];
|
|
87
89
|
/** Sets the default state for the menu. */
|
|
88
90
|
setDefaultState(): void;
|
|
89
91
|
/** Sets the default active state of the menu before receiving interaction for the first time. */
|
|
@@ -106,6 +106,8 @@ declare class ToolbarPattern<V> {
|
|
|
106
106
|
private _goto;
|
|
107
107
|
select(): void;
|
|
108
108
|
constructor(inputs: ToolbarInputs<V>);
|
|
109
|
+
/** Returns a set of violations */
|
|
110
|
+
validate(): string[];
|
|
109
111
|
/** Handles keydown events for the toolbar. */
|
|
110
112
|
onKeydown(event: KeyboardEvent): void;
|
|
111
113
|
onPointerdown(event: PointerEvent): void;
|
package/types/accordion.d.ts
CHANGED
|
@@ -27,7 +27,6 @@ import './_list-navigation-chunk.js';
|
|
|
27
27
|
* </div>
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
|
-
* @developerPreview 21.0
|
|
31
30
|
* @see [Accordion](guide/aria/accordion)
|
|
32
31
|
*/
|
|
33
32
|
declare class AccordionPanel {
|
|
@@ -37,6 +36,7 @@ declare class AccordionPanel {
|
|
|
37
36
|
readonly element: HTMLElement;
|
|
38
37
|
/** The DeferredContentAware host directive. */
|
|
39
38
|
private readonly _deferredContentAware;
|
|
39
|
+
private readonly _accordionContent;
|
|
40
40
|
/** A global unique identifier for the panel. */
|
|
41
41
|
readonly id: _angular_core.InputSignal<string>;
|
|
42
42
|
/** Whether the accordion panel is visible. True if the associated trigger is expanded. */
|
|
@@ -55,7 +55,7 @@ declare class AccordionPanel {
|
|
|
55
55
|
/** Toggles the expansion state of this item. */
|
|
56
56
|
toggle(): void;
|
|
57
57
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionPanel, never>;
|
|
58
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionPanel, "[ngAccordionPanel]", ["ngAccordionPanel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {},
|
|
58
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionPanel, "[ngAccordionPanel]", ["ngAccordionPanel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, ["_accordionContent"], never, true, [{ directive: typeof DeferredContentAware; inputs: { "preserveContent": "preserveContent"; }; outputs: {}; }]>;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
@@ -73,7 +73,6 @@ declare class AccordionPanel {
|
|
|
73
73
|
* </button>
|
|
74
74
|
* ```
|
|
75
75
|
*
|
|
76
|
-
* @developerPreview 21.0
|
|
77
76
|
* @see [Accordion](guide/aria/accordion)
|
|
78
77
|
*/
|
|
79
78
|
declare class AccordionTrigger implements OnInit, OnDestroy {
|
|
@@ -97,6 +96,7 @@ declare class AccordionTrigger implements OnInit, OnDestroy {
|
|
|
97
96
|
readonly active: _angular_core.Signal<boolean>;
|
|
98
97
|
/** The UI pattern instance for this trigger. */
|
|
99
98
|
_pattern: AccordionTriggerPattern;
|
|
99
|
+
constructor();
|
|
100
100
|
ngOnInit(): void;
|
|
101
101
|
ngOnDestroy(): void;
|
|
102
102
|
/** Expands this item. */
|
|
@@ -142,7 +142,6 @@ declare class AccordionTrigger implements OnInit, OnDestroy {
|
|
|
142
142
|
* </div>
|
|
143
143
|
* ```
|
|
144
144
|
*
|
|
145
|
-
* @developerPreview 21.0
|
|
146
145
|
* @see [Accordion](guide/aria/accordion)
|
|
147
146
|
*/
|
|
148
147
|
declare class AccordionGroup implements OnDestroy {
|
|
@@ -195,7 +194,6 @@ declare class AccordionGroup implements OnDestroy {
|
|
|
195
194
|
* </div>
|
|
196
195
|
* ```
|
|
197
196
|
*
|
|
198
|
-
* @developerPreview 21.0
|
|
199
197
|
* @see [Accordion](guide/aria/accordion)
|
|
200
198
|
*/
|
|
201
199
|
declare class AccordionContent {
|
package/types/grid.d.ts
CHANGED
|
@@ -17,8 +17,6 @@ import './_click-event-manager-chunk.js';
|
|
|
17
17
|
* </td>
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
|
-
* @developerPreview 21.0
|
|
21
|
-
*
|
|
22
20
|
* @see [Grid](guide/aria/grid)
|
|
23
21
|
*/
|
|
24
22
|
declare class GridCell implements OnInit, OnDestroy {
|
|
@@ -82,8 +80,6 @@ declare class GridCell implements OnInit, OnDestroy {
|
|
|
82
80
|
* </tr>
|
|
83
81
|
* ```
|
|
84
82
|
*
|
|
85
|
-
* @developerPreview 21.0
|
|
86
|
-
*
|
|
87
83
|
* @see [Grid](guide/aria/grid)
|
|
88
84
|
*/
|
|
89
85
|
declare class GridRow implements OnInit, OnDestroy {
|
|
@@ -129,8 +125,6 @@ declare class GridRow implements OnInit, OnDestroy {
|
|
|
129
125
|
* </table>
|
|
130
126
|
* ```
|
|
131
127
|
*
|
|
132
|
-
* @developerPreview 21.0
|
|
133
|
-
*
|
|
134
128
|
* @see [Grid](guide/aria/grid)
|
|
135
129
|
*/
|
|
136
130
|
declare class Grid implements OnDestroy {
|
|
@@ -211,8 +205,6 @@ declare class Grid implements OnDestroy {
|
|
|
211
205
|
* </td>
|
|
212
206
|
* ```
|
|
213
207
|
*
|
|
214
|
-
* @developerPreview 21.0
|
|
215
|
-
*
|
|
216
208
|
* @see [Grid](guide/aria/grid)
|
|
217
209
|
*/
|
|
218
210
|
declare class GridCellWidget {
|
package/types/listbox.d.ts
CHANGED
|
@@ -21,8 +21,6 @@ import './_click-event-manager-chunk.js';
|
|
|
21
21
|
* </li>
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
|
-
* @developerPreview 21.0
|
|
25
|
-
*
|
|
26
24
|
* @see [Listbox](guide/aria/listbox)
|
|
27
25
|
* @see [Autocomplete](guide/aria/autocomplete)
|
|
28
26
|
* @see [Select](guide/aria/select)
|
|
@@ -72,8 +70,6 @@ declare class Option<V> implements OnInit, OnDestroy {
|
|
|
72
70
|
* </ul>
|
|
73
71
|
* ```
|
|
74
72
|
*
|
|
75
|
-
* @developerPreview 21.0
|
|
76
|
-
*
|
|
77
73
|
* @see [Listbox](guide/aria/listbox)
|
|
78
74
|
* @see [Autocomplete](guide/aria/autocomplete)
|
|
79
75
|
* @see [Select](guide/aria/select)
|
package/types/menu.d.ts
CHANGED
|
@@ -32,8 +32,6 @@ import './_list-navigation-chunk.js';
|
|
|
32
32
|
* </div>
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
|
-
* @developerPreview 21.0
|
|
36
|
-
*
|
|
37
35
|
* @see [Menu](guide/aria/menu)
|
|
38
36
|
* @see [MenuBar](guide/aria/menubar)
|
|
39
37
|
*/
|
|
@@ -84,8 +82,6 @@ declare class MenuBar<V> implements OnDestroy {
|
|
|
84
82
|
* </div>
|
|
85
83
|
* ```
|
|
86
84
|
*
|
|
87
|
-
* @developerPreview 21.0
|
|
88
|
-
*
|
|
89
85
|
* @see [Menu](guide/aria/menu)
|
|
90
86
|
* @see [MenuBar](guide/aria/menubar)
|
|
91
87
|
*/
|
|
@@ -147,8 +143,6 @@ declare class MenuItem<V> implements OnInit, OnDestroy {
|
|
|
147
143
|
* </div>
|
|
148
144
|
* ```
|
|
149
145
|
*
|
|
150
|
-
* @developerPreview 21.0
|
|
151
|
-
*
|
|
152
146
|
* @see [Menu](guide/aria/menu)
|
|
153
147
|
* @see [MenuBar](guide/aria/menubar)
|
|
154
148
|
*/
|
|
@@ -220,8 +214,6 @@ declare class Menu<V> implements OnDestroy {
|
|
|
220
214
|
* </div>
|
|
221
215
|
* ```
|
|
222
216
|
*
|
|
223
|
-
* @developerPreview 21.0
|
|
224
|
-
*
|
|
225
217
|
* @see [Menu](guide/aria/menu)
|
|
226
218
|
* @see [MenuBar](guide/aria/menubar)
|
|
227
219
|
*/
|
|
@@ -268,8 +260,6 @@ declare class MenuTrigger<V> {
|
|
|
268
260
|
* </div>
|
|
269
261
|
* ```
|
|
270
262
|
*
|
|
271
|
-
* @developerPreview 21.0
|
|
272
|
-
*
|
|
273
263
|
* @see [Menu](guide/aria/menu)
|
|
274
264
|
* @see [MenuBar](guide/aria/menubar)
|
|
275
265
|
*/
|
package/types/private.d.ts
CHANGED
|
@@ -22,6 +22,9 @@ import './_list-navigation-chunk.js';
|
|
|
22
22
|
*/
|
|
23
23
|
declare function tabIndexTransform(v: string | number | undefined): number | undefined;
|
|
24
24
|
|
|
25
|
+
/** Logs each of the violations to the console as errors, optionally with the host element context. */
|
|
26
|
+
declare function reportViolations(violations: string[], element: Element): void;
|
|
27
|
+
|
|
25
28
|
/** Represents the required inputs for a simple combobox. */
|
|
26
29
|
interface ComboboxInputs extends ExpansionItem {
|
|
27
30
|
/** Whether the combobox should always remain expanded. */
|
|
@@ -123,5 +126,5 @@ declare class ComboboxPopupPattern {
|
|
|
123
126
|
onFocusout(event: FocusEvent): void;
|
|
124
127
|
}
|
|
125
128
|
|
|
126
|
-
export { ComboboxPattern, ComboboxPopupPattern, SignalLike, WritableSignalLike, tabIndexTransform };
|
|
129
|
+
export { ComboboxPattern, ComboboxPopupPattern, SignalLike, WritableSignalLike, reportViolations, tabIndexTransform };
|
|
127
130
|
export type { ComboboxInputs, ComboboxPopupInputs };
|
package/types/tabs.d.ts
CHANGED
|
@@ -21,8 +21,6 @@ import './_list-navigation-chunk.js';
|
|
|
21
21
|
* </li>
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
|
-
* @developerPreview 21.0
|
|
25
|
-
*
|
|
26
24
|
* @see [Tabs](guide/aria/tabs)
|
|
27
25
|
*/
|
|
28
26
|
declare class Tab implements HasElement, OnInit, OnDestroy {
|
|
@@ -48,6 +46,7 @@ declare class Tab implements HasElement, OnInit, OnDestroy {
|
|
|
48
46
|
readonly _pattern: TabPattern;
|
|
49
47
|
/** Opens this tab panel. */
|
|
50
48
|
open(): void;
|
|
49
|
+
constructor();
|
|
51
50
|
ngOnInit(): void;
|
|
52
51
|
ngOnDestroy(): void;
|
|
53
52
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tab, never>;
|
|
@@ -68,8 +67,6 @@ declare class Tab implements HasElement, OnInit, OnDestroy {
|
|
|
68
67
|
* </ul>
|
|
69
68
|
* ```
|
|
70
69
|
*
|
|
71
|
-
* @developerPreview 21.0
|
|
72
|
-
*
|
|
73
70
|
* @see [Tabs](guide/aria/tabs)
|
|
74
71
|
*/
|
|
75
72
|
declare class TabList implements OnInit, OnDestroy {
|
|
@@ -139,8 +136,6 @@ declare class TabList implements OnInit, OnDestroy {
|
|
|
139
136
|
* </div>
|
|
140
137
|
* ```
|
|
141
138
|
*
|
|
142
|
-
* @developerPreview 21.0
|
|
143
|
-
*
|
|
144
139
|
* @see [Tabs](guide/aria/tabs)
|
|
145
140
|
*/
|
|
146
141
|
declare class TabPanel implements OnInit, OnDestroy {
|
|
@@ -162,11 +157,12 @@ declare class TabPanel implements OnInit, OnDestroy {
|
|
|
162
157
|
readonly visible: _angular_core.Signal<boolean>;
|
|
163
158
|
/** The TabPanel UIPattern. */
|
|
164
159
|
readonly _pattern: TabPanelPattern;
|
|
160
|
+
private readonly _tabContent;
|
|
165
161
|
constructor();
|
|
166
162
|
ngOnInit(): void;
|
|
167
163
|
ngOnDestroy(): void;
|
|
168
164
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabPanel, never>;
|
|
169
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabPanel, "[ngTabPanel]", ["ngTabPanel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {},
|
|
165
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabPanel, "[ngTabPanel]", ["ngTabPanel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, ["_tabContent"], never, true, [{ directive: typeof DeferredContentAware; inputs: { "preserveContent": "preserveContent"; }; outputs: {}; }]>;
|
|
170
166
|
}
|
|
171
167
|
|
|
172
168
|
/**
|
|
@@ -196,8 +192,6 @@ declare class TabPanel implements OnInit, OnDestroy {
|
|
|
196
192
|
* </div>
|
|
197
193
|
* ```
|
|
198
194
|
*
|
|
199
|
-
* @developerPreview 21.0
|
|
200
|
-
*
|
|
201
195
|
* @see [Tabs](guide/aria/tabs)
|
|
202
196
|
*/
|
|
203
197
|
declare class Tabs implements OnDestroy {
|
|
@@ -240,8 +234,6 @@ declare class Tabs implements OnDestroy {
|
|
|
240
234
|
* </div>
|
|
241
235
|
* ```
|
|
242
236
|
*
|
|
243
|
-
* @developerPreview 21.0
|
|
244
|
-
*
|
|
245
237
|
* @see [Tabs](guide/aria/tabs)
|
|
246
238
|
*/
|
|
247
239
|
declare class TabContent {
|
package/types/toolbar.d.ts
CHANGED
|
@@ -10,8 +10,6 @@ import './_list-navigation-chunk.js';
|
|
|
10
10
|
* A directive that groups toolbar widgets, used for more complex widgets like radio groups
|
|
11
11
|
* that have their own internal navigation.
|
|
12
12
|
*
|
|
13
|
-
* @developerPreview 21.0
|
|
14
|
-
*
|
|
15
13
|
* @see [Toolbar](guide/aria/toolbar)
|
|
16
14
|
*/
|
|
17
15
|
declare class ToolbarWidgetGroup<V> {
|
|
@@ -33,6 +31,7 @@ declare class ToolbarWidgetGroup<V> {
|
|
|
33
31
|
readonly multi: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
34
32
|
/** The ToolbarWidgetGroup UIPattern. */
|
|
35
33
|
readonly _pattern: ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V>;
|
|
34
|
+
constructor();
|
|
36
35
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarWidgetGroup<any>, never>;
|
|
37
36
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ToolbarWidgetGroup<any>, "[ngToolbarWidgetGroup]", ["ngToolbarWidgetGroup"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; }, {}, ["_widgets"], never, true, never>;
|
|
38
37
|
}
|
|
@@ -50,8 +49,6 @@ declare class ToolbarWidgetGroup<V> {
|
|
|
50
49
|
* </button>
|
|
51
50
|
* ```
|
|
52
51
|
*
|
|
53
|
-
* @developerPreview 21.0
|
|
54
|
-
*
|
|
55
52
|
* @see [Toolbar](guide/aria/toolbar)
|
|
56
53
|
*/
|
|
57
54
|
declare class ToolbarWidget<V> implements OnInit, OnDestroy {
|
|
@@ -104,8 +101,6 @@ declare class ToolbarWidget<V> implements OnInit, OnDestroy {
|
|
|
104
101
|
* </div>
|
|
105
102
|
* ```
|
|
106
103
|
*
|
|
107
|
-
* @developerPreview 21.0
|
|
108
|
-
*
|
|
109
104
|
* @see [Toolbar](guide/aria/toolbar)
|
|
110
105
|
*/
|
|
111
106
|
declare class Toolbar<V> implements OnDestroy {
|
package/types/tree.d.ts
CHANGED
|
@@ -28,8 +28,6 @@ import './_click-event-manager-chunk.js';
|
|
|
28
28
|
* </li>
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
|
-
* @developerPreview 21.0
|
|
32
|
-
*
|
|
33
31
|
* @see [Tree](guide/aria/tree)
|
|
34
32
|
*/
|
|
35
33
|
declare class TreeItemGroup<V> implements OnInit, OnDestroy {
|
|
@@ -65,8 +63,6 @@ declare class TreeItemGroup<V> implements OnInit, OnDestroy {
|
|
|
65
63
|
* Item Label
|
|
66
64
|
* </li>
|
|
67
65
|
* ```
|
|
68
|
-
*
|
|
69
|
-
* @developerPreview 21.0
|
|
70
66
|
*/
|
|
71
67
|
declare class TreeItem<V> extends DeferredContentAware implements OnInit, OnDestroy, HasElement {
|
|
72
68
|
/** A reference to the host element. */
|
|
@@ -146,8 +142,6 @@ declare class TreeItem<V> extends DeferredContentAware implements OnInit, OnDest
|
|
|
146
142
|
* </ng-template>
|
|
147
143
|
* ```
|
|
148
144
|
*
|
|
149
|
-
* @developerPreview 21.0
|
|
150
|
-
*
|
|
151
145
|
* @see [Tree](guide/aria/tree)
|
|
152
146
|
*/
|
|
153
147
|
declare class Tree<V> implements OnDestroy {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_collection-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/event-manager/event-manager.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/event-manager/keyboard-event-manager.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/signal-like/signal-like.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/utils/element.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/utils/collection.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\n/**\n * An event that supports modifier keys.\n *\n * Matches the native KeyboardEvent, MouseEvent, and TouchEvent.\n */\nexport interface EventWithModifiers extends Event {\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n}\n\n/**\n * Options that are applicable to all event handlers.\n *\n * This library has not yet had a need for stopPropagationImmediate.\n */\nexport interface EventHandlerOptions {\n ignoreRepeat?: boolean;\n stopPropagation: boolean;\n preventDefault: boolean;\n}\n\n/** A basic event handler. */\nexport type EventHandler<T extends Event> = (event: T) => void;\n\n/** A function that determines whether an event is to be handled. */\nexport type EventMatcher<T extends Event> = (event: T) => boolean;\n\n/** A config that specifies how to handle a particular event. */\nexport interface EventHandlerConfig<T extends Event> extends EventHandlerOptions {\n matcher: EventMatcher<T>;\n handler: EventHandler<T>;\n}\n\n/** Bit flag representation of the possible modifier keys that can be present on an event. */\nexport enum Modifier {\n None = 0,\n Ctrl = 0b1,\n Shift = 0b10,\n Alt = 0b100,\n Meta = 0b1000,\n Any = 'Any',\n}\n\nexport type ModifierInputs = Modifier | Modifier[];\n\n/**\n * Abstract base class for all event managers.\n *\n * Event managers are designed to normalize how event handlers are authored and create a safety net\n * for common event handling gotchas like remembering to call preventDefault or stopPropagation.\n */\nexport abstract class EventManager<T extends Event> {\n protected configs: EventHandlerConfig<T>[] = [];\n abstract options: EventHandlerOptions;\n\n /** Runs the handlers that match with the given event. */\n handle(event: T): void {\n for (const config of this.configs) {\n if (config.matcher(event)) {\n config.handler(event);\n\n if (config.preventDefault) {\n event.preventDefault();\n }\n\n if (config.stopPropagation) {\n event.stopPropagation();\n }\n }\n }\n }\n\n /** Configures the event manager to handle specific events. (See subclasses for more). */\n abstract on(...args: [...unknown[]]): this;\n}\n\n/** Gets bit flag representation of the modifier keys present on the given event. */\nexport function getModifiers(event: EventWithModifiers): number {\n return (\n (+event.ctrlKey && Modifier.Ctrl) |\n (+event.shiftKey && Modifier.Shift) |\n (+event.altKey && Modifier.Alt) |\n (+event.metaKey && Modifier.Meta)\n );\n}\n\n/**\n * Checks if the given event has modifiers that are an exact match for any of the given modifier\n * flag combinations.\n */\nexport function hasModifiers(event: EventWithModifiers, modifiers: ModifierInputs): boolean {\n const eventModifiers = getModifiers(event);\n const modifiersList = Array.isArray(modifiers) ? modifiers : [modifiers];\n\n if (modifiersList.includes(Modifier.Any)) {\n return true;\n }\n\n return modifiersList.some(modifiers => eventModifiers === modifiers);\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 {SignalLike} from '../signal-like/signal-like';\nimport {\n EventHandler,\n EventHandlerOptions,\n EventManager,\n hasModifiers,\n ModifierInputs,\n Modifier,\n} from './event-manager';\n\n/**\n * Used to represent a keycode.\n *\n * This is used to match whether an events keycode should be handled. The ability to match using a\n * string, SignalLike, or Regexp gives us more flexibility when authoring event handlers.\n */\ntype KeyCode = string | SignalLike<string> | RegExp;\n\n/**\n * An event manager that is specialized for handling keyboard events. By default this manager stops\n * propagation and prevents default on all events it handles.\n */\nexport class KeyboardEventManager<T extends KeyboardEvent> extends EventManager<T> {\n readonly options: EventHandlerOptions = {\n ignoreRepeat: true,\n preventDefault: true,\n stopPropagation: true,\n };\n\n /** Configures this event manager to handle events with a specific key and no modifiers. */\n on(key: KeyCode, handler: EventHandler<T>, options?: Partial<EventHandlerOptions>): this;\n\n /** Configures this event manager to handle events with a specific modifer and key combination. */\n on(\n modifiers: ModifierInputs,\n key: KeyCode,\n handler: EventHandler<T>,\n options?: Partial<EventHandlerOptions>,\n ): this;\n\n on(...args: any[]) {\n const {modifiers, key, handler, options} = this._normalizeInputs(...args);\n\n this.configs.push({\n handler: handler,\n matcher: event => this._isMatch(event, key, modifiers, options),\n ...this.options,\n ...options,\n });\n\n return this;\n }\n\n private _normalizeInputs(...args: any[]) {\n const withModifiers = Array.isArray(args[0]) || args[0] in Modifier;\n const modifiers = withModifiers ? args[0] : Modifier.None;\n const key = withModifiers ? args[1] : args[0];\n const handler = withModifiers ? args[2] : args[1];\n const options = withModifiers ? args[3] : args[2];\n\n return {\n key: key as KeyCode,\n handler: handler as EventHandler<T>,\n modifiers: modifiers as ModifierInputs,\n options: (options ?? {}) as Partial<EventHandlerOptions>,\n };\n }\n\n private _isMatch(\n event: T,\n key: KeyCode,\n modifiers: ModifierInputs,\n options?: Partial<EventHandlerOptions>,\n ): boolean {\n if (!hasModifiers(event, modifiers)) {\n return false;\n }\n\n // Default is to ignore repeated key events unless explicitly set to false.\n if (event.repeat && options?.ignoreRepeat !== false) {\n return false;\n }\n\n if (key instanceof RegExp) {\n return key.test(event.key);\n }\n\n const keyStr = typeof key === 'string' ? key : key();\n return keyStr.toLowerCase() === event.key.toLowerCase();\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 createComputed,\n createLinkedSignal,\n createSignal,\n linkedSignalSetFn,\n linkedSignalUpdateFn,\n SIGNAL,\n untracked as primitiveUntracked,\n} from '@angular/core/primitives/signals';\n\nexport {primitiveUntracked as untracked};\n\nexport type SignalLike<T> = () => T;\n\nexport interface WritableSignalLike<T> extends SignalLike<T> {\n set(value: T): void;\n update(updateFn: (value: T) => T): void;\n asReadonly(): SignalLike<T>;\n}\n\n/** Converts a getter setter style signal to a WritableSignalLike. */\nexport function convertGetterSetterToWritableSignalLike<T>(\n getter: () => T,\n setter: (v: T) => void,\n): WritableSignalLike<T> {\n // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the getter function.\n return Object.assign(getter, {\n set: setter,\n update: (updateCallback: (v: T) => T) => setter(updateCallback(getter())),\n asReadonly: () => getter,\n });\n}\n\nexport function computed<T>(computation: () => T): SignalLike<T> {\n const computed = createComputed(computation);\n computed[SIGNAL].debugName = '';\n return computed;\n}\n\nexport function signal<T>(initialValue: T): WritableSignalLike<T> {\n const [get, set, update] = createSignal(initialValue);\n get[SIGNAL].debugName = '';\n // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the getter function.\n return Object.assign(get, {set, update, asReadonly: () => get});\n}\n\nexport function linkedSignal<T>(sourceFn: () => T): WritableSignalLike<T> {\n const getter = createLinkedSignal(sourceFn, s => s);\n getter[SIGNAL].debugName = '';\n // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the getter function.\n return Object.assign(getter, {\n set: (v: T) => linkedSignalSetFn(getter[SIGNAL], v),\n update: (updater: (v: T) => T) => linkedSignalUpdateFn(getter[SIGNAL], updater),\n asReadonly: () => getter,\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\nexport interface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 {signal, computed, Signal} from '@angular/core';\nimport {sortDirectives, HasElement} from './element';\n\n/**\n * A collection that lazily sorts its items based on their DOM position.\n * It uses manual registration and updates its order when items are added/removed\n * or when structural DOM changes are detected via MutationObserver.\n *\n * TODO(ok7sai): replace Mutation Observer with internal API.\n */\nexport class SortedCollection<T extends HasElement> {\n private readonly _items = signal<Set<T>>(new Set());\n private readonly _version = signal(0);\n private _observer?: MutationObserver;\n\n readonly orderedItems: Signal<T[]> = computed(() => {\n this._version(); // Track DOM changes\n const itemsArray = Array.from(this._items());\n return itemsArray.sort(sortDirectives);\n });\n\n register(item: T) {\n this._items.update(set => {\n const newSet = new Set(set);\n newSet.add(item);\n return newSet;\n });\n }\n\n unregister(item: T) {\n this._items.update(set => {\n const newSet = new Set(set);\n newSet.delete(item);\n return newSet;\n });\n }\n\n startObserving(element: HTMLElement) {\n if (this._observer) {\n this._observer.disconnect();\n }\n\n this._observer = new MutationObserver(mutations => {\n const hasStructuralChange = mutations.some(m => m.addedNodes.length || m.removedNodes.length);\n if (hasStructuralChange) {\n this._version.update(v => v + 1);\n }\n });\n\n this._observer.observe(element, {childList: true, subtree: true});\n }\n\n stopObserving() {\n this._observer?.disconnect();\n this._observer = undefined;\n }\n}\n"],"names":["Modifier","EventManager","configs","handle","event","config","matcher","handler","preventDefault","stopPropagation","getModifiers","ctrlKey","Ctrl","shiftKey","Shift","altKey","Alt","metaKey","Meta","hasModifiers","modifiers","eventModifiers","modifiersList","Array","isArray","includes","Any","some","KeyboardEventManager","options","ignoreRepeat","on","args","key","_normalizeInputs","push","_isMatch","withModifiers","None","repeat","RegExp","test","keyStr","toLowerCase","convertGetterSetterToWritableSignalLike","getter","setter","Object","assign","set","update","updateCallback","asReadonly","computed","computation","createComputed","SIGNAL","debugName","signal","initialValue","get","createSignal","linkedSignal","sourceFn","createLinkedSignal","s","v","linkedSignalSetFn","updater","linkedSignalUpdateFn","sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","SortedCollection","_items","Set","_version","_observer","orderedItems","itemsArray","from","sort","register","item","newSet","add","unregister","delete","startObserving","disconnect","MutationObserver","mutations","hasStructuralChange","m","addedNodes","length","removedNodes","observe","childList","subtree","stopObserving","undefined"],"mappings":"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"}
|