Skip to content

Commit 7f8fd9f

Browse files
crisbetojosephperrott
authored andcommitted
fix(tabs): enable keyboard wrapping and mark disabled tabs (#12218)
1 parent b589828 commit 7f8fd9f

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

e2e/components/tabs-e2e.spec.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,11 @@ describe('tabs', () => {
4848
pressKeys(right);
4949
expect(await getFocusStates(tabLabels)).toEqual([false, false, true]);
5050

51-
pressKeys(right);
52-
expect(await getFocusStates(tabLabels)).toEqual([false, false, true]);
53-
5451
pressKeys(left);
5552
expect(await getFocusStates(tabLabels)).toEqual([false, true, false]);
5653

5754
pressKeys(left);
5855
expect(await getFocusStates(tabLabels)).toEqual([true, false, false]);
59-
60-
pressKeys(left);
61-
expect(await getFocusStates(tabLabels)).toEqual([true, false, false]);
6256
});
6357
});
6458
});

src/lib/tabs/tab-group.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ describe('MatTabGroup', () => {
284284
fixture.detectChanges();
285285
const labels = fixture.debugElement.queryAll(By.css('.mat-tab-disabled'));
286286
expect(labels.length).toBe(1);
287+
expect(labels[0].nativeElement.getAttribute('aria-disabled')).toBe('true');
287288
});
288289

289290
it('should set the disabled flag on tab', () => {
@@ -293,13 +294,16 @@ describe('MatTabGroup', () => {
293294
let labels = fixture.debugElement.queryAll(By.css('.mat-tab-disabled'));
294295
expect(tabs[2].disabled).toBe(false);
295296
expect(labels.length).toBe(1);
297+
expect(labels[0].nativeElement.getAttribute('aria-disabled')).toBe('true');
296298

297299
fixture.componentInstance.isDisabled = true;
298300
fixture.detectChanges();
299301

300302
expect(tabs[2].disabled).toBe(true);
301303
labels = fixture.debugElement.queryAll(By.css('.mat-tab-disabled'));
302304
expect(labels.length).toBe(2);
305+
expect(labels.every(label => label.nativeElement.getAttribute('aria-disabled') === 'true'))
306+
.toBe(true);
303307
});
304308
});
305309

src/lib/tabs/tab-header.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,8 @@ export class MatTabHeader extends _MatTabHeaderMixinBase
198198
};
199199

200200
this._keyManager = new FocusKeyManager(this._labelWrappers)
201-
.withHorizontalOrientation(this._getLayoutDirection());
201+
.withHorizontalOrientation(this._getLayoutDirection())
202+
.withWrap();
202203

203204
this._keyManager.updateActiveItemIndex(0);
204205

src/lib/tabs/tab-label-wrapper.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ export const _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase
2222
selector: '[matTabLabelWrapper]',
2323
inputs: ['disabled'],
2424
host: {
25-
'[class.mat-tab-disabled]': 'disabled'
25+
'[class.mat-tab-disabled]': 'disabled',
26+
'[attr.aria-disabled]': '!!disabled',
2627
}
2728
})
2829
export class MatTabLabelWrapper extends _MatTabLabelWrapperMixinBase implements CanDisable {

0 commit comments

Comments
 (0)