jqtree 1.6.3 → 1.7.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.
Files changed (97) hide show
  1. package/.github/workflows/ci.yml +15 -21
  2. package/.github/workflows/codeql-analysis.yml +2 -2
  3. package/README.md +1 -1
  4. package/bower.json +10 -3
  5. package/config/production +2 -2
  6. package/config/{rollup.config.js → rollup.config.mjs} +3 -8
  7. package/docs/Gemfile.lock +34 -37
  8. package/docs/_config.yml +1 -1
  9. package/docs/_entries/10_changelog.md +13 -0
  10. package/docs/_entries/93_getnextnode.md +4 -1
  11. package/docs/_entries/{95_getpreviousnode.md → 95_getnextvisiblenode.md} +1 -1
  12. package/docs/_entries/96_getpreviousnode.md +0 -0
  13. package/docs/_entries/98_getpreviousvisiblenode.md +14 -0
  14. package/docs/package.json +7 -7
  15. package/docs/pnpm-lock.yaml +413 -265
  16. package/docs/static/bower.json +2 -2
  17. package/docs/static/bower_components/fontawesome/css/all.min.css +6 -2
  18. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  19. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  20. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  21. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  22. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  23. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  24. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  25. package/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  26. package/docs/static/bower_components/jquery/dist/jquery.js +944 -1121
  27. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -2
  28. package/docs/static/documentation.css +181 -159
  29. package/docs/static/example.css +0 -1
  30. package/docs/tree.jquery.js +3 -3
  31. package/lib/dataLoader.js +5 -31
  32. package/lib/dragAndDropHandler.js +40 -142
  33. package/lib/elementsRenderer.js +52 -72
  34. package/lib/keyHandler.js +8 -32
  35. package/lib/mouse.widget.js +24 -74
  36. package/lib/node.js +72 -134
  37. package/lib/nodeElement.js +24 -84
  38. package/lib/playwright/coverage.js +58 -97
  39. package/lib/playwright/playwright.test.js +148 -210
  40. package/lib/playwright/testUtils.js +116 -182
  41. package/lib/saveStateHandler.js +13 -62
  42. package/lib/scrollHandler.js +24 -77
  43. package/lib/selectNodeHandler.js +6 -25
  44. package/lib/simple.widget.js +20 -53
  45. package/lib/test/jqTree/accessibility.test.js +37 -0
  46. package/lib/test/jqTree/create.test.js +0 -4
  47. package/lib/test/jqTree/events.test.js +73 -84
  48. package/lib/test/jqTree/keyboard.test.js +0 -6
  49. package/lib/test/jqTree/loadOnDemand.test.js +84 -121
  50. package/lib/test/jqTree/methods.test.js +107 -150
  51. package/lib/test/jqTree/options.test.js +32 -54
  52. package/lib/test/node.test.js +134 -76
  53. package/lib/test/nodeUtil.test.js +0 -1
  54. package/lib/test/support/jqTreeMatchers.js +4 -9
  55. package/lib/test/support/setupTests.js +0 -4
  56. package/lib/test/support/testUtil.js +2 -11
  57. package/lib/test/support/treeStructure.js +0 -6
  58. package/lib/test/util.test.js +0 -1
  59. package/lib/tree.jquery.js +28 -239
  60. package/lib/util.js +0 -6
  61. package/lib/version.js +1 -1
  62. package/package.json +44 -47
  63. package/src/dragAndDropHandler.ts +24 -10
  64. package/src/elementsRenderer.ts +49 -42
  65. package/src/jqtreeOptions.ts +3 -3
  66. package/src/keyHandler.ts +3 -3
  67. package/src/mouse.widget.ts +12 -0
  68. package/src/node.ts +52 -16
  69. package/src/nodeElement.ts +27 -21
  70. package/src/saveStateHandler.ts +1 -1
  71. package/src/scrollHandler.ts +6 -2
  72. package/src/selectNodeHandler.ts +1 -1
  73. package/src/simple.widget.ts +2 -0
  74. package/src/test/.eslintrc +3 -1
  75. package/src/test/jqTree/accessibility.test.ts +25 -0
  76. package/src/test/jqTree/events.test.ts +79 -93
  77. package/src/test/jqTree/methods.test.ts +1 -1
  78. package/src/test/node.test.ts +152 -58
  79. package/src/test/nodeUtil.test.ts +1 -1
  80. package/src/tree.jquery.ts +7 -6
  81. package/src/version.ts +1 -1
  82. package/tree.jquery.debug.js +297 -904
  83. package/tree.jquery.debug.js.map +1 -1
  84. package/tree.jquery.js +3 -3
  85. package/tree.jquery.js.map +1 -1
  86. package/tsconfig.json +1 -0
  87. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  88. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +0 -3717
  89. package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  90. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  91. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +0 -801
  92. package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  93. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  94. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +0 -5028
  95. package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  96. /package/docs/_entries/{96_getprevioussibling.md → 97_getprevioussibling.md} +0 -0
  97. /package/docs/_entries/{97_parent.md → 99_parent.md} +0 -0
@@ -4,38 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  var _util = require("./util");
9
-
8
+ 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); }
10
9
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
11
-
12
10
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
-
14
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
15
-
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
12
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17
-
18
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
19
-
13
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
20
14
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
15
+ 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; }
16
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
+ 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); }
24
18
  var ElementsRenderer = /*#__PURE__*/function () {
25
19
  function ElementsRenderer(treeWidget) {
26
20
  _classCallCheck(this, ElementsRenderer);
27
-
28
21
  _defineProperty(this, "openedIconElement", void 0);
29
-
30
22
  _defineProperty(this, "closedIconElement", void 0);
31
-
32
23
  _defineProperty(this, "treeWidget", void 0);
33
-
34
24
  this.treeWidget = treeWidget;
35
25
  this.openedIconElement = this.createButtonElement(treeWidget.options.openedIcon || "+");
36
26
  this.closedIconElement = this.createButtonElement(treeWidget.options.closedIcon || "-");
37
27
  }
38
-
39
28
  _createClass(ElementsRenderer, [{
40
29
  key: "render",
41
30
  value: function render(fromNode) {
@@ -50,21 +39,27 @@ var ElementsRenderer = /*#__PURE__*/function () {
50
39
  value: function renderFromRoot() {
51
40
  var $element = this.treeWidget.element;
52
41
  $element.empty();
53
- this.createDomElements($element[0], this.treeWidget.tree.children, true, 1);
42
+ if ($element[0]) {
43
+ this.createDomElements($element[0], this.treeWidget.tree.children, true, 1);
44
+ }
54
45
  }
55
46
  }, {
56
47
  key: "renderFromNode",
57
48
  value: function renderFromNode(node) {
58
49
  // remember current li
59
- var $previousLi = jQuery(node.element); // create element
50
+ var $previousLi = jQuery(node.element);
60
51
 
52
+ // create element
61
53
  var li = this.createLi(node, node.getLevel());
62
- this.attachNodeData(node, li); // add element to dom
54
+ this.attachNodeData(node, li);
63
55
 
64
- $previousLi.after(li); // remove previous li
56
+ // add element to dom
57
+ $previousLi.after(li);
65
58
 
66
- $previousLi.remove(); // create children
59
+ // remove previous li
60
+ $previousLi.remove();
67
61
 
62
+ // create children
68
63
  if (node.children) {
69
64
  this.createDomElements(li, node.children, false, node.getLevel() + 1);
70
65
  }
@@ -74,17 +69,14 @@ var ElementsRenderer = /*#__PURE__*/function () {
74
69
  value: function createDomElements(element, children, isRootNode, level) {
75
70
  var ul = this.createUl(isRootNode);
76
71
  element.appendChild(ul);
77
-
78
72
  var _iterator = _createForOfIteratorHelper(children),
79
- _step;
80
-
73
+ _step;
81
74
  try {
82
75
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
83
76
  var child = _step.value;
84
77
  var li = this.createLi(child, level);
85
78
  ul.appendChild(li);
86
79
  this.attachNodeData(child, li);
87
-
88
80
  if (child.hasChildren()) {
89
81
  this.createDomElements(li, child.children, false, level + 1);
90
82
  }
@@ -106,23 +98,19 @@ var ElementsRenderer = /*#__PURE__*/function () {
106
98
  value: function createUl(isRootNode) {
107
99
  var classString;
108
100
  var role;
109
-
110
101
  if (!isRootNode) {
111
102
  classString = "";
112
103
  role = "group";
113
104
  } else {
114
105
  classString = "jqtree-tree";
115
106
  role = "tree";
116
-
117
107
  if (this.treeWidget.options.rtl) {
118
108
  classString += " jqtree-rtl";
119
109
  }
120
110
  }
121
-
122
111
  if (this.treeWidget.options.dragAndDrop) {
123
112
  classString += " jqtree-dnd";
124
113
  }
125
-
126
114
  var ul = document.createElement("ul");
127
115
  ul.className = "jqtree_common ".concat(classString);
128
116
  ul.setAttribute("role", role);
@@ -134,138 +122,132 @@ var ElementsRenderer = /*#__PURE__*/function () {
134
122
  var isSelected = Boolean(this.treeWidget.selectNodeHandler.isNodeSelected(node));
135
123
  var mustShowFolder = node.isFolder() || node.isEmptyFolder && this.treeWidget.options.showEmptyFolder;
136
124
  var li = mustShowFolder ? this.createFolderLi(node, level, isSelected) : this.createNodeLi(node, level, isSelected);
137
-
138
125
  if (this.treeWidget.options.onCreateLi) {
139
126
  this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);
140
127
  }
141
-
142
128
  return li;
143
129
  }
130
+ }, {
131
+ key: "setTreeItemAriaAttributes",
132
+ value: function setTreeItemAriaAttributes(element, name, level, isSelected) {
133
+ element.setAttribute("aria-label", name);
134
+ element.setAttribute("aria-level", "".concat(level));
135
+ element.setAttribute("aria-selected", (0, _util.getBoolString)(isSelected));
136
+ element.setAttribute("role", "treeitem");
137
+ }
144
138
  }, {
145
139
  key: "createFolderLi",
146
140
  value: function createFolderLi(node, level, isSelected) {
147
141
  var buttonClasses = this.getButtonClasses(node);
148
142
  var folderClasses = this.getFolderClasses(node, isSelected);
149
- var iconElement = node.is_open ? this.openedIconElement : this.closedIconElement; // li
143
+ var iconElement = node.is_open ? this.openedIconElement : this.closedIconElement;
150
144
 
145
+ // li
151
146
  var li = document.createElement("li");
152
147
  li.className = "jqtree_common ".concat(folderClasses);
153
- li.setAttribute("role", "presentation"); // div
148
+ li.setAttribute("role", "none");
154
149
 
150
+ // div
155
151
  var div = document.createElement("div");
156
152
  div.className = "jqtree-element jqtree_common";
157
- div.setAttribute("role", "presentation");
158
- li.appendChild(div); // button link
153
+ div.setAttribute("role", "none");
154
+ li.appendChild(div);
159
155
 
156
+ // button link
160
157
  var buttonLink = document.createElement("a");
161
158
  buttonLink.className = buttonClasses;
162
- buttonLink.appendChild(iconElement.cloneNode(true));
163
- buttonLink.setAttribute("role", "presentation");
164
- buttonLink.setAttribute("aria-hidden", "true");
165
-
159
+ if (iconElement) {
160
+ buttonLink.appendChild(iconElement.cloneNode(true));
161
+ }
166
162
  if (this.treeWidget.options.buttonLeft) {
167
163
  div.appendChild(buttonLink);
168
- } // title span
169
-
170
-
171
- div.appendChild(this.createTitleSpan(node.name, level, isSelected, node.is_open, true));
164
+ }
172
165
 
166
+ // title span
167
+ var titleSpan = this.createTitleSpan(node.name, isSelected, true, level);
168
+ titleSpan.setAttribute("aria-expanded", (0, _util.getBoolString)(node.is_open));
169
+ div.appendChild(titleSpan);
173
170
  if (!this.treeWidget.options.buttonLeft) {
174
171
  div.appendChild(buttonLink);
175
172
  }
176
-
177
173
  return li;
178
174
  }
179
175
  }, {
180
176
  key: "createNodeLi",
181
177
  value: function createNodeLi(node, level, isSelected) {
182
178
  var liClasses = ["jqtree_common"];
183
-
184
179
  if (isSelected) {
185
180
  liClasses.push("jqtree-selected");
186
181
  }
182
+ var classString = liClasses.join(" ");
187
183
 
188
- var classString = liClasses.join(" "); // li
189
-
184
+ // li
190
185
  var li = document.createElement("li");
191
186
  li.className = classString;
192
- li.setAttribute("role", "presentation"); // div
187
+ li.setAttribute("role", "none");
193
188
 
189
+ // div
194
190
  var div = document.createElement("div");
195
191
  div.className = "jqtree-element jqtree_common";
196
- div.setAttribute("role", "presentation");
197
- li.appendChild(div); // title span
192
+ div.setAttribute("role", "none");
193
+ li.appendChild(div);
198
194
 
199
- div.appendChild(this.createTitleSpan(node.name, level, isSelected, node.is_open, false));
195
+ // title span
196
+ var titleSpan = this.createTitleSpan(node.name, isSelected, false, level);
197
+ div.appendChild(titleSpan);
200
198
  return li;
201
199
  }
202
200
  }, {
203
201
  key: "createTitleSpan",
204
- value: function createTitleSpan(nodeName, level, isSelected, isOpen, isFolder) {
202
+ value: function createTitleSpan(nodeName, isSelected, isFolder, level) {
205
203
  var titleSpan = document.createElement("span");
206
204
  var classes = "jqtree-title jqtree_common";
207
-
208
205
  if (isFolder) {
209
206
  classes += " jqtree-title-folder";
210
207
  }
211
-
212
208
  classes += " jqtree-title-button-".concat(this.treeWidget.options.buttonLeft ? "left" : "right");
213
209
  titleSpan.className = classes;
214
- titleSpan.setAttribute("role", "treeitem");
215
- titleSpan.setAttribute("aria-level", "".concat(level));
216
- titleSpan.setAttribute("aria-selected", (0, _util.getBoolString)(isSelected));
217
- titleSpan.setAttribute("aria-expanded", (0, _util.getBoolString)(isOpen));
218
-
219
210
  if (isSelected) {
220
211
  var tabIndex = this.treeWidget.options.tabIndex;
221
-
222
212
  if (tabIndex !== undefined) {
223
213
  titleSpan.setAttribute("tabindex", "".concat(tabIndex));
224
214
  }
225
215
  }
226
-
216
+ this.setTreeItemAriaAttributes(titleSpan, nodeName, level, isSelected);
227
217
  if (this.treeWidget.options.autoEscape) {
228
218
  titleSpan.textContent = nodeName;
229
219
  } else {
230
220
  titleSpan.innerHTML = nodeName;
231
221
  }
232
-
233
222
  return titleSpan;
234
223
  }
235
224
  }, {
236
225
  key: "getButtonClasses",
237
226
  value: function getButtonClasses(node) {
238
227
  var classes = ["jqtree-toggler", "jqtree_common"];
239
-
240
228
  if (!node.is_open) {
241
229
  classes.push("jqtree-closed");
242
230
  }
243
-
244
231
  if (this.treeWidget.options.buttonLeft) {
245
232
  classes.push("jqtree-toggler-left");
246
233
  } else {
247
234
  classes.push("jqtree-toggler-right");
248
235
  }
249
-
250
236
  return classes.join(" ");
251
237
  }
252
238
  }, {
253
239
  key: "getFolderClasses",
254
240
  value: function getFolderClasses(node, isSelected) {
255
241
  var classes = ["jqtree-folder"];
256
-
257
242
  if (!node.is_open) {
258
243
  classes.push("jqtree-closed");
259
244
  }
260
-
261
245
  if (isSelected) {
262
246
  classes.push("jqtree-selected");
263
247
  }
264
-
265
248
  if (node.is_loading) {
266
249
  classes.push("jqtree-loading");
267
250
  }
268
-
269
251
  return classes.join(" ");
270
252
  }
271
253
  }, {
@@ -281,8 +263,6 @@ var ElementsRenderer = /*#__PURE__*/function () {
281
263
  }
282
264
  }
283
265
  }]);
284
-
285
266
  return ElementsRenderer;
286
267
  }();
287
-
288
268
  exports["default"] = ElementsRenderer;
package/lib/keyHandler.js CHANGED
@@ -4,61 +4,45 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
7
+ 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); }
8
8
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
-
10
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11
-
9
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
12
10
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
13
-
14
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
11
+ 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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ 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); }
16
14
  var KeyHandler = /*#__PURE__*/function () {
17
15
  function KeyHandler(treeWidget) {
18
16
  var _this = this;
19
-
20
17
  _classCallCheck(this, KeyHandler);
21
-
22
18
  _defineProperty(this, "treeWidget", void 0);
23
-
24
19
  _defineProperty(this, "handleKeyDown", function (e) {
25
20
  if (!_this.canHandleKeyboard()) {
26
21
  return true;
27
22
  }
28
-
29
23
  var selectedNode = _this.treeWidget.getSelectedNode();
30
-
31
24
  if (!selectedNode) {
32
25
  return true;
33
26
  }
34
-
35
27
  var key = e.which;
36
-
37
28
  switch (key) {
38
29
  case KeyHandler.DOWN:
39
30
  return _this.moveDown(selectedNode);
40
-
41
31
  case KeyHandler.UP:
42
32
  return _this.moveUp(selectedNode);
43
-
44
33
  case KeyHandler.RIGHT:
45
34
  return _this.moveRight(selectedNode);
46
-
47
35
  case KeyHandler.LEFT:
48
36
  return _this.moveLeft(selectedNode);
49
-
50
37
  default:
51
38
  return true;
52
39
  }
53
40
  });
54
-
55
41
  this.treeWidget = treeWidget;
56
-
57
42
  if (treeWidget.options.keyboardSupport) {
58
43
  jQuery(document).on("keydown.jqtree", this.handleKeyDown);
59
44
  }
60
45
  }
61
-
62
46
  _createClass(KeyHandler, [{
63
47
  key: "deinit",
64
48
  value: function deinit() {
@@ -67,12 +51,12 @@ var KeyHandler = /*#__PURE__*/function () {
67
51
  }, {
68
52
  key: "moveDown",
69
53
  value: function moveDown(selectedNode) {
70
- return this.selectNode(selectedNode.getNextNode());
54
+ return this.selectNode(selectedNode.getNextVisibleNode());
71
55
  }
72
56
  }, {
73
57
  key: "moveUp",
74
58
  value: function moveUp(selectedNode) {
75
- return this.selectNode(selectedNode.getPreviousNode());
59
+ return this.selectNode(selectedNode.getPreviousVisibleNode());
76
60
  }
77
61
  }, {
78
62
  key: "moveRight",
@@ -83,7 +67,7 @@ var KeyHandler = /*#__PURE__*/function () {
83
67
  // folder node
84
68
  if (selectedNode.is_open) {
85
69
  // Right moves to the first child of an open node
86
- return this.selectNode(selectedNode.getNextNode());
70
+ return this.selectNode(selectedNode.getNextVisibleNode());
87
71
  } else {
88
72
  // Right expands a closed node
89
73
  this.treeWidget.openNode(selectedNode);
@@ -110,11 +94,9 @@ var KeyHandler = /*#__PURE__*/function () {
110
94
  return true;
111
95
  } else {
112
96
  this.treeWidget.selectNode(node);
113
-
114
97
  if (!this.treeWidget.scrollHandler.isScrolledIntoView(jQuery(node.element).find(".jqtree-element"))) {
115
98
  this.treeWidget.scrollToNode(node);
116
99
  }
117
-
118
100
  return false;
119
101
  }
120
102
  }
@@ -124,16 +106,10 @@ var KeyHandler = /*#__PURE__*/function () {
124
106
  return (this.treeWidget.options.keyboardSupport || false) && this.treeWidget.selectNodeHandler.isFocusOnTree();
125
107
  }
126
108
  }]);
127
-
128
109
  return KeyHandler;
129
110
  }();
130
-
131
111
  exports["default"] = KeyHandler;
132
-
133
112
  _defineProperty(KeyHandler, "LEFT", 37);
134
-
135
113
  _defineProperty(KeyHandler, "UP", 38);
136
-
137
114
  _defineProperty(KeyHandler, "RIGHT", 39);
138
-
139
115
  _defineProperty(KeyHandler, "DOWN", 40);