Skip to content

Commit 58af112

Browse files
committed
chore(aria): Add pager buttons tooltips and #7037
1 parent e9749ed commit 58af112

File tree

7 files changed

+71
-12
lines changed

7 files changed

+71
-12
lines changed
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
export interface IPaginatorResourceStrings {
22
igx_paginator_label?: string;
33
igx_paginator_pager_text?: string;
4+
igx_paginator_first_page_button_text?: string;
5+
igx_paginator_previous_page_button_text?: string;
6+
igx_paginator_last_page_button_text?: string;
7+
igx_paginator_next_page_button_text?: string;
48
}
59

610
export const PaginatorResourceStringsEN: IPaginatorResourceStrings = {
711
igx_paginator_label: 'Items per page',
8-
igx_paginator_pager_text: 'of'
12+
igx_paginator_pager_text: 'of',
13+
igx_paginator_first_page_button_text: 'Go to first page',
14+
igx_paginator_previous_page_button_text: 'Previous page',
15+
igx_paginator_last_page_button_text: 'Go to last page',
16+
igx_paginator_next_page_button_text: 'Next page',
917
};

projects/igniteui-angular/src/lib/grids/grid/grid.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
<div class="igx-grid__tfoot" role="rowgroup" [style.height.px]='summariesHeight' tabindex="0" [attr.aria-activedescendant]="activeDescendant"
210210
(focus)="navigation.focusFirstCell(false)" (keydown)="navigation.summaryNav($event)" #tfoot>
211211
<igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'
212-
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id"
212+
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id" role="row"
213213
[summaries]="id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe" [index]="dataView.length"
214214
class="igx-grid__summaries" #summaryRow>
215215
</igx-grid-summary-row>

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@
167167
<div class="igx-grid__tfoot" tabindex="0" (focus)="navigation.focusFirstCell(false)" [attr.aria-activedescendant]="activeDescendant"
168168
(keydown)="navigation.summaryNav($event)" role="rowgroup" [style.height.px]='summariesHeight' #tfoot>
169169
<igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'
170-
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id"
170+
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id" role="row"
171171
[summaries]="id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe" [index]="dataView.length"
172172
class="igx-grid__summaries" #summaryRow>
173173
</igx-grid-summary-row>

projects/igniteui-angular/src/lib/grids/summaries/summary-row.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<ng-template igxGridFor let-col [igxGridForOf]="unpinnedColumns | igxNotGrouped" [igxForScrollContainer]="grid.parentVirtDir" let-colIndex="index" [igxForScrollOrientation]="'horizontal'" [igxForContainerSize]="grid.unpinnedWidth" [igxForTrackBy]="grid.trackColumnChanges" [igxForSizePropName]='"calcPixelWidth"' #igxDirRef>
1313
<igx-grid-summary-cell
1414
class="igx-grid-summary igx-grid-summary--fw"
15+
role="cell"
1516
[class.igx-grid-summary--cosy]="grid.displayDensity === 'cosy'"
1617
[class.igx-grid-summary--compact]="grid.displayDensity === 'compact'"
1718
[class.igx-grid-summary--empty]="!col.hasSummary"
@@ -37,6 +38,7 @@
3738

3839
<ng-template #summaryCellTemplate let-col>
3940
<igx-grid-summary-cell *ngFor="let col of pinnedColumns | igxNotGrouped"
41+
role="cell"
4042
class="igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned"
4143
[class.igx-grid-summary--cosy]="grid.displayDensity === 'cosy'"
4244
[class.igx-grid-summary--compact]="grid.displayDensity === 'compact'"

projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116

117117
<div class="igx-grid__tfoot" role="rowgroup" [style.height.px]='summariesHeight' tabindex="0" [attr.aria-activedescendant]="activeDescendant" (focus)="navigation.focusFirstCell(false)" (keydown)="navigation.summaryNav($event)" #tfoot>
118118
<igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'
119-
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id"
119+
*ngIf="hasSummarizedColumns && rootSummariesEnabled" [gridID]="id" role="row"
120120
[summaries]="id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe" [index]="dataView.length"
121121
class="igx-grid__summaries" #summaryRow>
122122
</igx-grid-summary-row>

projects/igniteui-angular/src/lib/paginator/paginator.component.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,29 @@
33
<div class="igx-paginator__select-input">
44
<igx-select [(ngModel)]="perPage" [displayDensity]="paginatorSelectDisplayDensity()" type="border"
55
[disabled]="!dropdownEnabled">
6+
<label igxLabel [hidden]="true">{{ selectLabel }}</label>
67
<igx-select-item [value]="val" *ngFor="let val of selectOptions">
78
{{val}}
89
</igx-select-item>
910
</igx-select>
1011
</div>
1112
</div>
12-
<div class="igx-paginator__pager" [hidden]="pagerHidden">
13-
<button [disabled]="isFirstPage || !pagerEnabled ? true: false" (click)="paginate(0)" igxButton="icon" igxRipple igxRippleCentered="true">
13+
<div class="igx-paginator__pager" [hidden]="pagerHidden" role="navigation">
14+
<button [title]="firstPageLabel" [disabled]="isFirstPageDisabled" [attr.aria-disabled]="isFirstPageDisabled" (click)="paginate(0)" igxButton="icon" igxRipple igxRippleCentered="true">
1415
<igx-icon fontSet="material">first_page</igx-icon>
1516
</button>
16-
<button [disabled]="isFirstPage || !pagerEnabled ? true: false" (click)="previousPage()" igxButton="icon" igxRipple igxRippleCentered="true">
17+
<button [title]="previousPageLabel" [disabled]="isFirstPageDisabled" [attr.aria-disabled]="isFirstPageDisabled" (click)="previousPage()" igxButton="icon" igxRipple igxRippleCentered="true">
1718
<igx-icon fontSet="material">chevron_left</igx-icon>
1819
</button>
19-
<div class='igx-paginator__pager-text'>
20+
<div class='igx-paginator__pager-text' aria-current="page">
2021
<span>{{ page + 1 }}</span>
2122
<span>&nbsp;{{prepositionPage}}&nbsp;</span>
2223
<span>{{ totalPages }}</span>
2324
</div>
24-
<button [disabled]="isLastPage || !pagerEnabled ? true: false" (click)="nextPage()" igxRipple igxRippleCentered="true" igxButton="icon">
25+
<button [title]="nextPageLabel" [disabled]="isLastPageDisabled" [attr.aria-disabled]="isLastPageDisabled" (click)="nextPage()" igxRipple igxRippleCentered="true" igxButton="icon">
2526
<igx-icon fontSet="material">chevron_right</igx-icon>
2627
</button>
27-
<button [disabled]="isLastPage || !pagerEnabled ? true: false" (click)="paginate(totalPages - 1)" igxButton="icon" igxRipple
28+
<button [title]="lastPageLabel" [disabled]="isLastPageDisabled" [attr.aria-disabled]="isLastPageDisabled" (click)="paginate(totalPages - 1)" igxButton="icon" igxRipple
2829
igxRippleCentered="true">
2930
<igx-icon fontSet="material">last_page</igx-icon>
3031
</button>

projects/igniteui-angular/src/lib/paginator/paginator.component.ts

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { IgxSelectModule } from '../select/index';
77
import { IgxIconModule } from '../icon/index';
88
import { IgxButtonModule } from '../directives/button/button.directive';
99
import { IgxRippleModule } from '../directives/ripple/ripple.directive';
10+
import { IgxInputGroupModule } from '../input-group';
1011

1112
@Component({
1213
selector: 'igx-paginator',
@@ -177,6 +178,38 @@ export class IgxPaginatorComponent extends DisplayDensityBase {
177178
@Input()
178179
public prepositionPage = CurrentResourceStrings.PaginatorResStrings.igx_paginator_pager_text;
179180

181+
/**
182+
* An @Input property, sets a tooltip text for first page button label
183+
* The default is 'Go to first page' localized string.
184+
* @memberof IgxPaginatorComponent
185+
*/
186+
@Input()
187+
public firstPageLabel = CurrentResourceStrings.PaginatorResStrings.igx_paginator_first_page_button_text;
188+
189+
/**
190+
* An @Input property, sets a tooltip text for the previous page button label
191+
* The default is 'Previous page' localized string.
192+
* @memberof IgxPaginatorComponent
193+
*/
194+
@Input()
195+
public previousPageLabel = CurrentResourceStrings.PaginatorResStrings.igx_paginator_previous_page_button_text;
196+
197+
/**
198+
* An @Input property, sets a tooltip text for last page button label
199+
* The default is 'Go to last page' localized string.
200+
* @memberof IgxPaginatorComponent
201+
*/
202+
@Input()
203+
public lastPageLabel = CurrentResourceStrings.PaginatorResStrings.igx_paginator_last_page_button_text;
204+
205+
/**
206+
* An @Input property, sets a tooltip text for the next page button label
207+
* The default is 'Next page' localized string.
208+
* @memberof IgxPaginatorComponent
209+
*/
210+
@Input()
211+
public nextPageLabel = CurrentResourceStrings.PaginatorResStrings.igx_paginator_next_page_button_text;
212+
180213
/**
181214
* An event that is emitted when the select in the `IgxPaginatorComponent` changes its value.
182215
*/
@@ -214,6 +247,21 @@ export class IgxPaginatorComponent extends DisplayDensityBase {
214247
return this.page === 0;
215248
}
216249

250+
251+
/**
252+
* Returns if the first pager buttons should be disabled
253+
*/
254+
get isFirstPageDisabled(): boolean {
255+
return this.isFirstPage || !this.pagerEnabled;
256+
}
257+
258+
/**
259+
* Returns if the last pager buttons should be disabled
260+
*/
261+
get isLastPageDisabled(): boolean {
262+
return this.isLastPage || !this.pagerEnabled;
263+
}
264+
217265
private sortUniqueOptions(values: Array<number>, newOption: number): number[] {
218266
return Array.from(new Set([...values, newOption])).sort((a, b) => a - b);
219267
}
@@ -255,7 +303,7 @@ export class IgxPaginatorComponent extends DisplayDensityBase {
255303
/**
256304
* Goes to the desired page index.
257305
* ```typescript
258-
* this.pagiantor.paginate(1);
306+
* this.paginator.paginate(1);
259307
* ```
260308
* @param val
261309
* @memberof IgxPaginatorComponent
@@ -271,6 +319,6 @@ export class IgxPaginatorComponent extends DisplayDensityBase {
271319
@NgModule({
272320
declarations: [IgxPaginatorComponent],
273321
exports: [IgxPaginatorComponent],
274-
imports: [CommonModule, IgxSelectModule, FormsModule, IgxIconModule, IgxButtonModule, IgxRippleModule]
322+
imports: [CommonModule, IgxSelectModule, FormsModule, IgxIconModule, IgxButtonModule, IgxRippleModule, IgxInputGroupModule]
275323
})
276324
export class IgxPaginatorModule { }

0 commit comments

Comments
 (0)