jqtree 1.5.2 → 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.
Files changed (174) hide show
  1. package/.eslintrc +1 -0
  2. package/.github/workflows/ci.yml +54 -0
  3. package/.github/workflows/codeql-analysis.yml +28 -0
  4. package/README.md +1 -1
  5. package/_config.yml +1 -1
  6. package/_entries/10_changelog.md +20 -0
  7. package/_entries/{36_showemptynode.md → 36_showemptyfolder.md} +5 -5
  8. package/_entries/38_start_dnd_delay.md +13 -0
  9. package/_entries/{38_tabindex.md → 39_tabindex.md} +0 -0
  10. package/_entries/{39_usecontextmenu.md → 40_usecontextmenu.md} +0 -0
  11. package/_entries/{40_functions.md → 41_functions.md} +0 -0
  12. package/_entries/{41_addparentnode.md → 42_addparentnode.md} +0 -0
  13. package/_entries/{42_addnodeafter.md → 43_addnodeafter.md} +0 -0
  14. package/_entries/{43_addnodebefore.md → 44_addnodebefore.md} +0 -0
  15. package/_entries/{44_appendnode.md → 45_appendnode.md} +0 -0
  16. package/_entries/{45_closenode.md → 46_closenode.md} +0 -0
  17. package/_entries/{46_destroy.md → 47_destroy.md} +0 -0
  18. package/_entries/{47_getnodebycallback.md → 48_getnodebycallback.md} +0 -0
  19. package/_entries/{48_getnodebyid.md → 49_getnodebyid.md} +0 -0
  20. package/_entries/{49_getnodebyhtmlelement.md → 50_getnodebyhtmlelement.md} +0 -0
  21. package/_entries/{50_getselectednode.md → 51_getselectednode.md} +0 -0
  22. package/_entries/{51_getstate.md → 52_getstate.md} +0 -0
  23. package/_entries/{52_gettree.md → 53_gettree.md} +0 -0
  24. package/_entries/{53_isdragging.md → 54_isdragging.md} +0 -0
  25. package/_entries/{54_loaddata.md → 55_loaddata.md} +0 -0
  26. package/_entries/{55_loaddatafromurl.md → 56_loaddatafromurl.md} +0 -0
  27. package/_entries/{56_movedown.md → 57_movedown.md} +0 -0
  28. package/_entries/{57_movenode.md → 58_movenode.md} +0 -0
  29. package/_entries/{58_moveup.md → 59_moveup.md} +0 -0
  30. package/_entries/{59_opennode.md → 60_opennode.md} +0 -0
  31. package/_entries/{60_prependnode.md → 61_prependnode.md} +0 -0
  32. package/_entries/62_refresh.md +12 -0
  33. package/_entries/{61_reload.md → 63_reload.md} +0 -0
  34. package/_entries/{62_removenode.md → 64_removenode.md} +0 -0
  35. package/_entries/{63_selectnode.md → 65_selectnode.md} +0 -0
  36. package/_entries/{64_scrolltonode.md → 66_scrolltonode.md} +0 -0
  37. package/_entries/{65_setoption.md → 67_setoption.md} +0 -0
  38. package/_entries/{66_setstate.md → 68_setstate.md} +0 -0
  39. package/_entries/{67_toggle.md → 69_toggle.md} +0 -0
  40. package/_entries/{68_tojson.md → 70_tojson.md} +0 -0
  41. package/_entries/{69_updatenode.md → 71_updatenode.md} +0 -0
  42. package/_entries/{70_events.md → 72_events.md} +0 -0
  43. package/_entries/{71_tree-click.md → 73_tree-click.md} +0 -0
  44. package/_entries/{72_tree-close.md → 74_tree-close.md} +0 -0
  45. package/_entries/{73_tree-contextmenu.md → 75_tree-contextmenu.md} +0 -0
  46. package/_entries/{74_tree-dblclick.md → 76_tree-dblclick.md} +0 -0
  47. package/_entries/{75_tree-init.md → 77_tree-init.md} +0 -0
  48. package/_entries/{76_tree-load-data.md → 78_tree-load-data.md} +0 -0
  49. package/_entries/{77_tree-loading-data.md → 79_tree-loading-data.md} +0 -0
  50. package/_entries/{78_tree-move.md → 80_tree-move.md} +0 -0
  51. package/_entries/{79_tree-refresh.md → 81_tree-refresh.md} +0 -0
  52. package/_entries/{80_tree-open.md → 82_tree-open.md} +0 -0
  53. package/_entries/{81_tree-select.md → 83_tree-select.md} +0 -0
  54. package/_entries/{82_multiple-selection.md → 84_multiple-selection.md} +0 -0
  55. package/_entries/{83_add-to-selection.md → 85_add-to-selection.md} +0 -0
  56. package/_entries/{84_get-selected-nodes.md → 86_get-selected-nodes.md} +0 -0
  57. package/_entries/{85_is-node-selected.md → 87_is-node-selected.md} +0 -0
  58. package/_entries/{86_remove-from-selection.md → 88_remove-from-selection.md} +0 -0
  59. package/_entries/{87_node-functions.md → 89_node-functions.md} +0 -0
  60. package/_entries/{88_children.md → 90_children.md} +0 -0
  61. package/_entries/{89_getdata.md → 91_getdata.md} +0 -0
  62. package/_entries/{90_getlevel.md → 92_getlevel.md} +0 -0
  63. package/_entries/{91_getnextnode.md → 93_getnextnode.md} +0 -0
  64. package/_entries/{92_getnextsibling.md → 94_getnextsibling.md} +0 -0
  65. package/_entries/{93_getpreviousnode.md → 95_getpreviousnode.md} +0 -0
  66. package/_entries/{94_getprevioussibling.md → 96_getprevioussibling.md} +0 -0
  67. package/_entries/{95_parent.md → 97_parent.md} +0 -0
  68. package/_examples/13_drag_outside.html +2 -1
  69. package/_examples/14_filter.html +113 -0
  70. package/_layouts/base.html +1 -23
  71. package/babel.config.json +11 -0
  72. package/babel.coverage.config.json +4 -0
  73. package/bower.json +1 -1
  74. package/jest-browser.config.js +0 -3
  75. package/jest-jsdom.config.js +1 -2
  76. package/jqtree.css +4 -1
  77. package/jqtree.postcss +3 -0
  78. package/lib/dataLoader.js +146 -98
  79. package/lib/dragAndDropHandler.js +668 -470
  80. package/lib/elementsRenderer.js +282 -197
  81. package/lib/jqtreeOptions.js +1 -2
  82. package/lib/keyHandler.js +134 -87
  83. package/lib/mouse.widget.js +288 -165
  84. package/lib/node.js +693 -505
  85. package/lib/nodeElement.js +329 -205
  86. package/lib/playwright/playwright.test.js +216 -189
  87. package/lib/playwright/testUtil.js +437 -192
  88. package/lib/playwright/visualRegression.js +183 -117
  89. package/lib/saveStateHandler.js +311 -204
  90. package/lib/scrollHandler.js +293 -199
  91. package/lib/selectNodeHandler.js +140 -105
  92. package/lib/simple.widget.js +184 -109
  93. package/lib/test/global.d.js +3 -0
  94. package/lib/test/jqTree/create.test.js +44 -40
  95. package/lib/test/jqTree/events.test.js +185 -138
  96. package/lib/test/jqTree/keyboard.test.js +216 -199
  97. package/lib/test/jqTree/loadOnDemand.test.js +233 -157
  98. package/lib/test/jqTree/methods.test.js +1269 -1000
  99. package/lib/test/jqTree/options.test.js +467 -398
  100. package/lib/test/node.test.js +1036 -873
  101. package/lib/test/nodeUtil.test.js +21 -20
  102. package/lib/test/support/exampleData.js +35 -23
  103. package/lib/test/support/jqTreeMatchers.js +72 -54
  104. package/lib/test/support/matchers.d.js +1 -0
  105. package/lib/test/support/setupTests.js +9 -3
  106. package/lib/test/support/testUtil.js +38 -15
  107. package/lib/test/support/treeStructure.js +41 -32
  108. package/lib/test/util.test.js +21 -20
  109. package/lib/tree.jquery.d.js +1 -0
  110. package/lib/tree.jquery.js +1264 -883
  111. package/lib/types.js +1 -2
  112. package/lib/typings.d.js +2 -0
  113. package/lib/util.js +21 -7
  114. package/lib/version.js +8 -3
  115. package/package.json +43 -36
  116. package/production +4 -4
  117. package/rollup.config.js +16 -11
  118. package/src/dataLoader.ts +6 -6
  119. package/src/dragAndDropHandler.ts +0 -4
  120. package/src/elementsRenderer.ts +4 -0
  121. package/src/jqtreeOptions.ts +33 -32
  122. package/src/mouse.widget.ts +58 -29
  123. package/src/node.ts +32 -46
  124. package/src/nodeElement.ts +17 -9
  125. package/src/playwright/.eslintrc +5 -0
  126. package/src/playwright/playwright.test.ts +30 -30
  127. package/src/playwright/testUtil.ts +36 -37
  128. package/src/saveStateHandler.ts +11 -6
  129. package/src/selectNodeHandler.ts +14 -21
  130. package/src/simple.widget.ts +1 -1
  131. package/src/test/.eslintrc +4 -0
  132. package/src/test/jqTree/create.test.ts +0 -1
  133. package/src/test/jqTree/events.test.ts +12 -13
  134. package/src/test/jqTree/keyboard.test.ts +0 -1
  135. package/src/test/jqTree/loadOnDemand.test.ts +46 -1
  136. package/src/test/jqTree/methods.test.ts +67 -18
  137. package/src/test/jqTree/options.test.ts +5 -6
  138. package/src/test/node.test.ts +2 -2
  139. package/src/test/support/jqTreeMatchers.ts +8 -9
  140. package/src/test/support/matchers.d.ts +2 -4
  141. package/src/test/support/setupTests.ts +2 -1
  142. package/src/tree.jquery.d.ts +19 -13
  143. package/src/tree.jquery.ts +63 -57
  144. package/src/version.ts +1 -1
  145. package/static/bower.json +3 -3
  146. package/static/bower_components/fontawesome/css/all.min.css +2 -2
  147. package/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  148. package/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +774 -627
  149. package/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  150. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  151. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  152. package/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  153. package/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +93 -95
  154. package/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  155. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  156. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  157. package/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  158. package/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +1164 -1074
  159. package/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  160. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  161. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  162. package/static/bower_components/jquery/dist/jquery.js +118 -109
  163. package/static/bower_components/jquery/dist/jquery.min.js +2 -2
  164. package/static/bower_components/jquery-mockjax/dist/jquery.mockjax.js +15 -9
  165. package/static/example.css +13 -0
  166. package/static/example.postcss +13 -0
  167. package/static/example_data.js +33 -36
  168. package/static/examples/filter.js +63 -0
  169. package/tree.jquery.debug.js +4809 -3305
  170. package/tree.jquery.debug.js.map +1 -1
  171. package/tree.jquery.js +3 -3
  172. package/tree.jquery.js.map +1 -1
  173. package/tsconfig.json +1 -0
  174. package/.travis.yml +0 -18
@@ -1,448 +1,517 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- exports.__esModule = true;
39
- var $ = require("jquery");
40
- var givens_1 = require("givens");
41
- var dom_1 = require("@testing-library/dom");
42
- var msw_1 = require("msw");
43
- var node_1 = require("msw/node");
2
+
3
+ var _givens = _interopRequireDefault(require("givens"));
4
+
5
+ var _dom = require("@testing-library/dom");
6
+
7
+ var _msw = require("msw");
8
+
9
+ var _node = require("msw/node");
10
+
44
11
  require("../../tree.jquery");
45
- var exampleData_1 = require("../support/exampleData");
46
- var testUtil_1 = require("../support/testUtil");
12
+
13
+ var _exampleData = _interopRequireDefault(require("../support/exampleData"));
14
+
15
+ var _testUtil = require("../support/testUtil");
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+
19
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
20
+
21
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
22
+
47
23
  var context = describe;
48
24
  beforeEach(function () {
49
- $("body").append('<div id="tree1"></div>');
25
+ $("body").append('<div id="tree1"></div>');
50
26
  });
51
27
  afterEach(function () {
52
- var $tree = $("#tree1");
53
- $tree.tree("destroy");
54
- $tree.remove();
55
- localStorage.clear();
28
+ var $tree = $("#tree1");
29
+ $tree.tree("destroy");
30
+ $tree.remove();
31
+ localStorage.clear();
56
32
  });
57
33
  describe("autoEscape", function () {
58
- var given = givens_1["default"]();
59
- given("$tree", function () { return $("#tree1"); });
60
- beforeEach(function () {
61
- given.$tree.tree({
62
- autoEscape: given.autoEscape,
63
- data: ["<span>test</span>"]
64
- });
34
+ var given = (0, _givens["default"])();
35
+ given("$tree", function () {
36
+ return $("#tree1");
37
+ });
38
+ beforeEach(function () {
39
+ given.$tree.tree({
40
+ autoEscape: given.autoEscape,
41
+ data: ["<span>test</span>"]
65
42
  });
66
- context("with autoEscape true", function () {
67
- given("autoEscape", function () { return true; });
68
- it("escapes the node name", function () {
69
- expect(given.$tree).toHaveTreeStructure([
70
- expect.objectContaining({
71
- name: "&lt;span&gt;test&lt;/span&gt;"
72
- }),
73
- ]);
74
- });
43
+ });
44
+ context("with autoEscape true", function () {
45
+ given("autoEscape", function () {
46
+ return true;
75
47
  });
76
- context("with autoEscape false", function () {
77
- given("autoEscape", function () { return false; });
78
- it("doesn't escape the node name", function () {
79
- expect(given.$tree).toHaveTreeStructure([
80
- expect.objectContaining({
81
- name: "<span>test</span>"
82
- }),
83
- ]);
84
- });
48
+ it("escapes the node name", function () {
49
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
50
+ name: "&lt;span&gt;test&lt;/span&gt;"
51
+ })]);
85
52
  });
53
+ });
54
+ context("with autoEscape false", function () {
55
+ given("autoEscape", function () {
56
+ return false;
57
+ });
58
+ it("doesn't escape the node name", function () {
59
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
60
+ name: "<span>test</span>"
61
+ })]);
62
+ });
63
+ });
86
64
  });
87
65
  describe("autoOpen", function () {
88
- var given = givens_1["default"]();
89
- given("$tree", function () { return $("#tree1"); });
90
- beforeEach(function () {
91
- given.$tree.tree({
92
- autoOpen: given.autoOpen,
93
- data: exampleData_1["default"]
94
- });
66
+ var given = (0, _givens["default"])();
67
+ given("$tree", function () {
68
+ return $("#tree1");
69
+ });
70
+ beforeEach(function () {
71
+ given.$tree.tree({
72
+ autoOpen: given.autoOpen,
73
+ data: _exampleData["default"]
95
74
  });
96
- context("with autoOpen false", function () {
97
- given("autoOpen", function () { return false; });
98
- it("doesn't open any nodes", function () {
99
- expect(given.$tree).toHaveTreeStructure([
100
- expect.objectContaining({ name: "node1", open: false }),
101
- expect.objectContaining({ name: "node2", open: false }),
102
- ]);
103
- });
75
+ });
76
+ context("with autoOpen false", function () {
77
+ given("autoOpen", function () {
78
+ return false;
104
79
  });
105
- context("with autoOpen true", function () {
106
- given("autoOpen", function () { return true; });
107
- it("opens all nodes", function () {
108
- expect(given.$tree).toHaveTreeStructure([
109
- expect.objectContaining({ name: "node1", open: true }),
110
- expect.objectContaining({
111
- name: "node2",
112
- open: true,
113
- children: [
114
- expect.objectContaining({ name: "node3", open: true }),
115
- ]
116
- }),
117
- ]);
118
- });
80
+ it("doesn't open any nodes", function () {
81
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
82
+ name: "node1",
83
+ open: false
84
+ }), expect.objectContaining({
85
+ name: "node2",
86
+ open: false
87
+ })]);
119
88
  });
120
- context("with autoOpen 0", function () {
121
- given("autoOpen", function () { return 0; });
122
- it("opens level 0", function () {
123
- expect(given.$tree).toHaveTreeStructure([
124
- expect.objectContaining({ name: "node1", open: true }),
125
- expect.objectContaining({
126
- name: "node2",
127
- open: true,
128
- children: [
129
- expect.objectContaining({ name: "node3", open: false }),
130
- ]
131
- }),
132
- ]);
133
- });
89
+ });
90
+ context("with autoOpen true", function () {
91
+ given("autoOpen", function () {
92
+ return true;
134
93
  });
135
- context("with autoOpen 1", function () {
136
- given("autoOpen", function () { return 1; });
137
- it("opens levels 1", function () {
138
- expect(given.$tree).toHaveTreeStructure([
139
- expect.objectContaining({ name: "node1", open: true }),
140
- expect.objectContaining({
141
- name: "node2",
142
- open: true,
143
- children: [
144
- expect.objectContaining({ name: "node3", open: true }),
145
- ]
146
- }),
147
- ]);
148
- });
94
+ it("opens all nodes", function () {
95
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
96
+ name: "node1",
97
+ open: true
98
+ }), expect.objectContaining({
99
+ name: "node2",
100
+ open: true,
101
+ children: [expect.objectContaining({
102
+ name: "node3",
103
+ open: true
104
+ })]
105
+ })]);
149
106
  });
150
- context("with autoOpen '1'", function () {
151
- given("autoOpen", function () { return "1"; });
152
- it("opens levels 1", function () {
153
- expect(given.$tree).toHaveTreeStructure([
154
- expect.objectContaining({ name: "node1", open: true }),
155
- expect.objectContaining({
156
- name: "node2",
157
- open: true,
158
- children: [
159
- expect.objectContaining({ name: "node3", open: true }),
160
- ]
161
- }),
162
- ]);
163
- });
107
+ });
108
+ context("with autoOpen 0", function () {
109
+ given("autoOpen", function () {
110
+ return 0;
111
+ });
112
+ it("opens level 0", function () {
113
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
114
+ name: "node1",
115
+ open: true
116
+ }), expect.objectContaining({
117
+ name: "node2",
118
+ open: true,
119
+ children: [expect.objectContaining({
120
+ name: "node3",
121
+ open: false
122
+ })]
123
+ })]);
124
+ });
125
+ });
126
+ context("with autoOpen 1", function () {
127
+ given("autoOpen", function () {
128
+ return 1;
129
+ });
130
+ it("opens levels 1", function () {
131
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
132
+ name: "node1",
133
+ open: true
134
+ }), expect.objectContaining({
135
+ name: "node2",
136
+ open: true,
137
+ children: [expect.objectContaining({
138
+ name: "node3",
139
+ open: true
140
+ })]
141
+ })]);
142
+ });
143
+ });
144
+ context("with autoOpen '1'", function () {
145
+ given("autoOpen", function () {
146
+ return "1";
147
+ });
148
+ it("opens levels 1", function () {
149
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
150
+ name: "node1",
151
+ open: true
152
+ }), expect.objectContaining({
153
+ name: "node2",
154
+ open: true,
155
+ children: [expect.objectContaining({
156
+ name: "node3",
157
+ open: true
158
+ })]
159
+ })]);
164
160
  });
161
+ });
165
162
  });
166
163
  describe("dataUrl", function () {
167
- var exampleStructure = [
168
- expect.objectContaining({ name: "node1" }),
169
- expect.objectContaining({ name: "node2" }),
170
- ];
171
- var testCases = [
172
- {
173
- name: "string",
174
- dataUrl: "/tree/",
175
- expectedNode: "node1",
176
- expectedStructure: exampleStructure
177
- },
178
- {
179
- name: "object with url and headers",
180
- dataUrl: {
181
- url: "/tree/",
182
- headers: { node: "test-node" }
183
- },
184
- expectedNode: "test-node",
185
- expectedStructure: [expect.objectContaining({ name: "test-node" })]
186
- },
187
- {
188
- name: "function",
189
- dataUrl: function () { return ({ url: "/tree/" }); },
190
- expectedNode: "node1",
191
- expectedStructure: exampleStructure
192
- },
193
- ];
194
- var server = null;
195
- beforeAll(function () {
196
- server = node_1.setupServer(msw_1.rest.get("/tree/", function (request, response, ctx) {
197
- var nodeName = request.headers.get("node");
198
- var data = nodeName ? [nodeName] : exampleData_1["default"];
199
- return response(ctx.status(200), ctx.json(data));
200
- }));
201
- server.listen();
202
- });
203
- afterAll(function () {
204
- server === null || server === void 0 ? void 0 : server.close();
205
- });
206
- var given = givens_1["default"]();
207
- given("$tree", function () { return $("#tree1"); });
208
- testCases.forEach(function (_a) {
209
- var dataUrl = _a.dataUrl, expectedNode = _a.expectedNode, expectedStructure = _a.expectedStructure, name = _a.name;
210
- context("with " + name, function () {
211
- it("loads the data from the url", function () { return __awaiter(void 0, void 0, void 0, function () {
212
- return __generator(this, function (_a) {
213
- switch (_a.label) {
214
- case 0:
215
- given.$tree.tree({ dataUrl: dataUrl });
216
- return [4 /*yield*/, dom_1.screen.findByText(expectedNode)];
217
- case 1:
218
- _a.sent();
219
- expect(given.$tree).toHaveTreeStructure(expectedStructure);
220
- return [2 /*return*/];
221
- }
164
+ var exampleStructure = [expect.objectContaining({
165
+ name: "node1"
166
+ }), expect.objectContaining({
167
+ name: "node2"
168
+ })];
169
+ var testCases = [{
170
+ name: "string",
171
+ dataUrl: "/tree/",
172
+ expectedNode: "node1",
173
+ expectedStructure: exampleStructure
174
+ }, {
175
+ name: "object with url and headers",
176
+ dataUrl: {
177
+ url: "/tree/",
178
+ headers: {
179
+ node: "test-node"
180
+ }
181
+ },
182
+ expectedNode: "test-node",
183
+ expectedStructure: [expect.objectContaining({
184
+ name: "test-node"
185
+ })]
186
+ }, {
187
+ name: "function",
188
+ dataUrl: function dataUrl() {
189
+ return {
190
+ url: "/tree/"
191
+ };
192
+ },
193
+ expectedNode: "node1",
194
+ expectedStructure: exampleStructure
195
+ }];
196
+ var server = null;
197
+ beforeAll(function () {
198
+ server = (0, _node.setupServer)(_msw.rest.get("/tree/", function (request, response, ctx) {
199
+ var nodeName = request.headers.get("node");
200
+ var data = nodeName ? [nodeName] : _exampleData["default"];
201
+ return response(ctx.status(200), ctx.json(data));
202
+ }));
203
+ server.listen();
204
+ });
205
+ afterAll(function () {
206
+ var _server;
207
+
208
+ (_server = server) === null || _server === void 0 ? void 0 : _server.close();
209
+ });
210
+ var given = (0, _givens["default"])();
211
+ given("$tree", function () {
212
+ return $("#tree1");
213
+ });
214
+ testCases.forEach(function (_ref) {
215
+ var dataUrl = _ref.dataUrl,
216
+ expectedNode = _ref.expectedNode,
217
+ expectedStructure = _ref.expectedStructure,
218
+ name = _ref.name;
219
+ context("with ".concat(name), function () {
220
+ it("loads the data from the url", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
221
+ return regeneratorRuntime.wrap(function _callee$(_context) {
222
+ while (1) {
223
+ switch (_context.prev = _context.next) {
224
+ case 0:
225
+ given.$tree.tree({
226
+ dataUrl: dataUrl
222
227
  });
223
- }); });
224
- });
228
+ _context.next = 3;
229
+ return _dom.screen.findByText(expectedNode);
230
+
231
+ case 3:
232
+ expect(given.$tree).toHaveTreeStructure(expectedStructure);
233
+
234
+ case 4:
235
+ case "end":
236
+ return _context.stop();
237
+ }
238
+ }
239
+ }, _callee);
240
+ })));
225
241
  });
242
+ });
226
243
  });
227
244
  describe("onCanSelectNode", function () {
228
- var given = givens_1["default"]();
229
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
230
- given("$tree", function () { return $("#tree1"); });
231
- beforeEach(function () {
232
- given.$tree.tree({
233
- data: exampleData_1["default"],
234
- onCanSelectNode: function (node) { return node.name !== "node1"; }
235
- });
236
- });
237
- it("doesn't select the node", function () {
238
- given.$tree.tree("selectNode", given.node1);
239
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
245
+ var given = (0, _givens["default"])();
246
+ given("node1", function () {
247
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
248
+ });
249
+ given("$tree", function () {
250
+ return $("#tree1");
251
+ });
252
+ beforeEach(function () {
253
+ given.$tree.tree({
254
+ data: _exampleData["default"],
255
+ onCanSelectNode: function onCanSelectNode(node) {
256
+ return node.name !== "node1";
257
+ }
240
258
  });
259
+ });
260
+ it("doesn't select the node", function () {
261
+ given.$tree.tree("selectNode", given.node1);
262
+ expect(given.$tree.tree("getSelectedNode")).toBe(false);
263
+ });
241
264
  });
242
265
  describe("onCreateLi", function () {
243
- var given = givens_1["default"]();
244
- given("$tree", function () { return $("#tree1"); });
245
- beforeEach(function () {
246
- given.$tree.tree({
247
- data: exampleData_1["default"],
248
- onCreateLi: function (node, el) {
249
- testUtil_1.titleSpan(el).text("_" + node.name + "_");
250
- }
251
- });
252
- });
253
- it("is called when creating a node", function () {
254
- expect(given.$tree).toHaveTreeStructure([
255
- expect.objectContaining({ name: "_node1_" }),
256
- expect.objectContaining({ name: "_node2_" }),
257
- ]);
266
+ var given = (0, _givens["default"])();
267
+ given("$tree", function () {
268
+ return $("#tree1");
269
+ });
270
+ beforeEach(function () {
271
+ given.$tree.tree({
272
+ data: _exampleData["default"],
273
+ onCreateLi: function onCreateLi(node, el) {
274
+ (0, _testUtil.titleSpan)(el).text("_".concat(node.name, "_"));
275
+ }
258
276
  });
277
+ });
278
+ it("is called when creating a node", function () {
279
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
280
+ name: "_node1_"
281
+ }), expect.objectContaining({
282
+ name: "_node2_"
283
+ })]);
284
+ });
259
285
  });
260
286
  describe("onGetStateFromStorage and onSetStateFromStorage", function () {
261
- var savedState = "";
262
- var setState = function (state) {
263
- savedState = state;
264
- };
265
- var getState = function () { return savedState; };
266
- var given = givens_1["default"]();
267
- given("initialState", function () { return ""; });
268
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
269
- given("$tree", function () { return $("#tree1"); });
287
+ var savedState = "";
288
+
289
+ var setState = function setState(state) {
290
+ savedState = state;
291
+ };
292
+
293
+ var getState = function getState() {
294
+ return savedState;
295
+ };
296
+
297
+ var given = (0, _givens["default"])();
298
+ given("initialState", function () {
299
+ return "";
300
+ });
301
+ given("node1", function () {
302
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
303
+ });
304
+ given("$tree", function () {
305
+ return $("#tree1");
306
+ });
307
+ beforeEach(function () {
308
+ savedState = given.initialState;
309
+ given.$tree.tree({
310
+ autoOpen: false,
311
+ data: _exampleData["default"],
312
+ onGetStateFromStorage: getState,
313
+ onSetStateFromStorage: setState,
314
+ saveState: true
315
+ });
316
+ });
317
+ context("with an open and a selected node", function () {
270
318
  beforeEach(function () {
271
- savedState = given.initialState;
272
- given.$tree.tree({
273
- autoOpen: false,
274
- data: exampleData_1["default"],
275
- onGetStateFromStorage: getState,
276
- onSetStateFromStorage: setState,
277
- saveState: true
278
- });
319
+ given.$tree.tree("selectNode", given.node1);
320
+ given.$tree.tree("openNode", given.node1);
279
321
  });
280
- context("with an open and a selected node", function () {
281
- beforeEach(function () {
282
- given.$tree.tree("selectNode", given.node1);
283
- given.$tree.tree("openNode", given.node1);
284
- });
285
- it("saves the state", function () {
286
- expect(JSON.parse(savedState)).toEqual({
287
- open_nodes: [123],
288
- selected_node: [123]
289
- });
290
- });
322
+ it("saves the state", function () {
323
+ expect(JSON.parse(savedState)).toEqual({
324
+ open_nodes: [123],
325
+ selected_node: [123]
326
+ });
291
327
  });
292
- context("with a saved state", function () {
293
- given("initialState", function () {
294
- return JSON.stringify({
295
- open_nodes: [123],
296
- selected_node: [123]
297
- });
298
- });
299
- it("restores the state", function () {
300
- expect(given.$tree).toHaveTreeStructure([
301
- expect.objectContaining({
302
- name: "node1",
303
- open: true
304
- }),
305
- expect.objectContaining({ name: "node2", open: false }),
306
- ]);
307
- expect(given.node1.element).toBeSelected();
308
- });
328
+ });
329
+ context("with a saved state", function () {
330
+ given("initialState", function () {
331
+ return JSON.stringify({
332
+ open_nodes: [123],
333
+ selected_node: [123]
334
+ });
335
+ });
336
+ it("restores the state", function () {
337
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
338
+ name: "node1",
339
+ open: true
340
+ }), expect.objectContaining({
341
+ name: "node2",
342
+ open: false
343
+ })]);
344
+ expect(given.node1.element).toBeSelected();
309
345
  });
346
+ });
310
347
  });
311
348
  describe("onLoadFailed", function () {
312
- var given = givens_1["default"]();
313
- given("$tree", function () { return $("#tree1"); });
314
- context("when the loading fails", function () {
315
- var server = null;
316
- beforeAll(function () {
317
- server = node_1.setupServer(msw_1.rest.get("/tree/", function (_request, response, ctx) {
318
- return response(ctx.status(500), ctx.body("Internal server error"));
319
- }));
320
- server.listen();
321
- });
322
- afterAll(function () {
323
- server === null || server === void 0 ? void 0 : server.close();
324
- });
325
- it("calls onLoadFailed", function () {
326
- return new Promise(function (done) {
327
- given.$tree.tree({
328
- dataUrl: "/tree/",
329
- onLoadFailed: function (jqXHR) {
330
- expect(jqXHR.status).toBe(500);
331
- done();
332
- }
333
- });
334
- });
349
+ var given = (0, _givens["default"])();
350
+ given("$tree", function () {
351
+ return $("#tree1");
352
+ });
353
+ context("when the loading fails", function () {
354
+ var server = null;
355
+ beforeAll(function () {
356
+ server = (0, _node.setupServer)(_msw.rest.get("/tree/", function (_request, response, ctx) {
357
+ return response(ctx.status(500), ctx.body("Internal server error"));
358
+ }));
359
+ server.listen();
360
+ });
361
+ afterAll(function () {
362
+ var _server2;
363
+
364
+ (_server2 = server) === null || _server2 === void 0 ? void 0 : _server2.close();
365
+ });
366
+ it("calls onLoadFailed", function () {
367
+ return new Promise(function (done) {
368
+ given.$tree.tree({
369
+ dataUrl: "/tree/",
370
+ onLoadFailed: function onLoadFailed(jqXHR) {
371
+ expect(jqXHR.status).toBe(500);
372
+ done();
373
+ }
335
374
  });
375
+ });
336
376
  });
377
+ });
337
378
  });
338
379
  describe("rtl", function () {
339
- var given = givens_1["default"]();
340
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
341
- given("$tree", function () { return $("#tree1"); });
342
- context("with the rtl option is true", function () {
343
- beforeEach(function () {
344
- given.$tree.tree({ data: exampleData_1["default"], rtl: true });
345
- });
346
- it("has a different closed icon", function () {
347
- expect(testUtil_1.togglerLink(given.node1.element).text()).toEqual("◀");
348
- });
380
+ var given = (0, _givens["default"])();
381
+ given("node1", function () {
382
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
383
+ });
384
+ given("$tree", function () {
385
+ return $("#tree1");
386
+ });
387
+ context("with the rtl option is true", function () {
388
+ beforeEach(function () {
389
+ given.$tree.tree({
390
+ data: _exampleData["default"],
391
+ rtl: true
392
+ });
349
393
  });
350
- context("with the rtl data option", function () {
351
- beforeEach(function () {
352
- given.$tree.attr("data-rtl", "true");
353
- given.$tree.tree({ data: exampleData_1["default"] });
354
- });
355
- it("has a different closed icon", function () {
356
- expect(testUtil_1.togglerLink(given.node1.element).text()).toEqual("");
357
- });
394
+ it("has a different closed icon", function () {
395
+ expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
396
+ });
397
+ });
398
+ context("with the rtl data option", function () {
399
+ beforeEach(function () {
400
+ given.$tree.attr("data-rtl", "true");
401
+ given.$tree.tree({
402
+ data: _exampleData["default"]
403
+ });
404
+ });
405
+ it("has a different closed icon", function () {
406
+ expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
358
407
  });
408
+ });
359
409
  });
360
410
  describe("saveState", function () {
361
- var given = givens_1["default"]();
362
- given("node1", function () { return given.$tree.tree("getNodeByNameMustExist", "node1"); });
363
- given("$tree", function () { return $("#tree1"); });
364
- context("when a node is open and selected", function () {
365
- beforeEach(function () {
366
- given.$tree.tree({
367
- animationSpeed: 0,
368
- autoOpen: false,
369
- data: exampleData_1["default"],
370
- saveState: given.saveState
371
- });
372
- given.$tree.tree("selectNode", given.node1);
373
- given.$tree.tree("openNode", given.node1);
374
- });
375
- context("when saveState is true", function () {
376
- given("saveState", function () { return true; });
377
- it("saves the state to local storage", function () {
378
- expect(localStorage.getItem("tree")).toEqual('{"open_nodes":[123],"selected_node":[123]}');
379
- });
380
- });
381
- context("when saveState is a string", function () {
382
- given("saveState", function () { return "my-state"; });
383
- it("uses the string as a key", function () {
384
- expect(localStorage.getItem("my-state")).toEqual('{"open_nodes":[123],"selected_node":[123]}');
385
- });
386
- });
387
- context("when saveState is false", function () {
388
- given("saveState", function () { return false; });
389
- it("doesn't save to local storage", function () {
390
- expect(localStorage.getItem("tree")).toBeNull();
391
- });
392
- });
411
+ var given = (0, _givens["default"])();
412
+ given("node1", function () {
413
+ return given.$tree.tree("getNodeByNameMustExist", "node1");
414
+ });
415
+ given("$tree", function () {
416
+ return $("#tree1");
417
+ });
418
+ context("when a node is open and selected", function () {
419
+ beforeEach(function () {
420
+ given.$tree.tree({
421
+ animationSpeed: 0,
422
+ autoOpen: false,
423
+ data: _exampleData["default"],
424
+ saveState: given.saveState
425
+ });
426
+ given.$tree.tree("selectNode", given.node1);
427
+ given.$tree.tree("openNode", given.node1);
393
428
  });
394
- context("when there is a state in the local storage", function () {
395
- given("saveState", function () { return true; });
396
- beforeEach(function () {
397
- localStorage.setItem("tree", '{"open_nodes":[123],"selected_node":[123]}');
398
- given.$tree.tree({
399
- animationSpeed: 0,
400
- autoOpen: false,
401
- data: exampleData_1["default"],
402
- saveState: given.saveState
403
- });
404
- });
405
- it("restores the state", function () {
406
- expect(given.$tree).toHaveTreeStructure([
407
- expect.objectContaining({
408
- name: "node1",
409
- open: true,
410
- selected: true
411
- }),
412
- expect.objectContaining({
413
- name: "node2",
414
- open: false,
415
- selected: false
416
- }),
417
- ]);
418
- });
429
+ context("when saveState is true", function () {
430
+ given("saveState", function () {
431
+ return true;
432
+ });
433
+ it("saves the state to local storage", function () {
434
+ expect(localStorage.getItem("tree")).toBe('{"open_nodes":[123],"selected_node":[123]}');
435
+ });
436
+ });
437
+ context("when saveState is a string", function () {
438
+ given("saveState", function () {
439
+ return "my-state";
440
+ });
441
+ it("uses the string as a key", function () {
442
+ expect(localStorage.getItem("my-state")).toBe('{"open_nodes":[123],"selected_node":[123]}');
443
+ });
444
+ });
445
+ context("when saveState is false", function () {
446
+ given("saveState", function () {
447
+ return false;
448
+ });
449
+ it("doesn't save to local storage", function () {
450
+ expect(localStorage.getItem("tree")).toBeNull();
451
+ });
419
452
  });
453
+ });
454
+ context("when there is a state in the local storage", function () {
455
+ given("saveState", function () {
456
+ return true;
457
+ });
458
+ beforeEach(function () {
459
+ localStorage.setItem("tree", '{"open_nodes":[123],"selected_node":[123]}');
460
+ given.$tree.tree({
461
+ animationSpeed: 0,
462
+ autoOpen: false,
463
+ data: _exampleData["default"],
464
+ saveState: given.saveState
465
+ });
466
+ });
467
+ it("restores the state", function () {
468
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
469
+ name: "node1",
470
+ open: true,
471
+ selected: true
472
+ }), expect.objectContaining({
473
+ name: "node2",
474
+ open: false,
475
+ selected: false
476
+ })]);
477
+ });
478
+ });
420
479
  });
421
480
  describe("showEmptyFolder", function () {
422
- context("when children attribute is an empty array", function () {
423
- var given = givens_1["default"]();
424
- given("$tree", function () { return $("#tree1"); });
425
- beforeEach(function () {
426
- given.$tree.tree({
427
- data: [{ name: "parent1", children: [] }],
428
- showEmptyFolder: given.showEmptyFolder
429
- });
430
- });
431
- context("with showEmptyFolder false", function () {
432
- given("showEmptyFolder", function () { return false; });
433
- it("creates a child node", function () {
434
- expect(given.$tree).toHaveTreeStructure([
435
- expect.objectContaining({ name: "parent1" }),
436
- ]);
437
- });
438
- });
439
- context("with showEmptyFolder true", function () {
440
- given("showEmptyFolder", function () { return true; });
441
- it("creates a folder", function () {
442
- expect(given.$tree).toHaveTreeStructure([
443
- expect.objectContaining({ name: "parent1", children: [] }),
444
- ]);
445
- });
446
- });
481
+ context("when children attribute is an empty array", function () {
482
+ var given = (0, _givens["default"])();
483
+ given("$tree", function () {
484
+ return $("#tree1");
447
485
  });
448
- });
486
+ beforeEach(function () {
487
+ given.$tree.tree({
488
+ data: [{
489
+ name: "parent1",
490
+ children: []
491
+ }],
492
+ showEmptyFolder: given.showEmptyFolder
493
+ });
494
+ });
495
+ context("with showEmptyFolder false", function () {
496
+ given("showEmptyFolder", function () {
497
+ return false;
498
+ });
499
+ it("creates a child node", function () {
500
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
501
+ name: "parent1"
502
+ })]);
503
+ });
504
+ });
505
+ context("with showEmptyFolder true", function () {
506
+ given("showEmptyFolder", function () {
507
+ return true;
508
+ });
509
+ it("creates a folder", function () {
510
+ expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
511
+ name: "parent1",
512
+ children: []
513
+ })]);
514
+ });
515
+ });
516
+ });
517
+ });