Skip to content

Commit 1f28200

Browse files
authored
TreeList - display items in the original order when search is applied for local data source - T1274434 (DevExpress#28992)
1 parent 9debff5 commit 1f28200

File tree

3 files changed

+90
-1
lines changed

3 files changed

+90
-1
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import TreeList from 'devextreme-testcafe-models/treeList';
2+
import url from '../../helpers/getPageUrl';
3+
import { createWidget } from '../../helpers/createWidget';
4+
5+
fixture`SearchPanel`
6+
.page(url(__dirname, '../container.html'));
7+
8+
test('Items are shown in the original order after search is applied - T1274434 - 1', async (t) => {
9+
const treeList = new TreeList('#container');
10+
await treeList.apiSearchByText('test');
11+
12+
await t
13+
.expect((await treeList.apiGetVisibleRows()).length)
14+
.eql(3);
15+
16+
await t
17+
.expect(treeList.apiGetCellValue(0, 0))
18+
.eql('parent1');
19+
20+
await t
21+
.expect(treeList.apiGetCellValue(1, 0))
22+
.eql('test2');
23+
24+
await t
25+
.expect(treeList.apiGetCellValue(2, 0))
26+
.eql('test1');
27+
}).before(async () => createWidget('dxTreeList', {
28+
showBorders: true,
29+
showRowLines: true,
30+
expandedRowKeys: [1],
31+
searchPanel: {
32+
visible: true,
33+
},
34+
columns: ['text'],
35+
dataSource: [
36+
{ id: 1, parentId: 0, text: 'parent1' },
37+
{ id: 2, parentId: 0, text: 'test1' },
38+
{ id: 3, parentId: 1, text: 'test2' },
39+
],
40+
}));
41+
42+
test('Items are shown in the original order after search is applied - T1274434 - 2', async (t) => {
43+
const treeList = new TreeList('#container');
44+
await treeList.apiSearchByText('test');
45+
46+
await t
47+
.expect((await treeList.apiGetVisibleRows()).length)
48+
.eql(3);
49+
50+
await t
51+
.expect(treeList.apiGetCellValue(0, 0))
52+
.eql('parent1');
53+
54+
await t
55+
.expect(treeList.apiGetCellValue(1, 0))
56+
.eql('test2');
57+
58+
await t
59+
.expect(treeList.apiGetCellValue(2, 0))
60+
.eql('test1');
61+
}).before(async () => createWidget('dxTreeList', {
62+
showBorders: true,
63+
showRowLines: true,
64+
expandedRowKeys: [1],
65+
searchPanel: {
66+
visible: true,
67+
},
68+
columns: ['text'],
69+
dataSource: [
70+
{ id: 1, parentId: 0, text: 'parent1' },
71+
{ id: 2, parentId: 0, text: 'test1' },
72+
{ id: 3, parentId: 1, text: 'test2' },
73+
{ id: 4, parentId: 0, text: 'parent2' },
74+
],
75+
}));

packages/devextreme/js/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ class DataSourceAdapterTreeList extends DataSourceAdapter {
629629
const expandedRowKeys = [];
630630

631631
if (parentIds && parentIds.length || this._isReload) {
632-
if (options.fullData && options.fullData.length > options.data.length) {
632+
if (options.fullData) {
633633
data = options.fullData;
634634
visibleItems = visibleItems || options.data;
635635
}

packages/testcafe-models/dataGrid/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,20 @@ export default class DataGrid extends Widget {
660660
},
661661
)();
662662
}
663+
664+
apiSearchByText(text: string): Promise<void> {
665+
const { getInstance } = this;
666+
667+
return ClientFunction(
668+
() => (getInstance() as DataGridInstance).searchByText(text),
669+
{
670+
dependencies: {
671+
getInstance, text
672+
},
673+
},
674+
)();
675+
}
676+
663677
moveRow(rowIndex: number, x: number, y: number, isStart = false): Promise<void> {
664678
const { getInstance } = this;
665679

0 commit comments

Comments
 (0)