jqtree 1.6.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/.eslintrc +3 -12
  2. package/.github/workflows/ci.yml +57 -30
  3. package/.github/workflows/codeql-analysis.yml +9 -5
  4. package/.prettier +3 -0
  5. package/.tool-versions +1 -0
  6. package/README.md +12 -9
  7. package/bower.json +10 -3
  8. package/{.postcssrc → config/.postcssrc} +0 -0
  9. package/{babel.config.json → config/babel.config.json} +0 -0
  10. package/{babel.coverage.config.json → config/babel.coverage.config.json} +0 -0
  11. package/{jest-jsdom.config.js → config/jest.config.js} +8 -3
  12. package/config/playwright.config.js +18 -0
  13. package/config/production +4 -0
  14. package/{rollup.config.js → config/rollup.config.mjs} +3 -8
  15. package/{jqtree.postcss → css/jqtree.postcss} +0 -0
  16. package/devserver/index.html +1 -9
  17. package/docs/Gemfile +2 -0
  18. package/docs/Gemfile.lock +263 -0
  19. package/{_config.yml → docs/_config.yml} +8 -1
  20. package/{_entries → docs/_entries}/01_general.md +0 -0
  21. package/{_entries → docs/_entries}/02_introduction.md +0 -0
  22. package/{_entries → docs/_entries}/03_features.md +1 -1
  23. package/{_entries → docs/_entries}/04_demo.html +1 -7
  24. package/{_entries → docs/_entries}/05_requirements.md +0 -0
  25. package/{_entries → docs/_entries}/06_downloads.md +0 -0
  26. package/{_entries → docs/_entries}/07_tutorial.md +0 -0
  27. package/{_entries → docs/_entries}/08_examples.md +0 -0
  28. package/{_entries → docs/_entries}/09_usecases.md +0 -0
  29. package/{_entries → docs/_entries}/10_changelog.md +13 -0
  30. package/{_entries → docs/_entries}/11_options.md +0 -0
  31. package/{_entries → docs/_entries}/12_animationspeed.md +0 -0
  32. package/{_entries → docs/_entries}/13_autoescape.md +0 -0
  33. package/{_entries → docs/_entries}/14_autoopen.md +0 -0
  34. package/{_entries → docs/_entries}/15_buttonleft.md +0 -0
  35. package/{_entries → docs/_entries}/16_closedicon.md +0 -0
  36. package/{_entries → docs/_entries}/17_data.md +0 -0
  37. package/{_entries → docs/_entries}/18_datafilter.md +0 -0
  38. package/{_entries → docs/_entries}/19_data-url.md +0 -0
  39. package/{_entries → docs/_entries}/20_draganddrop.md +0 -0
  40. package/{_entries → docs/_entries}/21_keyboardsupport.md +0 -0
  41. package/{_entries → docs/_entries}/22_oncanmove.md +0 -0
  42. package/{_entries → docs/_entries}/23_oncanmoveto.md +2 -2
  43. package/{_entries → docs/_entries}/24_oncanselectnode.md +0 -0
  44. package/{_entries → docs/_entries}/25_oncreateli.md +2 -2
  45. package/{_entries → docs/_entries}/26_ondragmove.md +0 -0
  46. package/{_entries → docs/_entries}/27_ondragstop.md +0 -0
  47. package/{_entries → docs/_entries}/28_onismovehandle.md +0 -0
  48. package/{_entries → docs/_entries}/29_onloadfailed.md +0 -0
  49. package/{_entries → docs/_entries}/30_onloading.md +2 -2
  50. package/{_entries → docs/_entries}/31_openedicon.md +0 -0
  51. package/{_entries → docs/_entries}/32_openfolderdelay.md +2 -0
  52. package/{_entries → docs/_entries}/33_rtl.md +0 -0
  53. package/{_entries → docs/_entries}/34_savestate.md +0 -0
  54. package/{_entries → docs/_entries}/35_selectable.md +0 -0
  55. package/{_entries → docs/_entries}/36_showemptyfolder.md +0 -0
  56. package/{_entries → docs/_entries}/37_slide.md +0 -0
  57. package/{_entries → docs/_entries}/38_start_dnd_delay.md +0 -0
  58. package/{_entries → docs/_entries}/39_tabindex.md +0 -0
  59. package/{_entries → docs/_entries}/40_usecontextmenu.md +0 -0
  60. package/{_entries → docs/_entries}/41_functions.md +0 -0
  61. package/{_entries → docs/_entries}/42_addparentnode.md +1 -1
  62. package/{_entries → docs/_entries}/43_addnodeafter.md +1 -1
  63. package/{_entries → docs/_entries}/44_addnodebefore.md +1 -1
  64. package/{_entries → docs/_entries}/45_appendnode.md +5 -5
  65. package/{_entries → docs/_entries}/46_closenode.md +0 -0
  66. package/{_entries → docs/_entries}/47_destroy.md +0 -0
  67. package/{_entries → docs/_entries}/48_getnodebycallback.md +0 -0
  68. package/{_entries → docs/_entries}/49_getnodebyid.md +0 -0
  69. package/{_entries → docs/_entries}/50_getnodebyhtmlelement.md +2 -2
  70. package/{_entries → docs/_entries}/51_getselectednode.md +0 -0
  71. package/{_entries → docs/_entries}/52_getstate.md +0 -0
  72. package/{_entries → docs/_entries}/53_gettree.md +1 -1
  73. package/{_entries → docs/_entries}/54_isdragging.md +1 -1
  74. package/{_entries → docs/_entries}/55_loaddata.md +3 -3
  75. package/{_entries → docs/_entries}/56_loaddatafromurl.md +4 -4
  76. package/{_entries → docs/_entries}/57_movedown.md +0 -0
  77. package/{_entries → docs/_entries}/58_movenode.md +3 -3
  78. package/{_entries → docs/_entries}/59_moveup.md +0 -0
  79. package/{_entries → docs/_entries}/60_opennode.md +3 -3
  80. package/docs/_entries/61_prependnode.md +21 -0
  81. package/{_entries → docs/_entries}/62_refresh.md +0 -0
  82. package/{_entries → docs/_entries}/63_reload.md +2 -2
  83. package/{_entries → docs/_entries}/64_removenode.md +0 -0
  84. package/{_entries → docs/_entries}/65_selectnode.md +0 -0
  85. package/{_entries → docs/_entries}/66_scrolltonode.md +0 -0
  86. package/{_entries → docs/_entries}/67_setoption.md +0 -0
  87. package/{_entries → docs/_entries}/68_setstate.md +0 -0
  88. package/{_entries → docs/_entries}/69_toggle.md +0 -0
  89. package/{_entries → docs/_entries}/70_tojson.md +0 -0
  90. package/{_entries → docs/_entries}/71_updatenode.md +1 -1
  91. package/{_entries → docs/_entries}/72_events.md +0 -0
  92. package/{_entries → docs/_entries}/73_tree-click.md +0 -0
  93. package/{_entries → docs/_entries}/74_tree-close.md +0 -0
  94. package/{_entries → docs/_entries}/75_tree-contextmenu.md +0 -0
  95. package/{_entries → docs/_entries}/76_tree-dblclick.md +0 -0
  96. package/{_entries → docs/_entries}/77_tree-init.md +0 -0
  97. package/{_entries → docs/_entries}/78_tree-load-data.md +0 -0
  98. package/{_entries → docs/_entries}/79_tree-loading-data.md +0 -0
  99. package/{_entries → docs/_entries}/80_tree-move.md +0 -0
  100. package/{_entries → docs/_entries}/81_tree-refresh.md +0 -0
  101. package/{_entries → docs/_entries}/82_tree-open.md +0 -0
  102. package/{_entries → docs/_entries}/83_tree-select.md +0 -0
  103. package/{_entries → docs/_entries}/84_multiple-selection.md +0 -0
  104. package/{_entries → docs/_entries}/85_add-to-selection.md +0 -0
  105. package/{_entries → docs/_entries}/86_get-selected-nodes.md +0 -0
  106. package/{_entries → docs/_entries}/87_is-node-selected.md +1 -1
  107. package/{_entries → docs/_entries}/88_remove-from-selection.md +0 -0
  108. package/{_entries → docs/_entries}/89_node-functions.md +0 -0
  109. package/{_entries → docs/_entries}/90_children.md +0 -0
  110. package/{_entries → docs/_entries}/91_getdata.md +2 -2
  111. package/{_entries → docs/_entries}/92_getlevel.md +0 -0
  112. package/docs/_entries/93_getnextnode.md +15 -0
  113. package/{_entries → docs/_entries}/94_getnextsibling.md +0 -0
  114. package/{_entries/95_getpreviousnode.md → docs/_entries/95_getnextvisiblenode.md} +1 -1
  115. package/docs/_entries/96_getpreviousnode.md +0 -0
  116. package/{_entries/96_getprevioussibling.md → docs/_entries/97_getprevioussibling.md} +0 -0
  117. package/docs/_entries/98_getpreviousvisiblenode.md +14 -0
  118. package/{_entries/97_parent.md → docs/_entries/99_parent.md} +1 -1
  119. package/{_entries → docs/_entries}/insert.py +0 -0
  120. package/{_entries → docs/_entries}/renumber.py +0 -0
  121. package/{_examples → docs/_examples}/01_load_json_data.html +3 -5
  122. package/{_examples → docs/_examples}/02_load_json_data_from_server.html +3 -5
  123. package/{_examples → docs/_examples}/03_drag_and_drop.html +3 -5
  124. package/{_examples → docs/_examples}/04_save_state.html +3 -5
  125. package/{_examples → docs/_examples}/05_load_on_demand.html +3 -5
  126. package/{_examples → docs/_examples}/06_autoescape.html +3 -5
  127. package/{_examples → docs/_examples}/07_autoscroll.html +3 -5
  128. package/{_examples → docs/_examples}/08_multiple_select.html +3 -5
  129. package/{_examples → docs/_examples}/09_custom_html.html +3 -5
  130. package/{_examples → docs/_examples}/10_icon_buttons.html +3 -5
  131. package/{_examples → docs/_examples}/11_right-to-left.html +3 -5
  132. package/{_examples → docs/_examples}/12_button_on_right.html +3 -5
  133. package/docs/_examples/13_drag_outside.html +48 -0
  134. package/{_examples → docs/_examples}/14_filter.html +7 -9
  135. package/docs/_layouts/example.html +7 -0
  136. package/{_layouts/base.html → docs/_layouts/page.html} +4 -11
  137. package/docs/documentation.css +3 -0
  138. package/docs/index.html +65 -0
  139. package/docs/jqtree.css +189 -0
  140. package/docs/package.json +22 -0
  141. package/docs/pnpm-lock.yaml +798 -0
  142. package/docs/postcss.config.js +7 -0
  143. package/{static → docs/static}/bower.json +1 -2
  144. package/{static → docs/static}/bower_components/fontawesome/css/all.min.css +0 -0
  145. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  146. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.svg +0 -0
  147. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  148. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  149. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  150. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  151. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.svg +0 -0
  152. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  153. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  154. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  155. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  156. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.svg +0 -0
  157. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  158. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  159. package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  160. package/{static → docs/static}/bower_components/jquery/dist/jquery.js +209 -97
  161. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -0
  162. package/{static → docs/static}/bower_components/jquery-mockjax/dist/jquery.mockjax.js +0 -0
  163. package/docs/static/documentation.css +1453 -0
  164. package/docs/static/documentation.js +26 -0
  165. package/{static → docs/static}/example.css +5 -38
  166. package/{static → docs/static}/example.postcss +5 -35
  167. package/{static → docs/static}/example_data.js +0 -0
  168. package/{static → docs/static}/examples/autoescape.js +0 -0
  169. package/{static → docs/static}/examples/autoscroll.js +0 -0
  170. package/{static → docs/static}/examples/button-on-right.js +0 -0
  171. package/{static → docs/static}/examples/custom_html.js +5 -9
  172. package/{static → docs/static}/examples/drag-outside.js +0 -0
  173. package/{static → docs/static}/examples/drag_and_drop.js +0 -0
  174. package/{static → docs/static}/examples/filter.js +2 -2
  175. package/{static → docs/static}/examples/icon_buttons.js +0 -0
  176. package/{static → docs/static}/examples/load_json_data.js +0 -0
  177. package/{static → docs/static}/examples/load_json_data_from_server.js +0 -0
  178. package/{static → docs/static}/examples/load_on_demand.js +0 -0
  179. package/{static → docs/static}/examples/multiple_select.js +0 -0
  180. package/{static → docs/static}/examples/right-to-left.js +0 -0
  181. package/{static → docs/static}/examples/save_state.js +0 -0
  182. package/{static → docs/static}/monokai.css +0 -0
  183. package/{static → docs/static}/spinner.gif +0 -0
  184. package/docs/tailwind.config.js +16 -0
  185. package/docs/tree.jquery.js +21 -0
  186. package/lib/dataLoader.js +5 -31
  187. package/lib/dragAndDropHandler.js +26 -135
  188. package/lib/elementsRenderer.js +29 -59
  189. package/lib/keyHandler.js +8 -32
  190. package/lib/mouse.widget.js +16 -77
  191. package/lib/node.js +60 -125
  192. package/lib/nodeElement.js +8 -75
  193. package/lib/playwright/coverage.js +101 -0
  194. package/lib/playwright/playwright.test.js +212 -182
  195. package/lib/playwright/testUtils.js +201 -0
  196. package/lib/saveStateHandler.js +12 -61
  197. package/lib/scrollHandler.js +17 -74
  198. package/lib/selectNodeHandler.js +5 -24
  199. package/lib/simple.widget.js +18 -53
  200. package/lib/test/jqTree/create.test.js +0 -4
  201. package/lib/test/jqTree/events.test.js +10 -16
  202. package/lib/test/jqTree/keyboard.test.js +0 -6
  203. package/lib/test/jqTree/loadOnDemand.test.js +107 -139
  204. package/lib/test/jqTree/methods.test.js +136 -159
  205. package/lib/test/jqTree/options.test.js +53 -63
  206. package/lib/test/node.test.js +127 -72
  207. package/lib/test/nodeUtil.test.js +0 -1
  208. package/lib/test/support/jqTreeMatchers.js +4 -9
  209. package/lib/test/support/setupTests.js +0 -4
  210. package/lib/test/support/testUtil.js +2 -11
  211. package/lib/test/support/treeStructure.js +0 -6
  212. package/lib/test/util.test.js +0 -1
  213. package/lib/tree.jquery.js +32 -243
  214. package/lib/util.js +0 -6
  215. package/lib/version.js +1 -1
  216. package/package.json +54 -54
  217. package/src/dragAndDropHandler.ts +8 -4
  218. package/src/jqtreeOptions.ts +1 -1
  219. package/src/keyHandler.ts +3 -3
  220. package/src/node.ts +43 -12
  221. package/src/playwright/.eslintrc +2 -2
  222. package/src/playwright/coverage.ts +41 -0
  223. package/src/playwright/playwright.test.ts +50 -52
  224. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-darwin.png +0 -0
  225. package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-linux.png +0 -0
  226. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-darwin.png +0 -0
  227. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-linux.png +0 -0
  228. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-darwin.png +0 -0
  229. package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-linux.png +0 -0
  230. package/src/playwright/testUtils.ts +122 -0
  231. package/src/test/.eslintrc +15 -3
  232. package/src/test/jqTree/events.test.ts +10 -9
  233. package/src/test/jqTree/loadOnDemand.test.ts +10 -10
  234. package/src/test/jqTree/methods.test.ts +37 -45
  235. package/src/test/jqTree/options.test.ts +26 -28
  236. package/src/test/node.test.ts +146 -54
  237. package/src/tree.jquery.d.ts +1 -1
  238. package/src/tree.jquery.ts +6 -5
  239. package/src/version.ts +1 -1
  240. package/tree.jquery.debug.js +217 -867
  241. package/tree.jquery.debug.js.map +1 -1
  242. package/tree.jquery.js +3 -3
  243. package/tree.jquery.js.map +1 -1
  244. package/_entries/61_prependnode.md +0 -21
  245. package/_entries/93_getnextnode.md +0 -12
  246. package/_examples/13_drag_outside.html +0 -26
  247. package/_layouts/frontpage.html +0 -20
  248. package/_layouts/page.html +0 -7
  249. package/index.html +0 -48
  250. package/jest-browser.config.js +0 -15
  251. package/jest-playwright.config.js +0 -21
  252. package/jest.config.js +0 -8
  253. package/lib/playwright/testUtil.js +0 -459
  254. package/lib/playwright/visualRegression.js +0 -193
  255. package/production +0 -5
  256. package/src/playwright/screenshots/displays_a_tree_Desktop.png +0 -0
  257. package/src/playwright/screenshots/displays_a_tree_iPhone 6.png +0 -0
  258. package/src/playwright/screenshots/moves_a_node_Desktop.png +0 -0
  259. package/src/playwright/screenshots/moves_a_node_iPhone 6.png +0 -0
  260. package/src/playwright/screenshots/opens_a_node_Desktop.png +0 -0
  261. package/src/playwright/screenshots/opens_a_node_iPhone 6.png +0 -0
  262. package/src/playwright/screenshots/selects_a_node_Desktop.png +0 -0
  263. package/src/playwright/screenshots/selects_a_node_iPhone 6.png +0 -0
  264. package/src/playwright/testUtil.ts +0 -170
  265. package/src/playwright/visualRegression.ts +0 -88
  266. package/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +0 -6
  267. package/static/bower_components/bootstrap/dist/css/bootstrap.min.css +0 -6
  268. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  269. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +0 -288
  270. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  271. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  272. package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  273. package/static/bower_components/bootstrap/dist/js/bootstrap.min.js +0 -6
  274. package/static/bower_components/jquery/dist/jquery.min.js +0 -2
  275. package/static/documentation.css +0 -171
  276. package/static/documentation.js +0 -48
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _givens = _interopRequireDefault(require("givens"));
4
-
5
4
  var _node = require("../node");
6
-
7
5
  var _exampleData = _interopRequireDefault(require("./support/exampleData"));
8
-
9
6
  require("jest-extended");
10
-
11
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
-
13
8
  var context = describe;
14
9
  describe("addAfter", function () {
15
10
  var given = (0, _givens["default"])();
@@ -378,8 +373,8 @@ describe("constructor", function () {
378
373
  id: 123,
379
374
  name: "n1",
380
375
  url: "/"
381
- }); // todo: match object?
382
-
376
+ });
377
+ // todo: match object?
383
378
  expect(given.node).not.toHaveProperty("label");
384
379
  expect(given.node.children).toHaveLength(0);
385
380
  expect(given.node.parent).toBeNull();
@@ -520,50 +515,39 @@ describe("getNextNode", function () {
520
515
  given("tree", function () {
521
516
  return new _node.Node().loadFromData(_exampleData["default"]);
522
517
  });
523
- given("nextNode", function () {
524
- return given.fromNode.getNextNode(given.includeChildren);
525
- });
526
- context("with includeChildren is true", function () {
527
- given("includeChildren", function () {
528
- return true;
518
+ context("with a parent node", function () {
519
+ given("fromNode", function () {
520
+ return given.tree.getNodeByNameMustExist("node1");
529
521
  });
530
- context("with a parent node", function () {
531
- given("fromNode", function () {
532
- return given.tree.getNodeByNameMustExist("node1");
533
- });
534
- context("when the parent node is closed", function () {
535
- it("returns the next sibling", function () {
536
- expect(given.nextNode).toMatchObject({
537
- name: "node2"
538
- });
539
- });
540
- });
541
- context("when the parent node is open", function () {
542
- beforeEach(function () {
543
- given.fromNode.is_open = true;
544
- });
545
- it("returns the first child", function () {
546
- expect(given.nextNode).toMatchObject({
547
- name: "child1"
548
- });
522
+ context("when the parent node is closed", function () {
523
+ it("returns the first child", function () {
524
+ expect(given.fromNode.getNextNode()).toMatchObject({
525
+ name: "child1"
549
526
  });
550
527
  });
551
528
  });
552
- context("with the node is the last child", function () {
553
- given("fromNode", function () {
554
- return given.tree.getNodeByNameMustExist("child2");
529
+ context("when the parent node is open", function () {
530
+ beforeEach(function () {
531
+ given.fromNode.is_open = true;
555
532
  });
556
- it("returns the next sibling of the parent", function () {
557
- expect(given.nextNode).toMatchObject({
558
- name: "node2"
533
+ it("returns the first child", function () {
534
+ expect(given.fromNode.getNextNode()).toMatchObject({
535
+ name: "child1"
559
536
  });
560
537
  });
561
538
  });
562
539
  });
563
- context("with includeChildren is false", function () {
564
- given("includeChildren", function () {
565
- return false;
540
+ context("with the node is the last child", function () {
541
+ given("fromNode", function () {
542
+ return given.tree.getNodeByNameMustExist("child2");
543
+ });
544
+ it("returns the next sibling of the parent", function () {
545
+ expect(given.fromNode.getNextNode()).toMatchObject({
546
+ name: "node2"
547
+ });
566
548
  });
549
+ });
550
+ context("with includeChildren is false", function () {
567
551
  context("with an open parent node", function () {
568
552
  given("fromNode", function () {
569
553
  return given.tree.getNodeByNameMustExist("node1");
@@ -572,11 +556,57 @@ describe("getNextNode", function () {
572
556
  given.fromNode.is_open = true;
573
557
  });
574
558
  it("returns the next sibling", function () {
575
- expect(given.nextNode).toMatchObject({
559
+ expect(given.fromNode.getNextNode(false)).toMatchObject({
560
+ name: "node2"
561
+ });
562
+ });
563
+ });
564
+ });
565
+ });
566
+ describe("getNextVisibleNode", function () {
567
+ var given = (0, _givens["default"])();
568
+ given("tree", function () {
569
+ return new _node.Node().loadFromData(_exampleData["default"]);
570
+ });
571
+ context("with a parent node", function () {
572
+ given("fromNode", function () {
573
+ return given.tree.getNodeByNameMustExist("node1");
574
+ });
575
+ context("when the parent node is closed", function () {
576
+ it("returns the next sibling", function () {
577
+ expect(given.fromNode.getNextVisibleNode()).toMatchObject({
576
578
  name: "node2"
577
579
  });
578
580
  });
579
581
  });
582
+ context("when the parent node is open", function () {
583
+ beforeEach(function () {
584
+ given.fromNode.is_open = true;
585
+ });
586
+ it("returns the first child", function () {
587
+ expect(given.fromNode.getNextVisibleNode()).toMatchObject({
588
+ name: "child1"
589
+ });
590
+ });
591
+ });
592
+ });
593
+ context("with the node is the last child", function () {
594
+ given("fromNode", function () {
595
+ return given.tree.getNodeByNameMustExist("child2");
596
+ });
597
+ it("returns the next sibling of the parent", function () {
598
+ expect(given.fromNode.getNextVisibleNode()).toMatchObject({
599
+ name: "node2"
600
+ });
601
+ });
602
+ });
603
+ context("with the tree node", function () {
604
+ given("fromNode", function () {
605
+ return given.tree;
606
+ });
607
+ it("returns null", function () {
608
+ expect(given.fromNode.getNextVisibleNode()).toBeNull();
609
+ });
580
610
  });
581
611
  });
582
612
  describe("getNextSibling", function () {
@@ -699,44 +729,71 @@ describe("getParent", function () {
699
729
  });
700
730
  describe("getPreviousNode", function () {
701
731
  var given = (0, _givens["default"])();
702
- given("node2", function () {
703
- return given.tree.getNodeByNameMustExist("node2");
732
+ given("tree", function () {
733
+ return new _node.Node().loadFromData(_exampleData["default"]);
734
+ });
735
+ it("returns null with a tree node", function () {
736
+ expect(given.tree.getPreviousNode()).toBeNull();
737
+ });
738
+ it("returns the last child of the previous sibling when the previous node is closed and has children", function () {
739
+ given.tree.getNodeByNameMustExist("node2").is_open = false;
740
+ var node2 = given.tree.getNodeByNameMustExist("node2");
741
+ expect(node2.getPreviousNode()).toMatchObject({
742
+ name: "child2"
743
+ });
744
+ });
745
+ it("returns the last child of the previous sibling when the previous node is open and has children", function () {
746
+ given.tree.getNodeByNameMustExist("node2").is_open = true;
747
+ var node2 = given.tree.getNodeByNameMustExist("node2");
748
+ expect(node2.getPreviousNode()).toMatchObject({
749
+ name: "child2"
750
+ });
751
+ });
752
+ it("returns the first child if a node is the second child", function () {
753
+ var child2 = given.tree.getNodeByNameMustExist("child2");
754
+ expect(child2.getPreviousNode()).toMatchObject({
755
+ name: "child1"
756
+ });
704
757
  });
705
- given("node3", function () {
706
- return given.tree.getNodeByNameMustExist("node3");
758
+ it("returns the parent with a node that is the first child", function () {
759
+ var node3 = given.tree.getNodeByNameMustExist("node3");
760
+ expect(node3.getPreviousNode()).toMatchObject({
761
+ name: "node2"
762
+ });
707
763
  });
764
+ });
765
+ describe("getPreviousVisibleNode", function () {
766
+ var given = (0, _givens["default"])();
708
767
  given("tree", function () {
709
768
  return new _node.Node().loadFromData(_exampleData["default"]);
710
769
  });
711
- context("with a tree", function () {
712
- it("returns null", function () {
713
- expect(given.tree.getPreviousNode()).toBeNull();
770
+ it("returns null with a tree node", function () {
771
+ expect(given.tree.getPreviousVisibleNode()).toBeNull();
772
+ });
773
+ it("returns the previous sibling when the previous sibling is closed and has children", function () {
774
+ given.tree.getNodeByNameMustExist("node2").is_open = false;
775
+ var node2 = given.tree.getNodeByNameMustExist("node2");
776
+ expect(node2.getPreviousVisibleNode()).toMatchObject({
777
+ name: "node1"
714
778
  });
715
779
  });
716
- context("when the previous sibling has children", function () {
717
- context("when the previous node is closed", function () {
718
- it("returns the previous sibling", function () {
719
- expect(given.node2.getPreviousNode()).toMatchObject({
720
- name: "node1"
721
- });
722
- });
780
+ it("returns the last child of the previous sibling when the previous sibling is open and has children", function () {
781
+ given.tree.getNodeByNameMustExist("node1").is_open = true;
782
+ var node2 = given.tree.getNodeByNameMustExist("node2");
783
+ expect(node2.getPreviousVisibleNode()).toMatchObject({
784
+ name: "child2"
723
785
  });
724
- context("when the previous node is open", function () {
725
- beforeEach(function () {
726
- given.tree.getNodeByNameMustExist("node1").is_open = true;
727
- });
728
- it("returns the last child of the previous sibling", function () {
729
- expect(given.node2.getPreviousNode()).toMatchObject({
730
- name: "child2"
731
- });
732
- });
786
+ });
787
+ it("returns the first child if a node is the second child", function () {
788
+ var child2 = given.tree.getNodeByNameMustExist("child2");
789
+ expect(child2.getPreviousVisibleNode()).toMatchObject({
790
+ name: "child1"
733
791
  });
734
792
  });
735
- context("with a node that is the first child", function () {
736
- it("returns the parent", function () {
737
- expect(given.node3.getPreviousNode()).toMatchObject({
738
- name: "node2"
739
- });
793
+ it("returns the parent when a node is the first child", function () {
794
+ var node3 = given.tree.getNodeByNameMustExist("node3");
795
+ expect(node3.getPreviousVisibleNode()).toMatchObject({
796
+ name: "node2"
740
797
  });
741
798
  });
742
799
  });
@@ -861,7 +918,6 @@ describe("iterate", function () {
861
918
  given.visited.push([node.name, level]);
862
919
  return true;
863
920
  };
864
-
865
921
  given("visitor", function () {
866
922
  return visitAllNodes;
867
923
  });
@@ -874,7 +930,6 @@ describe("iterate", function () {
874
930
  given.visited.push([node.name, level]);
875
931
  return false;
876
932
  };
877
-
878
933
  given("visitor", function () {
879
934
  return visitNodes;
880
935
  });
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _node = require("../node");
4
-
5
4
  var context = describe;
6
5
  describe("getPosition", function () {
7
6
  it("returns the position", function () {
@@ -1,24 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _treeStructure = _interopRequireDefault(require("./treeStructure"));
4
-
5
4
  var _testUtil = require("./testUtil");
6
-
7
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
-
9
6
  var assertJqTreeFolder = function assertJqTreeFolder($el) {
10
7
  /* istanbul ignore if */
11
8
  if (!$el.hasClass("jqtree-folder")) {
12
9
  throw new Error("Node is not a folder");
13
10
  }
14
11
  };
15
-
16
12
  expect.extend({
17
13
  toBeClosed: function toBeClosed(el) {
18
14
  var $el = jQuery(el);
19
15
  assertJqTreeFolder($el);
20
- /* istanbul ignore next */
21
16
 
17
+ /* istanbul ignore next */
22
18
  return {
23
19
  message: function message() {
24
20
  return "The node is open";
@@ -38,8 +34,8 @@ expect.extend({
38
34
  toBeOpen: function toBeOpen(el) {
39
35
  var $el = jQuery(el);
40
36
  assertJqTreeFolder($el);
41
- /* istanbul ignore next */
42
37
 
38
+ /* istanbul ignore next */
43
39
  return {
44
40
  message: function message() {
45
41
  return "The node is closed";
@@ -49,8 +45,8 @@ expect.extend({
49
45
  },
50
46
  toBeSelected: function toBeSelected(el) {
51
47
  var $el = jQuery(el);
52
- /* istanbul ignore next */
53
48
 
49
+ /* istanbul ignore next */
54
50
  return {
55
51
  message: function message() {
56
52
  return "The node is not selected";
@@ -60,11 +56,10 @@ expect.extend({
60
56
  },
61
57
  toHaveTreeStructure: function toHaveTreeStructure(el, expectedStructure) {
62
58
  var _this = this;
63
-
64
59
  var $el = jQuery(el);
65
60
  var receivedStructure = (0, _treeStructure["default"])($el);
66
- /* istanbul ignore next */
67
61
 
62
+ /* istanbul ignore next */
68
63
  return {
69
64
  message: function message() {
70
65
  return _this.utils.printDiffOrStringify(expectedStructure, receivedStructure, "expected", "received", true);
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _jquery = _interopRequireDefault(require("jquery"));
4
-
5
4
  require("./jqTreeMatchers");
6
-
7
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
-
9
6
  window.$ = _jquery["default"]; // eslint-disable-line @typescript-eslint/no-unsafe-member-access
10
-
11
7
  window.jQuery = _jquery["default"]; // eslint-disable-line @typescript-eslint/no-unsafe-member-access
@@ -4,38 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.togglerLink = exports.titleSpan = exports.singleChild = void 0;
7
-
8
7
  var singleChild = function singleChild($el, selector) {
9
8
  var $result = $el.children(selector);
10
- /* istanbul ignore if */
11
9
 
10
+ /* istanbul ignore if */
12
11
  if ($result.length === 0) {
13
12
  throw "No child found for selector '".concat(selector, "'");
14
13
  }
15
- /* istanbul ignore if */
16
-
17
14
 
15
+ /* istanbul ignore if */
18
16
  if ($result.length > 1) {
19
17
  throw "Multiple elements found for selector '".concat(selector, "'");
20
18
  }
21
-
22
19
  return $result;
23
20
  };
24
-
25
21
  exports.singleChild = singleChild;
26
-
27
22
  var titleSpan = function titleSpan(liNode) {
28
23
  return singleChild(nodeElement(liNode), "span.jqtree-title");
29
24
  };
30
-
31
25
  exports.titleSpan = titleSpan;
32
-
33
26
  var togglerLink = function togglerLink(liNode) {
34
27
  return singleChild(nodeElement(liNode), "a.jqtree-toggler");
35
28
  };
36
-
37
29
  exports.togglerLink = togglerLink;
38
-
39
30
  var nodeElement = function nodeElement(liNode) {
40
31
  return singleChild(jQuery(liNode), "div.jqtree-element ");
41
32
  };
@@ -4,15 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  var _testUtil = require("./testUtil");
9
-
10
8
  var getTreeNode = function getTreeNode($li) {
11
9
  var $div = (0, _testUtil.singleChild)($li, "div.jqtree-element");
12
10
  var $span = (0, _testUtil.singleChild)($div, "span.jqtree-title");
13
11
  var name = $span.html();
14
12
  var selected = $li.hasClass("jqtree-selected");
15
-
16
13
  if ($li.hasClass("jqtree-folder")) {
17
14
  var $ul = $li.children("ul.jqtree_common");
18
15
  return {
@@ -30,16 +27,13 @@ var getTreeNode = function getTreeNode($li) {
30
27
  };
31
28
  }
32
29
  };
33
-
34
30
  var getChildren = function getChildren($ul) {
35
31
  return $ul.children("li.jqtree_common").map(function (_, li) {
36
32
  return getTreeNode(jQuery(li));
37
33
  }).get();
38
34
  };
39
-
40
35
  var treeStructure = function treeStructure($el) {
41
36
  return getChildren((0, _testUtil.singleChild)($el, "ul.jqtree-tree"));
42
37
  };
43
-
44
38
  var _default = treeStructure;
45
39
  exports["default"] = _default;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _util = require("../util");
4
-
5
4
  describe("getBoolString", function () {
6
5
  it("returns true or false", function () {
7
6
  expect((0, _util.getBoolString)(true)).toBe("true");