7
7
*/
8
8
9
9
import {
10
+ Attribute ,
10
11
ContentChildren ,
11
12
Directive ,
13
+ ElementRef ,
12
14
Input ,
13
15
QueryList
14
16
} from '@angular/core' ;
15
17
import {
16
18
CdkNestedTreeNode ,
19
+ CdkTree ,
17
20
CdkTreeNodeDef ,
18
21
CdkTreeNode ,
19
22
} from '@angular/cdk/tree' ;
20
23
import { MatTreeNodeOutlet } from './outlet' ;
24
+ import { mixinTabIndex , mixinDisabled , CanDisable , HasTabIndex } from '@angular/material/core' ;
25
+
26
+
27
+ export const _MatTreeNodeMixinBase = mixinTabIndex ( mixinDisabled ( CdkTreeNode ) ) ;
28
+ export const _MatNestedTreeNodeMixinBase = mixinTabIndex ( mixinDisabled ( CdkNestedTreeNode ) ) ;
21
29
22
30
/**
23
31
* Wrapper for the CdkTree node with Material design styles.
24
32
*/
25
- // TODO(tinayuangao): use mixinTabIndex
26
33
@Directive ( {
27
34
selector : 'mat-tree-node' ,
28
35
exportAs : 'matTreeNode' ,
36
+ inputs : [ 'disabled' , 'tabIndex' ] ,
29
37
host : {
30
38
'[attr.role]' : 'role' ,
31
- 'class' : 'mat-tree-node' ,
32
- 'tabindex' : '0' ,
39
+ 'class' : 'mat-tree-node'
33
40
} ,
34
41
providers : [ { provide : CdkTreeNode , useExisting : MatTreeNode } ]
35
42
} )
36
- export class MatTreeNode < T > extends CdkTreeNode < T > {
43
+ export class MatTreeNode < T > extends _MatTreeNodeMixinBase < T > implements HasTabIndex , CanDisable {
37
44
@Input ( ) role : 'treeitem' | 'group' = 'treeitem' ;
45
+
46
+ constructor ( protected _elementRef : ElementRef ,
47
+ protected _tree : CdkTree < T > ,
48
+ @Attribute ( 'tabindex' ) tabIndex : string ) {
49
+ super ( _elementRef , _tree ) ;
50
+
51
+ this . tabIndex = parseInt ( tabIndex ) || 0 ;
52
+ }
38
53
}
39
54
40
55
/**
@@ -61,13 +76,24 @@ export class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {
61
76
'[attr.role]' : 'role' ,
62
77
'class' : 'mat-nested-tree-node' ,
63
78
} ,
79
+ inputs : [ 'disabled' , 'tabIndex' ] ,
64
80
providers : [
65
81
{ provide : CdkNestedTreeNode , useExisting : MatNestedTreeNode } ,
66
82
{ provide : CdkTreeNode , useExisting : MatNestedTreeNode }
67
83
]
68
84
} )
69
- export class MatNestedTreeNode < T > extends CdkNestedTreeNode < T > {
85
+ export class MatNestedTreeNode < T > extends _MatNestedTreeNodeMixinBase < T >
86
+ implements HasTabIndex , CanDisable {
87
+
70
88
@Input ( 'matNestedTreeNode' ) node : T ;
71
89
72
90
@ContentChildren ( MatTreeNodeOutlet ) nodeOutlet : QueryList < MatTreeNodeOutlet > ;
91
+
92
+ constructor ( protected _elementRef : ElementRef ,
93
+ protected _tree : CdkTree < T > ,
94
+ @Attribute ( 'tabindex' ) tabIndex : string ) {
95
+ super ( _elementRef , _tree ) ;
96
+
97
+ this . tabIndex = parseInt ( tabIndex ) || 0 ;
98
+ }
73
99
}
0 commit comments