Skip to content

Commit 992d081

Browse files
authored
[REFIX] DataGrid - NVDA reads all status messages on page load when multiple components are rendered (T1288423) (DevExpress#29960)
1 parent 82eb558 commit 992d081

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

packages/devextreme/js/__internal/grids/grid_core/views/m_grid_view.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,26 +195,26 @@ export class ResizingController extends modules.ViewController {
195195
let widgetStatusText = '';
196196
let labelParts: string[] = [];
197197

198-
if (!e?.isFirstRender) {
199-
const columnCount = this._columnsController?._columns?.filter(({ visible }) => !!visible).length ?? 0;
200-
const totalItemsCount = Math.max(0, this._dataController.totalItemsCount());
201-
const widgetAriaLabel = this._getWidgetAriaLabel();
202-
widgetStatusText = messageLocalization
198+
const columnCount = this._columnsController?._columns?.filter(({ visible }) => !!visible).length ?? 0;
199+
const totalItemsCount = Math.max(0, this._dataController.totalItemsCount());
200+
const widgetAriaLabel = this._getWidgetAriaLabel();
201+
widgetStatusText = messageLocalization
203202
// @ts-expect-error Badly typed format method
204-
.format(widgetAriaLabel, totalItemsCount, columnCount);
203+
.format(widgetAriaLabel, totalItemsCount, columnCount);
205204

206-
// @ts-expect-error Treelist Variable
207-
const expandableWidgetAriaLabel = messageLocalization.format(this._expandableWidgetAriaId);
208-
labelParts = [widgetStatusText];
209-
if (expandableWidgetAriaLabel) {
210-
labelParts.push(expandableWidgetAriaLabel);
211-
}
205+
// @ts-expect-error Treelist Variable
206+
const expandableWidgetAriaLabel = messageLocalization.format(this._expandableWidgetAriaId);
207+
labelParts = [widgetStatusText];
208+
if (expandableWidgetAriaLabel) {
209+
labelParts.push(expandableWidgetAriaLabel);
212210
}
213211

214212
const $ariaLabelElement = this.component.$element().children(`.${GRIDBASE_CONTAINER_CLASS}`);
215213

216214
this.component.setAria('label', labelParts.join('. '), $ariaLabelElement);
217-
this._gridView.setWidgetA11yStatusText(widgetStatusText);
215+
if (!e?.isFirstRender) {
216+
this._gridView.setWidgetA11yStatusText(widgetStatusText);
217+
}
218218
}
219219

220220
private _getBestFitWidths() {

packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataGrid.tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ QUnit.module('Initialization', baseModuleConfig, () => {
175175

176176
assert.equal(dataGridWrapper.getElement().find('.dx-datagrid').attr('role'), 'group', 'group role');
177177
// T1288423
178-
assert.equal(dataGridWrapper.getElement().find('.dx-datagrid').attr('aria-label'), '', 'aria-label of the datagrid container');
178+
assert.equal(dataGridWrapper.getElement().find('.dx-datagrid').attr('aria-label'), 'Data grid with 2 rows and 4 columns', 'aria-label of the datagrid container');
179179
assert.equal(headersWrapper.getElement().attr('role'), 'presentation', 'Headers role');
180180
assert.equal(headersWrapper.getColumnsIndicators().attr('role'), 'presentation', 'Headers columns indicators role');
181181
assert.equal($('.dx-datagrid-scroll-container').attr('role'), 'presentation', 'Scroll container role');

0 commit comments

Comments
 (0)