jqtree 1.7.4 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/.eslintrc +5 -1
  2. package/bower.json +1 -1
  3. package/config/babel.config.json +1 -1
  4. package/config/production +2 -0
  5. package/devserver/devserver_scroll.js +8 -0
  6. package/devserver/test_scroll.html +28 -0
  7. package/devserver/test_scroll_container.html +39 -0
  8. package/docs/_config.yml +1 -1
  9. package/docs/_entries/general/changelog.md +12 -0
  10. package/docs/package.json +1 -1
  11. package/docs/pnpm-lock.yaml +30 -30
  12. package/package.json +31 -27
  13. package/src/dataLoader.ts +44 -19
  14. package/src/dragAndDropHandler/dragElement.ts +42 -0
  15. package/src/dragAndDropHandler/hitAreasGenerator.ts +175 -0
  16. package/src/dragAndDropHandler/index.ts +470 -0
  17. package/src/dragAndDropHandler/types.ts +12 -0
  18. package/src/dragAndDropHandler/visibleNodeIterator.ts +97 -0
  19. package/src/elementsRenderer.ts +75 -40
  20. package/src/jqtreeMethodTypes.ts +40 -0
  21. package/src/jqtreeOptions.ts +43 -25
  22. package/src/keyHandler.ts +59 -38
  23. package/src/mouse.widget.ts +3 -3
  24. package/src/mouseWidgetTypes.ts +6 -0
  25. package/src/node.ts +32 -48
  26. package/src/nodeElement/borderDropHint.ts +32 -0
  27. package/src/nodeElement/folderElement.ts +133 -0
  28. package/src/nodeElement/ghostDropHint.ts +68 -0
  29. package/src/nodeElement/index.ts +101 -0
  30. package/src/nodeUtils.ts +10 -0
  31. package/src/playwright/coverage.ts +1 -4
  32. package/src/playwright/playwright.test.ts +203 -15
  33. package/src/playwright/testUtils.ts +23 -15
  34. package/src/saveStateHandler.ts +75 -26
  35. package/src/scrollHandler/containerScrollParent.ts +177 -0
  36. package/src/scrollHandler/createScrollParent.ts +50 -0
  37. package/src/scrollHandler/documentScrollParent.ts +182 -0
  38. package/src/scrollHandler/types.ts +7 -0
  39. package/src/scrollHandler.ts +36 -248
  40. package/src/selectNodeHandler.ts +10 -16
  41. package/src/test/jqTree/keyboard.test.ts +18 -23
  42. package/src/test/jqTree/loadOnDemand.test.ts +2 -3
  43. package/src/test/jqTree/methods.test.ts +33 -4
  44. package/src/test/jqTree/options.test.ts +15 -4
  45. package/src/test/node.test.ts +85 -26
  46. package/src/test/nodeUtils.test.ts +21 -0
  47. package/src/tree.jquery.ts +262 -83
  48. package/src/util.ts +3 -0
  49. package/src/version.ts +1 -1
  50. package/tree.jquery.debug.js +1922 -2608
  51. package/tree.jquery.debug.js.map +1 -1
  52. package/tree.jquery.js +2 -2
  53. package/tree.jquery.js.map +1 -1
  54. package/lib/dataLoader.js +0 -124
  55. package/lib/dragAndDropHandler.js +0 -596
  56. package/lib/elementsRenderer.js +0 -268
  57. package/lib/jqtreeOptions.js +0 -1
  58. package/lib/keyHandler.js +0 -115
  59. package/lib/mouse.widget.js +0 -256
  60. package/lib/node.js +0 -717
  61. package/lib/nodeElement.js +0 -277
  62. package/lib/playwright/coverage.js +0 -96
  63. package/lib/playwright/playwright.test.js +0 -228
  64. package/lib/playwright/testUtils.js +0 -184
  65. package/lib/saveStateHandler.js +0 -278
  66. package/lib/scrollHandler.js +0 -250
  67. package/lib/selectNodeHandler.js +0 -129
  68. package/lib/simple.widget.js +0 -159
  69. package/lib/test/global.d.js +0 -3
  70. package/lib/test/jqTree/accessibility.test.js +0 -37
  71. package/lib/test/jqTree/create.test.js +0 -48
  72. package/lib/test/jqTree/events.test.js +0 -210
  73. package/lib/test/jqTree/keyboard.test.js +0 -225
  74. package/lib/test/jqTree/loadOnDemand.test.js +0 -218
  75. package/lib/test/jqTree/methods.test.js +0 -1347
  76. package/lib/test/jqTree/options.test.js +0 -548
  77. package/lib/test/node.test.js +0 -1160
  78. package/lib/test/nodeUtil.test.js +0 -27
  79. package/lib/test/support/exampleData.js +0 -36
  80. package/lib/test/support/jqTreeMatchers.js +0 -70
  81. package/lib/test/support/matchers.d.js +0 -1
  82. package/lib/test/support/setupTests.js +0 -7
  83. package/lib/test/support/testUtil.js +0 -32
  84. package/lib/test/support/treeStructure.js +0 -39
  85. package/lib/test/util.test.js +0 -26
  86. package/lib/tree.jquery.d.js +0 -1
  87. package/lib/tree.jquery.js +0 -1106
  88. package/lib/types.js +0 -1
  89. package/lib/typings.d.js +0 -2
  90. package/lib/util.js +0 -18
  91. package/lib/version.js +0 -9
  92. package/src/dragAndDropHandler.ts +0 -719
  93. package/src/nodeElement.ts +0 -272
  94. package/src/types.ts +0 -19
package/.eslintrc CHANGED
@@ -15,6 +15,10 @@
15
15
  "@typescript-eslint/interface-name-prefix": "off",
16
16
  "@typescript-eslint/no-explicit-any": "off",
17
17
  "@typescript-eslint/no-use-before-define": "off",
18
+ "@typescript-eslint/no-unused-vars": ["error", {
19
+ "argsIgnorePattern": "^_",
20
+ "varsIgnorePattern": "^_"
21
+ }],
18
22
  "@typescript-eslint/prefer-includes": "off",
19
23
  "@typescript-eslint/triple-slash-reference": "off",
20
24
  "@typescript-eslint/prefer-string-starts-ends-with": "off",
@@ -29,6 +33,6 @@
29
33
  ]
30
34
  },
31
35
  "parserOptions": {
32
- "project": "./tsconfig.json"
36
+ "project": "./tsconfig.json",
33
37
  }
34
38
  }
package/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jqTree",
3
- "version": "1.7.4",
3
+ "version": "1.8.0",
4
4
  "main": [
5
5
  "jqtree.css",
6
6
  "jqtree-circle.png",
@@ -4,7 +4,7 @@
4
4
  "test": {
5
5
  "presets": [
6
6
  "@babel/preset-typescript",
7
- ["@babel/preset-env", { "targets": { "node": "current" } }]
7
+ "@babel/preset-env"
8
8
  ]
9
9
  }
10
10
  }
package/config/production CHANGED
@@ -1,3 +1,5 @@
1
+ rm -rf ./lib &&
2
+ mkdir lib &&
1
3
  rollup -c config/rollup.config.mjs &&
2
4
  DEBUG_BUILD=true rollup -c config/rollup.config.mjs &&
3
5
  babel src --config-file ./config/babel.config.json --out-dir lib --extensions .ts &&
@@ -0,0 +1,8 @@
1
+ const $tree = $("#tree1");
2
+
3
+ $tree.tree({
4
+ autoOpen: true,
5
+ data: ExampleData.exampleData,
6
+ dragAndDrop: true,
7
+ useContextMenu: false,
8
+ });
@@ -0,0 +1,28 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>JqTree devserver</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <meta
8
+ name="description"
9
+ content="JqTree is a jQuery widget for displaying a tree structure in html"
10
+ />
11
+ <link rel="stylesheet" href="/jqtree.css" />
12
+ <style>
13
+ body {
14
+ font-size: 20px;
15
+ }
16
+ ul.jqtree-tree ul.jqtree_common {
17
+ margin-left: 128px;
18
+ }
19
+ </style>
20
+ </head>
21
+ <body>
22
+ <div id="tree1"></div>
23
+ </body>
24
+ <script src="/bower_components/jquery/dist/jquery.min.js"></script>
25
+ <script src="/tree.jquery.js"></script>
26
+ <script src="/example_data.js"></script>
27
+ <script src="/devserver_scroll.js"></script>
28
+ </html>
@@ -0,0 +1,39 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>JqTree devserver</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <meta
8
+ name="description"
9
+ content="JqTree is a jQuery widget for displaying a tree structure in html"
10
+ />
11
+ <link rel="stylesheet" href="/jqtree.css" />
12
+ <style>
13
+ body {
14
+ font-size: 20px;
15
+ }
16
+ ul.jqtree-tree ul.jqtree_common {
17
+ margin-left: 128px;
18
+ }
19
+ #scroll-container {
20
+ height: 200px;
21
+ width: 400px;
22
+ overflow-y: scroll;
23
+ user-select: none;
24
+ background-color: #eee;
25
+ margin: 128px;
26
+ padding: 8px;
27
+ }
28
+ </style>
29
+ </head>
30
+ <body>
31
+ <div id="scroll-container">
32
+ <div id="tree1"></div>
33
+ </div>
34
+ </body>
35
+ <script src="/bower_components/jquery/dist/jquery.min.js"></script>
36
+ <script src="/tree.jquery.js"></script>
37
+ <script src="/example_data.js"></script>
38
+ <script src="/devserver_scroll.js"></script>
39
+ </html>
package/docs/_config.yml CHANGED
@@ -118,7 +118,7 @@ defaults:
118
118
  values:
119
119
  layout: "example"
120
120
 
121
- jqtree_version: 1.7.4
121
+ jqtree_version: 1.8.0
122
122
 
123
123
  # Build settings
124
124
  markdown: kramdown
@@ -3,6 +3,18 @@ title: Changelog
3
3
  name: changelog
4
4
  ---
5
5
 
6
+ #### 1.8.0 (november 26 2023)
7
+
8
+ This release drops support for very old browsers (like IE 11).
9
+
10
+ - Issue #735: compile to es6. This decreases the file size to 49K (from 62K). This is the minified (not gzipped) version.
11
+ - Issue #766: open parent nodes in the addToSelection method (thanks to Tmgarcia)
12
+
13
+ #### 1.7.5 (october 21 2023)
14
+
15
+ - Issue #734: fix autoscroll issue (thanks to WriterStat)
16
+ - issue #736: fix empty folder for prepend
17
+
6
18
  #### 1.7.4 (september 24 2023)
7
19
 
8
20
  - Issue #675: support toggler on the right with multiline (thanks to Odungern)
package/docs/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "devDependencies": {
13
13
  "@tailwindcss/typography": "^0.5.9",
14
14
  "autoprefixer": "^10.4.15",
15
- "postcss": "^8.4.28",
15
+ "postcss": "^8.4.31",
16
16
  "postcss-cli": "^10.1.0",
17
17
  "postcss-import": "^15.1.0",
18
18
  "postcss-load-config": "^4.0.1",
@@ -10,22 +10,22 @@ devDependencies:
10
10
  version: 0.5.9(tailwindcss@3.3.3)
11
11
  autoprefixer:
12
12
  specifier: ^10.4.15
13
- version: 10.4.15(postcss@8.4.28)
13
+ version: 10.4.15(postcss@8.4.31)
14
14
  postcss:
15
- specifier: ^8.4.28
16
- version: 8.4.28
15
+ specifier: ^8.4.31
16
+ version: 8.4.31
17
17
  postcss-cli:
18
18
  specifier: ^10.1.0
19
- version: 10.1.0(postcss@8.4.28)
19
+ version: 10.1.0(postcss@8.4.31)
20
20
  postcss-import:
21
21
  specifier: ^15.1.0
22
- version: 15.1.0(postcss@8.4.28)
22
+ version: 15.1.0(postcss@8.4.31)
23
23
  postcss-load-config:
24
24
  specifier: ^4.0.1
25
- version: 4.0.1(postcss@8.4.28)
25
+ version: 4.0.1(postcss@8.4.31)
26
26
  postcss-nested:
27
27
  specifier: ^6.0.1
28
- version: 6.0.1(postcss@8.4.28)
28
+ version: 6.0.1(postcss@8.4.31)
29
29
  tailwindcss:
30
30
  specifier: ^3.3.3
31
31
  version: 3.3.3
@@ -128,7 +128,7 @@ packages:
128
128
  resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
129
129
  dev: true
130
130
 
131
- /autoprefixer@10.4.15(postcss@8.4.28):
131
+ /autoprefixer@10.4.15(postcss@8.4.31):
132
132
  resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==}
133
133
  engines: {node: ^10 || ^12 || >=14}
134
134
  hasBin: true
@@ -140,7 +140,7 @@ packages:
140
140
  fraction.js: 4.2.1
141
141
  normalize-range: 0.1.2
142
142
  picocolors: 1.0.0
143
- postcss: 8.4.28
143
+ postcss: 8.4.31
144
144
  postcss-value-parser: 4.2.0
145
145
  dev: true
146
146
 
@@ -561,7 +561,7 @@ packages:
561
561
  engines: {node: '>= 6'}
562
562
  dev: true
563
563
 
564
- /postcss-cli@10.1.0(postcss@8.4.28):
564
+ /postcss-cli@10.1.0(postcss@8.4.31):
565
565
  resolution: {integrity: sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==}
566
566
  engines: {node: '>=14'}
567
567
  hasBin: true
@@ -574,9 +574,9 @@ packages:
574
574
  get-stdin: 9.0.0
575
575
  globby: 13.2.2
576
576
  picocolors: 1.0.0
577
- postcss: 8.4.28
578
- postcss-load-config: 4.0.1(postcss@8.4.28)
579
- postcss-reporter: 7.0.5(postcss@8.4.28)
577
+ postcss: 8.4.31
578
+ postcss-load-config: 4.0.1(postcss@8.4.31)
579
+ postcss-reporter: 7.0.5(postcss@8.4.31)
580
580
  pretty-hrtime: 1.0.3
581
581
  read-cache: 1.0.0
582
582
  slash: 5.1.0
@@ -585,29 +585,29 @@ packages:
585
585
  - ts-node
586
586
  dev: true
587
587
 
588
- /postcss-import@15.1.0(postcss@8.4.28):
588
+ /postcss-import@15.1.0(postcss@8.4.31):
589
589
  resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
590
590
  engines: {node: '>=14.0.0'}
591
591
  peerDependencies:
592
592
  postcss: ^8.0.0
593
593
  dependencies:
594
- postcss: 8.4.28
594
+ postcss: 8.4.31
595
595
  postcss-value-parser: 4.2.0
596
596
  read-cache: 1.0.0
597
597
  resolve: 1.22.4
598
598
  dev: true
599
599
 
600
- /postcss-js@4.0.1(postcss@8.4.28):
600
+ /postcss-js@4.0.1(postcss@8.4.31):
601
601
  resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
602
602
  engines: {node: ^12 || ^14 || >= 16}
603
603
  peerDependencies:
604
604
  postcss: ^8.4.21
605
605
  dependencies:
606
606
  camelcase-css: 2.0.1
607
- postcss: 8.4.28
607
+ postcss: 8.4.31
608
608
  dev: true
609
609
 
610
- /postcss-load-config@4.0.1(postcss@8.4.28):
610
+ /postcss-load-config@4.0.1(postcss@8.4.31):
611
611
  resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
612
612
  engines: {node: '>= 14'}
613
613
  peerDependencies:
@@ -620,28 +620,28 @@ packages:
620
620
  optional: true
621
621
  dependencies:
622
622
  lilconfig: 2.1.0
623
- postcss: 8.4.28
623
+ postcss: 8.4.31
624
624
  yaml: 2.3.2
625
625
  dev: true
626
626
 
627
- /postcss-nested@6.0.1(postcss@8.4.28):
627
+ /postcss-nested@6.0.1(postcss@8.4.31):
628
628
  resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
629
629
  engines: {node: '>=12.0'}
630
630
  peerDependencies:
631
631
  postcss: ^8.2.14
632
632
  dependencies:
633
- postcss: 8.4.28
633
+ postcss: 8.4.31
634
634
  postcss-selector-parser: 6.0.13
635
635
  dev: true
636
636
 
637
- /postcss-reporter@7.0.5(postcss@8.4.28):
637
+ /postcss-reporter@7.0.5(postcss@8.4.31):
638
638
  resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==}
639
639
  engines: {node: '>=10'}
640
640
  peerDependencies:
641
641
  postcss: ^8.1.0
642
642
  dependencies:
643
643
  picocolors: 1.0.0
644
- postcss: 8.4.28
644
+ postcss: 8.4.31
645
645
  thenby: 1.3.4
646
646
  dev: true
647
647
 
@@ -665,8 +665,8 @@ packages:
665
665
  resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
666
666
  dev: true
667
667
 
668
- /postcss@8.4.28:
669
- resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==}
668
+ /postcss@8.4.31:
669
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
670
670
  engines: {node: ^10 || ^12 || >=14}
671
671
  dependencies:
672
672
  nanoid: 3.3.6
@@ -790,11 +790,11 @@ packages:
790
790
  normalize-path: 3.0.0
791
791
  object-hash: 3.0.0
792
792
  picocolors: 1.0.0
793
- postcss: 8.4.28
794
- postcss-import: 15.1.0(postcss@8.4.28)
795
- postcss-js: 4.0.1(postcss@8.4.28)
796
- postcss-load-config: 4.0.1(postcss@8.4.28)
797
- postcss-nested: 6.0.1(postcss@8.4.28)
793
+ postcss: 8.4.31
794
+ postcss-import: 15.1.0(postcss@8.4.31)
795
+ postcss-js: 4.0.1(postcss@8.4.31)
796
+ postcss-load-config: 4.0.1(postcss@8.4.31)
797
+ postcss-nested: 6.0.1(postcss@8.4.31)
798
798
  postcss-selector-parser: 6.0.13
799
799
  resolve: 1.22.4
800
800
  sucrase: 3.34.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jqtree",
3
- "version": "1.7.4",
3
+ "version": "1.8.0",
4
4
  "description": "Tree widget for jQuery",
5
5
  "keywords": [
6
6
  "jquery-plugin",
@@ -28,50 +28,54 @@
28
28
  "playwright": "pnpm build-with-coverage && playwright test --config config/playwright.config.js",
29
29
  "test": "pnpm jest && pnpm playwright"
30
30
  },
31
+ "browserslist": [
32
+ "defaults"
33
+ ],
31
34
  "peerDependencies": {
32
35
  "jquery": "^3"
33
36
  },
34
37
  "devDependencies": {
35
- "@babel/cli": "^7.22.15",
36
- "@babel/core": "^7.22.17",
37
- "@babel/preset-env": "^7.22.15",
38
- "@babel/preset-typescript": "^7.22.15",
39
- "@playwright/test": "^1.38.0",
40
- "@rollup/plugin-babel": "^6.0.3",
41
- "@rollup/plugin-node-resolve": "^15.2.1",
42
- "@rollup/plugin-terser": "^0.4.3",
43
- "@testing-library/dom": "^9.3.1",
44
- "@types/debug": "^4.1.8",
45
- "@types/jest": "^29.5.4",
46
- "@types/jest-axe": "^3.5.5",
47
- "@types/jquery": "^3.5.18",
48
- "@types/node": "^20.6.0",
49
- "@typescript-eslint/eslint-plugin": "^6.7.0",
50
- "@typescript-eslint/parser": "^6.7.0",
51
- "autoprefixer": "^10.4.15",
38
+ "@babel/cli": "^7.23.0",
39
+ "@babel/core": "^7.23.2",
40
+ "@babel/preset-env": "^7.23.2",
41
+ "@babel/preset-typescript": "^7.23.2",
42
+ "@playwright/test": "^1.39.0",
43
+ "@rollup/plugin-babel": "^6.0.4",
44
+ "@rollup/plugin-node-resolve": "^15.2.3",
45
+ "@rollup/plugin-terser": "^0.4.4",
46
+ "@testing-library/dom": "^9.3.3",
47
+ "@testing-library/user-event": "^14.5.1",
48
+ "@types/debug": "^4.1.10",
49
+ "@types/jest": "^29.5.6",
50
+ "@types/jest-axe": "^3.5.7",
51
+ "@types/jquery": "^3.5.24",
52
+ "@types/node": "^20.8.7",
53
+ "@typescript-eslint/eslint-plugin": "^6.8.0",
54
+ "@typescript-eslint/parser": "^6.8.0",
55
+ "autoprefixer": "^10.4.16",
52
56
  "babel-jest": "^29.7.0",
53
57
  "babel-plugin-istanbul": "^6.1.1",
54
- "eslint": "^8.49.0",
58
+ "eslint": "^8.52.0",
55
59
  "eslint-plugin-import": "^2.28.1",
56
- "eslint-plugin-jest": "^27.2.3",
57
- "eslint-plugin-playwright": "^0.16.0",
58
- "eslint-plugin-testing-library": "^6.0.1",
60
+ "eslint-plugin-jest": "^27.4.3",
61
+ "eslint-plugin-playwright": "^0.17.0",
62
+ "eslint-plugin-testing-library": "^6.1.0",
59
63
  "givens": "^1.3.9",
60
- "graphql": "^16.8.0",
64
+ "graphql": "^16.8.1",
61
65
  "jest": "^29.7.0",
62
66
  "jest-axe": "^8.0.0",
63
67
  "jest-environment-jsdom": "^29.7.0",
64
- "jest-extended": "^4.0.1",
68
+ "jest-extended": "^4.0.2",
65
69
  "jsonfile": "^6.1.0",
66
70
  "lodash.template": "^4.5.0",
67
- "msw": "^1.3.1",
68
- "postcss": "^8.4.29",
71
+ "msw": "^1.3.2",
72
+ "postcss": "^8.4.31",
69
73
  "postcss-cli": "^10.1.0",
70
74
  "postcss-import": "^15.1.0",
71
75
  "postcss-load-config": "^4.0.1",
72
76
  "postcss-nested": "^6.0.1",
73
77
  "prettier": "^3.0.3",
74
- "rollup": "^3.29.1",
78
+ "rollup": "^4.1.4",
75
79
  "rollup-plugin-serve": "^2.0.2",
76
80
  "tslib": "^2.6.2",
77
81
  "typescript": "^5.2.2"
package/src/dataLoader.ts CHANGED
@@ -1,19 +1,46 @@
1
1
  import { Node } from "./node";
2
- import { JqTreeWidget } from "./tree.jquery";
2
+ import { DataFilter, OnLoadFailed, OnLoading } from "./jqtreeOptions";
3
+ import { LoadData, TriggerEvent } from "./jqtreeMethodTypes";
3
4
 
4
5
  export type HandleFinishedLoading = () => void;
5
6
 
6
- export default class DataLoader {
7
- private treeWidget: JqTreeWidget;
7
+ interface DataLoaderParams {
8
+ dataFilter?: DataFilter;
9
+ loadData: LoadData;
10
+ onLoadFailed?: OnLoadFailed;
11
+ onLoading?: OnLoading;
12
+ $treeElement: JQuery<HTMLElement>;
13
+ triggerEvent: TriggerEvent;
14
+ }
8
15
 
9
- constructor(treeWidget: JqTreeWidget) {
10
- this.treeWidget = treeWidget;
16
+ export default class DataLoader {
17
+ private dataFilter?: DataFilter;
18
+ private loadData: LoadData;
19
+ private onLoadFailed?: OnLoadFailed;
20
+ private onLoading?: OnLoading;
21
+ private $treeElement: JQuery<HTMLElement>;
22
+ private triggerEvent: TriggerEvent;
23
+
24
+ constructor({
25
+ dataFilter,
26
+ loadData,
27
+ onLoadFailed,
28
+ onLoading,
29
+ $treeElement,
30
+ triggerEvent,
31
+ }: DataLoaderParams) {
32
+ this.dataFilter = dataFilter;
33
+ this.loadData = loadData;
34
+ this.onLoadFailed = onLoadFailed;
35
+ this.onLoading = onLoading;
36
+ this.$treeElement = $treeElement;
37
+ this.triggerEvent = triggerEvent;
11
38
  }
12
39
 
13
40
  public loadFromUrl(
14
41
  urlInfo: string | JQuery.AjaxSettings | null,
15
42
  parentNode: Node | null,
16
- onFinished: HandleFinishedLoading | null
43
+ onFinished: HandleFinishedLoading | null,
17
44
  ): void {
18
45
  if (!urlInfo) {
19
46
  return;
@@ -30,7 +57,7 @@ export default class DataLoader {
30
57
 
31
58
  const handleSuccess = (data: string | NodeData[]): void => {
32
59
  stopLoading();
33
- this.treeWidget.loadData(this.parseData(data), parentNode);
60
+ this.loadData(this.parseData(data), parentNode);
34
61
 
35
62
  if (onFinished && typeof onFinished === "function") {
36
63
  onFinished();
@@ -40,8 +67,8 @@ export default class DataLoader {
40
67
  const handleError = (jqXHR: JQuery.jqXHR): void => {
41
68
  stopLoading();
42
69
 
43
- if (this.treeWidget.options.onLoadFailed) {
44
- this.treeWidget.options.onLoadFailed(jqXHR);
70
+ if (this.onLoadFailed) {
71
+ this.onLoadFailed(jqXHR);
45
72
  }
46
73
  };
47
74
 
@@ -64,20 +91,20 @@ export default class DataLoader {
64
91
  if (parentNode) {
65
92
  return jQuery(parentNode.element);
66
93
  } else {
67
- return this.treeWidget.element;
94
+ return this.$treeElement;
68
95
  }
69
96
  }
70
97
 
71
98
  private notifyLoading(
72
99
  isLoading: boolean,
73
100
  node: Node | null,
74
- $el: JQuery
101
+ $el: JQuery,
75
102
  ): void {
76
- if (this.treeWidget.options.onLoading) {
77
- this.treeWidget.options.onLoading(isLoading, node, $el);
103
+ if (this.onLoading) {
104
+ this.onLoading(isLoading, node, $el);
78
105
  }
79
106
 
80
- this.treeWidget._triggerEvent("tree.loading_data", {
107
+ this.triggerEvent("tree.loading_data", {
81
108
  isLoading,
82
109
  node,
83
110
  $el,
@@ -87,7 +114,7 @@ export default class DataLoader {
87
114
  private submitRequest(
88
115
  urlInfoInput: string | JQuery.AjaxSettings,
89
116
  handleSuccess: JQuery.Ajax.SuccessCallback<any>,
90
- handleError: JQuery.Ajax.ErrorCallback<any>
117
+ handleError: JQuery.Ajax.ErrorCallback<any>,
91
118
  ): void {
92
119
  const urlInfo =
93
120
  typeof urlInfoInput === "string"
@@ -109,8 +136,6 @@ export default class DataLoader {
109
136
  }
110
137
 
111
138
  private parseData(data: string | NodeData[]): NodeData[] {
112
- const { dataFilter } = this.treeWidget.options;
113
-
114
139
  const getParsedData = () => {
115
140
  if (typeof data === "string") {
116
141
  return JSON.parse(data) as NodeData[];
@@ -121,8 +146,8 @@ export default class DataLoader {
121
146
 
122
147
  const parsedData = getParsedData();
123
148
 
124
- if (dataFilter) {
125
- return dataFilter(parsedData);
149
+ if (this.dataFilter) {
150
+ return this.dataFilter(parsedData);
126
151
  } else {
127
152
  return parsedData;
128
153
  }
@@ -0,0 +1,42 @@
1
+ class DragElement {
2
+ private offsetX: number;
3
+ private offsetY: number;
4
+ private $element: JQuery;
5
+
6
+ constructor(
7
+ nodeName: string,
8
+ offsetX: number,
9
+ offsetY: number,
10
+ $tree: JQuery,
11
+ autoEscape: boolean,
12
+ ) {
13
+ this.offsetX = offsetX;
14
+ this.offsetY = offsetY;
15
+
16
+ this.$element = jQuery("<span>").addClass(
17
+ "jqtree-title jqtree-dragging",
18
+ );
19
+
20
+ if (autoEscape) {
21
+ this.$element.text(nodeName);
22
+ } else {
23
+ this.$element.html(nodeName);
24
+ }
25
+
26
+ this.$element.css("position", "absolute");
27
+ $tree.append(this.$element);
28
+ }
29
+
30
+ public move(pageX: number, pageY: number): void {
31
+ this.$element.offset({
32
+ left: pageX - this.offsetX,
33
+ top: pageY - this.offsetY,
34
+ });
35
+ }
36
+
37
+ public remove(): void {
38
+ this.$element.remove();
39
+ }
40
+ }
41
+
42
+ export default DragElement;