Skip to content

Commit 433e357

Browse files
committed
refactor(cdk/tree): fold more data computation into signals
1 parent ca8315b commit 433e357

File tree

6 files changed

+168
-121
lines changed

6 files changed

+168
-121
lines changed

src/cdk/tree/BUILD.bazel

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ load(
22
"//tools:defaults.bzl",
33
"markdown_to_html",
44
"ng_module",
5-
"ng_test_library",
65
"ng_web_test_suite",
76
)
87

@@ -28,8 +27,9 @@ ng_module(
2827

2928
ng_module(
3029
name = "unit_test_sources",
30+
testonly = True,
3131
srcs = glob(
32-
["**/tree-using-legacy-key-manager.spec.ts"],
32+
["**/*.spec.ts"],
3333
exclude = ["**/*.e2e.spec.ts"],
3434
),
3535
deps = [
@@ -39,11 +39,10 @@ ng_module(
3939
"//src/cdk/collections",
4040
"//src/cdk/keycodes",
4141
"//src/cdk/testing/testbed",
42-
"@npm//rxjs",
4342
"@npm//@angular/core",
4443
"@npm//@types/jasmine",
44+
"@npm//rxjs",
4545
],
46-
testonly = True,
4746
)
4847

4948
ng_web_test_suite(

src/cdk/tree/tree-using-legacy-key-manager.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, viewChildren, viewChild, ElementRef, QueryList, ViewChild, ViewChildren} from '@angular/core';
1+
import {Component, viewChildren, ElementRef} from '@angular/core';
22
import {ComponentFixture, TestBed} from '@angular/core/testing';
33
import {of} from 'rxjs';
44
import {CdkTreeModule} from './tree-module';
@@ -13,8 +13,8 @@ describe('CdkTree when provided LegacyTreeKeyManager', () => {
1313
providers: [NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER],
1414
});
1515

16-
await TestBed.compileComponents();
1716
fixture = TestBed.createComponent(SimpleCdkTreeApp);
17+
fixture.detectChanges();
1818
});
1919

2020
describe('with default node options', () => {

src/cdk/tree/tree-with-tree-control.spec.ts

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import {
1313
TrackByFunction,
1414
Type,
1515
EventEmitter,
16-
ViewChildren,
17-
QueryList,
16+
viewChildren,
17+
viewChild,
1818
} from '@angular/core';
1919

2020
import {CollectionViewer, DataSource} from '@angular/cdk/collections';
@@ -28,6 +28,7 @@ import {FlatTreeControl} from './control/flat-tree-control';
2828
import {NestedTreeControl} from './control/nested-tree-control';
2929
import {CdkTreeModule, CdkTreeNodePadding} from './index';
3030
import {CdkTree, CdkTreeNode} from './tree';
31+
import {NgIf, NgSwitch} from '@angular/common';
3132

3233
describe('CdkTree with TreeControl', () => {
3334
/** Represents an indent for expectNestedTreeToMatch */
@@ -37,9 +38,9 @@ describe('CdkTree with TreeControl', () => {
3738
let tree: CdkTree<TestData>;
3839
let dir: {value: Direction; readonly change: EventEmitter<Direction>};
3940

40-
function configureCdkTreeTestingModule(declarations: Type<any>[]) {
41+
function configureCdkTreeTestingModule(imports: Type<any>[]) {
4142
TestBed.configureTestingModule({
42-
imports: [CdkTreeModule],
43+
imports,
4344
providers: [
4445
{
4546
provide: Directionality,
@@ -58,7 +59,6 @@ describe('CdkTree with TreeControl', () => {
5859
},
5960
},
6061
],
61-
declarations: declarations,
6262
});
6363
}
6464

@@ -81,7 +81,7 @@ describe('CdkTree with TreeControl', () => {
8181
const fixture = TestBed.createComponent(SimpleCdkTreeApp);
8282
fixture.detectChanges();
8383
const spy = jasmine.createSpy('completeSpy');
84-
const subscription = fixture.componentInstance.tree.viewChange.subscribe({complete: spy});
84+
const subscription = fixture.componentInstance.tree().viewChange.subscribe({complete: spy});
8585

8686
fixture.destroy();
8787
expect(spy).toHaveBeenCalled();
@@ -97,12 +97,11 @@ describe('CdkTree with TreeControl', () => {
9797
configureCdkTreeTestingModule([SimpleCdkTreeApp]);
9898
fixture = TestBed.createComponent(SimpleCdkTreeApp);
9999

100-
fixture.detectChanges();
101100
fixture.detectChanges();
102101

103102
component = fixture.componentInstance;
104103
dataSource = component.dataSource as FakeDataSource;
105-
tree = component.tree;
104+
tree = component.tree();
106105
treeElement = fixture.nativeElement.querySelector('cdk-tree');
107106
});
108107

@@ -217,7 +216,7 @@ describe('CdkTree with TreeControl', () => {
217216
});
218217

219218
it('should be able to set zero as the indent level', () => {
220-
component.paddingNodes.forEach(node => (node.level = 0));
219+
component.paddingNodes().forEach(node => (node.level = 0));
221220

222221
const data = dataSource.data;
223222

@@ -1463,6 +1462,8 @@ function expectNestedTreeToMatch(treeElement: Element, ...expectedTree: any[]) {
14631462
</cdk-tree-node>
14641463
</cdk-tree>
14651464
`,
1465+
standalone: true,
1466+
imports: [CdkTreeModule],
14661467
})
14671468
class SimpleCdkTreeApp {
14681469
getLevel = (node: TestData) => node.level;
@@ -1472,8 +1473,8 @@ class SimpleCdkTreeApp {
14721473
dataSource: FakeDataSource | null = new FakeDataSource(this.treeControl);
14731474
indent: number | string = 28;
14741475

1475-
@ViewChild(CdkTree) tree: CdkTree<TestData>;
1476-
@ViewChildren(CdkTreeNodePadding) paddingNodes: QueryList<CdkTreeNodePadding<TestData>>;
1476+
readonly tree = viewChild.required<CdkTree<TestData>>(CdkTree);
1477+
readonly paddingNodes = viewChildren(CdkTreeNodePadding);
14771478
}
14781479

14791480
@Component({
@@ -1488,6 +1489,8 @@ class SimpleCdkTreeApp {
14881489
</ng-container>
14891490
</cdk-tree>
14901491
`,
1492+
standalone: true,
1493+
imports: [CdkTreeModule, NgSwitch],
14911494
})
14921495
class SimpleCdkTreeAppWithIndirectNodes extends SimpleCdkTreeApp {}
14931496

@@ -1500,6 +1503,8 @@ class SimpleCdkTreeAppWithIndirectNodes extends SimpleCdkTreeApp {}
15001503
</cdk-nested-tree-node>
15011504
</cdk-tree>
15021505
`,
1506+
standalone: true,
1507+
imports: [CdkTreeModule],
15031508
})
15041509
class NestedCdkTreeApp {
15051510
getChildren = (node: TestData) => node.observableChildren;
@@ -1523,6 +1528,8 @@ class NestedCdkTreeApp {
15231528
</cdk-nested-tree-node>
15241529
</cdk-tree>
15251530
`,
1531+
standalone: true,
1532+
imports: [CdkTreeModule],
15261533
})
15271534
class StaticNestedCdkTreeApp {
15281535
getChildren = (node: TestData) => node.children;
@@ -1559,6 +1566,8 @@ class StaticNestedCdkTreeApp {
15591566
</cdk-nested-tree-node>
15601567
</cdk-tree>
15611568
`,
1569+
standalone: true,
1570+
imports: [CdkTreeModule],
15621571
})
15631572
class WhenNodeNestedCdkTreeApp {
15641573
isSecondNode = (_: number, node: TestData) => node.pizzaBase.indexOf('2') > 0;
@@ -1582,6 +1591,8 @@ class WhenNodeNestedCdkTreeApp {
15821591
</cdk-tree-node>
15831592
</cdk-tree>
15841593
`,
1594+
standalone: true,
1595+
imports: [CdkTreeModule],
15851596
})
15861597
class CdkTreeAppWithToggle {
15871598
toggleRecursively: boolean = true;
@@ -1608,6 +1619,8 @@ class CdkTreeAppWithToggle {
16081619
</cdk-nested-tree-node>
16091620
</cdk-tree>
16101621
`,
1622+
standalone: true,
1623+
imports: [CdkTreeModule, NgIf],
16111624
})
16121625
class NestedCdkTreeAppWithToggle {
16131626
toggleRecursively: boolean = true;
@@ -1637,6 +1650,8 @@ class NestedCdkTreeAppWithToggle {
16371650
</cdk-tree-node>
16381651
</cdk-tree>
16391652
`,
1653+
standalone: true,
1654+
imports: [CdkTreeModule],
16401655
})
16411656
class WhenNodeCdkTreeApp {
16421657
isOddNode = (_: number, node: TestData) => node.level % 2 === 1;
@@ -1660,6 +1675,8 @@ class WhenNodeCdkTreeApp {
16601675
</cdk-tree-node>
16611676
</cdk-tree>
16621677
`,
1678+
standalone: true,
1679+
imports: [CdkTreeModule],
16631680
})
16641681
class ArrayDataSourceCdkTreeApp {
16651682
getLevel = (node: TestData) => node.level;
@@ -1686,6 +1703,8 @@ class ArrayDataSourceCdkTreeApp {
16861703
</cdk-tree-node>
16871704
</cdk-tree>
16881705
`,
1706+
standalone: true,
1707+
imports: [CdkTreeModule],
16891708
})
16901709
class ObservableDataSourceCdkTreeApp {
16911710
getLevel = (node: TestData) => node.level;
@@ -1711,6 +1730,8 @@ class ObservableDataSourceCdkTreeApp {
17111730
</cdk-nested-tree-node>
17121731
</cdk-tree>
17131732
`,
1733+
standalone: true,
1734+
imports: [CdkTreeModule],
17141735
})
17151736
class ArrayDataSourceNestedCdkTreeApp {
17161737
getChildren = (node: TestData) => node.observableChildren;
@@ -1735,6 +1756,8 @@ class ArrayDataSourceNestedCdkTreeApp {
17351756
</cdk-nested-tree-node>
17361757
</cdk-tree>
17371758
`,
1759+
standalone: true,
1760+
imports: [CdkTreeModule],
17381761
})
17391762
class ObservableDataSourceNestedCdkTreeApp {
17401763
getChildren = (node: TestData) => node.observableChildren;
@@ -1760,6 +1783,8 @@ class ObservableDataSourceNestedCdkTreeApp {
17601783
</cdk-nested-tree-node>
17611784
</cdk-tree>
17621785
`,
1786+
standalone: true,
1787+
imports: [CdkTreeModule],
17631788
})
17641789
class DepthNestedCdkTreeApp {
17651790
getChildren = (node: TestData) => node.observableChildren;
@@ -1783,6 +1808,8 @@ class DepthNestedCdkTreeApp {
17831808
</cdk-tree-node>
17841809
</cdk-tree>
17851810
`,
1811+
standalone: true,
1812+
imports: [CdkTreeModule],
17861813
})
17871814
class CdkTreeAppWithTrackBy {
17881815
trackByStrategy: 'reference' | 'property' | 'index' = 'reference';
@@ -1816,6 +1843,8 @@ class CdkTreeAppWithTrackBy {
18161843
</cdk-nested-tree-node>
18171844
</cdk-tree>
18181845
`,
1846+
standalone: true,
1847+
imports: [CdkTreeModule],
18191848
})
18201849
class NestedCdkTreeAppWithTrackBy {
18211850
trackByStrategy: 'reference' | 'property' | 'index' = 'reference';

0 commit comments

Comments
 (0)