Skip to content

Commit 42c3c39

Browse files
authored
Merge pull request #12051 from IgniteUI/mkirova/improve-validator-aria
chore(*): Add aria-describedby reference to error message element as …
2 parents 320dc6c + 2ff3d3b commit 42c3c39

File tree

9 files changed

+42
-31
lines changed

9 files changed

+42
-31
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@
7474
<igx-input-group displayDensity="compact" >
7575
<input
7676
igxInput
77-
[attr.aria-errormessage]="ariaErrorMessage"
77+
[attr.aria-describedby]="ariaDescribeBy"
78+
[attr.aria-invalid]="isInvalid"
7879
[igxFocus]="true"
7980
[formControl]="formControl"
8081
(compositionstart)="grid.crudService.isInCompositionMode = true"
@@ -86,7 +87,8 @@
8687
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
8788
<input
8889
igxInput
89-
[attr.aria-errormessage]="ariaErrorMessage"
90+
[attr.aria-describedby]="ariaDescribeBy"
91+
[attr.aria-invalid]="isInvalid"
9092
[igxFocus]="true"
9193
[step]="step"
9294
type="number"
@@ -131,7 +133,8 @@
131133
<igx-input-group [formGroup]="formGroup">
132134
<input
133135
type="text"
134-
[attr.aria-errormessage]="ariaErrorMessage"
136+
[attr.aria-describedby]="ariaDescribeBy"
137+
[attr.aria-invalid]="isInvalid"
135138
[formControl]="formControl"
136139
igxInput
137140
[igxDateTimeEditor]="column.defaultDateTimeFormat"
@@ -144,7 +147,8 @@
144147
<igx-prefix *ngIf="grid.currencyPositionLeft">{{ currencyCodeSymbol }}</igx-prefix>
145148
<input
146149
igxInput
147-
[attr.aria-errormessage]="ariaErrorMessage"
150+
[attr.aria-describedby]="ariaDescribeBy"
151+
[attr.aria-invalid]="isInvalid"
148152
[igxFocus]="true"
149153
[step]="step"
150154
type="number"
@@ -157,7 +161,8 @@
157161
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
158162
<input
159163
igxInput
160-
[attr.aria-errormessage]="ariaErrorMessage"
164+
[attr.aria-describedby]="ariaDescribeBy"
165+
[attr.aria-invalid]="isInvalid"
161166
[igxFocus]="true"
162167
[step]="step"
163168
type="number"

projects/igniteui-angular/src/lib/grids/cell.component.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,14 +469,18 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT
469469
public get readonly(): boolean {
470470
return !this.editable;
471471
}
472+
472473
/** @hidden @internal */
473474
@HostBinding('attr.aria-describedby')
474-
public get describeBy() {
475-
return this.grid.id + '_' + this.column.field;
475+
public get ariaDescribeBy() {
476+
let describeBy = (this.gridID + '_' + this.column.field).replace('.', '_');
477+
if (this.isInvalid) {
478+
describeBy += ' ' + this.ariaErrorMessage;
479+
}
480+
return describeBy;
476481
}
477482

478483
/** @hidden @internal */
479-
@HostBinding('attr.aria-errormessage')
480484
public get ariaErrorMessage() {
481485
return this.grid.id + '_' + this.column.field + '_' + this.intRow.index + '_error';
482486
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@
5555
<igx-input-group displayDensity="compact" >
5656
<input
5757
igxInput
58-
[attr.aria-errormessage]="ariaErrorMessage"
58+
[attr.aria-describedby]="ariaDescribeBy"
59+
[attr.aria-invalid]="isInvalid"
5960
[igxFocus]="true"
6061
[formControl]="formControl"
6162
(compositionstart)="grid.crudService.isInCompositionMode = true"
@@ -67,7 +68,8 @@
6768
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
6869
<input
6970
igxInput
70-
[attr.aria-errormessage]="ariaErrorMessage"
71+
[attr.aria-describedby]="ariaDescribeBy"
72+
[attr.aria-invalid]="isInvalid"
7173
[igxFocus]="true"
7274
[step]="step"
7375
type="number"
@@ -112,7 +114,8 @@
112114
<igx-input-group [formGroup]="formGroup">
113115
<input
114116
type="text"
115-
[attr.aria-errormessage]="ariaErrorMessage"
117+
[attr.aria-describedby]="ariaDescribeBy"
118+
[attr.aria-invalid]="isInvalid"
116119
[formControl]="formControl"
117120
igxInput
118121
[igxDateTimeEditor]="column.defaultDateTimeFormat"
@@ -125,7 +128,8 @@
125128
<igx-prefix *ngIf="grid.currencyPositionLeft">{{ currencyCodeSymbol }}</igx-prefix>
126129
<input
127130
igxInput
128-
[attr.aria-errormessage]="ariaErrorMessage"
131+
[attr.aria-describedby]="ariaDescribeBy"
132+
[attr.aria-invalid]="isInvalid"
129133
[igxFocus]="true"
130134
[step]="step"
131135
type="number"
@@ -138,7 +142,8 @@
138142
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
139143
<input
140144
igxInput
141-
[attr.aria-errormessage]="ariaErrorMessage"
145+
[attr.aria-describedby]="ariaDescribeBy"
146+
[attr.aria-invalid]="isInvalid"
142147
[igxFocus]="true"
143148
[step]="step"
144149
type="number"

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
<igx-grid-cell
9696
class="igx-grid__td igx-grid__td--fw"
9797
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
98-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
9998
[class.igx-grid__td--pinned]="col.pinned"
10099
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
101100
[class.igx-grid__td--bool]="col.dataType === 'boolean'"
@@ -129,7 +128,6 @@
129128
<ng-template #expandableCellTemplate let-col>
130129
<igx-expandable-grid-cell
131130
[class.igx-grid__td--pinned]="col.pinned"
132-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
133131
class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell"
134132
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
135133
[class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0"
@@ -163,7 +161,7 @@
163161
<igx-grid-cell
164162
class="igx-grid__td igx-grid__td--fw"
165163
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
166-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
164+
167165
[class.igx-grid__td--pinned]="col.pinned"
168166
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
169167
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
@@ -196,7 +194,7 @@
196194
<igx-expandable-grid-cell
197195
class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell"
198196
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
199-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
197+
200198
[class.igx-grid__td--pinned]="col.pinned"
201199
[class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0"
202200
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<igx-hierarchical-grid-cell
5555
class="igx-grid__td igx-grid__td--fw"
5656
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
57-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
57+
5858
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
5959
[class.igx-grid__td--bool]="col.dataType === 'boolean'"
6060
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
@@ -102,7 +102,7 @@
102102
<igx-hierarchical-grid-cell *ngFor="let col of pinnedColumns | igxNotGrouped"
103103
class="igx-grid__td igx-grid__td--fw igx-grid__td--pinned"
104104
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
105-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
105+
106106
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
107107
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
108108
[ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>
55
<igx-grid-cell #cell class="igx-grid__td igx-grid__td--fw"
66
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
7-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
7+
88
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
99
[class.igx-grid__td--bool]="col.dataType === 'boolean'"
1010
[ngClass]="this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger"

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
<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>
1414
<igx-grid-summary-cell
1515
class="igx-grid-summary igx-grid-summary--fw"
16-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
1716
role="cell"
1817
[class.igx-grid-summary--cosy]="grid.displayDensity === 'cosy'"
1918
[class.igx-grid-summary--compact]="grid.displayDensity === 'compact'"
@@ -43,7 +42,6 @@
4342
<ng-template #summaryCellTemplate let-col>
4443
<igx-grid-summary-cell *ngFor="let col of pinnedColumns | igxNotGrouped"
4544
role="cell"
46-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
4745
class="igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned"
4846
[class.igx-grid-summary--cosy]="grid.displayDensity === 'cosy'"
4947
[class.igx-grid-summary--compact]="grid.displayDensity === 'compact'"

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@
7575
<igx-input-group displayDensity="compact" >
7676
<input
7777
igxInput
78-
[attr.aria-errormessage]="ariaErrorMessage"
78+
[attr.aria-describedby]="ariaDescribeBy"
79+
[attr.aria-invalid]="isInvalid"
7980
[igxFocus]="true"
8081
[formControl]="formControl"
8182
(compositionstart)="grid.crudService.isInCompositionMode = true"
@@ -87,7 +88,8 @@
8788
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
8889
<input
8990
igxInput
90-
[attr.aria-errormessage]="ariaErrorMessage"
91+
[attr.aria-describedby]="ariaDescribeBy"
92+
[attr.aria-invalid]="isInvalid"
9193
[igxFocus]="true"
9294
[step]="step"
9395
type="number"
@@ -132,7 +134,8 @@
132134
<igx-input-group [formGroup]="formGroup">
133135
<input
134136
type="text"
135-
[attr.aria-errormessage]="ariaErrorMessage"
137+
[attr.aria-describedby]="ariaDescribeBy"
138+
[attr.aria-invalid]="isInvalid"
136139
[formControl]="formControl"
137140
igxInput
138141
[igxDateTimeEditor]="column.defaultDateTimeFormat"
@@ -145,7 +148,8 @@
145148
<igx-prefix *ngIf="grid.currencyPositionLeft">{{ currencyCodeSymbol }}</igx-prefix>
146149
<input
147150
igxInput
148-
[attr.aria-errormessage]="ariaErrorMessage"
151+
[attr.aria-describedby]="ariaDescribeBy"
152+
[attr.aria-invalid]="isInvalid"
149153
[igxFocus]="true"
150154
[step]="step"
151155
type="number"
@@ -158,7 +162,8 @@
158162
<igx-input-group displayDensity="compact" [formGroup]="formGroup">
159163
<input
160164
igxInput
161-
[attr.aria-errormessage]="ariaErrorMessage"
165+
[attr.aria-describedby]="ariaDescribeBy"
166+
[attr.aria-invalid]="isInvalid"
162167
[igxFocus]="true"
163168
[step]="step"
164169
type="number"

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<igx-grid-cell
2828
class="igx-grid__td igx-grid__td--fw"
2929
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
30-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
3130
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
3231
[class.igx-grid__td--bool]="col.dataType === 'boolean'"
3332
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
@@ -57,7 +56,6 @@
5756
<igx-tree-grid-cell
5857
class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell"
5958
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
60-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
6159
[class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0"
6260
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
6361
[ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
@@ -112,7 +110,6 @@
112110
<igx-grid-cell
113111
class="igx-grid__td igx-grid__td--fw igx-grid__td--pinned"
114112
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
115-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
116113
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
117114
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
118115
[ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
@@ -144,7 +141,6 @@
144141
<igx-tree-grid-cell
145142
class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell igx-grid__td--pinned"
146143
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
147-
[attr.aria-describedby]="gridID + '_' + col.field | igxStringReplace:'.':'_'"
148144
[class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0"
149145
[ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"
150146
[ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger"

0 commit comments

Comments
 (0)