jqtree 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +1 -0
- package/_config.yml +1 -1
- package/_entries/10_changelog.md +5 -0
- package/_layouts/base.html +0 -22
- package/babel.config.json +11 -0
- package/babel.coverage.config.json +4 -0
- package/bower.json +1 -1
- package/jest-browser.config.js +0 -3
- package/jest-jsdom.config.js +1 -2
- package/jqtree.css +4 -1
- package/jqtree.postcss +3 -0
- package/lib/dataLoader.js +146 -98
- package/lib/dragAndDropHandler.js +668 -472
- package/lib/elementsRenderer.js +282 -197
- package/lib/jqtreeOptions.js +1 -2
- package/lib/keyHandler.js +134 -87
- package/lib/mouse.widget.js +285 -186
- package/lib/node.js +691 -505
- package/lib/nodeElement.js +329 -207
- package/lib/playwright/playwright.test.js +216 -189
- package/lib/playwright/testUtil.js +429 -193
- package/lib/playwright/visualRegression.js +182 -117
- package/lib/saveStateHandler.js +311 -204
- package/lib/scrollHandler.js +293 -199
- package/lib/selectNodeHandler.js +140 -100
- package/lib/simple.widget.js +184 -109
- package/lib/test/global.d.js +3 -0
- package/lib/test/jqTree/create.test.js +44 -40
- package/lib/test/jqTree/events.test.js +185 -138
- package/lib/test/jqTree/keyboard.test.js +216 -199
- package/lib/test/jqTree/loadOnDemand.test.js +233 -157
- package/lib/test/jqTree/methods.test.js +1269 -1019
- package/lib/test/jqTree/options.test.js +467 -398
- package/lib/test/node.test.js +1036 -873
- package/lib/test/nodeUtil.test.js +21 -20
- package/lib/test/support/exampleData.js +35 -23
- package/lib/test/support/jqTreeMatchers.js +72 -54
- package/lib/test/support/matchers.d.js +1 -0
- package/lib/test/support/setupTests.js +9 -3
- package/lib/test/support/testUtil.js +35 -15
- package/lib/test/support/treeStructure.js +41 -32
- package/lib/test/util.test.js +21 -20
- package/lib/tree.jquery.d.js +1 -0
- package/lib/tree.jquery.js +1264 -892
- package/lib/types.js +1 -2
- package/lib/typings.d.js +2 -0
- package/lib/util.js +19 -8
- package/lib/version.js +8 -3
- package/package.json +42 -34
- package/production +4 -4
- package/rollup.config.js +16 -11
- package/src/dataLoader.ts +6 -6
- package/src/dragAndDropHandler.ts +0 -4
- package/src/elementsRenderer.ts +4 -0
- package/src/jqtreeOptions.ts +1 -1
- package/src/mouse.widget.ts +19 -15
- package/src/node.ts +27 -41
- package/src/nodeElement.ts +17 -9
- package/src/playwright/.eslintrc +5 -0
- package/src/playwright/playwright.test.ts +29 -29
- package/src/saveStateHandler.ts +11 -6
- package/src/selectNodeHandler.ts +1 -1
- package/src/simple.widget.ts +1 -1
- package/src/test/.eslintrc +4 -0
- package/src/test/jqTree/create.test.ts +0 -1
- package/src/test/jqTree/events.test.ts +0 -1
- package/src/test/jqTree/keyboard.test.ts +0 -1
- package/src/test/jqTree/loadOnDemand.test.ts +46 -1
- package/src/test/jqTree/methods.test.ts +35 -10
- package/src/test/jqTree/options.test.ts +4 -5
- package/src/test/node.test.ts +2 -2
- package/src/test/support/jqTreeMatchers.ts +8 -9
- package/src/test/support/matchers.d.ts +2 -4
- package/src/test/support/setupTests.ts +2 -1
- package/src/tree.jquery.d.ts +18 -12
- package/src/tree.jquery.ts +25 -21
- package/src/version.ts +1 -1
- package/static/example.postcss +13 -0
- package/static/example_data.js +33 -36
- package/tree.jquery.debug.js +4806 -3325
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +1 -0
|
@@ -1,214 +1,231 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
2
|
+
|
|
3
|
+
var _givens = _interopRequireDefault(require("givens"));
|
|
4
|
+
|
|
5
5
|
require("../../tree.jquery");
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
var _exampleData = _interopRequireDefault(require("../support/exampleData"));
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
|
|
7
11
|
var context = describe;
|
|
8
12
|
beforeEach(function () {
|
|
9
|
-
|
|
13
|
+
$("body").append('<div id="tree1"></div>');
|
|
10
14
|
});
|
|
11
15
|
afterEach(function () {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
var $tree = $("#tree1");
|
|
17
|
+
$tree.tree("destroy");
|
|
18
|
+
$tree.remove();
|
|
15
19
|
});
|
|
16
20
|
describe("keyboard support", function () {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
context("with key down", function () {
|
|
38
|
-
given("pressedKey", function () { return KEY_DOWN; });
|
|
39
|
-
context("when a node is selected", function () {
|
|
40
|
-
given("initialSelectedNode", function () {
|
|
41
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
42
|
-
});
|
|
43
|
-
it("selects the next node", function () {
|
|
44
|
-
expect(given.$tree).toHaveTreeStructure([
|
|
45
|
-
expect.objectContaining({ name: "node1", selected: false }),
|
|
46
|
-
expect.objectContaining({ name: "node2", selected: true }),
|
|
47
|
-
]);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
context("when no node is selected", function () {
|
|
51
|
-
it("does nothing", function () {
|
|
52
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
context("when the last node is selected", function () {
|
|
56
|
-
given("initialSelectedNode", function () {
|
|
57
|
-
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
58
|
-
});
|
|
59
|
-
it("keeps the node selected", function () {
|
|
60
|
-
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
61
|
-
name: "node2"
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
21
|
+
var KEY_DOWN = 40;
|
|
22
|
+
var KEY_LEFT = 37;
|
|
23
|
+
var KEY_RIGHT = 39;
|
|
24
|
+
var KEY_UP = 38;
|
|
25
|
+
var KEY_PAGE_UP = 33;
|
|
26
|
+
var given = (0, _givens["default"])();
|
|
27
|
+
given("autoOpen", function () {
|
|
28
|
+
return false;
|
|
29
|
+
});
|
|
30
|
+
given("initialSelectedNode", function () {
|
|
31
|
+
return null;
|
|
32
|
+
});
|
|
33
|
+
given("$tree", function () {
|
|
34
|
+
return $("#tree1");
|
|
35
|
+
});
|
|
36
|
+
beforeEach(function () {
|
|
37
|
+
given.$tree.tree({
|
|
38
|
+
animationSpeed: 0,
|
|
39
|
+
autoOpen: given.autoOpen,
|
|
40
|
+
data: _exampleData["default"]
|
|
65
41
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
});
|
|
79
|
-
context("when no node is selected", function () {
|
|
80
|
-
it("does nothing", function () {
|
|
81
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
42
|
+
|
|
43
|
+
if (given.initialSelectedNode) {
|
|
44
|
+
given.$tree.tree("selectNode", given.initialSelectedNode);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
given.$tree.trigger($.Event("keydown", {
|
|
48
|
+
which: given.pressedKey
|
|
49
|
+
}));
|
|
50
|
+
});
|
|
51
|
+
context("with key down", function () {
|
|
52
|
+
given("pressedKey", function () {
|
|
53
|
+
return KEY_DOWN;
|
|
84
54
|
});
|
|
85
|
-
context("
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
expect.objectContaining({
|
|
99
|
-
name: "node2",
|
|
100
|
-
open: false,
|
|
101
|
-
selected: false
|
|
102
|
-
}),
|
|
103
|
-
]);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
context("when an open folder is selected", function () {
|
|
107
|
-
given("autoOpen", function () { return true; });
|
|
108
|
-
given("initialSelectedNode", function () {
|
|
109
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
110
|
-
});
|
|
111
|
-
it("selects the first child", function () {
|
|
112
|
-
expect(given.$tree).toHaveTreeStructure([
|
|
113
|
-
expect.objectContaining({
|
|
114
|
-
name: "node1",
|
|
115
|
-
open: true,
|
|
116
|
-
selected: false,
|
|
117
|
-
children: [
|
|
118
|
-
expect.objectContaining({
|
|
119
|
-
name: "child1",
|
|
120
|
-
selected: true
|
|
121
|
-
}),
|
|
122
|
-
expect.objectContaining({
|
|
123
|
-
name: "child2",
|
|
124
|
-
selected: false
|
|
125
|
-
}),
|
|
126
|
-
]
|
|
127
|
-
}),
|
|
128
|
-
expect.objectContaining({
|
|
129
|
-
name: "node2",
|
|
130
|
-
selected: false
|
|
131
|
-
}),
|
|
132
|
-
]);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
context("when no node is selected", function () {
|
|
136
|
-
it("does nothing", function () {
|
|
137
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
context("when a child is selected", function () {
|
|
141
|
-
given("initialSelectedNode", function () {
|
|
142
|
-
return given.$tree.tree("getNodeByNameMustExist", "child1");
|
|
143
|
-
});
|
|
144
|
-
it("does nothing", function () {
|
|
145
|
-
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
146
|
-
name: "child1"
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
});
|
|
55
|
+
context("when a node is selected", function () {
|
|
56
|
+
given("initialSelectedNode", function () {
|
|
57
|
+
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
58
|
+
});
|
|
59
|
+
it("selects the next node", function () {
|
|
60
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
61
|
+
name: "node1",
|
|
62
|
+
selected: false
|
|
63
|
+
}), expect.objectContaining({
|
|
64
|
+
name: "node2",
|
|
65
|
+
selected: true
|
|
66
|
+
})]);
|
|
67
|
+
});
|
|
150
68
|
});
|
|
151
|
-
context("
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return given.$tree.tree("getNodeByNameMustExist", "node3");
|
|
156
|
-
});
|
|
157
|
-
it("selects the previous node", function () {
|
|
158
|
-
expect(given.$tree).toHaveTreeStructure([
|
|
159
|
-
expect.objectContaining({
|
|
160
|
-
name: "node1",
|
|
161
|
-
selected: false
|
|
162
|
-
}),
|
|
163
|
-
expect.objectContaining({
|
|
164
|
-
name: "node2",
|
|
165
|
-
selected: true,
|
|
166
|
-
children: [
|
|
167
|
-
expect.objectContaining({
|
|
168
|
-
name: "node3",
|
|
169
|
-
open: false,
|
|
170
|
-
selected: false
|
|
171
|
-
}),
|
|
172
|
-
]
|
|
173
|
-
}),
|
|
174
|
-
]);
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
context("when an open folder is selected", function () {
|
|
178
|
-
given("autoOpen", function () { return true; });
|
|
179
|
-
given("initialSelectedNode", function () {
|
|
180
|
-
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
181
|
-
});
|
|
182
|
-
it("closes the folder", function () {
|
|
183
|
-
expect(given.$tree).toHaveTreeStructure([
|
|
184
|
-
expect.objectContaining({
|
|
185
|
-
name: "node1",
|
|
186
|
-
open: true,
|
|
187
|
-
selected: false
|
|
188
|
-
}),
|
|
189
|
-
expect.objectContaining({
|
|
190
|
-
name: "node2",
|
|
191
|
-
open: false,
|
|
192
|
-
selected: true
|
|
193
|
-
}),
|
|
194
|
-
]);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
context("when no node is selected", function () {
|
|
198
|
-
it("does nothing", function () {
|
|
199
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
200
|
-
});
|
|
201
|
-
});
|
|
69
|
+
context("when no node is selected", function () {
|
|
70
|
+
it("does nothing", function () {
|
|
71
|
+
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
72
|
+
});
|
|
202
73
|
});
|
|
203
|
-
context("
|
|
204
|
-
|
|
205
|
-
given("
|
|
206
|
-
|
|
74
|
+
context("when the last node is selected", function () {
|
|
75
|
+
given("initialSelectedNode", function () {
|
|
76
|
+
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
77
|
+
});
|
|
78
|
+
it("keeps the node selected", function () {
|
|
79
|
+
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
80
|
+
name: "node2"
|
|
207
81
|
});
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
context("with key up", function () {
|
|
86
|
+
given("pressedKey", function () {
|
|
87
|
+
return KEY_UP;
|
|
88
|
+
});
|
|
89
|
+
context("when a node is selected", function () {
|
|
90
|
+
given("initialSelectedNode", function () {
|
|
91
|
+
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
92
|
+
});
|
|
93
|
+
it("selects the next node", function () {
|
|
94
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
95
|
+
name: "node1",
|
|
96
|
+
selected: true
|
|
97
|
+
}), expect.objectContaining({
|
|
98
|
+
name: "node2",
|
|
99
|
+
selected: false
|
|
100
|
+
})]);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
context("when no node is selected", function () {
|
|
104
|
+
it("does nothing", function () {
|
|
105
|
+
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
context("with key right", function () {
|
|
110
|
+
given("pressedKey", function () {
|
|
111
|
+
return KEY_RIGHT;
|
|
112
|
+
});
|
|
113
|
+
context("when a closed folder is selected", function () {
|
|
114
|
+
given("initialSelectedNode", function () {
|
|
115
|
+
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
116
|
+
});
|
|
117
|
+
it("opens the folder", function () {
|
|
118
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
119
|
+
name: "node1",
|
|
120
|
+
open: true,
|
|
121
|
+
selected: true
|
|
122
|
+
}), expect.objectContaining({
|
|
123
|
+
name: "node2",
|
|
124
|
+
open: false,
|
|
125
|
+
selected: false
|
|
126
|
+
})]);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
context("when an open folder is selected", function () {
|
|
130
|
+
given("autoOpen", function () {
|
|
131
|
+
return true;
|
|
132
|
+
});
|
|
133
|
+
given("initialSelectedNode", function () {
|
|
134
|
+
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
135
|
+
});
|
|
136
|
+
it("selects the first child", function () {
|
|
137
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
138
|
+
name: "node1",
|
|
139
|
+
open: true,
|
|
140
|
+
selected: false,
|
|
141
|
+
children: [expect.objectContaining({
|
|
142
|
+
name: "child1",
|
|
143
|
+
selected: true
|
|
144
|
+
}), expect.objectContaining({
|
|
145
|
+
name: "child2",
|
|
146
|
+
selected: false
|
|
147
|
+
})]
|
|
148
|
+
}), expect.objectContaining({
|
|
149
|
+
name: "node2",
|
|
150
|
+
selected: false
|
|
151
|
+
})]);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
context("when no node is selected", function () {
|
|
155
|
+
it("does nothing", function () {
|
|
156
|
+
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
context("when a child is selected", function () {
|
|
160
|
+
given("initialSelectedNode", function () {
|
|
161
|
+
return given.$tree.tree("getNodeByNameMustExist", "child1");
|
|
162
|
+
});
|
|
163
|
+
it("does nothing", function () {
|
|
164
|
+
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
165
|
+
name: "child1"
|
|
212
166
|
});
|
|
167
|
+
});
|
|
213
168
|
});
|
|
214
|
-
});
|
|
169
|
+
});
|
|
170
|
+
context("with key left", function () {
|
|
171
|
+
given("pressedKey", function () {
|
|
172
|
+
return KEY_LEFT;
|
|
173
|
+
});
|
|
174
|
+
context("when a closed folder is selected", function () {
|
|
175
|
+
given("initialSelectedNode", function () {
|
|
176
|
+
return given.$tree.tree("getNodeByNameMustExist", "node3");
|
|
177
|
+
});
|
|
178
|
+
it("selects the previous node", function () {
|
|
179
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
180
|
+
name: "node1",
|
|
181
|
+
selected: false
|
|
182
|
+
}), expect.objectContaining({
|
|
183
|
+
name: "node2",
|
|
184
|
+
selected: true,
|
|
185
|
+
children: [expect.objectContaining({
|
|
186
|
+
name: "node3",
|
|
187
|
+
open: false,
|
|
188
|
+
selected: false
|
|
189
|
+
})]
|
|
190
|
+
})]);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
context("when an open folder is selected", function () {
|
|
194
|
+
given("autoOpen", function () {
|
|
195
|
+
return true;
|
|
196
|
+
});
|
|
197
|
+
given("initialSelectedNode", function () {
|
|
198
|
+
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
199
|
+
});
|
|
200
|
+
it("closes the folder", function () {
|
|
201
|
+
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
202
|
+
name: "node1",
|
|
203
|
+
open: true,
|
|
204
|
+
selected: false
|
|
205
|
+
}), expect.objectContaining({
|
|
206
|
+
name: "node2",
|
|
207
|
+
open: false,
|
|
208
|
+
selected: true
|
|
209
|
+
})]);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
context("when no node is selected", function () {
|
|
213
|
+
it("does nothing", function () {
|
|
214
|
+
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
context("with page up key", function () {
|
|
219
|
+
given("pressedKey", function () {
|
|
220
|
+
return KEY_PAGE_UP;
|
|
221
|
+
});
|
|
222
|
+
given("initialSelectedNode", function () {
|
|
223
|
+
return given.$tree.tree("getNodeByNameMustExist", "child1");
|
|
224
|
+
});
|
|
225
|
+
it("does nothing", function () {
|
|
226
|
+
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
227
|
+
name: "child1"
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
});
|