jqtree 1.7.5 → 1.8.0

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 (90) hide show
  1. package/bower.json +1 -1
  2. package/config/babel.config.json +1 -1
  3. package/config/production +2 -0
  4. package/devserver/devserver_scroll.js +8 -0
  5. package/devserver/test_scroll.html +28 -0
  6. package/devserver/test_scroll_container.html +39 -0
  7. package/docs/_config.yml +1 -1
  8. package/docs/_entries/general/changelog.md +7 -0
  9. package/package.json +5 -1
  10. package/src/dataLoader.ts +44 -19
  11. package/src/dragAndDropHandler/dragElement.ts +42 -0
  12. package/src/dragAndDropHandler/hitAreasGenerator.ts +175 -0
  13. package/src/dragAndDropHandler/index.ts +470 -0
  14. package/src/dragAndDropHandler/types.ts +12 -0
  15. package/src/dragAndDropHandler/visibleNodeIterator.ts +97 -0
  16. package/src/elementsRenderer.ts +75 -40
  17. package/src/jqtreeMethodTypes.ts +40 -0
  18. package/src/jqtreeOptions.ts +43 -25
  19. package/src/keyHandler.ts +59 -30
  20. package/src/mouse.widget.ts +3 -3
  21. package/src/mouseWidgetTypes.ts +6 -0
  22. package/src/nodeElement/borderDropHint.ts +32 -0
  23. package/src/nodeElement/folderElement.ts +133 -0
  24. package/src/nodeElement/ghostDropHint.ts +68 -0
  25. package/src/nodeElement/index.ts +101 -0
  26. package/src/playwright/coverage.ts +1 -4
  27. package/src/playwright/playwright.test.ts +0 -4
  28. package/src/saveStateHandler.ts +75 -26
  29. package/src/scrollHandler.ts +13 -7
  30. package/src/selectNodeHandler.ts +10 -16
  31. package/src/test/jqTree/keyboard.test.ts +18 -23
  32. package/src/test/jqTree/methods.test.ts +32 -3
  33. package/src/test/jqTree/options.test.ts +15 -4
  34. package/src/test/node.test.ts +1 -1
  35. package/src/tree.jquery.ts +239 -57
  36. package/src/util.ts +3 -0
  37. package/src/version.ts +1 -1
  38. package/tree.jquery.debug.js +1728 -2576
  39. package/tree.jquery.debug.js.map +1 -1
  40. package/tree.jquery.js +2 -2
  41. package/tree.jquery.js.map +1 -1
  42. package/lib/dataLoader.js +0 -123
  43. package/lib/dragAndDropHandler.js +0 -588
  44. package/lib/elementsRenderer.js +0 -267
  45. package/lib/jqtreeOptions.js +0 -1
  46. package/lib/keyHandler.js +0 -111
  47. package/lib/mouse.widget.js +0 -255
  48. package/lib/node.js +0 -708
  49. package/lib/nodeElement.js +0 -274
  50. package/lib/nodeUtils.js +0 -10
  51. package/lib/playwright/coverage.js +0 -99
  52. package/lib/playwright/playwright.test.js +0 -606
  53. package/lib/playwright/testUtils.js +0 -210
  54. package/lib/saveStateHandler.js +0 -277
  55. package/lib/scrollHandler/containerScrollParent.js +0 -160
  56. package/lib/scrollHandler/createScrollParent.js +0 -57
  57. package/lib/scrollHandler/documentScrollParent.js +0 -169
  58. package/lib/scrollHandler/scrollParent.js +0 -58
  59. package/lib/scrollHandler/types.js +0 -1
  60. package/lib/scrollHandler.js +0 -71
  61. package/lib/selectNodeHandler.js +0 -128
  62. package/lib/simple.widget.js +0 -158
  63. package/lib/test/global.d.js +0 -3
  64. package/lib/test/jqTree/accessibility.test.js +0 -37
  65. package/lib/test/jqTree/create.test.js +0 -48
  66. package/lib/test/jqTree/events.test.js +0 -210
  67. package/lib/test/jqTree/keyboard.test.js +0 -225
  68. package/lib/test/jqTree/loadOnDemand.test.js +0 -218
  69. package/lib/test/jqTree/methods.test.js +0 -1348
  70. package/lib/test/jqTree/options.test.js +0 -548
  71. package/lib/test/jqTree/scrollHandler/containerScrollParent.test.js +0 -94
  72. package/lib/test/node.test.js +0 -1202
  73. package/lib/test/nodeUtil.test.js +0 -27
  74. package/lib/test/nodeUtils.test.js +0 -20
  75. package/lib/test/support/exampleData.js +0 -35
  76. package/lib/test/support/jqTreeMatchers.js +0 -70
  77. package/lib/test/support/matchers.d.js +0 -1
  78. package/lib/test/support/setupTests.js +0 -7
  79. package/lib/test/support/testUtil.js +0 -29
  80. package/lib/test/support/treeStructure.js +0 -38
  81. package/lib/test/util.test.js +0 -26
  82. package/lib/tree.jquery.d.js +0 -1
  83. package/lib/tree.jquery.js +0 -1105
  84. package/lib/types.js +0 -1
  85. package/lib/typings.d.js +0 -2
  86. package/lib/util.js +0 -15
  87. package/lib/version.js +0 -8
  88. package/src/dragAndDropHandler.ts +0 -713
  89. package/src/nodeElement.ts +0 -272
  90. package/src/types.ts +0 -19
@@ -1,548 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- var _givens = _interopRequireDefault(require("givens"));
5
- var _dom = require("@testing-library/dom");
6
- var _msw = require("msw");
7
- var _node = require("msw/node");
8
- require("../../tree.jquery");
9
- var _exampleData = _interopRequireDefault(require("../support/exampleData"));
10
- var _testUtil = require("../support/testUtil");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
13
- 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); } }
14
- 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); }); }; }
15
- var context = describe;
16
- var server = (0, _node.setupServer)();
17
- beforeAll(function () {
18
- return server.listen();
19
- });
20
- beforeEach(function () {
21
- $("body").append('<div id="tree1"></div>');
22
- });
23
- afterEach(function () {
24
- server.resetHandlers();
25
- var $tree = $("#tree1");
26
- $tree.tree("destroy");
27
- $tree.remove();
28
- localStorage.clear();
29
- });
30
- afterAll(function () {
31
- return server.close();
32
- });
33
- describe("autoEscape", function () {
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>"]
42
- });
43
- });
44
- context("with autoEscape true", function () {
45
- given("autoEscape", function () {
46
- return true;
47
- });
48
- it("escapes the node name", function () {
49
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
50
- name: "&lt;span&gt;test&lt;/span&gt;"
51
- })]);
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
- });
64
- });
65
- describe("autoOpen", function () {
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"]
74
- });
75
- });
76
- context("with autoOpen false", function () {
77
- given("autoOpen", function () {
78
- return false;
79
- });
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
- })]);
88
- });
89
- });
90
- context("with autoOpen true", function () {
91
- given("autoOpen", function () {
92
- return true;
93
- });
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
- })]);
106
- });
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
- })]);
160
- });
161
- });
162
- });
163
- describe("closedIcon", function () {
164
- it("renders a string", function () {
165
- var $tree = $("#tree1");
166
- $tree.tree({
167
- closedIcon: "closed",
168
- data: _exampleData["default"]
169
- });
170
- var $button = $tree.find("a.jqtree-toggler:first");
171
- expect($button.text()).toBe("closed");
172
- });
173
- it("escapes html", function () {
174
- var $tree = $("#tree1");
175
- $tree.tree({
176
- closedIcon: "<span>test</span>",
177
- data: _exampleData["default"]
178
- });
179
- var $button = $tree.find("a.jqtree-toggler:first");
180
- expect($button.text()).toBe("<span>test</span>");
181
- });
182
- it("renders a jquery element", function () {
183
- var $tree = $("#tree1");
184
- $tree.tree({
185
- closedIcon: $("<span class='abc'>test</span>"),
186
- data: _exampleData["default"]
187
- });
188
- var $span = $tree.find("a.jqtree-toggler:first span.abc");
189
- expect($span.text()).toBe("test");
190
- });
191
- it("renders a html element", function () {
192
- var closedIcon = document.createElement("span");
193
- closedIcon.className = "abc";
194
- closedIcon.textContent = "test";
195
- var $tree = $("#tree1");
196
- $tree.tree({
197
- closedIcon: closedIcon,
198
- data: _exampleData["default"]
199
- });
200
- var $span = $tree.find("a.jqtree-toggler:first span.abc");
201
- expect($span.text()).toBe("test");
202
- });
203
- });
204
- describe("dataUrl", function () {
205
- var exampleStructure = [expect.objectContaining({
206
- name: "node1"
207
- }), expect.objectContaining({
208
- name: "node2"
209
- })];
210
- var testCases = [{
211
- name: "string",
212
- dataUrl: "/tree/",
213
- expectedNode: "node1",
214
- expectedStructure: exampleStructure
215
- }, {
216
- name: "object with url and headers",
217
- dataUrl: {
218
- url: "/tree/",
219
- headers: {
220
- node: "test-node"
221
- }
222
- },
223
- expectedNode: "test-node",
224
- expectedStructure: [expect.objectContaining({
225
- name: "test-node"
226
- })]
227
- }, {
228
- name: "function",
229
- dataUrl: function dataUrl() {
230
- return {
231
- url: "/tree/"
232
- };
233
- },
234
- expectedNode: "node1",
235
- expectedStructure: exampleStructure
236
- }];
237
- beforeEach(function () {
238
- server.use(_msw.rest.get("/tree/", function (request, response, ctx) {
239
- var nodeName = request.headers.get("node");
240
- var data = nodeName ? [nodeName] : _exampleData["default"];
241
- return response(ctx.status(200), ctx.json(data));
242
- }));
243
- });
244
- var given = (0, _givens["default"])();
245
- given("$tree", function () {
246
- return $("#tree1");
247
- });
248
- testCases.forEach(function (_ref) {
249
- var dataUrl = _ref.dataUrl,
250
- expectedNode = _ref.expectedNode,
251
- expectedStructure = _ref.expectedStructure,
252
- name = _ref.name;
253
- context("with ".concat(name), function () {
254
- it("loads the data from the url", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
255
- return _regeneratorRuntime().wrap(function _callee$(_context) {
256
- while (1) switch (_context.prev = _context.next) {
257
- case 0:
258
- given.$tree.tree({
259
- dataUrl: dataUrl
260
- });
261
- _context.next = 3;
262
- return _dom.screen.findByText(expectedNode);
263
- case 3:
264
- expect(given.$tree).toHaveTreeStructure(expectedStructure);
265
- case 4:
266
- case "end":
267
- return _context.stop();
268
- }
269
- }, _callee);
270
- })));
271
- });
272
- });
273
- });
274
- describe("onCanSelectNode", function () {
275
- var given = (0, _givens["default"])();
276
- given("node1", function () {
277
- return given.$tree.tree("getNodeByNameMustExist", "node1");
278
- });
279
- given("$tree", function () {
280
- return $("#tree1");
281
- });
282
- beforeEach(function () {
283
- given.$tree.tree({
284
- data: _exampleData["default"],
285
- onCanSelectNode: function onCanSelectNode(node) {
286
- return node.name !== "node1";
287
- }
288
- });
289
- });
290
- it("doesn't select the node", function () {
291
- given.$tree.tree("selectNode", given.node1);
292
- expect(given.$tree.tree("getSelectedNode")).toBe(false);
293
- });
294
- });
295
- describe("onCreateLi", function () {
296
- var given = (0, _givens["default"])();
297
- given("$tree", function () {
298
- return $("#tree1");
299
- });
300
- beforeEach(function () {
301
- given.$tree.tree({
302
- data: _exampleData["default"],
303
- onCreateLi: function onCreateLi(node, el) {
304
- (0, _testUtil.titleSpan)(el).text("_".concat(node.name, "_"));
305
- }
306
- });
307
- });
308
- it("is called when creating a node", function () {
309
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
310
- name: "_node1_"
311
- }), expect.objectContaining({
312
- name: "_node2_"
313
- })]);
314
- });
315
- });
316
- describe("onGetStateFromStorage and onSetStateFromStorage", function () {
317
- var savedState = "";
318
- var setState = function setState(state) {
319
- savedState = state;
320
- };
321
- var getState = function getState() {
322
- return savedState;
323
- };
324
- var given = (0, _givens["default"])();
325
- given("initialState", function () {
326
- return "";
327
- });
328
- given("node1", function () {
329
- return given.$tree.tree("getNodeByNameMustExist", "node1");
330
- });
331
- given("$tree", function () {
332
- return $("#tree1");
333
- });
334
- beforeEach(function () {
335
- savedState = given.initialState;
336
- given.$tree.tree({
337
- autoOpen: false,
338
- data: _exampleData["default"],
339
- onGetStateFromStorage: getState,
340
- onSetStateFromStorage: setState,
341
- saveState: true
342
- });
343
- });
344
- context("with an open and a selected node", function () {
345
- beforeEach(function () {
346
- given.$tree.tree("selectNode", given.node1);
347
- given.$tree.tree("openNode", given.node1);
348
- });
349
- it("saves the state", function () {
350
- expect(JSON.parse(savedState)).toEqual({
351
- open_nodes: [123],
352
- selected_node: [123]
353
- });
354
- });
355
- });
356
- context("with a saved state", function () {
357
- given("initialState", function () {
358
- return JSON.stringify({
359
- open_nodes: [123],
360
- selected_node: [123]
361
- });
362
- });
363
- it("restores the state", function () {
364
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
365
- name: "node1",
366
- open: true
367
- }), expect.objectContaining({
368
- name: "node2",
369
- open: false
370
- })]);
371
- expect(given.node1.element).toBeSelected();
372
- });
373
- });
374
- });
375
- describe("onLoadFailed", function () {
376
- var given = (0, _givens["default"])();
377
- given("$tree", function () {
378
- return $("#tree1");
379
- });
380
- context("when the loading fails", function () {
381
- beforeEach(function () {
382
- server.use(_msw.rest.get("/tree/", function (_request, response, ctx) {
383
- return response(ctx.status(500), ctx.body("Internal server error"));
384
- }));
385
- });
386
- it("calls onLoadFailed", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
387
- var onLoadFailed;
388
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
389
- while (1) switch (_context2.prev = _context2.next) {
390
- case 0:
391
- onLoadFailed = jest.fn();
392
- given.$tree.tree({
393
- dataUrl: "/tree/",
394
- onLoadFailed: onLoadFailed
395
- });
396
- _context2.next = 4;
397
- return (0, _dom.waitFor)(function () {
398
- expect(onLoadFailed).toHaveBeenCalledWith(expect.objectContaining({
399
- status: 500
400
- }));
401
- });
402
- case 4:
403
- case "end":
404
- return _context2.stop();
405
- }
406
- }, _callee2);
407
- })));
408
- });
409
- });
410
- describe("rtl", function () {
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("with the rtl option is true", function () {
419
- beforeEach(function () {
420
- given.$tree.tree({
421
- data: _exampleData["default"],
422
- rtl: true
423
- });
424
- });
425
- it("has a different closed icon", function () {
426
- expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
427
- });
428
- });
429
- context("with the rtl data option", function () {
430
- beforeEach(function () {
431
- given.$tree.attr("data-rtl", "true");
432
- given.$tree.tree({
433
- data: _exampleData["default"]
434
- });
435
- });
436
- it("has a different closed icon", function () {
437
- expect((0, _testUtil.togglerLink)(given.node1.element).text()).toBe("◀");
438
- });
439
- });
440
- });
441
- describe("saveState", function () {
442
- var given = (0, _givens["default"])();
443
- given("node1", function () {
444
- return given.$tree.tree("getNodeByNameMustExist", "node1");
445
- });
446
- given("$tree", function () {
447
- return $("#tree1");
448
- });
449
- context("when a node is open and selected", function () {
450
- beforeEach(function () {
451
- given.$tree.tree({
452
- animationSpeed: 0,
453
- autoOpen: false,
454
- data: _exampleData["default"],
455
- saveState: given.saveState
456
- });
457
- given.$tree.tree("selectNode", given.node1);
458
- given.$tree.tree("openNode", given.node1);
459
- });
460
- context("when saveState is true", function () {
461
- given("saveState", function () {
462
- return true;
463
- });
464
- it("saves the state to local storage", function () {
465
- expect(localStorage.getItem("tree")).toBe('{"open_nodes":[123],"selected_node":[123]}');
466
- });
467
- });
468
- context("when saveState is a string", function () {
469
- given("saveState", function () {
470
- return "my-state";
471
- });
472
- it("uses the string as a key", function () {
473
- expect(localStorage.getItem("my-state")).toBe('{"open_nodes":[123],"selected_node":[123]}');
474
- });
475
- });
476
- context("when saveState is false", function () {
477
- given("saveState", function () {
478
- return false;
479
- });
480
- it("doesn't save to local storage", function () {
481
- expect(localStorage.getItem("tree")).toBeNull();
482
- });
483
- });
484
- });
485
- context("when there is a state in the local storage", function () {
486
- given("saveState", function () {
487
- return true;
488
- });
489
- beforeEach(function () {
490
- localStorage.setItem("tree", '{"open_nodes":[123],"selected_node":[123]}');
491
- given.$tree.tree({
492
- animationSpeed: 0,
493
- autoOpen: false,
494
- data: _exampleData["default"],
495
- saveState: given.saveState
496
- });
497
- });
498
- it("restores the state", function () {
499
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
500
- name: "node1",
501
- open: true,
502
- selected: true
503
- }), expect.objectContaining({
504
- name: "node2",
505
- open: false,
506
- selected: false
507
- })]);
508
- });
509
- });
510
- });
511
- describe("showEmptyFolder", function () {
512
- context("when children attribute is an empty array", function () {
513
- var given = (0, _givens["default"])();
514
- given("$tree", function () {
515
- return $("#tree1");
516
- });
517
- beforeEach(function () {
518
- given.$tree.tree({
519
- data: [{
520
- name: "parent1",
521
- children: []
522
- }],
523
- showEmptyFolder: given.showEmptyFolder
524
- });
525
- });
526
- context("with showEmptyFolder false", function () {
527
- given("showEmptyFolder", function () {
528
- return false;
529
- });
530
- it("creates a child node", function () {
531
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
532
- name: "parent1"
533
- })]);
534
- });
535
- });
536
- context("with showEmptyFolder true", function () {
537
- given("showEmptyFolder", function () {
538
- return true;
539
- });
540
- it("creates a folder", function () {
541
- expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
542
- name: "parent1",
543
- children: []
544
- })]);
545
- });
546
- });
547
- });
548
- });
@@ -1,94 +0,0 @@
1
- "use strict";
2
-
3
- var _containerScrollParent = _interopRequireDefault(require("../../../scrollHandler/containerScrollParent"));
4
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
5
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
6
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
11
- var defaultMockJQueryElementParams = {
12
- height: 200,
13
- innerHeight: 180,
14
- offsetTop: 20,
15
- scrollLeft: 0
16
- };
17
- var mock$JQueryElement = function mock$JQueryElement(inputParams) {
18
- var params = _objectSpread(_objectSpread({}, defaultMockJQueryElementParams), inputParams);
19
- var element = {};
20
- var $element = {
21
- get: function get(_) {
22
- return element;
23
- },
24
- height: function height() {
25
- return params.height;
26
- },
27
- innerHeight: function innerHeight() {
28
- return params.innerHeight;
29
- },
30
- offset: function offset() {
31
- return {
32
- top: params.offsetTop
33
- };
34
- },
35
- scrollLeft: function scrollLeft() {
36
- return params.scrollLeft;
37
- }
38
- };
39
- return $element;
40
- };
41
- var mockContainerScrollParent = function mockContainerScrollParent($container) {
42
- var refreshHitAreas = jest.fn();
43
- var $treeElement = {};
44
- return new _containerScrollParent["default"]({
45
- $container: $container,
46
- refreshHitAreas: refreshHitAreas,
47
- $treeElement: $treeElement
48
- });
49
- };
50
- describe("getScrollLeft", function () {
51
- it("returns the scrollLeft of the container", function () {
52
- var $container = mock$JQueryElement({
53
- scrollLeft: 10
54
- });
55
- var containerScrollParent = mockContainerScrollParent($container);
56
- expect(containerScrollParent.getScrollLeft()).toBe(10);
57
- });
58
- });
59
- describe("isScrolledIntoView", function () {
60
- it("returns true when the element is visible", function () {
61
- var $container = mock$JQueryElement({
62
- height: 100,
63
- offsetTop: 0
64
- });
65
- var containerScrollParent = mockContainerScrollParent($container);
66
- var $element = mock$JQueryElement({
67
- height: 10,
68
- offsetTop: 0
69
- });
70
- expect(containerScrollParent.isScrolledIntoView($element)).toBe(true);
71
- });
72
- it("returns false when the element is not visible", function () {
73
- var $container = mock$JQueryElement({
74
- height: 100,
75
- offsetTop: 0
76
- });
77
- var containerScrollParent = mockContainerScrollParent($container);
78
- var $element = mock$JQueryElement({
79
- height: 10,
80
- offsetTop: 150
81
- });
82
- expect(containerScrollParent.isScrolledIntoView($element)).toBe(false);
83
- });
84
- });
85
- describe("scrollToY", function () {
86
- it("sets scrollTop of the container", function () {
87
- var $container = mock$JQueryElement({
88
- scrollLeft: 10
89
- });
90
- var containerScrollParent = mockContainerScrollParent($container);
91
- containerScrollParent.scrollToY(10);
92
- expect($container.get(0).scrollTop).toBe(10);
93
- });
94
- });