Skip to content

Commit f3e38d7

Browse files
DataGrid: prevent column resizing in band area (T1317039) (#32263)
1 parent 940c597 commit f3e38d7

16 files changed

+240
-102
lines changed

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-1 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-1 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-2 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-2 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-3 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-3 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-4 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-4 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-5 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-5 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-6 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-6 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-7 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-7 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-8 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-8 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/column-separator-9 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/columnResizing/etalons/column-separator-9 (fluent.blue.light).png

File renamed without changes.
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
import DataGrid from 'devextreme-testcafe-models/dataGrid';
2+
3+
import { ClientFunction } from 'testcafe';
4+
import url from '../../../../helpers/getPageUrl';
5+
import { createWidget } from '../../../../helpers/createWidget';
6+
7+
fixture.disablePageReloads`Column resizing`
8+
.page(url(__dirname, '../../../container.html'));
9+
10+
// T1314667
11+
test('DataGrid – Resize indicator is moved when resizing a grouped column if showWhenGrouped is set to true', async (t) => {
12+
const dataGrid = new DataGrid('#container');
13+
14+
await t.expect(dataGrid.isReady()).ok();
15+
16+
await dataGrid.resizeHeader(3, 30, false);
17+
18+
await t
19+
.expect(dataGrid.getHeaders().getHeaderRow(1).getHeaderCell(0).element.clientWidth)
20+
.within(128, 130);
21+
}).before(async () => {
22+
await createWidget('dxDataGrid', {
23+
dataSource: [{
24+
ID: 1,
25+
Country: 'Brazil',
26+
Area: 8515767,
27+
Population_Urban: 0.85,
28+
Population_Rural: 0.15,
29+
Population_Total: 205809000,
30+
}],
31+
keyExpr: 'ID',
32+
allowColumnResizing: true,
33+
columnResizingMode: 'widget',
34+
width: 500,
35+
columns: [
36+
{
37+
dataField: 'ID',
38+
fixed: true,
39+
allowReordering: false,
40+
width: 50,
41+
},
42+
43+
{
44+
caption: 'Population',
45+
columns: [
46+
{
47+
dataField: 'Country',
48+
showWhenGrouped: true,
49+
width: 100,
50+
groupIndex: 0,
51+
},
52+
{ dataField: 'Area' },
53+
{ dataField: 'Population_Total' },
54+
{ dataField: 'Population_Urban' },
55+
{ dataField: 'Population_Rural' },
56+
],
57+
},
58+
],
59+
});
60+
});
61+
62+
const tryResizeHeaderInBandArea = (
63+
dataGrid: DataGrid,
64+
columnIndex: number,
65+
offset: number,
66+
): Promise<void> => {
67+
const { getInstance } = dataGrid;
68+
69+
const triggerPointerEvent = ($element: JQuery<any>, eventName: string, x: number, y: number) => {
70+
$element
71+
.trigger($.Event(eventName, {
72+
pageX: x,
73+
pageY: y,
74+
pointers: [{ pointerId: 1 }],
75+
}));
76+
};
77+
78+
return ClientFunction(
79+
() => {
80+
const gridInstance = getInstance() as any;
81+
const $gridElement = $(gridInstance.element());
82+
const columnHeadersView = gridInstance.getView('columnHeadersView');
83+
const $header = $(columnHeadersView.getHeaderElement(columnIndex));
84+
const headerOffset = $header.offset();
85+
86+
triggerPointerEvent($(document), 'dxpointermove', headerOffset.left, headerOffset.top - 10);
87+
triggerPointerEvent($gridElement, 'dxpointerdown', headerOffset.left, headerOffset.top - 10);
88+
triggerPointerEvent($(document), 'dxpointermove', headerOffset.left + offset, headerOffset.top - 10);
89+
triggerPointerEvent($(document), 'dxpointerup', headerOffset.left + offset, headerOffset.top - 10);
90+
},
91+
{
92+
dependencies: {
93+
getInstance,
94+
triggerPointerEvent,
95+
columnIndex,
96+
offset,
97+
},
98+
},
99+
)();
100+
};
101+
102+
// T1317039
103+
test('DataGrid – Columns should not be resized from band area (T1317039)', async (t) => {
104+
const dataGrid = new DataGrid('#container');
105+
106+
await t.expect(dataGrid.isReady()).ok();
107+
108+
await tryResizeHeaderInBandArea(dataGrid, 3, 30);
109+
110+
await t
111+
.expect(dataGrid.getHeaders().getHeaderRow(1).getHeaderCell(0).element.clientWidth)
112+
.within(98, 100);
113+
}).before(async () => {
114+
await createWidget('dxDataGrid', {
115+
dataSource: [{
116+
ID: 1,
117+
Country: 'Brazil',
118+
Area: 8515767,
119+
Population_Urban: 0.85,
120+
Population_Rural: 0.15,
121+
Population_Total: 205809000,
122+
}],
123+
keyExpr: 'ID',
124+
allowColumnResizing: true,
125+
columnResizingMode: 'widget',
126+
width: 500,
127+
columns: [
128+
{
129+
dataField: 'ID',
130+
fixed: true,
131+
allowReordering: false,
132+
width: 50,
133+
},
134+
135+
{
136+
caption: 'Population',
137+
columns: [
138+
{
139+
dataField: 'Country',
140+
showWhenGrouped: true,
141+
width: 100,
142+
groupIndex: 0,
143+
},
144+
{ dataField: 'Area' },
145+
{ dataField: 'Population_Total' },
146+
{ dataField: 'Population_Urban' },
147+
{ dataField: 'Population_Rural' },
148+
],
149+
},
150+
],
151+
});
152+
});

0 commit comments

Comments
 (0)