jqtree 1.6.1 → 1.6.2
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 +1 -0
- package/_config.yml +1 -1
- package/_entries/10_changelog.md +5 -0
- package/_layouts/base.html +0 -22
- package/babel.config.json +11 -0
- package/babel.coverage.config.json +4 -0
- package/bower.json +1 -1
- package/jest-browser.config.js +0 -3
- package/jest-jsdom.config.js +1 -2
- package/jqtree.css +4 -1
- package/jqtree.postcss +3 -0
- package/lib/dataLoader.js +146 -98
- package/lib/dragAndDropHandler.js +668 -472
- package/lib/elementsRenderer.js +282 -197
- package/lib/jqtreeOptions.js +1 -2
- package/lib/keyHandler.js +134 -87
- package/lib/mouse.widget.js +285 -186
- package/lib/node.js +691 -505
- package/lib/nodeElement.js +329 -207
- package/lib/playwright/playwright.test.js +216 -189
- package/lib/playwright/testUtil.js +429 -193
- package/lib/playwright/visualRegression.js +182 -117
- package/lib/saveStateHandler.js +311 -204
- package/lib/scrollHandler.js +293 -199
- package/lib/selectNodeHandler.js +140 -100
- package/lib/simple.widget.js +184 -109
- package/lib/test/global.d.js +3 -0
- package/lib/test/jqTree/create.test.js +44 -40
- package/lib/test/jqTree/events.test.js +185 -138
- package/lib/test/jqTree/keyboard.test.js +216 -199
- package/lib/test/jqTree/loadOnDemand.test.js +233 -157
- package/lib/test/jqTree/methods.test.js +1269 -1019
- package/lib/test/jqTree/options.test.js +467 -398
- package/lib/test/node.test.js +1036 -873
- package/lib/test/nodeUtil.test.js +21 -20
- package/lib/test/support/exampleData.js +35 -23
- package/lib/test/support/jqTreeMatchers.js +72 -54
- package/lib/test/support/matchers.d.js +1 -0
- package/lib/test/support/setupTests.js +9 -3
- package/lib/test/support/testUtil.js +35 -15
- package/lib/test/support/treeStructure.js +41 -32
- package/lib/test/util.test.js +21 -20
- package/lib/tree.jquery.d.js +1 -0
- package/lib/tree.jquery.js +1264 -892
- package/lib/types.js +1 -2
- package/lib/typings.d.js +2 -0
- package/lib/util.js +19 -8
- package/lib/version.js +8 -3
- package/package.json +42 -34
- package/production +4 -4
- package/rollup.config.js +16 -11
- package/src/dataLoader.ts +6 -6
- package/src/dragAndDropHandler.ts +0 -4
- package/src/elementsRenderer.ts +4 -0
- package/src/jqtreeOptions.ts +1 -1
- package/src/mouse.widget.ts +19 -15
- package/src/node.ts +27 -41
- package/src/nodeElement.ts +17 -9
- package/src/playwright/.eslintrc +5 -0
- package/src/playwright/playwright.test.ts +29 -29
- package/src/saveStateHandler.ts +11 -6
- package/src/selectNodeHandler.ts +1 -1
- package/src/simple.widget.ts +1 -1
- package/src/test/.eslintrc +4 -0
- package/src/test/jqTree/create.test.ts +0 -1
- package/src/test/jqTree/events.test.ts +0 -1
- package/src/test/jqTree/keyboard.test.ts +0 -1
- package/src/test/jqTree/loadOnDemand.test.ts +46 -1
- package/src/test/jqTree/methods.test.ts +35 -10
- package/src/test/jqTree/options.test.ts +4 -5
- package/src/test/node.test.ts +2 -2
- package/src/test/support/jqTreeMatchers.ts +8 -9
- package/src/test/support/matchers.d.ts +2 -4
- package/src/test/support/setupTests.ts +2 -1
- package/src/tree.jquery.d.ts +18 -12
- package/src/tree.jquery.ts +25 -21
- package/src/version.ts +1 -1
- package/static/example.postcss +13 -0
- package/static/example_data.js +33 -36
- package/tree.jquery.debug.js +4806 -3325
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +1 -0
package/.eslintrc
CHANGED
package/_config.yml
CHANGED
package/_entries/10_changelog.md
CHANGED
|
@@ -3,6 +3,11 @@ title: Changelog
|
|
|
3
3
|
name: changelog
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
#### 1.6.2 (december 15 2021)
|
|
7
|
+
|
|
8
|
+
- Issue #662: fix left alignment for option buttonLeft: false (thanks to Odungern)
|
|
9
|
+
- Issue #669: restore focus after load on demand (thanks to Jaccoky)
|
|
10
|
+
|
|
6
11
|
#### 1.6.1 (june 24 2021)
|
|
7
12
|
|
|
8
13
|
- Issues #652 and #655: add filter example
|
package/_layouts/base.html
CHANGED
|
@@ -13,28 +13,6 @@
|
|
|
13
13
|
<link rel="stylesheet" href="{{ site.baseurl }}/jqtree.css" />
|
|
14
14
|
<link rel="stylesheet" href="{{ site.baseurl }}/static/monokai.css" />
|
|
15
15
|
<link rel="stylesheet" href="{{ site.baseurl }}/static/bower_components/fontawesome/css/all.min.css" />
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
;(function(i, s, o, g, r, a, m) {
|
|
19
|
-
i["GoogleAnalyticsObject"] = r
|
|
20
|
-
;(i[r] =
|
|
21
|
-
i[r] ||
|
|
22
|
-
function() {
|
|
23
|
-
;(i[r].q = i[r].q || []).push(arguments)
|
|
24
|
-
}),
|
|
25
|
-
(i[r].l = 1 * new Date())
|
|
26
|
-
;(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0])
|
|
27
|
-
a.async = 1
|
|
28
|
-
a.src = g
|
|
29
|
-
m.parentNode.insertBefore(a, m)
|
|
30
|
-
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga")
|
|
31
|
-
|
|
32
|
-
ga("create", "UA-33742133-1", "auto")
|
|
33
|
-
ga("require", "displayfeatures")
|
|
34
|
-
ga("require", "linkid", "linkid.js")
|
|
35
|
-
ga("send", "pageview")
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
16
|
{% if page.css %}
|
|
39
17
|
<link rel="stylesheet" href="{{ site.baseurl }}/static/{{ page.css }}" />
|
|
40
18
|
{% endif %}
|
package/bower.json
CHANGED
package/jest-browser.config.js
CHANGED
|
@@ -8,9 +8,6 @@ module.exports = {
|
|
|
8
8
|
preset: "jest-playwright-preset",
|
|
9
9
|
testRegex: "\\/src\\/playwright\\/.*\\.test\\.ts",
|
|
10
10
|
setupFilesAfterEnv: ["expect-playwright", "givens/setup.js"],
|
|
11
|
-
transform: {
|
|
12
|
-
"^.+\\.ts$": "ts-jest",
|
|
13
|
-
},
|
|
14
11
|
coveragePathIgnorePatterns: [
|
|
15
12
|
"<rootDir>/node_modules/",
|
|
16
13
|
"<rootDir>/src/playwright/",
|
package/jest-jsdom.config.js
CHANGED
|
@@ -5,11 +5,10 @@ module.exports = {
|
|
|
5
5
|
"<rootDir>/_site/",
|
|
6
6
|
"<rootDir>/static/",
|
|
7
7
|
],
|
|
8
|
-
preset: "ts-jest",
|
|
9
8
|
setupFilesAfterEnv: [
|
|
10
9
|
"<rootDir>/src/test/support/setupTests.ts",
|
|
11
10
|
"givens/setup.js",
|
|
12
|
-
"jest-extended",
|
|
11
|
+
"jest-extended/all",
|
|
13
12
|
],
|
|
14
13
|
testEnvironment: "jsdom",
|
|
15
14
|
testRegex: "\\/src\\/test\\/.*\\.test\\.ts",
|
package/jqtree.css
CHANGED
|
@@ -60,10 +60,13 @@ ul.jqtree-tree {
|
|
|
60
60
|
ul.jqtree-tree .jqtree-title {
|
|
61
61
|
color: #1c4257;
|
|
62
62
|
vertical-align: middle;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
ul.jqtree-tree .jqtree-title-button-left {
|
|
63
66
|
margin-left: 1.5em;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
ul.jqtree-tree .jqtree-title.jqtree-title-folder {
|
|
69
|
+
ul.jqtree-tree .jqtree-title-button-left.jqtree-title-folder {
|
|
67
70
|
margin-left: 0;
|
|
68
71
|
}
|
|
69
72
|
|
package/jqtree.postcss
CHANGED
package/lib/dataLoader.js
CHANGED
|
@@ -1,102 +1,150 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
+
|
|
10
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
11
|
+
|
|
12
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
13
|
+
|
|
14
|
+
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); } }
|
|
15
|
+
|
|
16
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
var DataLoader = /*#__PURE__*/function () {
|
|
21
|
+
function DataLoader(treeWidget) {
|
|
22
|
+
_classCallCheck(this, DataLoader);
|
|
23
|
+
|
|
24
|
+
_defineProperty(this, "treeWidget", void 0);
|
|
25
|
+
|
|
26
|
+
this.treeWidget = treeWidget;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
_createClass(DataLoader, [{
|
|
30
|
+
key: "loadFromUrl",
|
|
31
|
+
value: function loadFromUrl(urlInfo, parentNode, onFinished) {
|
|
32
|
+
var _this = this;
|
|
33
|
+
|
|
34
|
+
if (!urlInfo) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var $el = this.getDomElement(parentNode);
|
|
39
|
+
this.addLoadingClass($el);
|
|
40
|
+
this.notifyLoading(true, parentNode, $el);
|
|
41
|
+
|
|
42
|
+
var stopLoading = function stopLoading() {
|
|
43
|
+
_this.removeLoadingClass($el);
|
|
44
|
+
|
|
45
|
+
_this.notifyLoading(false, parentNode, $el);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
var handleSuccess = function handleSuccess(data) {
|
|
49
|
+
stopLoading();
|
|
50
|
+
|
|
51
|
+
_this.treeWidget.loadData(_this.parseData(data), parentNode);
|
|
52
|
+
|
|
53
|
+
if (onFinished && typeof onFinished === "function") {
|
|
54
|
+
onFinished();
|
|
8
55
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.treeWidget = treeWidget;
|
|
17
|
-
}
|
|
18
|
-
DataLoader.prototype.loadFromUrl = function (urlInfo, parentNode, onFinished) {
|
|
19
|
-
var _this = this;
|
|
20
|
-
if (!urlInfo) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
var $el = this.getDomElement(parentNode);
|
|
24
|
-
this.addLoadingClass($el);
|
|
25
|
-
this.notifyLoading(true, parentNode, $el);
|
|
26
|
-
var stopLoading = function () {
|
|
27
|
-
_this.removeLoadingClass($el);
|
|
28
|
-
_this.notifyLoading(false, parentNode, $el);
|
|
29
|
-
};
|
|
30
|
-
var handleSuccess = function (data) {
|
|
31
|
-
stopLoading();
|
|
32
|
-
_this.treeWidget.loadData(_this.parseData(data), parentNode);
|
|
33
|
-
if (onFinished && typeof onFinished === "function") {
|
|
34
|
-
onFinished();
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
var handleError = function (jqXHR) {
|
|
38
|
-
stopLoading();
|
|
39
|
-
if (_this.treeWidget.options.onLoadFailed) {
|
|
40
|
-
_this.treeWidget.options.onLoadFailed(jqXHR);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
this.submitRequest(urlInfo, handleSuccess, handleError);
|
|
44
|
-
};
|
|
45
|
-
DataLoader.prototype.addLoadingClass = function ($el) {
|
|
46
|
-
if ($el) {
|
|
47
|
-
$el.addClass("jqtree-loading");
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
DataLoader.prototype.removeLoadingClass = function ($el) {
|
|
51
|
-
if ($el) {
|
|
52
|
-
$el.removeClass("jqtree-loading");
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
DataLoader.prototype.getDomElement = function (parentNode) {
|
|
56
|
-
if (parentNode) {
|
|
57
|
-
return jQuery(parentNode.element);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return this.treeWidget.element;
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
DataLoader.prototype.notifyLoading = function (isLoading, node, $el) {
|
|
64
|
-
if (this.treeWidget.options.onLoading) {
|
|
65
|
-
this.treeWidget.options.onLoading(isLoading, node, $el);
|
|
66
|
-
}
|
|
67
|
-
this.treeWidget._triggerEvent("tree.loading_data", {
|
|
68
|
-
isLoading: isLoading,
|
|
69
|
-
node: node,
|
|
70
|
-
$el: $el
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
DataLoader.prototype.submitRequest = function (urlInfoInput, handleSuccess, handleError) {
|
|
74
|
-
var _a;
|
|
75
|
-
var urlInfo = typeof urlInfoInput === "string"
|
|
76
|
-
? { url: urlInfoInput }
|
|
77
|
-
: urlInfoInput;
|
|
78
|
-
var ajaxSettings = __assign({ method: "GET", cache: false, dataType: "json", success: handleSuccess, error: handleError }, urlInfo);
|
|
79
|
-
ajaxSettings.method = ((_a = ajaxSettings.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || "GET";
|
|
80
|
-
void jQuery.ajax(ajaxSettings);
|
|
81
|
-
};
|
|
82
|
-
DataLoader.prototype.parseData = function (data) {
|
|
83
|
-
var dataFilter = this.treeWidget.options.dataFilter;
|
|
84
|
-
var getParsedData = function () {
|
|
85
|
-
if (typeof data === "string") {
|
|
86
|
-
return JSON.parse(data);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
var parsedData = getParsedData();
|
|
93
|
-
if (dataFilter) {
|
|
94
|
-
return dataFilter(parsedData);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
var handleError = function handleError(jqXHR) {
|
|
59
|
+
stopLoading();
|
|
60
|
+
|
|
61
|
+
if (_this.treeWidget.options.onLoadFailed) {
|
|
62
|
+
_this.treeWidget.options.onLoadFailed(jqXHR);
|
|
95
63
|
}
|
|
96
|
-
|
|
97
|
-
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
this.submitRequest(urlInfo, handleSuccess, handleError);
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
key: "addLoadingClass",
|
|
70
|
+
value: function addLoadingClass($el) {
|
|
71
|
+
if ($el) {
|
|
72
|
+
$el.addClass("jqtree-loading");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
key: "removeLoadingClass",
|
|
77
|
+
value: function removeLoadingClass($el) {
|
|
78
|
+
if ($el) {
|
|
79
|
+
$el.removeClass("jqtree-loading");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "getDomElement",
|
|
84
|
+
value: function getDomElement(parentNode) {
|
|
85
|
+
if (parentNode) {
|
|
86
|
+
return jQuery(parentNode.element);
|
|
87
|
+
} else {
|
|
88
|
+
return this.treeWidget.element;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "notifyLoading",
|
|
93
|
+
value: function notifyLoading(isLoading, node, $el) {
|
|
94
|
+
if (this.treeWidget.options.onLoading) {
|
|
95
|
+
this.treeWidget.options.onLoading(isLoading, node, $el);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
this.treeWidget._triggerEvent("tree.loading_data", {
|
|
99
|
+
isLoading: isLoading,
|
|
100
|
+
node: node,
|
|
101
|
+
$el: $el
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}, {
|
|
105
|
+
key: "submitRequest",
|
|
106
|
+
value: function submitRequest(urlInfoInput, handleSuccess, handleError) {
|
|
107
|
+
var _ajaxSettings$method;
|
|
108
|
+
|
|
109
|
+
var urlInfo = typeof urlInfoInput === "string" ? {
|
|
110
|
+
url: urlInfoInput
|
|
111
|
+
} : urlInfoInput;
|
|
112
|
+
|
|
113
|
+
var ajaxSettings = _objectSpread({
|
|
114
|
+
method: "GET",
|
|
115
|
+
cache: false,
|
|
116
|
+
dataType: "json",
|
|
117
|
+
success: handleSuccess,
|
|
118
|
+
error: handleError
|
|
119
|
+
}, urlInfo);
|
|
120
|
+
|
|
121
|
+
ajaxSettings.method = ((_ajaxSettings$method = ajaxSettings.method) === null || _ajaxSettings$method === void 0 ? void 0 : _ajaxSettings$method.toUpperCase()) || "GET";
|
|
122
|
+
void jQuery.ajax(ajaxSettings);
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
125
|
+
key: "parseData",
|
|
126
|
+
value: function parseData(data) {
|
|
127
|
+
var dataFilter = this.treeWidget.options.dataFilter;
|
|
128
|
+
|
|
129
|
+
var getParsedData = function getParsedData() {
|
|
130
|
+
if (typeof data === "string") {
|
|
131
|
+
return JSON.parse(data);
|
|
132
|
+
} else {
|
|
133
|
+
return data;
|
|
98
134
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
var parsedData = getParsedData();
|
|
138
|
+
|
|
139
|
+
if (dataFilter) {
|
|
140
|
+
return dataFilter(parsedData);
|
|
141
|
+
} else {
|
|
142
|
+
return parsedData;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}]);
|
|
146
|
+
|
|
147
|
+
return DataLoader;
|
|
148
|
+
}();
|
|
149
|
+
|
|
150
|
+
exports["default"] = DataLoader;
|