@@ -56,6 +56,7 @@ import {takeUntil} from 'rxjs/operators';
56
56
templateUrl : 'tab-nav-bar.html' ,
57
57
styleUrls : [ 'tab-nav-bar.css' ] ,
58
58
host : {
59
+ '[attr.role]' : '_getRole()' ,
59
60
'class' : 'mat-mdc-tab-nav-bar mat-mdc-tab-header' ,
60
61
'[class.mat-mdc-tab-header-pagination-controls-enabled]' : '_showPaginationControls' ,
61
62
'[class.mat-mdc-tab-header-rtl]' : "_getLayoutDirection() == 'rtl'" ,
@@ -130,12 +131,17 @@ export class MatTabNav extends _MatTabNavBase implements AfterContentInit {
130
131
styleUrls : [ 'tab-link.css' ] ,
131
132
host : {
132
133
'class' : 'mdc-tab mat-mdc-tab-link mat-mdc-focus-indicator' ,
133
- '[attr.aria-current]' : 'active ? "page" : null' ,
134
+ '[attr.aria-controls]' : '_getAriaControls()' ,
135
+ '[attr.aria-current]' : '_getAriaCurrent()' ,
134
136
'[attr.aria-disabled]' : 'disabled' ,
135
- '[attr.tabIndex]' : 'tabIndex' ,
137
+ '[attr.aria-selected]' : '_getAriaSelected()' ,
138
+ '[attr.id]' : 'id' ,
139
+ '[attr.tabIndex]' : '_getTabIndex()' ,
140
+ '[attr.role]' : '_getRole()' ,
136
141
'[class.mat-mdc-tab-disabled]' : 'disabled' ,
137
142
'[class.mdc-tab--active]' : 'active' ,
138
143
'(focus)' : '_handleFocus()' ,
144
+ '(keydown)' : '_handleKeydown($event)' ,
139
145
} ,
140
146
} )
141
147
export class MatTabLink extends _MatTabLinkBase implements MatInkBarItem , OnInit , OnDestroy {
@@ -170,3 +176,29 @@ export class MatTabLink extends _MatTabLinkBase implements MatInkBarItem, OnInit
170
176
this . _foundation . destroy ( ) ;
171
177
}
172
178
}
179
+
180
+ // Increasing integer for generating unique ids for tab nav components.
181
+ let nextUniqueId = 0 ;
182
+
183
+ /**
184
+ * Tab panel component associated with MatTabNav.
185
+ */
186
+ @Component ( {
187
+ selector : 'mat-tab-nav-panel' ,
188
+ exportAs : 'matTabNavPanel' ,
189
+ template : '<ng-content></ng-content>' ,
190
+ host : {
191
+ '[attr.aria-labelledby]' : '_activeTabId' ,
192
+ '[attr.id]' : 'id' ,
193
+ 'role' : 'tabpanel' ,
194
+ } ,
195
+ encapsulation : ViewEncapsulation . None ,
196
+ changeDetection : ChangeDetectionStrategy . OnPush ,
197
+ } )
198
+ export class MatTabNavPanel {
199
+ /** Unique id for the tab panel. */
200
+ @Input ( ) id = `mat-tab-nav-panel-${ nextUniqueId ++ } ` ;
201
+
202
+ /** Id of the active tab in the nav bar. */
203
+ _activeTabId ?: string ;
204
+ }
0 commit comments