jqtree 1.7.5 → 1.8.1
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 +13 -3
- package/.github/workflows/ci.yml +6 -6
- package/.github/workflows/codeql-analysis.yml +4 -4
- package/.github/workflows/size.yml +3 -3
- package/.github/workflows/static.yml +1 -1
- package/bower.json +1 -1
- package/config/babel.config.json +1 -1
- package/config/jest.config.js +4 -0
- package/config/jest.polyfills.js +14 -0
- package/config/production +2 -0
- package/devserver/devserver_scroll.js +8 -0
- package/devserver/test_index.html +9 -0
- package/devserver/test_scroll.html +28 -0
- package/devserver/test_scroll_container.html +39 -0
- package/docs/.ruby-version +1 -1
- package/docs/_config.yml +1 -1
- package/docs/_entries/general/changelog.md +11 -0
- package/docs/_entries/multiple_selection/get-selected-nodes.md +1 -1
- package/docs/_entries/node/getnextnode.md +3 -6
- package/docs/_entries/node/getnextsibling.md +1 -1
- package/docs/_entries/node/getnextvisiblenode.md +8 -5
- package/docs/_entries/node/getpreviousnode.md +12 -0
- package/docs/_entries/node/getprevioussibling.md +1 -1
- package/docs/_entries/node/getpreviousvisiblenode.md +6 -5
- package/package.json +35 -29
- package/src/dataLoader.ts +57 -34
- package/src/dragAndDropHandler/dragElement.ts +54 -0
- package/src/dragAndDropHandler/generateHitAreas.ts +176 -0
- package/src/dragAndDropHandler/index.ts +454 -0
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
- package/src/dragAndDropHandler/types.ts +13 -0
- package/src/elementsRenderer.ts +75 -40
- package/src/jqtreeMethodTypes.ts +40 -0
- package/src/jqtreeOptions.ts +43 -25
- package/src/keyHandler.ts +59 -30
- package/src/mouseHandler.ts +385 -0
- package/src/mouseUtils.ts +23 -0
- package/src/node.ts +1 -29
- package/src/nodeElement/borderDropHint.ts +32 -0
- package/src/nodeElement/folderElement.ts +133 -0
- package/src/nodeElement/ghostDropHint.ts +69 -0
- package/src/nodeElement/index.ts +102 -0
- package/src/playwright/coverage.ts +4 -7
- package/src/playwright/playwright.test.ts +150 -53
- package/src/playwright/testUtils.ts +28 -5
- package/src/position.ts +28 -0
- package/src/saveStateHandler.ts +75 -26
- package/src/scrollHandler/containerScrollParent.ts +13 -23
- package/src/scrollHandler/createScrollParent.ts +22 -22
- package/src/scrollHandler/documentScrollParent.ts +16 -13
- package/src/scrollHandler.ts +13 -15
- package/src/selectNodeHandler.ts +10 -16
- package/src/test/jqTree/events.test.ts +97 -30
- package/src/test/jqTree/keyboard.test.ts +18 -23
- package/src/test/jqTree/loadOnDemand.test.ts +22 -15
- package/src/test/jqTree/methods.test.ts +40 -14
- package/src/test/jqTree/mouse.test.ts +82 -0
- package/src/test/jqTree/options.test.ts +24 -12
- package/src/test/node.test.ts +3 -2
- package/src/test/{nodeUtil.test.ts → position.test.ts} +1 -1
- package/src/tree.jquery.ts +314 -208
- package/src/util.ts +12 -0
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +2594 -3419
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +3 -3
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +5 -3
- package/docs/_entries/functions/get-selected-nodes.md +0 -10
- package/lib/dataLoader.js +0 -123
- package/lib/dragAndDropHandler.js +0 -588
- package/lib/elementsRenderer.js +0 -267
- package/lib/jqtreeOptions.js +0 -1
- package/lib/keyHandler.js +0 -111
- package/lib/mouse.widget.js +0 -255
- package/lib/node.js +0 -708
- package/lib/nodeElement.js +0 -274
- package/lib/nodeUtils.js +0 -10
- package/lib/playwright/coverage.js +0 -99
- package/lib/playwright/playwright.test.js +0 -606
- package/lib/playwright/testUtils.js +0 -210
- package/lib/saveStateHandler.js +0 -277
- package/lib/scrollHandler/containerScrollParent.js +0 -160
- package/lib/scrollHandler/createScrollParent.js +0 -57
- package/lib/scrollHandler/documentScrollParent.js +0 -169
- package/lib/scrollHandler/scrollParent.js +0 -58
- package/lib/scrollHandler/types.js +0 -1
- package/lib/scrollHandler.js +0 -71
- package/lib/selectNodeHandler.js +0 -128
- package/lib/simple.widget.js +0 -158
- package/lib/test/global.d.js +0 -3
- package/lib/test/jqTree/accessibility.test.js +0 -37
- package/lib/test/jqTree/create.test.js +0 -48
- package/lib/test/jqTree/events.test.js +0 -210
- package/lib/test/jqTree/keyboard.test.js +0 -225
- package/lib/test/jqTree/loadOnDemand.test.js +0 -218
- package/lib/test/jqTree/methods.test.js +0 -1348
- package/lib/test/jqTree/options.test.js +0 -548
- package/lib/test/jqTree/scrollHandler/containerScrollParent.test.js +0 -94
- package/lib/test/node.test.js +0 -1202
- package/lib/test/nodeUtil.test.js +0 -27
- package/lib/test/nodeUtils.test.js +0 -20
- package/lib/test/support/exampleData.js +0 -35
- package/lib/test/support/jqTreeMatchers.js +0 -70
- package/lib/test/support/matchers.d.js +0 -1
- package/lib/test/support/setupTests.js +0 -7
- package/lib/test/support/testUtil.js +0 -29
- package/lib/test/support/treeStructure.js +0 -38
- package/lib/test/util.test.js +0 -26
- package/lib/tree.jquery.d.js +0 -1
- package/lib/tree.jquery.js +0 -1105
- package/lib/types.js +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/util.js +0 -15
- package/lib/version.js +0 -8
- package/src/dragAndDropHandler.ts +0 -713
- package/src/mouse.widget.ts +0 -266
- package/src/nodeElement.ts +0 -272
- package/src/types.ts +0 -19
|
@@ -1,37 +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 _jestAxe = require("jest-axe");
|
|
5
|
-
require("../../tree.jquery");
|
|
6
|
-
var _exampleData = _interopRequireDefault(require("../support/exampleData"));
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
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; }
|
|
9
|
-
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); } }
|
|
10
|
-
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); }); }; }
|
|
11
|
-
expect.extend(_jestAxe.toHaveNoViolations);
|
|
12
|
-
beforeEach(function () {
|
|
13
|
-
$("body").append('<div id="tree1"></div>');
|
|
14
|
-
});
|
|
15
|
-
afterEach(function () {
|
|
16
|
-
var $tree = $("#tree1");
|
|
17
|
-
$tree.tree("destroy");
|
|
18
|
-
$tree.remove();
|
|
19
|
-
});
|
|
20
|
-
it("has an accessible ui", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
21
|
-
var $tree, element;
|
|
22
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
23
|
-
while (1) switch (_context.prev = _context.next) {
|
|
24
|
-
case 0:
|
|
25
|
-
$tree = $("#tree1");
|
|
26
|
-
$tree.tree({
|
|
27
|
-
data: _exampleData["default"]
|
|
28
|
-
});
|
|
29
|
-
element = $tree.get()[0];
|
|
30
|
-
_context.next = 5;
|
|
31
|
-
return expect((0, _jestAxe.axe)(element)).resolves.toHaveNoViolations();
|
|
32
|
-
case 5:
|
|
33
|
-
case "end":
|
|
34
|
-
return _context.stop();
|
|
35
|
-
}
|
|
36
|
-
}, _callee);
|
|
37
|
-
})));
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _givens = _interopRequireDefault(require("givens"));
|
|
4
|
-
require("../../tree.jquery");
|
|
5
|
-
var _exampleData = _interopRequireDefault(require("../support/exampleData"));
|
|
6
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
7
|
-
beforeEach(function () {
|
|
8
|
-
$("body").append('<div id="tree1"></div>');
|
|
9
|
-
});
|
|
10
|
-
afterEach(function () {
|
|
11
|
-
var $tree = $("#tree1");
|
|
12
|
-
$tree.tree("destroy");
|
|
13
|
-
$tree.remove();
|
|
14
|
-
});
|
|
15
|
-
describe("create with data", function () {
|
|
16
|
-
var given = (0, _givens["default"])();
|
|
17
|
-
given("$tree", function () {
|
|
18
|
-
return $("#tree1");
|
|
19
|
-
});
|
|
20
|
-
beforeEach(function () {
|
|
21
|
-
given.$tree.tree({
|
|
22
|
-
data: _exampleData["default"]
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
it("creates a tree", function () {
|
|
26
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
27
|
-
name: "node1",
|
|
28
|
-
open: false,
|
|
29
|
-
selected: false,
|
|
30
|
-
children: [expect.objectContaining({
|
|
31
|
-
name: "child1"
|
|
32
|
-
}), expect.objectContaining({
|
|
33
|
-
name: "child2"
|
|
34
|
-
})]
|
|
35
|
-
}), expect.objectContaining({
|
|
36
|
-
name: "node2",
|
|
37
|
-
open: false,
|
|
38
|
-
selected: false,
|
|
39
|
-
children: [expect.objectContaining({
|
|
40
|
-
name: "node3",
|
|
41
|
-
open: false,
|
|
42
|
-
children: [expect.objectContaining({
|
|
43
|
-
name: "child3"
|
|
44
|
-
})]
|
|
45
|
-
})]
|
|
46
|
-
})]);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
@@ -1,210 +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 _msw = require("msw");
|
|
6
|
-
var _node = require("msw/node");
|
|
7
|
-
var _dom = require("@testing-library/dom");
|
|
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
|
-
});
|
|
29
|
-
afterAll(function () {
|
|
30
|
-
return server.close();
|
|
31
|
-
});
|
|
32
|
-
describe("tree.click", function () {
|
|
33
|
-
var given = (0, _givens["default"])();
|
|
34
|
-
given("node1", function () {
|
|
35
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
36
|
-
});
|
|
37
|
-
given("titleSpan", function () {
|
|
38
|
-
return (0, _testUtil.titleSpan)(given.node1.element);
|
|
39
|
-
});
|
|
40
|
-
given("$tree", function () {
|
|
41
|
-
return $("#tree1");
|
|
42
|
-
});
|
|
43
|
-
beforeEach(function () {
|
|
44
|
-
given.$tree.tree({
|
|
45
|
-
data: _exampleData["default"]
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
it("fires tree.click", function () {
|
|
49
|
-
var onClick = jest.fn();
|
|
50
|
-
given.$tree.on("tree.click", onClick);
|
|
51
|
-
given.titleSpan.trigger("click");
|
|
52
|
-
expect(onClick).toHaveBeenCalledWith(expect.objectContaining({
|
|
53
|
-
node: given.node1
|
|
54
|
-
}));
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe("tree.contextmenu", function () {
|
|
58
|
-
var given = (0, _givens["default"])();
|
|
59
|
-
given("node1", function () {
|
|
60
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
61
|
-
});
|
|
62
|
-
given("titleSpan", function () {
|
|
63
|
-
return (0, _testUtil.titleSpan)(given.node1.element);
|
|
64
|
-
});
|
|
65
|
-
given("$tree", function () {
|
|
66
|
-
return $("#tree1");
|
|
67
|
-
});
|
|
68
|
-
beforeEach(function () {
|
|
69
|
-
given.$tree.tree({
|
|
70
|
-
data: _exampleData["default"]
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
it("fires tree.contextmenu", function () {
|
|
74
|
-
var onContextMenu = jest.fn();
|
|
75
|
-
given.$tree.on("tree.contextmenu", onContextMenu);
|
|
76
|
-
given.titleSpan.trigger("contextmenu");
|
|
77
|
-
expect(onContextMenu).toHaveBeenCalledWith(expect.objectContaining({
|
|
78
|
-
node: given.node1
|
|
79
|
-
}));
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe("tree.dblclick", function () {
|
|
83
|
-
var given = (0, _givens["default"])();
|
|
84
|
-
given("node1", function () {
|
|
85
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
86
|
-
});
|
|
87
|
-
given("titleSpan", function () {
|
|
88
|
-
return (0, _testUtil.titleSpan)(given.node1.element);
|
|
89
|
-
});
|
|
90
|
-
given("$tree", function () {
|
|
91
|
-
return $("#tree1");
|
|
92
|
-
});
|
|
93
|
-
beforeEach(function () {
|
|
94
|
-
given.$tree.tree({
|
|
95
|
-
data: _exampleData["default"]
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
it("fires tree.dblclick", function () {
|
|
99
|
-
var onDoubleClick = jest.fn();
|
|
100
|
-
given.$tree.on("tree.dblclick", onDoubleClick);
|
|
101
|
-
given.titleSpan.trigger("dblclick");
|
|
102
|
-
expect(onDoubleClick).toHaveBeenCalledWith(expect.objectContaining({
|
|
103
|
-
node: given.node1
|
|
104
|
-
}));
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
describe("tree.init", function () {
|
|
108
|
-
var given = (0, _givens["default"])();
|
|
109
|
-
given("$tree", function () {
|
|
110
|
-
return $("#tree1");
|
|
111
|
-
});
|
|
112
|
-
context("with json data", function () {
|
|
113
|
-
it("is called", function () {
|
|
114
|
-
var onInit = jest.fn();
|
|
115
|
-
given.$tree.on("tree.init", onInit);
|
|
116
|
-
given.$tree.tree({
|
|
117
|
-
data: _exampleData["default"]
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// eslint-disable-next-line jest/prefer-called-with
|
|
121
|
-
expect(onInit).toHaveBeenCalled();
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
context("with data loaded from an url", function () {
|
|
125
|
-
beforeEach(function () {
|
|
126
|
-
server.use(_msw.rest.get("/tree/", function (_request, response, ctx) {
|
|
127
|
-
return response(ctx.status(200), ctx.json(_exampleData["default"]));
|
|
128
|
-
}));
|
|
129
|
-
});
|
|
130
|
-
it("is called", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
131
|
-
var onInit;
|
|
132
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
133
|
-
while (1) switch (_context.prev = _context.next) {
|
|
134
|
-
case 0:
|
|
135
|
-
onInit = jest.fn();
|
|
136
|
-
given.$tree.on("tree.init", onInit);
|
|
137
|
-
given.$tree.tree({
|
|
138
|
-
dataUrl: "/tree/"
|
|
139
|
-
});
|
|
140
|
-
_context.next = 5;
|
|
141
|
-
return (0, _dom.waitFor)(function () {
|
|
142
|
-
// eslint-disable-next-line jest/prefer-called-with
|
|
143
|
-
expect(onInit).toHaveBeenCalled();
|
|
144
|
-
});
|
|
145
|
-
case 5:
|
|
146
|
-
case "end":
|
|
147
|
-
return _context.stop();
|
|
148
|
-
}
|
|
149
|
-
}, _callee);
|
|
150
|
-
})));
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
describe("tree.load_data", function () {
|
|
154
|
-
var given = (0, _givens["default"])();
|
|
155
|
-
given("$tree", function () {
|
|
156
|
-
return $("#tree1");
|
|
157
|
-
});
|
|
158
|
-
context("when the tree is initialized with data", function () {
|
|
159
|
-
it("fires tree.load_data", function () {
|
|
160
|
-
var onLoadData = jest.fn();
|
|
161
|
-
given.$tree.on("tree.load_data", onLoadData);
|
|
162
|
-
given.$tree.tree({
|
|
163
|
-
data: _exampleData["default"]
|
|
164
|
-
});
|
|
165
|
-
expect(onLoadData).toHaveBeenCalledWith(expect.objectContaining({
|
|
166
|
-
tree_data: _exampleData["default"]
|
|
167
|
-
}));
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
describe("tree.select", function () {
|
|
172
|
-
var given = (0, _givens["default"])();
|
|
173
|
-
given("node1", function () {
|
|
174
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
175
|
-
});
|
|
176
|
-
given("titleSpan", function () {
|
|
177
|
-
return (0, _testUtil.titleSpan)(given.node1.element);
|
|
178
|
-
});
|
|
179
|
-
given("$tree", function () {
|
|
180
|
-
return $("#tree1");
|
|
181
|
-
});
|
|
182
|
-
beforeEach(function () {
|
|
183
|
-
given.$tree.tree({
|
|
184
|
-
data: _exampleData["default"]
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
it("fires tree.select", function () {
|
|
188
|
-
var onSelect = jest.fn();
|
|
189
|
-
given.$tree.on("tree.select", onSelect);
|
|
190
|
-
given.titleSpan.trigger("click");
|
|
191
|
-
expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({
|
|
192
|
-
node: given.node1,
|
|
193
|
-
deselected_node: null
|
|
194
|
-
}));
|
|
195
|
-
});
|
|
196
|
-
context("when the node was selected", function () {
|
|
197
|
-
beforeEach(function () {
|
|
198
|
-
given.$tree.tree("selectNode", given.node1);
|
|
199
|
-
});
|
|
200
|
-
it("fires tree.select with node is null", function () {
|
|
201
|
-
var onSelect = jest.fn();
|
|
202
|
-
given.$tree.on("tree.select", onSelect);
|
|
203
|
-
given.titleSpan.trigger("click");
|
|
204
|
-
expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({
|
|
205
|
-
node: null,
|
|
206
|
-
previous_node: given.node1
|
|
207
|
-
}));
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
});
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _givens = _interopRequireDefault(require("givens"));
|
|
4
|
-
require("../../tree.jquery");
|
|
5
|
-
var _exampleData = _interopRequireDefault(require("../support/exampleData"));
|
|
6
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
7
|
-
var context = describe;
|
|
8
|
-
beforeEach(function () {
|
|
9
|
-
$("body").append('<div id="tree1"></div>');
|
|
10
|
-
});
|
|
11
|
-
afterEach(function () {
|
|
12
|
-
var $tree = $("#tree1");
|
|
13
|
-
$tree.tree("destroy");
|
|
14
|
-
$tree.remove();
|
|
15
|
-
});
|
|
16
|
-
describe("keyboard support", function () {
|
|
17
|
-
var KEY_DOWN = 40;
|
|
18
|
-
var KEY_LEFT = 37;
|
|
19
|
-
var KEY_RIGHT = 39;
|
|
20
|
-
var KEY_UP = 38;
|
|
21
|
-
var KEY_PAGE_UP = 33;
|
|
22
|
-
var given = (0, _givens["default"])();
|
|
23
|
-
given("autoOpen", function () {
|
|
24
|
-
return false;
|
|
25
|
-
});
|
|
26
|
-
given("initialSelectedNode", function () {
|
|
27
|
-
return null;
|
|
28
|
-
});
|
|
29
|
-
given("$tree", function () {
|
|
30
|
-
return $("#tree1");
|
|
31
|
-
});
|
|
32
|
-
beforeEach(function () {
|
|
33
|
-
given.$tree.tree({
|
|
34
|
-
animationSpeed: 0,
|
|
35
|
-
autoOpen: given.autoOpen,
|
|
36
|
-
data: _exampleData["default"]
|
|
37
|
-
});
|
|
38
|
-
if (given.initialSelectedNode) {
|
|
39
|
-
given.$tree.tree("selectNode", given.initialSelectedNode);
|
|
40
|
-
}
|
|
41
|
-
given.$tree.trigger($.Event("keydown", {
|
|
42
|
-
which: given.pressedKey
|
|
43
|
-
}));
|
|
44
|
-
});
|
|
45
|
-
context("with key down", function () {
|
|
46
|
-
given("pressedKey", function () {
|
|
47
|
-
return KEY_DOWN;
|
|
48
|
-
});
|
|
49
|
-
context("when a node is selected", function () {
|
|
50
|
-
given("initialSelectedNode", function () {
|
|
51
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
52
|
-
});
|
|
53
|
-
it("selects the next node", function () {
|
|
54
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
55
|
-
name: "node1",
|
|
56
|
-
selected: false
|
|
57
|
-
}), expect.objectContaining({
|
|
58
|
-
name: "node2",
|
|
59
|
-
selected: true
|
|
60
|
-
})]);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
context("when no node is selected", function () {
|
|
64
|
-
it("does nothing", function () {
|
|
65
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
context("when the last node is selected", function () {
|
|
69
|
-
given("initialSelectedNode", function () {
|
|
70
|
-
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
71
|
-
});
|
|
72
|
-
it("keeps the node selected", function () {
|
|
73
|
-
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
74
|
-
name: "node2"
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
context("with key up", function () {
|
|
80
|
-
given("pressedKey", function () {
|
|
81
|
-
return KEY_UP;
|
|
82
|
-
});
|
|
83
|
-
context("when a node is selected", function () {
|
|
84
|
-
given("initialSelectedNode", function () {
|
|
85
|
-
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
86
|
-
});
|
|
87
|
-
it("selects the next node", function () {
|
|
88
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
89
|
-
name: "node1",
|
|
90
|
-
selected: true
|
|
91
|
-
}), expect.objectContaining({
|
|
92
|
-
name: "node2",
|
|
93
|
-
selected: false
|
|
94
|
-
})]);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
context("when no node is selected", function () {
|
|
98
|
-
it("does nothing", function () {
|
|
99
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
context("with key right", function () {
|
|
104
|
-
given("pressedKey", function () {
|
|
105
|
-
return KEY_RIGHT;
|
|
106
|
-
});
|
|
107
|
-
context("when a closed folder is selected", function () {
|
|
108
|
-
given("initialSelectedNode", function () {
|
|
109
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
110
|
-
});
|
|
111
|
-
it("opens the folder", function () {
|
|
112
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
113
|
-
name: "node1",
|
|
114
|
-
open: true,
|
|
115
|
-
selected: true
|
|
116
|
-
}), expect.objectContaining({
|
|
117
|
-
name: "node2",
|
|
118
|
-
open: false,
|
|
119
|
-
selected: false
|
|
120
|
-
})]);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
context("when an open folder is selected", function () {
|
|
124
|
-
given("autoOpen", function () {
|
|
125
|
-
return true;
|
|
126
|
-
});
|
|
127
|
-
given("initialSelectedNode", function () {
|
|
128
|
-
return given.$tree.tree("getNodeByNameMustExist", "node1");
|
|
129
|
-
});
|
|
130
|
-
it("selects the first child", function () {
|
|
131
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
132
|
-
name: "node1",
|
|
133
|
-
open: true,
|
|
134
|
-
selected: false,
|
|
135
|
-
children: [expect.objectContaining({
|
|
136
|
-
name: "child1",
|
|
137
|
-
selected: true
|
|
138
|
-
}), expect.objectContaining({
|
|
139
|
-
name: "child2",
|
|
140
|
-
selected: false
|
|
141
|
-
})]
|
|
142
|
-
}), expect.objectContaining({
|
|
143
|
-
name: "node2",
|
|
144
|
-
selected: false
|
|
145
|
-
})]);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
context("when no node is selected", function () {
|
|
149
|
-
it("does nothing", function () {
|
|
150
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
context("when a child is selected", function () {
|
|
154
|
-
given("initialSelectedNode", function () {
|
|
155
|
-
return given.$tree.tree("getNodeByNameMustExist", "child1");
|
|
156
|
-
});
|
|
157
|
-
it("does nothing", function () {
|
|
158
|
-
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
159
|
-
name: "child1"
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
context("with key left", function () {
|
|
165
|
-
given("pressedKey", function () {
|
|
166
|
-
return KEY_LEFT;
|
|
167
|
-
});
|
|
168
|
-
context("when a closed folder is selected", function () {
|
|
169
|
-
given("initialSelectedNode", function () {
|
|
170
|
-
return given.$tree.tree("getNodeByNameMustExist", "node3");
|
|
171
|
-
});
|
|
172
|
-
it("selects the previous node", function () {
|
|
173
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
174
|
-
name: "node1",
|
|
175
|
-
selected: false
|
|
176
|
-
}), expect.objectContaining({
|
|
177
|
-
name: "node2",
|
|
178
|
-
selected: true,
|
|
179
|
-
children: [expect.objectContaining({
|
|
180
|
-
name: "node3",
|
|
181
|
-
open: false,
|
|
182
|
-
selected: false
|
|
183
|
-
})]
|
|
184
|
-
})]);
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
context("when an open folder is selected", function () {
|
|
188
|
-
given("autoOpen", function () {
|
|
189
|
-
return true;
|
|
190
|
-
});
|
|
191
|
-
given("initialSelectedNode", function () {
|
|
192
|
-
return given.$tree.tree("getNodeByNameMustExist", "node2");
|
|
193
|
-
});
|
|
194
|
-
it("closes the folder", function () {
|
|
195
|
-
expect(given.$tree).toHaveTreeStructure([expect.objectContaining({
|
|
196
|
-
name: "node1",
|
|
197
|
-
open: true,
|
|
198
|
-
selected: false
|
|
199
|
-
}), expect.objectContaining({
|
|
200
|
-
name: "node2",
|
|
201
|
-
open: false,
|
|
202
|
-
selected: true
|
|
203
|
-
})]);
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
context("when no node is selected", function () {
|
|
207
|
-
it("does nothing", function () {
|
|
208
|
-
expect(given.$tree.tree("getSelectedNode")).toBe(false);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
context("with page up key", function () {
|
|
213
|
-
given("pressedKey", function () {
|
|
214
|
-
return KEY_PAGE_UP;
|
|
215
|
-
});
|
|
216
|
-
given("initialSelectedNode", function () {
|
|
217
|
-
return given.$tree.tree("getNodeByNameMustExist", "child1");
|
|
218
|
-
});
|
|
219
|
-
it("does nothing", function () {
|
|
220
|
-
expect(given.$tree.tree("getSelectedNode")).toMatchObject({
|
|
221
|
-
name: "child1"
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
});
|