jqtree 1.8.6 → 1.8.8
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/bower.json +1 -1
- package/package.json +21 -22
- package/src/keyHandler.ts +6 -9
- package/src/nodeElement/folderElement.ts +5 -8
- package/src/nodeElement/ghostDropHint.ts +43 -3
- package/src/nodeElement/index.ts +7 -13
- package/src/saveStateHandler.ts +3 -27
- package/src/selectNodeHandler.ts +7 -11
- package/src/tree.jquery.ts +8 -4
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +69 -65
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
package/tree.jquery.debug.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
JqTree 1.8.
|
|
2
|
+
JqTree 1.8.8
|
|
3
3
|
|
|
4
4
|
Copyright 2024 Marco Braak
|
|
5
5
|
|
|
@@ -902,14 +902,14 @@ var jqtree = (function (exports) {
|
|
|
902
902
|
case "ArrowDown":
|
|
903
903
|
isKeyHandled = this.moveDown(selectedNode);
|
|
904
904
|
break;
|
|
905
|
-
case "
|
|
906
|
-
isKeyHandled = this.
|
|
905
|
+
case "ArrowLeft":
|
|
906
|
+
isKeyHandled = this.moveLeft(selectedNode);
|
|
907
907
|
break;
|
|
908
908
|
case "ArrowRight":
|
|
909
909
|
isKeyHandled = this.moveRight(selectedNode);
|
|
910
910
|
break;
|
|
911
|
-
case "
|
|
912
|
-
isKeyHandled = this.
|
|
911
|
+
case "ArrowUp":
|
|
912
|
+
isKeyHandled = this.moveUp(selectedNode);
|
|
913
913
|
break;
|
|
914
914
|
}
|
|
915
915
|
}
|
|
@@ -978,8 +978,8 @@ var jqtree = (function (exports) {
|
|
|
978
978
|
}
|
|
979
979
|
}
|
|
980
980
|
deinit() {
|
|
981
|
-
if (this.
|
|
982
|
-
document.removeEventListener("keydown", this.
|
|
981
|
+
if (this.keyboardSupport) {
|
|
982
|
+
document.removeEventListener("keydown", this.handleKeyDown);
|
|
983
983
|
}
|
|
984
984
|
}
|
|
985
985
|
moveDown(selectedNode) {
|
|
@@ -1807,11 +1807,26 @@ var jqtree = (function (exports) {
|
|
|
1807
1807
|
}
|
|
1808
1808
|
|
|
1809
1809
|
class GhostDropHint {
|
|
1810
|
-
constructor(element) {
|
|
1810
|
+
constructor(node, element, position) {
|
|
1811
1811
|
this.element = element;
|
|
1812
|
+
this.node = node;
|
|
1812
1813
|
this.ghost = this.createGhostElement();
|
|
1813
|
-
|
|
1814
|
-
|
|
1814
|
+
switch (position) {
|
|
1815
|
+
case Position.After:
|
|
1816
|
+
this.moveAfter();
|
|
1817
|
+
break;
|
|
1818
|
+
case Position.Before:
|
|
1819
|
+
this.moveBefore();
|
|
1820
|
+
break;
|
|
1821
|
+
case Position.Inside:
|
|
1822
|
+
{
|
|
1823
|
+
if (node.isFolder() && node.is_open) {
|
|
1824
|
+
this.moveInsideOpenFolder();
|
|
1825
|
+
} else {
|
|
1826
|
+
this.moveInside();
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1815
1830
|
}
|
|
1816
1831
|
createGhostElement() {
|
|
1817
1832
|
const ghost = document.createElement("li");
|
|
@@ -1824,6 +1839,22 @@ var jqtree = (function (exports) {
|
|
|
1824
1839
|
ghost.append(lineSpan);
|
|
1825
1840
|
return ghost;
|
|
1826
1841
|
}
|
|
1842
|
+
moveAfter() {
|
|
1843
|
+
this.element.after(this.ghost);
|
|
1844
|
+
}
|
|
1845
|
+
moveBefore() {
|
|
1846
|
+
this.element.before(this.ghost);
|
|
1847
|
+
}
|
|
1848
|
+
moveInside() {
|
|
1849
|
+
this.element.after(this.ghost);
|
|
1850
|
+
this.ghost.classList.add("jqtree-inside");
|
|
1851
|
+
}
|
|
1852
|
+
moveInsideOpenFolder() {
|
|
1853
|
+
const childElement = this.node.children[0]?.element;
|
|
1854
|
+
if (childElement) {
|
|
1855
|
+
childElement.before(this.ghost);
|
|
1856
|
+
}
|
|
1857
|
+
}
|
|
1827
1858
|
remove() {
|
|
1828
1859
|
this.ghost.remove();
|
|
1829
1860
|
}
|
|
@@ -1832,14 +1863,14 @@ var jqtree = (function (exports) {
|
|
|
1832
1863
|
class NodeElement {
|
|
1833
1864
|
constructor(_ref) {
|
|
1834
1865
|
let {
|
|
1835
|
-
$treeElement,
|
|
1836
1866
|
getScrollLeft,
|
|
1837
1867
|
node,
|
|
1838
|
-
tabIndex
|
|
1868
|
+
tabIndex,
|
|
1869
|
+
treeElement
|
|
1839
1870
|
} = _ref;
|
|
1840
1871
|
this.getScrollLeft = getScrollLeft;
|
|
1841
1872
|
this.tabIndex = tabIndex;
|
|
1842
|
-
this
|
|
1873
|
+
this.treeElement = treeElement;
|
|
1843
1874
|
this.init(node);
|
|
1844
1875
|
}
|
|
1845
1876
|
getTitleSpan() {
|
|
@@ -1855,7 +1886,7 @@ var jqtree = (function (exports) {
|
|
|
1855
1886
|
if (this.mustShowBorderDropHint(position)) {
|
|
1856
1887
|
return new BorderDropHint(this.element, this.getScrollLeft());
|
|
1857
1888
|
} else {
|
|
1858
|
-
return new GhostDropHint(this.element);
|
|
1889
|
+
return new GhostDropHint(this.node, this.element, position);
|
|
1859
1890
|
}
|
|
1860
1891
|
}
|
|
1861
1892
|
deselect() {
|
|
@@ -1868,14 +1899,9 @@ var jqtree = (function (exports) {
|
|
|
1868
1899
|
init(node) {
|
|
1869
1900
|
this.node = node;
|
|
1870
1901
|
if (!node.element) {
|
|
1871
|
-
|
|
1872
|
-
if (element) {
|
|
1873
|
-
node.element = element;
|
|
1874
|
-
}
|
|
1875
|
-
}
|
|
1876
|
-
if (node.element) {
|
|
1877
|
-
this.element = node.element;
|
|
1902
|
+
node.element = this.treeElement;
|
|
1878
1903
|
}
|
|
1904
|
+
this.element = node.element;
|
|
1879
1905
|
}
|
|
1880
1906
|
select(mustSetFocus) {
|
|
1881
1907
|
this.element.classList.add("jqtree-selected");
|
|
@@ -1896,19 +1922,19 @@ var jqtree = (function (exports) {
|
|
|
1896
1922
|
class FolderElement extends NodeElement {
|
|
1897
1923
|
constructor(_ref) {
|
|
1898
1924
|
let {
|
|
1899
|
-
$treeElement,
|
|
1900
1925
|
closedIconElement,
|
|
1901
1926
|
getScrollLeft,
|
|
1902
1927
|
node,
|
|
1903
1928
|
openedIconElement,
|
|
1904
1929
|
tabIndex,
|
|
1930
|
+
treeElement,
|
|
1905
1931
|
triggerEvent
|
|
1906
1932
|
} = _ref;
|
|
1907
1933
|
super({
|
|
1908
|
-
$treeElement,
|
|
1909
1934
|
getScrollLeft,
|
|
1910
1935
|
node,
|
|
1911
|
-
tabIndex
|
|
1936
|
+
tabIndex,
|
|
1937
|
+
treeElement
|
|
1912
1938
|
});
|
|
1913
1939
|
this.closedIconElement = closedIconElement;
|
|
1914
1940
|
this.openedIconElement = openedIconElement;
|
|
@@ -1920,9 +1946,7 @@ var jqtree = (function (exports) {
|
|
|
1920
1946
|
getButton() {
|
|
1921
1947
|
return this.element.querySelector(":scope > .jqtree-element > a.jqtree-toggler");
|
|
1922
1948
|
}
|
|
1923
|
-
close() {
|
|
1924
|
-
let slide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
1925
|
-
let animationSpeed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fast";
|
|
1949
|
+
close(slide, animationSpeed) {
|
|
1926
1950
|
if (!this.node.is_open) {
|
|
1927
1951
|
return;
|
|
1928
1952
|
}
|
|
@@ -1950,9 +1974,7 @@ var jqtree = (function (exports) {
|
|
|
1950
1974
|
doClose();
|
|
1951
1975
|
}
|
|
1952
1976
|
}
|
|
1953
|
-
open(onFinished) {
|
|
1954
|
-
let slide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1955
|
-
let animationSpeed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fast";
|
|
1977
|
+
open(onFinished, slide, animationSpeed) {
|
|
1956
1978
|
if (this.node.is_open) {
|
|
1957
1979
|
return;
|
|
1958
1980
|
}
|
|
@@ -2020,10 +2042,8 @@ var jqtree = (function (exports) {
|
|
|
2020
2042
|
loadFromStorage() {
|
|
2021
2043
|
if (this.onGetStateFromStorage) {
|
|
2022
2044
|
return this.onGetStateFromStorage();
|
|
2023
|
-
} else if (this.supportsLocalStorage()) {
|
|
2024
|
-
return localStorage.getItem(this.getKeyName());
|
|
2025
2045
|
} else {
|
|
2026
|
-
return
|
|
2046
|
+
return localStorage.getItem(this.getKeyName());
|
|
2027
2047
|
}
|
|
2028
2048
|
}
|
|
2029
2049
|
openInitialNodes(nodeIds) {
|
|
@@ -2067,23 +2087,6 @@ var jqtree = (function (exports) {
|
|
|
2067
2087
|
}
|
|
2068
2088
|
return selectCount !== 0;
|
|
2069
2089
|
}
|
|
2070
|
-
supportsLocalStorage() {
|
|
2071
|
-
const testSupport = () => {
|
|
2072
|
-
// Check if it's possible to store an item. Safari does not allow this in private browsing mode.
|
|
2073
|
-
try {
|
|
2074
|
-
const key = "_storage_test";
|
|
2075
|
-
sessionStorage.setItem(key, "value");
|
|
2076
|
-
sessionStorage.removeItem(key);
|
|
2077
|
-
} catch {
|
|
2078
|
-
return false;
|
|
2079
|
-
}
|
|
2080
|
-
return true;
|
|
2081
|
-
};
|
|
2082
|
-
if (this._supportsLocalStorage == null) {
|
|
2083
|
-
this._supportsLocalStorage = testSupport();
|
|
2084
|
-
}
|
|
2085
|
-
return this._supportsLocalStorage;
|
|
2086
|
-
}
|
|
2087
2090
|
getNodeIdToBeSelected() {
|
|
2088
2091
|
const state = this.getStateFromStorage();
|
|
2089
2092
|
if (state?.selected_node) {
|
|
@@ -2129,7 +2132,7 @@ var jqtree = (function (exports) {
|
|
|
2129
2132
|
const state = JSON.stringify(this.getState());
|
|
2130
2133
|
if (this.onSetStateFromStorage) {
|
|
2131
2134
|
this.onSetStateFromStorage(state);
|
|
2132
|
-
} else
|
|
2135
|
+
} else {
|
|
2133
2136
|
localStorage.setItem(this.getKeyName(), state);
|
|
2134
2137
|
}
|
|
2135
2138
|
}
|
|
@@ -2137,7 +2140,7 @@ var jqtree = (function (exports) {
|
|
|
2137
2140
|
/*
|
|
2138
2141
|
Set initial state
|
|
2139
2142
|
Don't handle nodes that are loaded on demand
|
|
2140
|
-
result: must load on demand
|
|
2143
|
+
result: must load on demand (boolean)
|
|
2141
2144
|
*/
|
|
2142
2145
|
setInitialState(state) {
|
|
2143
2146
|
let mustLoadOnDemand = false;
|
|
@@ -2544,14 +2547,12 @@ var jqtree = (function (exports) {
|
|
|
2544
2547
|
}
|
|
2545
2548
|
} else {
|
|
2546
2549
|
const selectedNodes = [];
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
selectedNodes.push(node);
|
|
2552
|
-
}
|
|
2550
|
+
this.selectedNodes.forEach(id => {
|
|
2551
|
+
const node = this.getNodeById(id);
|
|
2552
|
+
if (node && parent.isParentOf(node)) {
|
|
2553
|
+
selectedNodes.push(node);
|
|
2553
2554
|
}
|
|
2554
|
-
}
|
|
2555
|
+
});
|
|
2555
2556
|
return selectedNodes;
|
|
2556
2557
|
}
|
|
2557
2558
|
}
|
|
@@ -2687,7 +2688,7 @@ var jqtree = (function (exports) {
|
|
|
2687
2688
|
}
|
|
2688
2689
|
}
|
|
2689
2690
|
|
|
2690
|
-
const version = "1.8.
|
|
2691
|
+
const version = "1.8.8";
|
|
2691
2692
|
|
|
2692
2693
|
const NODE_PARAM_IS_EMPTY = "Node parameter is empty";
|
|
2693
2694
|
const PARAM_IS_EMPTY = "Parameter is empty: ";
|
|
@@ -2888,27 +2889,27 @@ var jqtree = (function (exports) {
|
|
|
2888
2889
|
const getScrollLeft = this.scrollHandler.getScrollLeft.bind(this.scrollHandler);
|
|
2889
2890
|
const openedIconElement = this.renderer.openedIconElement;
|
|
2890
2891
|
const tabIndex = this.options.tabIndex;
|
|
2891
|
-
const
|
|
2892
|
+
const treeElement = this.element.get(0);
|
|
2892
2893
|
const triggerEvent = this.triggerEvent.bind(this);
|
|
2893
2894
|
return new FolderElement({
|
|
2894
|
-
$treeElement,
|
|
2895
2895
|
closedIconElement,
|
|
2896
2896
|
getScrollLeft,
|
|
2897
2897
|
node,
|
|
2898
2898
|
openedIconElement,
|
|
2899
2899
|
tabIndex,
|
|
2900
|
+
treeElement,
|
|
2900
2901
|
triggerEvent
|
|
2901
2902
|
});
|
|
2902
2903
|
}
|
|
2903
2904
|
createNodeElement(node) {
|
|
2904
2905
|
const getScrollLeft = this.scrollHandler.getScrollLeft.bind(this.scrollHandler);
|
|
2905
2906
|
const tabIndex = this.options.tabIndex;
|
|
2906
|
-
const
|
|
2907
|
+
const treeElement = this.element.get(0);
|
|
2907
2908
|
return new NodeElement({
|
|
2908
|
-
$treeElement,
|
|
2909
2909
|
getScrollLeft,
|
|
2910
2910
|
node,
|
|
2911
|
-
tabIndex
|
|
2911
|
+
tabIndex,
|
|
2912
|
+
treeElement
|
|
2912
2913
|
});
|
|
2913
2914
|
}
|
|
2914
2915
|
deselectCurrentNode() {
|
|
@@ -3186,6 +3187,9 @@ var jqtree = (function (exports) {
|
|
|
3186
3187
|
let slide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
3187
3188
|
let onFinished = arguments.length > 2 ? arguments[2] : undefined;
|
|
3188
3189
|
const doOpenNode = (_node, _slide, _onFinished) => {
|
|
3190
|
+
if (!node.children.length) {
|
|
3191
|
+
return;
|
|
3192
|
+
}
|
|
3189
3193
|
const folderElement = this.createFolderElement(_node);
|
|
3190
3194
|
folderElement.open(_onFinished, _slide, this.options.animationSpeed);
|
|
3191
3195
|
};
|