Skip to content

Commit 52af176

Browse files
committed
fix(tabs): keyboard accessibility
1 parent dad486a commit 52af176

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/tabs/tab-headers.component.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ export class TabHeaders implements AfterViewInit, AfterContentInit {
135135
*/
136136
@HostListener("keydown", ["$event"])
137137
keyboardInput(event) {
138-
if (event.key === "ArrowRight" || event.key === "ArrowDown") {
138+
if (event.key === "Right" || event.key === "ArrowRight") {
139139
if (this.currentSelectedTab < this.allTabHeaders.length - 1) {
140140
event.preventDefault();
141141
this.allTabHeaders[this.currentSelectedTab + 1].focus();
@@ -145,7 +145,7 @@ export class TabHeaders implements AfterViewInit, AfterContentInit {
145145
}
146146
}
147147

148-
if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
148+
if (event.key === "Left" || event.key === "ArrowLeft") {
149149
if (this.currentSelectedTab > 0) {
150150
event.preventDefault();
151151
this.allTabHeaders[this.currentSelectedTab - 1].focus();
@@ -154,6 +154,21 @@ export class TabHeaders implements AfterViewInit, AfterContentInit {
154154
this.allTabHeaders[this.allTabHeaders.length - 1].focus();
155155
}
156156
}
157+
158+
if (event.key === "Home") {
159+
event.preventDefault();
160+
this.allTabHeaders[0].focus();
161+
}
162+
163+
if (event.key === "End") {
164+
event.preventDefault();
165+
this.allTabHeaders[this.allTabHeaders.length - 1].focus();
166+
}
167+
168+
if (event.key === " ") {
169+
let selectedTab = Array.from<any>(this.tabInput);
170+
this.selectTab(event.target, selectedTab[this.currentSelectedTab], this.currentSelectedTab);
171+
}
157172
}
158173

159174
ngAfterContentInit() {

src/tabs/tab.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ let nextId = 0;
6666
selector: "ibm-tab",
6767
template: `
6868
<div
69+
tabIndex="0"
6970
role="tabpanel"
7071
*ngIf="shouldRender()"
7172
[ngStyle]="{'display': active ? null : 'none'}"

0 commit comments

Comments
 (0)