@angular/aria 21.0.3 → 21.0.4
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 +108 -0
- package/fesm2022/_accordion-chunk.mjs.map +1 -0
- package/fesm2022/_combobox-chunk.mjs +2 -2
- package/fesm2022/_combobox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-listbox-chunk.mjs +4 -286
- package/fesm2022/_combobox-listbox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-tree-chunk.mjs +331 -0
- package/fesm2022/_combobox-tree-chunk.mjs.map +1 -0
- package/fesm2022/_deferred-content-chunk.mjs +124 -0
- package/fesm2022/_deferred-content-chunk.mjs.map +1 -0
- package/fesm2022/_expansion-chunk.mjs +41 -0
- package/fesm2022/_expansion-chunk.mjs.map +1 -0
- package/fesm2022/_list-chunk.mjs +287 -0
- package/fesm2022/_list-chunk.mjs.map +1 -0
- package/fesm2022/_list-navigation-chunk.mjs +1 -1
- package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
- package/fesm2022/_menu-chunk.mjs +515 -0
- package/fesm2022/_menu-chunk.mjs.map +1 -0
- package/fesm2022/_pointer-event-manager-chunk.mjs +2 -82
- package/fesm2022/_pointer-event-manager-chunk.mjs.map +1 -1
- package/fesm2022/_signal-like-chunk.mjs +118 -0
- package/fesm2022/_signal-like-chunk.mjs.map +1 -0
- package/fesm2022/_tabs-chunk.mjs +159 -0
- package/fesm2022/_tabs-chunk.mjs.map +1 -0
- package/fesm2022/_toolbar-widget-group-chunk.mjs +148 -0
- package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -0
- package/fesm2022/_widget-chunk.mjs +3 -2
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +57 -52
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +77 -40
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +70 -68
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox.mjs +49 -47
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu.mjs +69 -65
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +13 -1402
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs.mjs +49 -41
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +49 -45
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +52 -44
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -2
- package/types/_accordion-chunk.d.ts +100 -0
- package/types/_combobox-chunk.d.ts +187 -91
- package/types/_deferred-content-chunk.d.ts +42 -0
- package/types/_expansion-chunk.d.ts +40 -0
- package/types/_grid-chunk.d.ts +41 -41
- package/types/_keyboard-event-manager-chunk.d.ts +68 -0
- package/types/_list-chunk.d.ts +8 -9
- package/types/_list-navigation-chunk.d.ts +8 -101
- package/types/_listbox-chunk.d.ts +17 -16
- package/types/_menu-chunk.d.ts +267 -0
- package/types/_pointer-event-manager-chunk.d.ts +34 -0
- package/types/_tabs-chunk.d.ts +153 -0
- package/types/_toolbar-chunk.d.ts +124 -0
- package/types/_tree-chunk.d.ts +185 -0
- package/types/accordion.d.ts +13 -5
- package/types/aria.d.ts +1 -1
- package/types/combobox.d.ts +122 -6
- package/types/grid.d.ts +10 -0
- package/types/listbox.d.ts +17 -5
- package/types/menu.d.ts +23 -5
- package/types/private.d.ts +25 -885
- package/types/tabs.d.ts +24 -8
- package/types/toolbar.d.ts +12 -4
- package/types/tree.d.ts +16 -5
- package/fesm2022/_combobox-popup-chunk.mjs +0 -46
- package/fesm2022/_combobox-popup-chunk.mjs.map +0 -1
- package/types/_combobox-chunk.d2.ts +0 -193
package/fesm2022/tree.mjs
CHANGED
|
@@ -2,9 +2,17 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { inject, ElementRef, signal, input, booleanAttribute, model, computed, afterRenderEffect, untracked, Directive, afterNextRender } from '@angular/core';
|
|
3
3
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
4
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
import {
|
|
5
|
+
import { ComboboxPopup } from './combobox.mjs';
|
|
6
|
+
export { Combobox as ɵɵCombobox, ComboboxDialog as ɵɵComboboxDialog, ComboboxInput as ɵɵComboboxInput, ComboboxPopupContainer as ɵɵComboboxPopupContainer } from './combobox.mjs';
|
|
7
|
+
import { ComboboxTreePattern, TreePattern, TreeItemPattern } from './_combobox-tree-chunk.mjs';
|
|
8
|
+
import { DeferredContentAware, DeferredContent } from './_deferred-content-chunk.mjs';
|
|
9
|
+
import './_combobox-chunk.mjs';
|
|
10
|
+
import './_signal-like-chunk.mjs';
|
|
11
|
+
import '@angular/core/primitives/signals';
|
|
12
|
+
import './_pointer-event-manager-chunk.mjs';
|
|
13
|
+
import './_list-chunk.mjs';
|
|
14
|
+
import './_list-navigation-chunk.mjs';
|
|
15
|
+
import './_expansion-chunk.mjs';
|
|
8
16
|
|
|
9
17
|
function sortDirectives(a, b) {
|
|
10
18
|
return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0 ? 1 : -1;
|
|
@@ -25,36 +33,36 @@ class Tree {
|
|
|
25
33
|
orientation = input('vertical', ...(ngDevMode ? [{
|
|
26
34
|
debugName: "orientation"
|
|
27
35
|
}] : []));
|
|
28
|
-
multi = input(false,
|
|
29
|
-
|
|
36
|
+
multi = input(false, {
|
|
37
|
+
...(ngDevMode ? {
|
|
38
|
+
debugName: "multi"
|
|
39
|
+
} : {}),
|
|
30
40
|
transform: booleanAttribute
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
transform: booleanAttribute
|
|
37
|
-
}] : [{
|
|
41
|
+
});
|
|
42
|
+
disabled = input(false, {
|
|
43
|
+
...(ngDevMode ? {
|
|
44
|
+
debugName: "disabled"
|
|
45
|
+
} : {}),
|
|
38
46
|
transform: booleanAttribute
|
|
39
|
-
}
|
|
47
|
+
});
|
|
40
48
|
selectionMode = input('explicit', ...(ngDevMode ? [{
|
|
41
49
|
debugName: "selectionMode"
|
|
42
50
|
}] : []));
|
|
43
51
|
focusMode = input('roving', ...(ngDevMode ? [{
|
|
44
52
|
debugName: "focusMode"
|
|
45
53
|
}] : []));
|
|
46
|
-
wrap = input(true,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
transform: booleanAttribute
|
|
51
|
-
}]));
|
|
52
|
-
softDisabled = input(true, ...(ngDevMode ? [{
|
|
53
|
-
debugName: "softDisabled",
|
|
54
|
+
wrap = input(true, {
|
|
55
|
+
...(ngDevMode ? {
|
|
56
|
+
debugName: "wrap"
|
|
57
|
+
} : {}),
|
|
54
58
|
transform: booleanAttribute
|
|
55
|
-
}
|
|
59
|
+
});
|
|
60
|
+
softDisabled = input(true, {
|
|
61
|
+
...(ngDevMode ? {
|
|
62
|
+
debugName: "softDisabled"
|
|
63
|
+
} : {}),
|
|
56
64
|
transform: booleanAttribute
|
|
57
|
-
}
|
|
65
|
+
});
|
|
58
66
|
typeaheadDelay = input(500, ...(ngDevMode ? [{
|
|
59
67
|
debugName: "typeaheadDelay"
|
|
60
68
|
}] : []));
|
|
@@ -62,12 +70,12 @@ class Tree {
|
|
|
62
70
|
debugName: "values"
|
|
63
71
|
}] : []));
|
|
64
72
|
textDirection = inject(Directionality).valueSignal;
|
|
65
|
-
nav = input(false,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
nav = input(false, {
|
|
74
|
+
...(ngDevMode ? {
|
|
75
|
+
debugName: "nav"
|
|
76
|
+
} : {}),
|
|
69
77
|
transform: booleanAttribute
|
|
70
|
-
}
|
|
78
|
+
});
|
|
71
79
|
currentType = input('page', ...(ngDevMode ? [{
|
|
72
80
|
debugName: "currentType"
|
|
73
81
|
}] : []));
|
|
@@ -127,7 +135,7 @@ class Tree {
|
|
|
127
135
|
}
|
|
128
136
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
129
137
|
minVersion: "12.0.0",
|
|
130
|
-
version: "21.0.
|
|
138
|
+
version: "21.0.3",
|
|
131
139
|
ngImport: i0,
|
|
132
140
|
type: Tree,
|
|
133
141
|
deps: [],
|
|
@@ -135,7 +143,7 @@ class Tree {
|
|
|
135
143
|
});
|
|
136
144
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
137
145
|
minVersion: "17.1.0",
|
|
138
|
-
version: "21.0.
|
|
146
|
+
version: "21.0.3",
|
|
139
147
|
type: Tree,
|
|
140
148
|
isStandalone: true,
|
|
141
149
|
selector: "[ngTree]",
|
|
@@ -255,7 +263,7 @@ class Tree {
|
|
|
255
263
|
}
|
|
256
264
|
i0.ɵɵngDeclareClassMetadata({
|
|
257
265
|
minVersion: "12.0.0",
|
|
258
|
-
version: "21.0.
|
|
266
|
+
version: "21.0.3",
|
|
259
267
|
ngImport: i0,
|
|
260
268
|
type: Tree,
|
|
261
269
|
decorators: [{
|
|
@@ -397,12 +405,12 @@ class TreeItem extends DeferredContentAware {
|
|
|
397
405
|
parent = input.required(...(ngDevMode ? [{
|
|
398
406
|
debugName: "parent"
|
|
399
407
|
}] : []));
|
|
400
|
-
disabled = input(false,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
408
|
+
disabled = input(false, {
|
|
409
|
+
...(ngDevMode ? {
|
|
410
|
+
debugName: "disabled"
|
|
411
|
+
} : {}),
|
|
404
412
|
transform: booleanAttribute
|
|
405
|
-
}
|
|
413
|
+
});
|
|
406
414
|
selectable = input(true, ...(ngDevMode ? [{
|
|
407
415
|
debugName: "selectable"
|
|
408
416
|
}] : []));
|
|
@@ -486,7 +494,7 @@ class TreeItem extends DeferredContentAware {
|
|
|
486
494
|
}
|
|
487
495
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
488
496
|
minVersion: "12.0.0",
|
|
489
|
-
version: "21.0.
|
|
497
|
+
version: "21.0.3",
|
|
490
498
|
ngImport: i0,
|
|
491
499
|
type: TreeItem,
|
|
492
500
|
deps: [],
|
|
@@ -494,7 +502,7 @@ class TreeItem extends DeferredContentAware {
|
|
|
494
502
|
});
|
|
495
503
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
496
504
|
minVersion: "17.1.0",
|
|
497
|
-
version: "21.0.
|
|
505
|
+
version: "21.0.3",
|
|
498
506
|
type: TreeItem,
|
|
499
507
|
isStandalone: true,
|
|
500
508
|
selector: "[ngTreeItem]",
|
|
@@ -576,7 +584,7 @@ class TreeItem extends DeferredContentAware {
|
|
|
576
584
|
}
|
|
577
585
|
i0.ɵɵngDeclareClassMetadata({
|
|
578
586
|
minVersion: "12.0.0",
|
|
579
|
-
version: "21.0.
|
|
587
|
+
version: "21.0.3",
|
|
580
588
|
ngImport: i0,
|
|
581
589
|
type: TreeItem,
|
|
582
590
|
decorators: [{
|
|
@@ -693,7 +701,7 @@ class TreeItemGroup {
|
|
|
693
701
|
}
|
|
694
702
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
695
703
|
minVersion: "12.0.0",
|
|
696
|
-
version: "21.0.
|
|
704
|
+
version: "21.0.3",
|
|
697
705
|
ngImport: i0,
|
|
698
706
|
type: TreeItemGroup,
|
|
699
707
|
deps: [],
|
|
@@ -701,7 +709,7 @@ class TreeItemGroup {
|
|
|
701
709
|
});
|
|
702
710
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
703
711
|
minVersion: "17.1.0",
|
|
704
|
-
version: "21.0.
|
|
712
|
+
version: "21.0.3",
|
|
705
713
|
type: TreeItemGroup,
|
|
706
714
|
isStandalone: true,
|
|
707
715
|
selector: "ng-template[ngTreeItemGroup]",
|
|
@@ -716,14 +724,14 @@ class TreeItemGroup {
|
|
|
716
724
|
},
|
|
717
725
|
exportAs: ["ngTreeItemGroup"],
|
|
718
726
|
hostDirectives: [{
|
|
719
|
-
directive:
|
|
727
|
+
directive: DeferredContent
|
|
720
728
|
}],
|
|
721
729
|
ngImport: i0
|
|
722
730
|
});
|
|
723
731
|
}
|
|
724
732
|
i0.ɵɵngDeclareClassMetadata({
|
|
725
733
|
minVersion: "12.0.0",
|
|
726
|
-
version: "21.0.
|
|
734
|
+
version: "21.0.3",
|
|
727
735
|
ngImport: i0,
|
|
728
736
|
type: TreeItemGroup,
|
|
729
737
|
decorators: [{
|
|
@@ -746,5 +754,5 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
746
754
|
}
|
|
747
755
|
});
|
|
748
756
|
|
|
749
|
-
export { Tree, TreeItem, TreeItemGroup };
|
|
757
|
+
export { Tree, TreeItem, TreeItemGroup, ComboboxPopup as ɵɵComboboxPopup, DeferredContent as ɵɵDeferredContent };
|
|
750
758
|
//# sourceMappingURL=tree.mjs.map
|
package/fesm2022/tree.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.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\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 {\n Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ComboboxTreePattern, TreeItemPattern, TreePattern} from '@angular/aria/private';\nimport {ComboboxPopup} from '../combobox';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\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@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]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n})\nexport class Tree<V> {\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 /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** All TreeItem instances within this tree. */\n private readonly _unorderedItems = signal(new Set<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 values of the currently selected items. */\n readonly values = 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 /** Whether the tree has received focus since it was rendered. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n allItems: computed(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(item => item._pattern),\n ),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n combobox: () => this._popup?.combobox?._pattern,\n element: () => this.element,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxTreePattern<V>(inputs)\n : new TreePattern<V>(inputs);\n\n if (this._popup?.combobox) {\n this._popup?._controls?.set(this._pattern as ComboboxTreePattern<V>);\n }\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n afterRenderEffect(() => {\n const items = inputs.allItems();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n afterRenderEffect(() => {\n if (!(this._pattern instanceof ComboboxTreePattern)) return;\n\n const items = inputs.allItems();\n const values = untracked(() => this.values());\n\n if (items && values.some(v => !items.some(i => i.value() === v))) {\n this.values.set(values.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\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 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 afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n afterNextRender,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxTreePattern, TreeItemPattern, DeferredContentAware} from '@angular/aria/private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\nimport {HasElement} from './utils';\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 afterNextRender(() => {\n if (this.tree()._pattern instanceof ComboboxTreePattern) {\n this.preserveContent.set(true);\n }\n });\n // Connect the group's hidden state to the DeferredContentAware's visibility.\n afterRenderEffect(() => {\n this.tree()._pattern instanceof ComboboxTreePattern\n ? this.contentVisible.set(true)\n : this.contentVisible.set(this._pattern.expanded());\n });\n }\n\n ngOnInit() {\n this.parent()._register(this);\n this.tree()._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 this.parent()._unregister(this);\n this.tree()._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","/**\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} from '@angular/aria/private';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\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@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"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tree","_elementRef","inject","ElementRef","nativeElement","_popup","ComboboxPopup","optional","_unorderedItems","signal","Set","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","values","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","_hasFocused","constructor","inputs","allItems","computed","sort","map","item","activeItem","undefined","combobox","ComboboxTreePattern","TreePattern","_controls","set","afterRenderEffect","setDefaultState","items","untracked","some","i","listBehavior","unfocus","v","value","filter","_onFocus","_register","child","add","_unregister","delete","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","TreeItem","DeferredContentAware","_group","required","parent","selectable","expanded","label","ngDevMode","debugName","searchTerm","textContent","tree","ownedBy","active","level","selected","visible","_expanded","expandable","afterNextRender","preserveContent","contentVisible","ngOnInit","treePattern","parentPattern","TreeItemPattern","children","_childPatterns","hasChildren","ngOnDestroy","group","usesInheritance","TreeItemGroup","_deferredContent","DeferredContent","c","deferredContentAware"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.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\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 {\n Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ComboboxTreePattern, TreeItemPattern, TreePattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\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]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n})\nexport class Tree<V> {\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 /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** All TreeItem instances within this tree. */\n private readonly _unorderedItems = signal(new Set<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 values of the currently selected items. */\n readonly values = 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 /** Whether the tree has received focus since it was rendered. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n allItems: computed(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(item => item._pattern),\n ),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n combobox: () => this._popup?.combobox?._pattern,\n element: () => this.element,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxTreePattern<V>(inputs)\n : new TreePattern<V>(inputs);\n\n if (this._popup?.combobox) {\n this._popup?._controls?.set(this._pattern as ComboboxTreePattern<V>);\n }\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n afterRenderEffect(() => {\n const items = inputs.allItems();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n afterRenderEffect(() => {\n if (!(this._pattern instanceof ComboboxTreePattern)) return;\n\n const items = inputs.allItems();\n const values = untracked(() => this.values());\n\n if (items && values.some(v => !items.some(i => i.value() === v))) {\n this.values.set(values.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\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 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 afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n afterNextRender,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxTreePattern, TreeItemPattern, DeferredContentAware} from '../private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\nimport {HasElement} from './utils';\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 afterNextRender(() => {\n if (this.tree()._pattern instanceof ComboboxTreePattern) {\n this.preserveContent.set(true);\n }\n });\n // Connect the group's hidden state to the DeferredContentAware's visibility.\n afterRenderEffect(() => {\n this.tree()._pattern instanceof ComboboxTreePattern\n ? this.contentVisible.set(true)\n : this.contentVisible.set(this._pattern.expanded());\n });\n }\n\n ngOnInit() {\n this.parent()._register(this);\n this.tree()._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 this.parent()._unregister(this);\n this.tree()._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","/**\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} from '../private';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\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"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tree","_elementRef","inject","ElementRef","nativeElement","_popup","ComboboxPopup","optional","_unorderedItems","signal","Set","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","values","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","_hasFocused","constructor","inputs","allItems","computed","sort","map","item","activeItem","undefined","combobox","ComboboxTreePattern","TreePattern","_controls","set","afterRenderEffect","setDefaultState","items","untracked","some","i","listBehavior","unfocus","v","value","filter","_onFocus","_register","child","add","_unregister","delete","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","TreeItem","DeferredContentAware","_group","required","parent","selectable","expanded","label","ngDevMode","debugName","searchTerm","textContent","tree","ownedBy","active","level","selected","visible","_expanded","expandable","afterNextRender","preserveContent","contentVisible","ngOnInit","treePattern","parentPattern","TreeItemPattern","children","_childPatterns","hasChildren","ngOnDestroy","group","usesInheritance","TreeItemGroup","_deferredContent","DeferredContent","c","deferredContentAware"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/aria",
|
|
3
|
-
"version": "21.0.
|
|
3
|
+
"version": "21.0.4",
|
|
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": "21.0.
|
|
15
|
+
"@angular/cdk": "21.0.4",
|
|
16
16
|
"@angular/core": "^21.0.0 || ^22.0.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { KeyboardEventManager } from './_keyboard-event-manager-chunk.js';
|
|
2
|
+
import { PointerEventManager } from './_pointer-event-manager-chunk.js';
|
|
3
|
+
import { ListExpansionInputs, ListExpansion, ExpansionItem } from './_expansion-chunk.js';
|
|
4
|
+
import { ListNavigationInputs, ListFocusInputs, ListNavigation, ListFocus, SignalLike, ListNavigationItem, ListFocusItem, WritableSignalLike } from './_list-navigation-chunk.js';
|
|
5
|
+
|
|
6
|
+
/** Inputs of the AccordionGroupPattern. */
|
|
7
|
+
interface AccordionGroupInputs extends Omit<ListNavigationInputs<AccordionTriggerPattern> & ListFocusInputs<AccordionTriggerPattern> & Omit<ListExpansionInputs, 'items'>, 'focusMode'> {
|
|
8
|
+
/** A function that returns the trigger associated with a given element. */
|
|
9
|
+
getItem: (e: Element | null | undefined) => AccordionTriggerPattern | undefined;
|
|
10
|
+
}
|
|
11
|
+
/** A pattern controls the nested Accordions. */
|
|
12
|
+
declare class AccordionGroupPattern {
|
|
13
|
+
readonly inputs: AccordionGroupInputs;
|
|
14
|
+
/** Controls navigation for the group. */
|
|
15
|
+
readonly navigationBehavior: ListNavigation<AccordionTriggerPattern>;
|
|
16
|
+
/** Controls focus for the group. */
|
|
17
|
+
readonly focusBehavior: ListFocus<AccordionTriggerPattern>;
|
|
18
|
+
/** Controls expansion for the group. */
|
|
19
|
+
readonly expansionBehavior: ListExpansion;
|
|
20
|
+
constructor(inputs: AccordionGroupInputs);
|
|
21
|
+
/** The key used to navigate to the previous accordion trigger. */
|
|
22
|
+
prevKey: SignalLike<"ArrowUp" | "ArrowRight" | "ArrowLeft">;
|
|
23
|
+
/** The key used to navigate to the next accordion trigger. */
|
|
24
|
+
nextKey: SignalLike<"ArrowRight" | "ArrowLeft" | "ArrowDown">;
|
|
25
|
+
/** The keydown event manager for the accordion trigger. */
|
|
26
|
+
keydown: SignalLike<KeyboardEventManager<KeyboardEvent>>;
|
|
27
|
+
/** The pointerdown event manager for the accordion trigger. */
|
|
28
|
+
pointerdown: SignalLike<PointerEventManager<PointerEvent>>;
|
|
29
|
+
/** Handles keydown events on the trigger, delegating to the group if not disabled. */
|
|
30
|
+
onKeydown(event: KeyboardEvent): void;
|
|
31
|
+
/** Handles pointerdown events on the trigger, delegating to the group if not disabled. */
|
|
32
|
+
onPointerdown(event: PointerEvent): void;
|
|
33
|
+
/** Handles focus events on the trigger. This ensures the tabbing changes the active index. */
|
|
34
|
+
onFocus(event: FocusEvent): void;
|
|
35
|
+
/** Toggles the expansion state of the active accordion item. */
|
|
36
|
+
toggle(): void;
|
|
37
|
+
}
|
|
38
|
+
/** Inputs for the AccordionTriggerPattern. */
|
|
39
|
+
interface AccordionTriggerInputs extends Omit<ListNavigationItem & ListFocusItem, 'index'>, Omit<ExpansionItem, 'expandable'> {
|
|
40
|
+
/** A local unique identifier for the trigger's corresponding panel. */
|
|
41
|
+
panelId: SignalLike<string>;
|
|
42
|
+
/** The parent accordion group that controls this trigger. */
|
|
43
|
+
accordionGroup: SignalLike<AccordionGroupPattern>;
|
|
44
|
+
/** The accordion panel controlled by this trigger. */
|
|
45
|
+
accordionPanel: SignalLike<AccordionPanelPattern | undefined>;
|
|
46
|
+
}
|
|
47
|
+
/** A pattern controls the expansion state of an accordion. */
|
|
48
|
+
declare class AccordionTriggerPattern implements ListNavigationItem, ListFocusItem, ExpansionItem {
|
|
49
|
+
readonly inputs: AccordionTriggerInputs;
|
|
50
|
+
/** A unique identifier for this trigger. */
|
|
51
|
+
readonly id: SignalLike<string>;
|
|
52
|
+
/** A reference to the trigger element. */
|
|
53
|
+
readonly element: SignalLike<HTMLElement>;
|
|
54
|
+
/** Whether this trigger has expandable panel. */
|
|
55
|
+
readonly expandable: SignalLike<boolean>;
|
|
56
|
+
/** Whether the corresponding panel is expanded. */
|
|
57
|
+
readonly expanded: WritableSignalLike<boolean>;
|
|
58
|
+
/** Whether the trigger is active. */
|
|
59
|
+
readonly active: SignalLike<boolean>;
|
|
60
|
+
/** Id of the accordion panel controlled by the trigger. */
|
|
61
|
+
readonly controls: SignalLike<string | undefined>;
|
|
62
|
+
/** The tabindex of the trigger. */
|
|
63
|
+
readonly tabIndex: SignalLike<-1 | 0>;
|
|
64
|
+
/** Whether the trigger is disabled. Disabling an accordion group disables all the triggers. */
|
|
65
|
+
readonly disabled: SignalLike<boolean>;
|
|
66
|
+
/** Whether the trigger is hard disabled. */
|
|
67
|
+
readonly hardDisabled: SignalLike<boolean>;
|
|
68
|
+
/** The index of the trigger within its accordion group. */
|
|
69
|
+
readonly index: SignalLike<number>;
|
|
70
|
+
constructor(inputs: AccordionTriggerInputs);
|
|
71
|
+
/** Opens the accordion panel. */
|
|
72
|
+
open(): void;
|
|
73
|
+
/** Closes the accordion panel. */
|
|
74
|
+
close(): void;
|
|
75
|
+
/** Toggles the accordion panel. */
|
|
76
|
+
toggle(): void;
|
|
77
|
+
}
|
|
78
|
+
/** Represents the required inputs for the AccordionPanelPattern. */
|
|
79
|
+
interface AccordionPanelInputs {
|
|
80
|
+
/** A global unique identifier for the panel. */
|
|
81
|
+
id: SignalLike<string>;
|
|
82
|
+
/** A local unique identifier for the panel, matching its trigger's panelId. */
|
|
83
|
+
panelId: SignalLike<string>;
|
|
84
|
+
/** The parent accordion trigger that controls this panel. */
|
|
85
|
+
accordionTrigger: SignalLike<AccordionTriggerPattern | undefined>;
|
|
86
|
+
}
|
|
87
|
+
/** Represents an accordion panel. */
|
|
88
|
+
declare class AccordionPanelPattern {
|
|
89
|
+
readonly inputs: AccordionPanelInputs;
|
|
90
|
+
/** A global unique identifier for the panel. */
|
|
91
|
+
id: SignalLike<string>;
|
|
92
|
+
/** The parent accordion trigger that controls this panel. */
|
|
93
|
+
accordionTrigger: SignalLike<AccordionTriggerPattern | undefined>;
|
|
94
|
+
/** Whether the accordion panel is hidden. True if the associated trigger is not expanded. */
|
|
95
|
+
hidden: SignalLike<boolean>;
|
|
96
|
+
constructor(inputs: AccordionPanelInputs);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { AccordionGroupPattern, AccordionPanelPattern, AccordionTriggerPattern };
|
|
100
|
+
export type { AccordionGroupInputs, AccordionPanelInputs, AccordionTriggerInputs };
|