Skip to content

Commit f5a7fbc

Browse files
authored
Grids (cherry-pick) - fix texts localization for ColumnChooser in DataGrid and CardView (DevExpress#30998)
1 parent ee2d232 commit f5a7fbc

File tree

4 files changed

+93
-3
lines changed

4 files changed

+93
-3
lines changed

e2e/testcafe-devextreme/tests/cardView/columnChooser/functional.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,40 @@ testsFactory({
145145
).eql('A');
146146
},
147147
});
148+
149+
test('ColumnChooser should receive and render custom texts', async (t) => {
150+
const cardView = new CardView('#container');
151+
152+
const columnChooserBtn = cardView.getColumnChooserButton();
153+
await t.click(columnChooserBtn);
154+
const columnChooser = cardView.getColumnChooser();
155+
const title = columnChooser.getTitle();
156+
const emptyMessage = columnChooser.getEmptyMessage();
157+
const titleText = await title.innerText;
158+
const emptyMessageText = await emptyMessage.innerText;
159+
160+
await t.expect(titleText).eql('customTitle');
161+
await t.expect(emptyMessageText).eql('customEmptyText');
162+
}).before(async (t) => {
163+
await t.eval(() => {
164+
(window as any).DevExpress.localization.loadMessages({
165+
en: {
166+
'dxDataGrid-columnChooserTitle': 'customTitle',
167+
'dxDataGrid-columnChooserEmptyText': 'customEmptyText',
168+
},
169+
});
170+
});
171+
172+
return createWidget('dxCardView', {
173+
dataSource: [],
174+
keyExpr: 'ID',
175+
cardsPerRow: 'auto',
176+
cardMinWidth: 300,
177+
columnChooser: {
178+
enabled: true,
179+
mode: 'dragAndDrop',
180+
height: '340px',
181+
},
182+
columns: [],
183+
});
184+
});

e2e/testcafe-devextreme/tests/dataGrid/common/columnChooser.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,3 +237,41 @@ test(
237237
component.columnOption(lastColumnDataField, 'allowHiding', false);
238238
},
239239
}));
240+
241+
test('ColumnChooser should receive and render custom texts', async (t) => {
242+
const dataGrid = new DataGrid('#container');
243+
await dataGrid.isReady();
244+
const columnChooserBtn = dataGrid.getColumnChooserButton();
245+
await t.click(columnChooserBtn);
246+
const columnChooser = dataGrid.getColumnChooser();
247+
const title = columnChooser.getTitle();
248+
const emptyMessage = columnChooser.getEmptyMessage();
249+
const titleText = await title.innerText;
250+
const emptyMessageText = await emptyMessage.innerText;
251+
await t.expect(titleText).eql('customTitle');
252+
await t.expect(emptyMessageText).eql('customEmptyText');
253+
}).before(async (t) => {
254+
await t.eval(() => {
255+
(window as any).DevExpress.localization.loadMessages({
256+
en: {
257+
'dxDataGrid-columnChooserTitle': 'customTitle',
258+
'dxDataGrid-columnChooserEmptyText': 'customEmptyText',
259+
},
260+
});
261+
});
262+
263+
return createWidget('dxDataGrid', {
264+
columnChooser: {
265+
height: '340px',
266+
enabled: true,
267+
mode: 'dragAndDrop',
268+
position: {
269+
my: 'right top',
270+
at: 'right bottom',
271+
of: '.dx-datagrid-column-chooser-button',
272+
},
273+
},
274+
dataSource: [],
275+
columns: [],
276+
});
277+
});

packages/devextreme/js/__internal/grids/grid_core/column_chooser/const.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ export const defaultOptions = {
1919
mode: 'dragAndDrop',
2020
width: 250,
2121
height: 260,
22-
title: messageLocalization.format('dxDataGrid-columnChooserTitle'),
23-
emptyPanelText: messageLocalization.format('dxDataGrid-columnChooserEmptyText'),
22+
get title() {
23+
return messageLocalization.format('dxDataGrid-columnChooserTitle');
24+
},
25+
get emptyPanelText() {
26+
return messageLocalization.format('dxDataGrid-columnChooserEmptyText');
27+
},
2428
container: undefined,
2529
} as ColumnChooser,
2630
};

packages/testcafe-models/dataGrid/columnChooser.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ const CLASS = {
1111
checkbox: 'dx-checkbox',
1212
treeViewItem: 'dx-treeview-item',
1313
treeView: 'dx-treeview',
14+
itemContent: 'dx-item-content',
15+
itemContentToolbar: 'dx-toolbar-item-content',
16+
emptyMessage: 'dx-empty-message',
1417
};
1518

1619
export default class ColumnChooser extends FocusableElement {
@@ -61,4 +64,12 @@ export default class ColumnChooser extends FocusableElement {
6164
getColumn(index = 0): Selector {
6265
return this.content.find(`.${CLASS.treeViewItem}`).nth(index);
6366
}
64-
}
67+
68+
getTitle(): Selector {
69+
return this.content.find(`.${CLASS.itemContent}.${CLASS.itemContentToolbar}`).nth(0);
70+
}
71+
72+
getEmptyMessage(): Selector {
73+
return this.content.find(`.${CLASS.emptyMessage}`);
74+
}
75+
}

0 commit comments

Comments
 (0)