Skip to content

Commit b9aa112

Browse files
authored
[ENG-9073] Search: ARIA attributes must conform to valid values (#830)
- Ticket: [ENG-9073] - Feature flag: n/a ## Summary of Changes 1. Changed tabs to buttons to fix the accessibility issue.
1 parent d5469d5 commit b9aa112

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed

src/app/core/components/nav-menu/nav-menu.component.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,7 @@ export class NavMenuComponent {
7878

7979
const items = updateMenuItems(filtered, routeContext);
8080

81-
items.forEach((item) => {
82-
item.label = item.label ? this.translateService.instant(item.label) : item.label;
83-
});
81+
this.translateMenuItems(items);
8482

8583
return items;
8684
});
@@ -138,4 +136,16 @@ export class NavMenuComponent {
138136

139137
readonly hasVisibleChildren = (item: CustomMenuItem): boolean =>
140138
Array.isArray(item.items) && item.items.some((child) => !!child.visible);
139+
140+
private translateMenuItems(items: CustomMenuItem[]): void {
141+
items.forEach((item) => {
142+
if (item.label) {
143+
item.label = this.translateService.instant(item.label);
144+
}
145+
146+
if (item.items && item.items.length > 0) {
147+
this.translateMenuItems(item.items);
148+
}
149+
});
150+
}
141151
}

src/app/shared/components/search-results-container/search-results-container.component.html

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
<div class="flex flex-column flex-1 w-full" [class.pt-6]="showTabs()">
22
@if (showTabs()) {
3-
<p-tabs [value]="selectedTab()" (valueChange)="selectTab(+$event)" class="flex-1 px-3 hidden md:px-5 md:inline">
4-
<p-tablist>
5-
@for (item of tabOptions(); track $index) {
6-
<p-tab [value]="item.value">{{ item.label | translate }}</p-tab>
7-
}
8-
</p-tablist>
9-
</p-tabs>
3+
<nav class="align-items-center flex-1 px-3 hidden md:px-5 md:flex">
4+
@for (item of tabOptions(); track $index) {
5+
<p-button
6+
class="tab-btn border-round-top-xl"
7+
[class.active]="selectedTab() === item.value"
8+
link
9+
styleClass="font-semibold"
10+
[attr.aria-selected]="selectedTab() === item.value"
11+
(onClick)="selectTab(item.value)"
12+
>
13+
{{ item.label | translate }}
14+
</p-button>
15+
}
16+
</nav>
1017
}
1118
<div class="flex flex-column gap-3 py-4 px-3 md:px-5 xl:px-4 bg-white">
1219
<div class="flex justify-content-between align-items-start column-gap-3">

src/app/shared/components/search-results-container/search-results-container.component.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
color: var(--pr-blue-1);
33
}
44

5+
.tab-btn {
6+
--p-button-link-color: var(--dark-blue-1);
7+
--p-button-padding-x: 1.5rem;
8+
--p-button-padding-y: 0.5rem;
9+
10+
&.active {
11+
background-color: var(--white);
12+
}
13+
}
14+
515
.sort-card {
616
display: flex;
717
align-items: center;

src/app/shared/components/search-results-container/search-results-container.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { TranslatePipe } from '@ngx-translate/core';
22

33
import { Button } from 'primeng/button';
44
import { Select } from 'primeng/select';
5-
import { Tab, TabList, Tabs } from 'primeng/tabs';
65

76
import { NgTemplateOutlet } from '@angular/common';
87
import {
@@ -38,9 +37,6 @@ import { SelectComponent } from '../select/select.component';
3837
TranslatePipe,
3938
SelectComponent,
4039
NgTemplateOutlet,
41-
Tab,
42-
TabList,
43-
Tabs,
4440
LoadingSpinnerComponent,
4541
],
4642
templateUrl: './search-results-container.component.html',
@@ -85,6 +81,10 @@ export class SearchResultsContainerComponent {
8581
}
8682

8783
selectTab(value?: ResourceType): void {
84+
if (value === this.selectedTab()) {
85+
return;
86+
}
87+
8888
this.tabChanged.emit(value !== undefined ? value : this.selectedTab());
8989
}
9090

0 commit comments

Comments
 (0)