Skip to content

Commit 77d6a6c

Browse files
committed
DataGrid: prevent column resizing in band area
1 parent ce142b1 commit 77d6a6c

16 files changed

+229
-92
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: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
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 tryResizeHeaderInBandArea(dataGrid, 3, 30);
107+
108+
await t
109+
.expect(dataGrid.getHeaders().getHeaderRow(1).getHeaderCell(0).element.clientWidth)
110+
.within(98, 100);
111+
}).before(async () => {
112+
await createWidget('dxDataGrid', {
113+
dataSource: [{
114+
ID: 1,
115+
Country: 'Brazil',
116+
Area: 8515767,
117+
Population_Urban: 0.85,
118+
Population_Rural: 0.15,
119+
Population_Total: 205809000,
120+
}],
121+
keyExpr: 'ID',
122+
allowColumnResizing: true,
123+
columnResizingMode: 'widget',
124+
width: 500,
125+
columns: [
126+
{
127+
dataField: 'ID',
128+
fixed: true,
129+
allowReordering: false,
130+
width: 50,
131+
},
132+
133+
{
134+
caption: 'Population',
135+
columns: [
136+
{
137+
dataField: 'Country',
138+
showWhenGrouped: true,
139+
width: 100,
140+
groupIndex: 0,
141+
},
142+
{ dataField: 'Area' },
143+
{ dataField: 'Population_Total' },
144+
{ dataField: 'Population_Urban' },
145+
{ dataField: 'Population_Rural' },
146+
],
147+
},
148+
],
149+
});
150+
});

0 commit comments

Comments
 (0)