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,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: "<span>test</span>"
|
|
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
|
-
});
|