@angular/aria 22.0.0-next.3 → 22.0.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_accordion-chunk.mjs +5 -5
- package/fesm2022/_accordion-chunk.mjs.map +1 -1
- package/fesm2022/_click-event-manager-chunk.mjs +45 -0
- package/fesm2022/_click-event-manager-chunk.mjs.map +1 -0
- package/fesm2022/_combobox-chunk.mjs +8 -8
- package/fesm2022/_combobox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-listbox-chunk.mjs +17 -7
- package/fesm2022/_combobox-listbox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-tree-chunk.mjs +16 -6
- package/fesm2022/_combobox-tree-chunk.mjs.map +1 -1
- package/fesm2022/_deferred-content-chunk.mjs +6 -6
- package/fesm2022/_element-chunk.mjs +6 -0
- package/fesm2022/_element-chunk.mjs.map +1 -0
- package/fesm2022/_list-chunk.mjs.map +1 -1
- package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
- package/fesm2022/_list-typeahead-chunk.mjs.map +1 -1
- package/fesm2022/_menu-chunk.mjs +33 -12
- package/fesm2022/_menu-chunk.mjs.map +1 -1
- package/fesm2022/_pointer-event-manager-chunk.mjs.map +1 -1
- package/fesm2022/_signal-like-chunk.mjs.map +1 -1
- package/fesm2022/_tabs-chunk.mjs +15 -5
- package/fesm2022/_tabs-chunk.mjs.map +1 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs +13 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
- package/fesm2022/_widget-chunk.mjs +17 -169
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion-testing.mjs +61 -0
- package/fesm2022/accordion-testing.mjs.map +1 -0
- package/fesm2022/accordion.mjs +217 -192
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +15 -15
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +26 -97
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox-testing.mjs +55 -0
- package/fesm2022/listbox-testing.mjs.map +1 -0
- package/fesm2022/listbox.mjs +13 -20
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu-testing.mjs +75 -0
- package/fesm2022/menu-testing.mjs.map +1 -0
- package/fesm2022/menu.mjs +18 -22
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +2 -0
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs-testing.mjs +57 -0
- package/fesm2022/tabs-testing.mjs.map +1 -0
- package/fesm2022/tabs.mjs +22 -32
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar-testing.mjs +56 -0
- package/fesm2022/toolbar-testing.mjs.map +1 -0
- package/fesm2022/toolbar.mjs +20 -26
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree-testing.mjs +88 -0
- package/fesm2022/tree-testing.mjs.map +1 -0
- package/fesm2022/tree.mjs +16 -26
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +26 -2
- package/resources/code-examples.db +0 -0
- package/types/_accordion-chunk.d.ts +10 -9
- package/types/_click-event-manager-chunk.d.ts +27 -0
- package/types/_combobox-chunk.d.ts +23 -23
- package/types/_element-chunk.d.ts +10 -0
- package/types/_expansion-chunk.d.ts +1 -1
- package/types/_grid-chunk.d.ts +13 -51
- package/types/_keyboard-event-manager-chunk.d.ts +2 -2
- package/types/_list-chunk.d.ts +19 -18
- package/types/_list-navigation-chunk.d.ts +6 -16
- package/types/_listbox-chunk.d.ts +37 -30
- package/types/_menu-chunk.d.ts +60 -56
- package/types/_pointer-event-manager-chunk.d.ts +1 -1
- package/types/_signal-like-chunk.d.ts +14 -0
- package/types/_tabs-chunk.d.ts +13 -6
- package/types/_toolbar-chunk.d.ts +6 -1
- package/types/_tree-chunk.d.ts +24 -17
- package/types/accordion-testing.d.ts +63 -0
- package/types/accordion.d.ts +69 -55
- package/types/combobox.d.ts +6 -5
- package/types/grid.d.ts +8 -14
- package/types/listbox-testing.d.ts +39 -0
- package/types/listbox.d.ts +21 -22
- package/types/menu-testing.d.ts +50 -0
- package/types/menu.d.ts +4 -3
- package/types/private.d.ts +48 -45
- package/types/tabs-testing.d.ts +57 -0
- package/types/tabs.d.ts +4 -9
- package/types/toolbar-testing.d.ts +72 -0
- package/types/toolbar.d.ts +3 -5
- package/types/tree-testing.d.ts +75 -0
- package/types/tree.d.ts +5 -9
package/fesm2022/grid.mjs
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef, contentChildren, computed, input, booleanAttribute,
|
|
2
|
+
import { InjectionToken, inject, ElementRef, contentChildren, computed, input, booleanAttribute, afterRenderEffect, Directive, output, Renderer2, contentChild, model } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@angular/cdk/bidi';
|
|
4
4
|
import { GridPattern, GridCellWidgetPattern, GridCellPattern, GridRowPattern } from './_widget-chunk.mjs';
|
|
5
5
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
6
6
|
import './_signal-like-chunk.mjs';
|
|
7
7
|
import '@angular/core/primitives/signals';
|
|
8
8
|
import './_pointer-event-manager-chunk.mjs';
|
|
9
|
-
import './_list-navigation-chunk.mjs';
|
|
10
9
|
|
|
11
10
|
const GRID_CELL = new InjectionToken('GRID_CELL');
|
|
12
11
|
const GRID_ROW = new InjectionToken('GRID_ROW');
|
|
@@ -60,12 +59,6 @@ class Grid {
|
|
|
60
59
|
selectionMode = input('follow', ...(ngDevMode ? [{
|
|
61
60
|
debugName: "selectionMode"
|
|
62
61
|
}] : []));
|
|
63
|
-
enableRangeSelection = input(false, {
|
|
64
|
-
...(ngDevMode ? {
|
|
65
|
-
debugName: "enableRangeSelection"
|
|
66
|
-
} : {}),
|
|
67
|
-
transform: booleanAttribute
|
|
68
|
-
});
|
|
69
62
|
_pattern = new GridPattern({
|
|
70
63
|
...this,
|
|
71
64
|
rows: this._rowPatterns,
|
|
@@ -73,16 +66,6 @@ class Grid {
|
|
|
73
66
|
element: () => this.element
|
|
74
67
|
});
|
|
75
68
|
constructor() {
|
|
76
|
-
const ngZone = inject(NgZone);
|
|
77
|
-
ngZone.runOutsideAngular(() => {
|
|
78
|
-
this.element.addEventListener('pointermove', event => {
|
|
79
|
-
if (this._pattern.acceptsPointerMove()) {
|
|
80
|
-
ngZone.run(() => this._pattern.onPointermove(event));
|
|
81
|
-
}
|
|
82
|
-
}, {
|
|
83
|
-
passive: true
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
69
|
afterRenderEffect(() => this._pattern.setDefaultStateEffect());
|
|
87
70
|
afterRenderEffect(() => this._pattern.resetStateEffect());
|
|
88
71
|
afterRenderEffect(() => this._pattern.resetFocusEffect());
|
|
@@ -105,7 +88,7 @@ class Grid {
|
|
|
105
88
|
}
|
|
106
89
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
107
90
|
minVersion: "12.0.0",
|
|
108
|
-
version: "22.0.0-next.
|
|
91
|
+
version: "22.0.0-next.6",
|
|
109
92
|
ngImport: i0,
|
|
110
93
|
type: Grid,
|
|
111
94
|
deps: [],
|
|
@@ -113,7 +96,7 @@ class Grid {
|
|
|
113
96
|
});
|
|
114
97
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
115
98
|
minVersion: "17.2.0",
|
|
116
|
-
version: "22.0.0-next.
|
|
99
|
+
version: "22.0.0-next.6",
|
|
117
100
|
type: Grid,
|
|
118
101
|
isStandalone: true,
|
|
119
102
|
selector: "[ngGrid]",
|
|
@@ -173,13 +156,6 @@ class Grid {
|
|
|
173
156
|
isSignal: true,
|
|
174
157
|
isRequired: false,
|
|
175
158
|
transformFunction: null
|
|
176
|
-
},
|
|
177
|
-
enableRangeSelection: {
|
|
178
|
-
classPropertyName: "enableRangeSelection",
|
|
179
|
-
publicName: "enableRangeSelection",
|
|
180
|
-
isSignal: true,
|
|
181
|
-
isRequired: false,
|
|
182
|
-
transformFunction: null
|
|
183
159
|
}
|
|
184
160
|
},
|
|
185
161
|
host: {
|
|
@@ -189,7 +165,6 @@ class Grid {
|
|
|
189
165
|
listeners: {
|
|
190
166
|
"keydown": "_pattern.onKeydown($event)",
|
|
191
167
|
"pointerdown": "_pattern.onPointerdown($event)",
|
|
192
|
-
"pointerup": "_pattern.onPointerup($event)",
|
|
193
168
|
"focusin": "_pattern.onFocusIn($event)",
|
|
194
169
|
"focusout": "_pattern.onFocusOut($event)"
|
|
195
170
|
},
|
|
@@ -212,7 +187,7 @@ class Grid {
|
|
|
212
187
|
}
|
|
213
188
|
i0.ɵɵngDeclareClassMetadata({
|
|
214
189
|
minVersion: "12.0.0",
|
|
215
|
-
version: "22.0.0-next.
|
|
190
|
+
version: "22.0.0-next.6",
|
|
216
191
|
ngImport: i0,
|
|
217
192
|
type: Grid,
|
|
218
193
|
decorators: [{
|
|
@@ -228,7 +203,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
228
203
|
'[attr.aria-activedescendant]': '_pattern.activeDescendant()',
|
|
229
204
|
'(keydown)': '_pattern.onKeydown($event)',
|
|
230
205
|
'(pointerdown)': '_pattern.onPointerdown($event)',
|
|
231
|
-
'(pointerup)': '_pattern.onPointerup($event)',
|
|
232
206
|
'(focusin)': '_pattern.onFocusIn($event)',
|
|
233
207
|
'(focusout)': '_pattern.onFocusOut($event)'
|
|
234
208
|
}
|
|
@@ -308,14 +282,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
308
282
|
alias: "selectionMode",
|
|
309
283
|
required: false
|
|
310
284
|
}]
|
|
311
|
-
}],
|
|
312
|
-
enableRangeSelection: [{
|
|
313
|
-
type: i0.Input,
|
|
314
|
-
args: [{
|
|
315
|
-
isSignal: true,
|
|
316
|
-
alias: "enableRangeSelection",
|
|
317
|
-
required: false
|
|
318
|
-
}]
|
|
319
285
|
}]
|
|
320
286
|
}
|
|
321
287
|
});
|
|
@@ -384,7 +350,7 @@ class GridCellWidget {
|
|
|
384
350
|
}
|
|
385
351
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
386
352
|
minVersion: "12.0.0",
|
|
387
|
-
version: "22.0.0-next.
|
|
353
|
+
version: "22.0.0-next.6",
|
|
388
354
|
ngImport: i0,
|
|
389
355
|
type: GridCellWidget,
|
|
390
356
|
deps: [],
|
|
@@ -392,7 +358,7 @@ class GridCellWidget {
|
|
|
392
358
|
});
|
|
393
359
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
394
360
|
minVersion: "17.1.0",
|
|
395
|
-
version: "22.0.0-next.
|
|
361
|
+
version: "22.0.0-next.6",
|
|
396
362
|
type: GridCellWidget,
|
|
397
363
|
isStandalone: true,
|
|
398
364
|
selector: "[ngGridCellWidget]",
|
|
@@ -451,7 +417,7 @@ class GridCellWidget {
|
|
|
451
417
|
}
|
|
452
418
|
i0.ɵɵngDeclareClassMetadata({
|
|
453
419
|
minVersion: "12.0.0",
|
|
454
|
-
version: "22.0.0-next.
|
|
420
|
+
version: "22.0.0-next.6",
|
|
455
421
|
ngImport: i0,
|
|
456
422
|
type: GridCellWidget,
|
|
457
423
|
decorators: [{
|
|
@@ -527,14 +493,14 @@ class GridCell {
|
|
|
527
493
|
active = computed(() => this._pattern.active(), ...(ngDevMode ? [{
|
|
528
494
|
debugName: "active"
|
|
529
495
|
}] : []));
|
|
530
|
-
|
|
496
|
+
_widget = contentChild(GridCellWidget, {
|
|
531
497
|
...(ngDevMode ? {
|
|
532
|
-
debugName: "
|
|
498
|
+
debugName: "_widget"
|
|
533
499
|
} : {}),
|
|
534
500
|
descendants: true
|
|
535
501
|
});
|
|
536
|
-
|
|
537
|
-
debugName: "
|
|
502
|
+
_widgetPattern = computed(() => this._widget()?._pattern, ...(ngDevMode ? [{
|
|
503
|
+
debugName: "_widgetPattern"
|
|
538
504
|
}] : []));
|
|
539
505
|
_row = inject(GRID_ROW);
|
|
540
506
|
textDirection = inject(Directionality).valueSignal;
|
|
@@ -568,15 +534,6 @@ class GridCell {
|
|
|
568
534
|
selectable = input(true, ...(ngDevMode ? [{
|
|
569
535
|
debugName: "selectable"
|
|
570
536
|
}] : []));
|
|
571
|
-
orientation = input('horizontal', ...(ngDevMode ? [{
|
|
572
|
-
debugName: "orientation"
|
|
573
|
-
}] : []));
|
|
574
|
-
wrap = input(true, {
|
|
575
|
-
...(ngDevMode ? {
|
|
576
|
-
debugName: "wrap"
|
|
577
|
-
} : {}),
|
|
578
|
-
transform: booleanAttribute
|
|
579
|
-
});
|
|
580
537
|
tabindex = input(...(ngDevMode ? [undefined, {
|
|
581
538
|
debugName: "tabindex"
|
|
582
539
|
}] : []));
|
|
@@ -587,7 +544,7 @@ class GridCell {
|
|
|
587
544
|
...this,
|
|
588
545
|
grid: this._row._gridPattern,
|
|
589
546
|
row: () => this._row._pattern,
|
|
590
|
-
|
|
547
|
+
widget: this._widgetPattern,
|
|
591
548
|
getWidget: e => this._getWidget(e),
|
|
592
549
|
element: () => this.element
|
|
593
550
|
});
|
|
@@ -625,10 +582,11 @@ class GridCell {
|
|
|
625
582
|
};
|
|
626
583
|
_getWidget(element) {
|
|
627
584
|
let target = element;
|
|
585
|
+
const widget = this._widgetPattern();
|
|
586
|
+
if (!widget) return undefined;
|
|
628
587
|
while (target) {
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
return pattern;
|
|
588
|
+
if (widget.element() === target) {
|
|
589
|
+
return widget;
|
|
632
590
|
}
|
|
633
591
|
target = target.parentElement?.closest('[ngGridCellWidget]');
|
|
634
592
|
}
|
|
@@ -636,7 +594,7 @@ class GridCell {
|
|
|
636
594
|
}
|
|
637
595
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
638
596
|
minVersion: "12.0.0",
|
|
639
|
-
version: "22.0.0-next.
|
|
597
|
+
version: "22.0.0-next.6",
|
|
640
598
|
ngImport: i0,
|
|
641
599
|
type: GridCell,
|
|
642
600
|
deps: [],
|
|
@@ -644,7 +602,7 @@ class GridCell {
|
|
|
644
602
|
});
|
|
645
603
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
646
604
|
minVersion: "17.2.0",
|
|
647
|
-
version: "22.0.0-next.
|
|
605
|
+
version: "22.0.0-next.6",
|
|
648
606
|
type: GridCell,
|
|
649
607
|
isStandalone: true,
|
|
650
608
|
selector: "[ngGridCell]",
|
|
@@ -712,20 +670,6 @@ class GridCell {
|
|
|
712
670
|
isRequired: false,
|
|
713
671
|
transformFunction: null
|
|
714
672
|
},
|
|
715
|
-
orientation: {
|
|
716
|
-
classPropertyName: "orientation",
|
|
717
|
-
publicName: "orientation",
|
|
718
|
-
isSignal: true,
|
|
719
|
-
isRequired: false,
|
|
720
|
-
transformFunction: null
|
|
721
|
-
},
|
|
722
|
-
wrap: {
|
|
723
|
-
classPropertyName: "wrap",
|
|
724
|
-
publicName: "wrap",
|
|
725
|
-
isSignal: true,
|
|
726
|
-
isRequired: false,
|
|
727
|
-
transformFunction: null
|
|
728
|
-
},
|
|
729
673
|
tabindex: {
|
|
730
674
|
classPropertyName: "tabindex",
|
|
731
675
|
publicName: "tabindex",
|
|
@@ -742,7 +686,8 @@ class GridCell {
|
|
|
742
686
|
useExisting: GridCell
|
|
743
687
|
}],
|
|
744
688
|
queries: [{
|
|
745
|
-
propertyName: "
|
|
689
|
+
propertyName: "_widget",
|
|
690
|
+
first: true,
|
|
746
691
|
predicate: GridCellWidget,
|
|
747
692
|
descendants: true,
|
|
748
693
|
isSignal: true
|
|
@@ -753,7 +698,7 @@ class GridCell {
|
|
|
753
698
|
}
|
|
754
699
|
i0.ɵɵngDeclareClassMetadata({
|
|
755
700
|
minVersion: "12.0.0",
|
|
756
|
-
version: "22.0.0-next.
|
|
701
|
+
version: "22.0.0-next.6",
|
|
757
702
|
ngImport: i0,
|
|
758
703
|
type: GridCell,
|
|
759
704
|
decorators: [{
|
|
@@ -769,8 +714,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
769
714
|
}],
|
|
770
715
|
ctorParameters: () => [],
|
|
771
716
|
propDecorators: {
|
|
772
|
-
|
|
773
|
-
type: i0.
|
|
717
|
+
_widget: [{
|
|
718
|
+
type: i0.ContentChild,
|
|
774
719
|
args: [i0.forwardRef(() => GridCellWidget), {
|
|
775
720
|
...{
|
|
776
721
|
descendants: true
|
|
@@ -853,22 +798,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
853
798
|
required: false
|
|
854
799
|
}]
|
|
855
800
|
}],
|
|
856
|
-
orientation: [{
|
|
857
|
-
type: i0.Input,
|
|
858
|
-
args: [{
|
|
859
|
-
isSignal: true,
|
|
860
|
-
alias: "orientation",
|
|
861
|
-
required: false
|
|
862
|
-
}]
|
|
863
|
-
}],
|
|
864
|
-
wrap: [{
|
|
865
|
-
type: i0.Input,
|
|
866
|
-
args: [{
|
|
867
|
-
isSignal: true,
|
|
868
|
-
alias: "wrap",
|
|
869
|
-
required: false
|
|
870
|
-
}]
|
|
871
|
-
}],
|
|
872
801
|
tabindex: [{
|
|
873
802
|
type: i0.Input,
|
|
874
803
|
args: [{
|
|
@@ -906,7 +835,7 @@ class GridRow {
|
|
|
906
835
|
});
|
|
907
836
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
908
837
|
minVersion: "12.0.0",
|
|
909
|
-
version: "22.0.0-next.
|
|
838
|
+
version: "22.0.0-next.6",
|
|
910
839
|
ngImport: i0,
|
|
911
840
|
type: GridRow,
|
|
912
841
|
deps: [],
|
|
@@ -914,7 +843,7 @@ class GridRow {
|
|
|
914
843
|
});
|
|
915
844
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
916
845
|
minVersion: "17.2.0",
|
|
917
|
-
version: "22.0.0-next.
|
|
846
|
+
version: "22.0.0-next.6",
|
|
918
847
|
type: GridRow,
|
|
919
848
|
isStandalone: true,
|
|
920
849
|
selector: "[ngGridRow]",
|
|
@@ -951,7 +880,7 @@ class GridRow {
|
|
|
951
880
|
}
|
|
952
881
|
i0.ɵɵngDeclareClassMetadata({
|
|
953
882
|
minVersion: "12.0.0",
|
|
954
|
-
version: "22.0.0-next.
|
|
883
|
+
version: "22.0.0-next.6",
|
|
955
884
|
ngImport: i0,
|
|
956
885
|
type: GridRow,
|
|
957
886
|
decorators: [{
|
package/fesm2022/grid.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.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 {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridPattern, GridCellPattern} from '../private';\nimport {GRID_ROW} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Grid {\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 rows that make up the grid. */\n private readonly _rows = contentChildren(GRID_ROW, {descendants: true});\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<any[]> = computed(() => this._rows().map(r => r._pattern));\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {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 /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** Whether multiple cells in the grid can be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** Whether enable range selections (with modifier keys or dragging). */\n readonly enableRangeSelection = input(false, {transform: booleanAttribute});\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n element: () => this.element,\n });\n\n constructor() {\n const ngZone = inject(NgZone);\n\n // Since `pointermove` fires on each pixel, we need to\n // be careful not to hit the zone unless it's necessary.\n ngZone.runOutsideAngular(() => {\n this.element.addEventListener(\n 'pointermove',\n event => {\n if (this._pattern.acceptsPointerMove()) {\n ngZone.run(() => this._pattern.onPointermove(event));\n }\n },\n {passive: true},\n );\n });\n\n afterRenderEffect(() => this._pattern.setDefaultStateEffect());\n afterRenderEffect(() => this._pattern.resetStateEffect());\n afterRenderEffect(() => this._pattern.resetFocusEffect());\n afterRenderEffect(() => this._pattern.restoreFocusEffect());\n afterRenderEffect(() => this._pattern.focusEffect());\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return 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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\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 /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementRef | HTMLElement | undefined>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? (this.focusTarget() ? -1 : this._pattern.tabIndex()),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n focusTarget: computed(() => {\n const target = this.focusTarget();\n return target instanceof ElementRef ? target.nativeElement : target;\n }),\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect(() => {\n const activateEvent = this._pattern.lastActivateEvent();\n if (activateEvent) {\n this.activated.emit(activateEvent);\n }\n });\n\n afterRenderEffect(() => {\n const deactivateEvent = this._pattern.lastDeactivateEvent();\n if (deactivateEvent) {\n this.deactivated.emit(deactivateEvent);\n }\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widgets contained within this cell, if any. */\n private readonly _widgets = contentChildren(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPatterns: Signal<any[]> = computed(() =>\n this._widgets().map(w => w._pattern),\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** Orientation of the widgets in the cell. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether widgets navigation wraps. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widgets: this._widgetPatterns,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n\n while (target) {\n const pattern = this._widgetPatterns().find(w => w.element() === target);\n if (pattern) {\n return pattern;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return 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 computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern} from '../private';\nimport {Grid} from './grid';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow {\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 cells that make up this row. */\n private readonly _cells = contentChildren(GRID_CELL, {descendants: true});\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = computed(() =>\n this._cells().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(Grid);\n\n /** The parent grid UI pattern. */\n readonly _gridPattern = computed<GridPattern>(() => this._grid._pattern);\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n grid: this._gridPattern,\n });\n}\n"],"names":["GRID_CELL","InjectionToken","GRID_ROW","Grid","_elementRef","inject","ElementRef","element","nativeElement","_rows","contentChildren","descendants","_rowPatterns","computed","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","enableRangeSelection","GridPattern","rows","getCell","e","_getCell","constructor","ngZone","NgZone","runOutsideAngular","addEventListener","event","acceptsPointerMove","run","onPointermove","passive","afterRenderEffect","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","target","row","cell","inputs","cells","parentElement","closest","undefined","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","ngImport","decorators","args","selector","host","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","required","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","tabIndex","GridCellWidgetPattern","isActivated","activateEvent","lastActivateEvent","emit","deactivateEvent","lastDeactivateEvent","activate","deactivate","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","properties","GridCell","_renderer","Renderer2","_widgets","_widgetPatterns","w","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","orientation","wrap","GridCellPattern","grid","_gridPattern","widgets","getWidget","_getWidget","write","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","name","value","removeAttribute","setAttribute","find","providers","provide","useExisting","Output","GridRow","_cells","_cellPatterns","c","_grid","GridRowPattern","attributes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.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 {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridPattern, GridCellPattern} from '../private';\nimport {GRID_ROW} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_pattern.onFocusIn($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Grid {\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 rows that make up the grid. */\n private readonly _rows = contentChildren(GRID_ROW, {descendants: true});\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<any[]> = computed(() => this._rows().map(r => r._pattern));\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {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 /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** Whether multiple cells in the grid can be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n element: () => this.element,\n });\n\n constructor() {\n afterRenderEffect(() => this._pattern.setDefaultStateEffect());\n afterRenderEffect(() => this._pattern.resetStateEffect());\n afterRenderEffect(() => this._pattern.resetFocusEffect());\n afterRenderEffect(() => this._pattern.restoreFocusEffect());\n afterRenderEffect(() => this._pattern.focusEffect());\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return 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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\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 /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementRef | HTMLElement | undefined>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? (this.focusTarget() ? -1 : this._pattern.tabIndex()),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n focusTarget: computed(() => {\n const target = this.focusTarget();\n return target instanceof ElementRef ? target.nativeElement : target;\n }),\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect(() => {\n const activateEvent = this._pattern.lastActivateEvent();\n if (activateEvent) {\n this.activated.emit(activateEvent);\n }\n });\n\n afterRenderEffect(() => {\n const deactivateEvent = this._pattern.lastDeactivateEvent();\n if (deactivateEvent) {\n this.deactivated.emit(deactivateEvent);\n }\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern, GridCellWidgetPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widget contained within this cell, if any. */\n private readonly _widget = contentChild(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widget()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n const widget = this._widgetPattern();\n\n if (!widget) return undefined;\n\n while (target) {\n if (widget.element() === target) {\n return widget;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return 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 computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern} from '../private';\nimport {Grid} from './grid';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow {\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 cells that make up this row. */\n private readonly _cells = contentChildren(GRID_CELL, {descendants: true});\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = computed(() =>\n this._cells().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(Grid);\n\n /** The parent grid UI pattern. */\n readonly _gridPattern = computed<GridPattern>(() => this._grid._pattern);\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n grid: this._gridPattern,\n });\n}\n"],"names":["GRID_CELL","InjectionToken","GRID_ROW","Grid","_elementRef","inject","ElementRef","element","nativeElement","_rows","contentChildren","descendants","_rowPatterns","computed","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","GridPattern","rows","getCell","e","_getCell","constructor","afterRenderEffect","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","target","row","cell","inputs","cells","parentElement","closest","undefined","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","ngImport","decorators","args","selector","host","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","required","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","tabIndex","GridCellWidgetPattern","isActivated","activateEvent","lastActivateEvent","emit","deactivateEvent","lastDeactivateEvent","activate","deactivate","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","properties","GridCell","_renderer","Renderer2","_widget","contentChild","_widgetPattern","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","GridCellPattern","grid","_gridPattern","widget","getWidget","_getWidget","write","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","name","value","removeAttribute","setAttribute","providers","provide","useExisting","ContentChild","Output","GridRow","_cells","_cellPatterns","c","_grid","GridRowPattern","attributes"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
2
|
+
|
|
3
|
+
class ListboxOptionHarness extends ComponentHarness {
|
|
4
|
+
static hostSelector = '[ngOption]';
|
|
5
|
+
static with(options = {}) {
|
|
6
|
+
return new HarnessPredicate(ListboxOptionHarness, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text)).addOption('selected', options.selected, async (harness, selected) => (await harness.isSelected()) === selected).addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled);
|
|
7
|
+
}
|
|
8
|
+
async isSelected() {
|
|
9
|
+
const host = await this.host();
|
|
10
|
+
return (await host.getAttribute('aria-selected')) === 'true';
|
|
11
|
+
}
|
|
12
|
+
async isDisabled() {
|
|
13
|
+
const host = await this.host();
|
|
14
|
+
return (await host.getAttribute('aria-disabled')) === 'true' || (await host.getProperty('disabled')) === true;
|
|
15
|
+
}
|
|
16
|
+
async getText() {
|
|
17
|
+
const host = await this.host();
|
|
18
|
+
return host.text();
|
|
19
|
+
}
|
|
20
|
+
async click() {
|
|
21
|
+
const host = await this.host();
|
|
22
|
+
return host.click();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class ListboxHarness extends ComponentHarness {
|
|
26
|
+
static hostSelector = '[ngListbox]';
|
|
27
|
+
static with(options = {}) {
|
|
28
|
+
return new HarnessPredicate(ListboxHarness, options).addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled);
|
|
29
|
+
}
|
|
30
|
+
async getOrientation() {
|
|
31
|
+
const host = await this.host();
|
|
32
|
+
const orientation = await host.getAttribute('aria-orientation');
|
|
33
|
+
return orientation === 'horizontal' ? 'horizontal' : 'vertical';
|
|
34
|
+
}
|
|
35
|
+
async isMulti() {
|
|
36
|
+
const host = await this.host();
|
|
37
|
+
return (await host.getAttribute('aria-multiselectable')) === 'true';
|
|
38
|
+
}
|
|
39
|
+
async isDisabled() {
|
|
40
|
+
const host = await this.host();
|
|
41
|
+
return (await host.getAttribute('aria-disabled')) === 'true';
|
|
42
|
+
}
|
|
43
|
+
async getOptions(filters = {}) {
|
|
44
|
+
return this.locatorForAll(ListboxOptionHarness.with(filters))();
|
|
45
|
+
}
|
|
46
|
+
async focus() {
|
|
47
|
+
await (await this.host()).focus();
|
|
48
|
+
}
|
|
49
|
+
async blur() {
|
|
50
|
+
await (await this.host()).blur();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { ListboxHarness, ListboxOptionHarness };
|
|
55
|
+
//# sourceMappingURL=listbox-testing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listbox-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/testing/listbox-harness.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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {ListboxHarnessFilters, ListboxOptionHarnessFilters} from './listbox-harness-filters';\n\nexport class ListboxOptionHarness extends ComponentHarness {\n static hostSelector = '[ngOption]';\n\n static with(options: ListboxOptionHarnessFilters = {}): HarnessPredicate<ListboxOptionHarness> {\n return new HarnessPredicate(ListboxOptionHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-disabled')) === 'true' ||\n (await host.getProperty('disabled')) === true\n );\n }\n\n async getText(): Promise<string> {\n const host = await this.host();\n return host.text();\n }\n\n async click(): Promise<void> {\n const host = await this.host();\n return host.click();\n }\n}\n\nexport class ListboxHarness extends ComponentHarness {\n static hostSelector = '[ngListbox]';\n\n static with(options: ListboxHarnessFilters = {}): HarnessPredicate<ListboxHarness> {\n return new HarnessPredicate(ListboxHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n async getOrientation(): Promise<'vertical' | 'horizontal'> {\n const host = await this.host();\n const orientation = await host.getAttribute('aria-orientation');\n return orientation === 'horizontal' ? 'horizontal' : 'vertical';\n }\n\n async isMulti(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-multiselectable')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n async getOptions(filters: ListboxOptionHarnessFilters = {}): Promise<ListboxOptionHarness[]> {\n return this.locatorForAll(ListboxOptionHarness.with(filters))();\n }\n\n async focus(): Promise<void> {\n await (await this.host()).focus();\n }\n\n /** Blurs the listbox container. */\n async blur(): Promise<void> {\n await (await this.host()).blur();\n }\n}\n"],"names":["ListboxOptionHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","selected","isSelected","disabled","isDisabled","host","getAttribute","getProperty","click","ListboxHarness","getOrientation","orientation","isMulti","getOptions","filters","locatorForAll","focus","blur"],"mappings":"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"}
|