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.
- package/.eslintrc +5 -1
- package/bower.json +1 -1
- package/config/babel.config.json +1 -1
- package/config/production +2 -0
- package/devserver/devserver_scroll.js +8 -0
- package/devserver/test_scroll.html +28 -0
- package/devserver/test_scroll_container.html +39 -0
- package/docs/_config.yml +1 -1
- package/docs/_entries/general/changelog.md +12 -0
- package/docs/package.json +1 -1
- package/docs/pnpm-lock.yaml +30 -30
- package/package.json +31 -27
- package/src/dataLoader.ts +44 -19
- package/src/dragAndDropHandler/dragElement.ts +42 -0
- package/src/dragAndDropHandler/hitAreasGenerator.ts +175 -0
- package/src/dragAndDropHandler/index.ts +470 -0
- package/src/dragAndDropHandler/types.ts +12 -0
- package/src/dragAndDropHandler/visibleNodeIterator.ts +97 -0
- package/src/elementsRenderer.ts +75 -40
- package/src/jqtreeMethodTypes.ts +40 -0
- package/src/jqtreeOptions.ts +43 -25
- package/src/keyHandler.ts +59 -38
- package/src/mouse.widget.ts +3 -3
- package/src/mouseWidgetTypes.ts +6 -0
- package/src/node.ts +32 -48
- package/src/nodeElement/borderDropHint.ts +32 -0
- package/src/nodeElement/folderElement.ts +133 -0
- package/src/nodeElement/ghostDropHint.ts +68 -0
- package/src/nodeElement/index.ts +101 -0
- package/src/nodeUtils.ts +10 -0
- package/src/playwright/coverage.ts +1 -4
- package/src/playwright/playwright.test.ts +203 -15
- package/src/playwright/testUtils.ts +23 -15
- package/src/saveStateHandler.ts +75 -26
- package/src/scrollHandler/containerScrollParent.ts +177 -0
- package/src/scrollHandler/createScrollParent.ts +50 -0
- package/src/scrollHandler/documentScrollParent.ts +182 -0
- package/src/scrollHandler/types.ts +7 -0
- package/src/scrollHandler.ts +36 -248
- package/src/selectNodeHandler.ts +10 -16
- package/src/test/jqTree/keyboard.test.ts +18 -23
- package/src/test/jqTree/loadOnDemand.test.ts +2 -3
- package/src/test/jqTree/methods.test.ts +33 -4
- package/src/test/jqTree/options.test.ts +15 -4
- package/src/test/node.test.ts +85 -26
- package/src/test/nodeUtils.test.ts +21 -0
- package/src/tree.jquery.ts +262 -83
- package/src/util.ts +3 -0
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +1922 -2608
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
- package/lib/dataLoader.js +0 -124
- package/lib/dragAndDropHandler.js +0 -596
- package/lib/elementsRenderer.js +0 -268
- package/lib/jqtreeOptions.js +0 -1
- package/lib/keyHandler.js +0 -115
- package/lib/mouse.widget.js +0 -256
- package/lib/node.js +0 -717
- package/lib/nodeElement.js +0 -277
- package/lib/playwright/coverage.js +0 -96
- package/lib/playwright/playwright.test.js +0 -228
- package/lib/playwright/testUtils.js +0 -184
- package/lib/saveStateHandler.js +0 -278
- package/lib/scrollHandler.js +0 -250
- package/lib/selectNodeHandler.js +0 -129
- package/lib/simple.widget.js +0 -159
- 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 -1347
- package/lib/test/jqTree/options.test.js +0 -548
- package/lib/test/node.test.js +0 -1160
- package/lib/test/nodeUtil.test.js +0 -27
- package/lib/test/support/exampleData.js +0 -36
- 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 -32
- package/lib/test/support/treeStructure.js +0 -39
- package/lib/test/util.test.js +0 -26
- package/lib/tree.jquery.d.js +0 -1
- package/lib/tree.jquery.js +0 -1106
- package/lib/types.js +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/util.js +0 -18
- package/lib/version.js +0 -9
- package/src/dragAndDropHandler.ts +0 -719
- package/src/nodeElement.ts +0 -272
- 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
package/config/babel.config.json
CHANGED
package/config/production
CHANGED
|
@@ -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
|
@@ -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
package/docs/pnpm-lock.yaml
CHANGED
|
@@ -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.
|
|
13
|
+
version: 10.4.15(postcss@8.4.31)
|
|
14
14
|
postcss:
|
|
15
|
-
specifier: ^8.4.
|
|
16
|
-
version: 8.4.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
+
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.
|
|
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.
|
|
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.
|
|
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.
|
|
578
|
-
postcss-load-config: 4.0.1(postcss@8.4.
|
|
579
|
-
postcss-reporter: 7.0.5(postcss@8.4.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
607
|
+
postcss: 8.4.31
|
|
608
608
|
dev: true
|
|
609
609
|
|
|
610
|
-
/postcss-load-config@4.0.1(postcss@8.4.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
669
|
-
resolution: {integrity: sha512-
|
|
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.
|
|
794
|
-
postcss-import: 15.1.0(postcss@8.4.
|
|
795
|
-
postcss-js: 4.0.1(postcss@8.4.
|
|
796
|
-
postcss-load-config: 4.0.1(postcss@8.4.
|
|
797
|
-
postcss-nested: 6.0.1(postcss@8.4.
|
|
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.
|
|
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.
|
|
36
|
-
"@babel/core": "^7.
|
|
37
|
-
"@babel/preset-env": "^7.
|
|
38
|
-
"@babel/preset-typescript": "^7.
|
|
39
|
-
"@playwright/test": "^1.
|
|
40
|
-
"@rollup/plugin-babel": "^6.0.
|
|
41
|
-
"@rollup/plugin-node-resolve": "^15.2.
|
|
42
|
-
"@rollup/plugin-terser": "^0.4.
|
|
43
|
-
"@testing-library/dom": "^9.3.
|
|
44
|
-
"@
|
|
45
|
-
"@types/
|
|
46
|
-
"@types/jest
|
|
47
|
-
"@types/
|
|
48
|
-
"@types/
|
|
49
|
-
"@
|
|
50
|
-
"@typescript-eslint/
|
|
51
|
-
"
|
|
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.
|
|
58
|
+
"eslint": "^8.52.0",
|
|
55
59
|
"eslint-plugin-import": "^2.28.1",
|
|
56
|
-
"eslint-plugin-jest": "^27.
|
|
57
|
-
"eslint-plugin-playwright": "^0.
|
|
58
|
-
"eslint-plugin-testing-library": "^6.0
|
|
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.
|
|
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.
|
|
68
|
+
"jest-extended": "^4.0.2",
|
|
65
69
|
"jsonfile": "^6.1.0",
|
|
66
70
|
"lodash.template": "^4.5.0",
|
|
67
|
-
"msw": "^1.3.
|
|
68
|
-
"postcss": "^8.4.
|
|
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": "^
|
|
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 {
|
|
2
|
+
import { DataFilter, OnLoadFailed, OnLoading } from "./jqtreeOptions";
|
|
3
|
+
import { LoadData, TriggerEvent } from "./jqtreeMethodTypes";
|
|
3
4
|
|
|
4
5
|
export type HandleFinishedLoading = () => void;
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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.
|
|
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.
|
|
44
|
-
this.
|
|
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
|
|
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.
|
|
77
|
-
this.
|
|
103
|
+
if (this.onLoading) {
|
|
104
|
+
this.onLoading(isLoading, node, $el);
|
|
78
105
|
}
|
|
79
106
|
|
|
80
|
-
this.
|
|
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;
|