Skip to content

Commit dc6e592

Browse files
Merge branch '26_1' into gulp/remove-gulp-from-app-demos
2 parents 7cce17a + 0f415d7 commit dc6e592

4 files changed

Lines changed: 82 additions & 24 deletions

File tree

e2e/testcafe-devextreme/tests/common/pivotGrid/kbn/fieldChooser.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,46 @@ const PIVOT_GRID_SELECTOR = '#container';
3737
fieldPanel: fieldPanelOptions,
3838
}, PIVOT_GRID_SELECTOR));
3939
});
40+
41+
test('Field chooser button should have correct aria attributes', async (t) => {
42+
const pivotGrid = new PivotGrid(PIVOT_GRID_SELECTOR);
43+
44+
await t
45+
.expect(pivotGrid.getFieldChooserButton().getAttribute('aria-haspopup'))
46+
.eql('dialog');
47+
48+
await t
49+
.expect(pivotGrid.getFieldChooserButton().getAttribute('aria-label'))
50+
.eql('Show Field Chooser');
51+
}).before(async () => createWidget('dxPivotGrid', {
52+
allowFiltering: true,
53+
showBorders: true,
54+
height: 470,
55+
fieldChooser: {
56+
enabled: true,
57+
},
58+
}, PIVOT_GRID_SELECTOR));
59+
60+
test('Field chooser button should be focused after field chooser popup is closed', async (t) => {
61+
const pivotGrid = new PivotGrid(PIVOT_GRID_SELECTOR);
62+
63+
await t
64+
.pressKey('tab')
65+
.pressKey('enter')
66+
.expect(pivotGrid.getFieldChooserPopup().isVisible())
67+
.ok();
68+
69+
await t
70+
.pressKey('esc')
71+
.expect(pivotGrid.getFieldChooserPopup().isVisible())
72+
.notOk()
73+
.expect(pivotGrid.getFieldChooserButton().focused)
74+
.ok();
75+
}).before(async () => createWidget('dxPivotGrid', {
76+
allowFiltering: true,
77+
showBorders: true,
78+
height: 470,
79+
fieldChooser: {
80+
enabled: true,
81+
},
82+
}, PIVOT_GRID_SELECTOR));

packages/devextreme/js/__internal/grids/pivot_grid/m_widget.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { addNamespace } from '@js/common/core/events/utils/index';
44
import localizationMessage from '@js/common/core/localization/message';
55
import registerComponent from '@js/core/component_registrator';
66
import { getPublicElement } from '@js/core/element';
7+
import type { dxElementWrapper } from '@js/core/renderer';
78
import $ from '@js/core/renderer';
89
import { deferRender, deferUpdate, noop } from '@js/core/utils/common';
910
import { Deferred, when } from '@js/core/utils/deferred';
@@ -161,6 +162,8 @@ class PivotGrid extends Widget {
161162

162163
_createActionByOption: any;
163164

165+
$fieldChooserButton?: dxElementWrapper;
166+
164167
_getDefaultOptions() {
165168
return extend(super._getDefaultOptions(), {
166169

@@ -644,6 +647,10 @@ class PivotGrid extends Widget {
644647
const fieldChooser = e.component.$content().dxPivotGridFieldChooser('instance');
645648
fieldChooser.resetTreeView();
646649
fieldChooser.cancelChanges();
650+
651+
if (that.$fieldChooserButton) {
652+
(that.$fieldChooserButton.get(0) as HTMLElement).focus();
653+
}
647654
},
648655
};
649656

@@ -981,20 +988,24 @@ class PivotGrid extends Widget {
981988
$toolbarContainer.prependTo($targetContainer);
982989

983990
if (this.option('fieldChooser.enabled')) {
984-
const $buttonElement = $(DIV)
991+
this.$fieldChooserButton = $(DIV)
985992
.appendTo($toolbarContainer)
986993
.addClass('dx-pivotgrid-field-chooser-button');
987994
const buttonOptions: Properties = {
988995
icon: 'columnchooser',
989996
// @ts-expect-error ts-error
990997
hint: this.option('texts.showFieldChooser'),
998+
elementAttr: {
999+
'aria-label': this.option('texts.showFieldChooser'),
1000+
'aria-haspopup': 'dialog',
1001+
},
9911002
stylingMode: buttonStylingMode,
9921003
onClick: () => {
9931004
this.getFieldChooserPopup().show();
9941005
},
9951006
};
9961007

997-
this._createComponent($buttonElement, Button, buttonOptions);
1008+
this._createComponent(this.$fieldChooserButton, Button, buttonOptions);
9981009
}
9991010

10001011
if (this.option('export.enabled')) {

pnpm-lock.yaml

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ catalog:
5252
"@eslint/js": 9.39.4
5353
eslint: 9.39.4
5454
eslint-config-airbnb-typescript: 18.0.0
55-
eslint-config-devextreme: 1.1.10
55+
eslint-config-devextreme: 1.1.11
5656
eslint-plugin-i18n: 2.4.0
5757
eslint-plugin-import: 2.32.0
5858
eslint-plugin-jsx-a11y: 6.10.2
@@ -112,3 +112,7 @@ allowBuilds:
112112
nx: true
113113
puppeteer: true
114114
unrs-resolver: true
115+
116+
minimumReleaseAgeExclude:
117+
- "eslint-config-devextreme"
118+

0 commit comments

Comments
 (0)