@neovici/cosmoz-treenode-navigator 6.0.1 → 7.0.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/README.md +4 -12
- package/dist/cosmoz-treenode-button-view.d.ts +2 -0
- package/dist/cosmoz-treenode-button-view.d.ts.map +1 -0
- package/dist/cosmoz-treenode-button-view.js +203 -0
- package/dist/cosmoz-treenode-button-view.js.map +1 -0
- package/dist/cosmoz-treenode-button-view.styles.d.ts +3 -0
- package/dist/cosmoz-treenode-button-view.styles.d.ts.map +1 -0
- package/dist/cosmoz-treenode-button-view.styles.js +218 -0
- package/dist/cosmoz-treenode-button-view.styles.js.map +1 -0
- package/dist/cosmoz-treenode-navigator.d.ts +2 -0
- package/dist/cosmoz-treenode-navigator.d.ts.map +1 -0
- package/dist/cosmoz-treenode-navigator.js +233 -0
- package/dist/cosmoz-treenode-navigator.js.map +1 -0
- package/dist/cosmoz-treenode-navigator.styles.d.ts +3 -0
- package/dist/cosmoz-treenode-navigator.styles.d.ts.map +1 -0
- package/{cosmoz-treenode-navigator.styles.js → dist/cosmoz-treenode-navigator.styles.js} +12 -4
- package/dist/cosmoz-treenode-navigator.styles.js.map +1 -0
- package/dist/hooks/useKeyDown.d.ts +2 -0
- package/dist/hooks/useKeyDown.d.ts.map +1 -0
- package/dist/hooks/useKeyDown.js +16 -0
- package/dist/hooks/useKeyDown.js.map +1 -0
- package/dist/util/helpers.d.ts +51 -0
- package/dist/util/helpers.d.ts.map +1 -0
- package/dist/util/helpers.js +123 -0
- package/dist/util/helpers.js.map +1 -0
- package/package.json +61 -16
- package/test/data/basicTree.js +34 -34
- package/test/data/rtlTest.js +6 -7
- package/cosmoz-treenode-button-view.js +0 -445
- package/cosmoz-treenode-navigator.js +0 -297
- package/helpers.js +0 -124
- package/test/cosmoz-treenode-button-view.test.js +0 -52
- package/test/cosmoz-treenode-navigator.test.js +0 -102
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { component, useCallback, useEffect, useMemo, useProperty, useRef, useState, } from '@pionjs/pion';
|
|
2
|
+
import { html, nothing } from 'lit-html';
|
|
3
|
+
import { when } from 'lit-html/directives/when.js';
|
|
4
|
+
import { guard } from 'lit-html/directives/guard.js';
|
|
5
|
+
import { ref } from 'lit-html/directives/ref.js';
|
|
6
|
+
import { virtualize } from '@lit-labs/virtualizer/virtualize.js';
|
|
7
|
+
import '@neovici/cosmoz-input';
|
|
8
|
+
import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
|
|
9
|
+
import { computeDataPlane, computeRowClass, getParentPath, onNodeDblClicked, } from './util/helpers';
|
|
10
|
+
import style from './cosmoz-treenode-navigator.styles';
|
|
11
|
+
import { useHost } from '@neovici/cosmoz-utils/hooks/use-host';
|
|
12
|
+
import { notifyProperty } from '@neovici/cosmoz-utils/hooks/use-notify-property';
|
|
13
|
+
const NodeNavigator = ({
|
|
14
|
+
/**
|
|
15
|
+
* The main node structure
|
|
16
|
+
*/
|
|
17
|
+
tree,
|
|
18
|
+
/**
|
|
19
|
+
* Placeholder for search field.
|
|
20
|
+
*/
|
|
21
|
+
searchPlaceholder,
|
|
22
|
+
/**
|
|
23
|
+
* Text displayed when local search has finished
|
|
24
|
+
* to suggest a search on the entire tree
|
|
25
|
+
*/
|
|
26
|
+
searchGlobalPlaceholder,
|
|
27
|
+
/**
|
|
28
|
+
* Minimum length of searchValue to trigger a search
|
|
29
|
+
*/
|
|
30
|
+
searchMinLength, opened, }) => {
|
|
31
|
+
const listRef = useRef();
|
|
32
|
+
const host = useHost();
|
|
33
|
+
const [highlightedNode, setHighlightedNode] = useProperty('highlightedNode');
|
|
34
|
+
const [searchValue, setSearchValue] = useState('');
|
|
35
|
+
const [openNodePath, setOpenNodePath] = useState('');
|
|
36
|
+
const search = useMemo(() => (searchValue?.length > (searchMinLength ?? 2) - 1 && searchValue) ||
|
|
37
|
+
undefined, [searchValue, searchMinLength]);
|
|
38
|
+
const dataPlane = useMemo(() => computeDataPlane(tree, search, openNodePath), [tree, search, openNodePath]);
|
|
39
|
+
/**
|
|
40
|
+
* Opens a node (renderLevel) based on a given path
|
|
41
|
+
* @param clickedNode - The clicked node
|
|
42
|
+
* @return undefined
|
|
43
|
+
*/
|
|
44
|
+
const onNodeClick = useCallback((clickedNode) => {
|
|
45
|
+
setOpenNodePath(clickedNode?.pathLocator || '');
|
|
46
|
+
setSearchValue('');
|
|
47
|
+
setHighlightedNode(null);
|
|
48
|
+
}, [tree]);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (!openNodePath) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
notifyProperty(host, 'highlightedNodePath', '');
|
|
54
|
+
notifyProperty(host, 'nodesOnNodePath', []);
|
|
55
|
+
}, [openNodePath]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
notifyProperty(host, 'highlightedNodePath', highlightedNode?.pathLocator || '');
|
|
58
|
+
}, [highlightedNode]);
|
|
59
|
+
const meta = useMeta({
|
|
60
|
+
dataPlane,
|
|
61
|
+
highlightedNode: highlightedNode ?? null,
|
|
62
|
+
onNodeClick,
|
|
63
|
+
});
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (!opened) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const getVlist = () => {
|
|
69
|
+
const list = listRef.current;
|
|
70
|
+
if (!list)
|
|
71
|
+
return null;
|
|
72
|
+
return list[Object.getOwnPropertySymbols(list)[0]];
|
|
73
|
+
};
|
|
74
|
+
// autoscroll to highlighted node
|
|
75
|
+
const vlist = getVlist();
|
|
76
|
+
if (vlist && meta.highlightedNode) {
|
|
77
|
+
const index = meta.dataPlane?.indexOf(meta.highlightedNode);
|
|
78
|
+
if (index !== undefined && index >= 0) {
|
|
79
|
+
vlist.scrollToIndex = {
|
|
80
|
+
index,
|
|
81
|
+
position: 'center',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const handler = (e) => {
|
|
86
|
+
if ((e.ctrlKey && e.altKey) || e.defaultPrevented) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const { dataPlane: items, highlightedNode: node, onNodeClick: open, } = meta;
|
|
90
|
+
const vlist = getVlist();
|
|
91
|
+
if (!vlist)
|
|
92
|
+
return;
|
|
93
|
+
const currentIndex = items.findIndex((i) => i.pathLocator === node?.pathLocator);
|
|
94
|
+
const navigateToIndex = (newIndex, position) => {
|
|
95
|
+
if (newIndex >= 0 && newIndex < items.length) {
|
|
96
|
+
setHighlightedNode(items[newIndex]);
|
|
97
|
+
// check if scrolling is needed
|
|
98
|
+
const needsScroll = position === 'start'
|
|
99
|
+
? newIndex < vlist._firstVisible
|
|
100
|
+
: newIndex > vlist._lastVisible;
|
|
101
|
+
if (needsScroll) {
|
|
102
|
+
vlist.scrollToIndex = { index: newIndex, position };
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
};
|
|
108
|
+
switch (e.key) {
|
|
109
|
+
case 'Up':
|
|
110
|
+
case 'ArrowUp': {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
navigateToIndex(Math.max(currentIndex - 1, 0), 'start');
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case 'Down':
|
|
116
|
+
case 'ArrowDown': {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
if (currentIndex < items.length - 1) {
|
|
119
|
+
navigateToIndex(currentIndex + 1, 'end');
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case 'Enter':
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
if (node) {
|
|
126
|
+
host.dispatchEvent(new CustomEvent('node-dblclicked'));
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
case 'Right':
|
|
130
|
+
case 'ArrowRight':
|
|
131
|
+
e.preventDefault();
|
|
132
|
+
if (node && tree.hasChildren(node)) {
|
|
133
|
+
open(node);
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
document.addEventListener('keydown', handler, true);
|
|
141
|
+
return () => document.removeEventListener('keydown', handler, true);
|
|
142
|
+
}, [opened, meta]);
|
|
143
|
+
const renderItem = (node, index) => {
|
|
144
|
+
if (!node) {
|
|
145
|
+
return nothing;
|
|
146
|
+
}
|
|
147
|
+
return html ` <div class="item">
|
|
148
|
+
${((parentPath) => when(search &&
|
|
149
|
+
(index === 0 ||
|
|
150
|
+
parentPath !== getParentPath(tree, dataPlane[index - 1])), () => html `
|
|
151
|
+
<div class="section">
|
|
152
|
+
${tree.getPathString(parentPath, tree.searchProperty)}
|
|
153
|
+
</div>
|
|
154
|
+
`))(getParentPath(tree, node))}
|
|
155
|
+
<div
|
|
156
|
+
class=${computeRowClass('node', node, highlightedNode)}
|
|
157
|
+
@click=${() => setHighlightedNode(node)}
|
|
158
|
+
@dblclick=${(e) => onNodeDblClicked(e, host)}
|
|
159
|
+
>
|
|
160
|
+
<div class="name">${node[tree.searchProperty]}</div>
|
|
161
|
+
${when(tree.hasChildren(node), () => html `
|
|
162
|
+
<span class="icon" @click=${() => onNodeClick(node)}>
|
|
163
|
+
<svg
|
|
164
|
+
viewBox="0 0 24 24"
|
|
165
|
+
preserveAspectRatio="xMidYMid meet"
|
|
166
|
+
focusable="false"
|
|
167
|
+
style="pointer-events: none; display: block; width: 100%; height: 100%;"
|
|
168
|
+
>
|
|
169
|
+
<g>
|
|
170
|
+
<path
|
|
171
|
+
d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
|
|
172
|
+
></path>
|
|
173
|
+
</g>
|
|
174
|
+
</svg>
|
|
175
|
+
</span>
|
|
176
|
+
`)}
|
|
177
|
+
</div>
|
|
178
|
+
</div>`;
|
|
179
|
+
};
|
|
180
|
+
return html `
|
|
181
|
+
<div class="header">
|
|
182
|
+
<h3 class="path">
|
|
183
|
+
<span class="icon" @click=${() => onNodeClick()}>
|
|
184
|
+
<svg
|
|
185
|
+
viewBox="0 0 24 24"
|
|
186
|
+
preserveAspectRatio="xMidYMid meet"
|
|
187
|
+
focusable="false"
|
|
188
|
+
style="pointer-events: none; display: block; width: 100%; height: 100%;"
|
|
189
|
+
>
|
|
190
|
+
<g><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"></path></g>
|
|
191
|
+
</svg>
|
|
192
|
+
</span>
|
|
193
|
+
${guard([tree, openNodePath], () => ((openNodePath && tree?.getPathNodes(openNodePath)) || [])
|
|
194
|
+
.filter((node) => node !== undefined)
|
|
195
|
+
.map((node) => html `
|
|
196
|
+
<span class="slash">/</span>
|
|
197
|
+
<span
|
|
198
|
+
class="pointer"
|
|
199
|
+
tabindex="0"
|
|
200
|
+
@click=${() => onNodeClick(node)}
|
|
201
|
+
>${node[tree.searchProperty]}</span
|
|
202
|
+
>
|
|
203
|
+
`))}
|
|
204
|
+
</h3>
|
|
205
|
+
<cosmoz-input
|
|
206
|
+
tabindex="0"
|
|
207
|
+
.value=${searchValue}
|
|
208
|
+
.placeholder=${searchPlaceholder}
|
|
209
|
+
@input=${(e) => setSearchValue(e.target.value)}
|
|
210
|
+
/>
|
|
211
|
+
</div>
|
|
212
|
+
${when(tree, () => html ` <div
|
|
213
|
+
class="items"
|
|
214
|
+
${ref((el) => (listRef.current = el))}
|
|
215
|
+
>
|
|
216
|
+
<div virtualizer-sizer></div>
|
|
217
|
+
${virtualize({
|
|
218
|
+
items: dataPlane,
|
|
219
|
+
renderItem,
|
|
220
|
+
scroller: true,
|
|
221
|
+
})}
|
|
222
|
+
</div>`)}
|
|
223
|
+
${when(search && openNodePath, () => html `
|
|
224
|
+
<button class="btn-ghost" @click=${() => setOpenNodePath('')}>
|
|
225
|
+
${searchGlobalPlaceholder}
|
|
226
|
+
</button>
|
|
227
|
+
`)}
|
|
228
|
+
`;
|
|
229
|
+
};
|
|
230
|
+
customElements.define('cosmoz-treenode-navigator', component(NodeNavigator, {
|
|
231
|
+
styleSheets: [style],
|
|
232
|
+
}));
|
|
233
|
+
//# sourceMappingURL=cosmoz-treenode-navigator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmoz-treenode-navigator.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmoz-treenode-navigator.styles.d.ts","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":";AAEA,wBA4HE"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export default css`
|
|
1
|
+
import { css } from '@pionjs/pion';
|
|
2
|
+
export default css `
|
|
4
3
|
:host {
|
|
5
4
|
--cosmoz-treenode-navigator-select-node-icon-color: var(
|
|
6
5
|
--primary-color,
|
|
@@ -36,6 +35,7 @@ export default css`
|
|
|
36
35
|
display: flex;
|
|
37
36
|
align-items: center;
|
|
38
37
|
flex-wrap: wrap;
|
|
38
|
+
margin: 0;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
.slash {
|
|
@@ -71,12 +71,14 @@ export default css`
|
|
|
71
71
|
font-weight: 400;
|
|
72
72
|
height: 40px;
|
|
73
73
|
line-height: 24px;
|
|
74
|
-
padding: 6px 12px;
|
|
74
|
+
padding: 6px 12px 6px 16px;
|
|
75
75
|
cursor: pointer;
|
|
76
76
|
}
|
|
77
|
+
|
|
77
78
|
.name {
|
|
78
79
|
flex: auto;
|
|
79
80
|
}
|
|
81
|
+
|
|
80
82
|
.icon {
|
|
81
83
|
box-sizing: border-box;
|
|
82
84
|
cursor: pointer;
|
|
@@ -116,4 +118,10 @@ export default css`
|
|
|
116
118
|
font-size: 14px;
|
|
117
119
|
font-family: inherit;
|
|
118
120
|
}
|
|
121
|
+
|
|
122
|
+
.path > .pointer:hover,
|
|
123
|
+
.path > .pointer:has(~ .pointer:hover) {
|
|
124
|
+
text-decoration: underline;
|
|
125
|
+
}
|
|
119
126
|
`;
|
|
127
|
+
//# sourceMappingURL=cosmoz-treenode-navigator.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmoz-treenode-navigator.styles.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyDown.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyDown.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,IAAI,KAAG,IAe9D,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useEffect } from '@pionjs/pion';
|
|
2
|
+
export const useKeyDown = (key, callback) => {
|
|
3
|
+
const onKeyDown = (e) => {
|
|
4
|
+
if (e.key === key && callback instanceof Function) {
|
|
5
|
+
e.preventDefault();
|
|
6
|
+
return callback();
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
document.addEventListener('keydown', onKeyDown);
|
|
11
|
+
return () => {
|
|
12
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=useKeyDown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyDown.js","sourceRoot":"","sources":["../../src/hooks/useKeyDown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,QAAoB,EAAQ,EAAE;IACrE,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAQ,EAAE;QAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YACnD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,QAAQ,EAAE,CAAC;QACnB,CAAC;IACF,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEhD,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Node, Tree } from '@neovici/cosmoz-tree';
|
|
2
|
+
export declare const //
|
|
3
|
+
getParentPath: (tree: Tree, node: Node) => string,
|
|
4
|
+
/**
|
|
5
|
+
* Returns a node array with the children of a node on the given path
|
|
6
|
+
* If the node doesn't have children, the node gets returned
|
|
7
|
+
* @param tree - The main tree
|
|
8
|
+
* @param pathLocator - The separated address parts of a node
|
|
9
|
+
* @return - Nodes
|
|
10
|
+
*/
|
|
11
|
+
renderLevel: (tree: Tree, pathLocator: string) => Node[] | Node | null | undefined,
|
|
12
|
+
/**
|
|
13
|
+
* Returns the found nodes based on a search string and a given tree to be searched
|
|
14
|
+
* @param tree - The main tree
|
|
15
|
+
* @param search - The search string
|
|
16
|
+
* @param pathLocator - The separated address parts of a node
|
|
17
|
+
* @return - The found nodes
|
|
18
|
+
*/
|
|
19
|
+
computeDataPlane: (tree: Tree, search: string | undefined, pathLocator: string) => Node[],
|
|
20
|
+
/**
|
|
21
|
+
* Returns the classes of a row based its selection state
|
|
22
|
+
* @param classes - The default classes
|
|
23
|
+
* @param node - Node to check
|
|
24
|
+
* @param highlightedNode - Currently highlighted node
|
|
25
|
+
* @return - The CSS classes
|
|
26
|
+
*/
|
|
27
|
+
computeRowClass: (classes: string, node: Node, highlightedNode?: Node | null) => string,
|
|
28
|
+
/**
|
|
29
|
+
* Selects the doubled clicked node and dispatches a node-dblclicked event.
|
|
30
|
+
* @param event The triggering event
|
|
31
|
+
* @param host Host
|
|
32
|
+
* @return undefined
|
|
33
|
+
*/
|
|
34
|
+
onNodeDblClicked: (event: Event, host: HTMLElement) => void,
|
|
35
|
+
/**
|
|
36
|
+
* Returns the nodes on a path specified by a given path locator
|
|
37
|
+
* @param pathLocator - The separated address parts of a node
|
|
38
|
+
* @param tree - The main tree
|
|
39
|
+
* @return - The found nodes or empty array
|
|
40
|
+
*/
|
|
41
|
+
getTreePathParts: (pathLocator: string, tree: Tree) => Node[],
|
|
42
|
+
/**
|
|
43
|
+
* Returns a node based on a given path locator.
|
|
44
|
+
* If pathLocator is empty or not defined, null gets returned.
|
|
45
|
+
* If pathLocator is only partly valid, the last valid node gets returned.
|
|
46
|
+
* @param pathLocator - The separated address parts of a node
|
|
47
|
+
* @param tree - The main tree
|
|
48
|
+
* @return - The found node
|
|
49
|
+
*/
|
|
50
|
+
getNode: (pathLocator: string, tree: Tree) => Node | null;
|
|
51
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,EAAE;AACd,aAAa,GAAI,MAAM,IAAI,EAAE,MAAM,IAAI,KAAG,MAOzC;AACD;;;;;;GAMG;AACH,WAAW,GACV,MAAM,IAAI,EACV,aAAa,MAAM,KACjB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SA6BzB;AACD;;;;;;GAMG;AACH,gBAAgB,GACf,MAAM,IAAI,EACV,QAAQ,MAAM,GAAG,SAAS,EAC1B,aAAa,MAAM,KACjB,IAAI,EAQN;AACD;;;;;;GAMG;AACH,eAAe,GACd,SAAS,MAAM,EACf,MAAM,IAAI,EACV,kBAAkB,IAAI,GAAG,IAAI,KAC3B,MASF;AACD;;;;;GAKG;AACH,gBAAgB,GAAI,OAAO,KAAK,EAAE,MAAM,WAAW,KAAG,IAQrD;AACD;;;;;GAKG;AACH,gBAAgB,GAAI,aAAa,MAAM,EAAE,MAAM,IAAI,KAAG,IAAI,EAOzD;AACD;;;;;;;GAOG;AACH,OAAO,GAAI,aAAa,MAAM,EAAE,MAAM,IAAI,KAAG,IAAI,GAAG,IAcnD,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
export const //
|
|
2
|
+
getParentPath = (tree, node) => {
|
|
3
|
+
const path = node.pathLocator || node.path || '';
|
|
4
|
+
const { pathLocatorSeparator } = tree;
|
|
5
|
+
return path.includes(pathLocatorSeparator)
|
|
6
|
+
? path.substring(0, path.lastIndexOf(pathLocatorSeparator))
|
|
7
|
+
: path;
|
|
8
|
+
},
|
|
9
|
+
/**
|
|
10
|
+
* Returns a node array with the children of a node on the given path
|
|
11
|
+
* If the node doesn't have children, the node gets returned
|
|
12
|
+
* @param tree - The main tree
|
|
13
|
+
* @param pathLocator - The separated address parts of a node
|
|
14
|
+
* @return - Nodes
|
|
15
|
+
*/
|
|
16
|
+
renderLevel = (tree, pathLocator) => {
|
|
17
|
+
if (!tree) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const node = tree.getNodeByPathLocator(pathLocator), children = node ? tree.getChildren(node) : [], { searchProperty } = tree, sortFunc = (a, b) => {
|
|
21
|
+
// First sort based on "folder" status (containing children)
|
|
22
|
+
if (tree.hasChildren(a)) {
|
|
23
|
+
if (!tree.hasChildren(b)) {
|
|
24
|
+
return -1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (tree.hasChildren(b)) {
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
30
|
+
// Then sort on searchProperty
|
|
31
|
+
const val1 = a[searchProperty], val2 = b[searchProperty];
|
|
32
|
+
if (val1 > val2) {
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
if (val1 < val2) {
|
|
36
|
+
return -1;
|
|
37
|
+
}
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
return children.length > 0 ? children.sort(sortFunc) : node;
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Returns the found nodes based on a search string and a given tree to be searched
|
|
44
|
+
* @param tree - The main tree
|
|
45
|
+
* @param search - The search string
|
|
46
|
+
* @param pathLocator - The separated address parts of a node
|
|
47
|
+
* @return - The found nodes
|
|
48
|
+
*/
|
|
49
|
+
computeDataPlane = (tree, search, pathLocator) => {
|
|
50
|
+
if (!tree) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const nodes = renderLevel(tree, pathLocator);
|
|
54
|
+
return search
|
|
55
|
+
? tree.searchNodes(search, nodes, false)
|
|
56
|
+
: nodes;
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Returns the classes of a row based its selection state
|
|
60
|
+
* @param classes - The default classes
|
|
61
|
+
* @param node - Node to check
|
|
62
|
+
* @param highlightedNode - Currently highlighted node
|
|
63
|
+
* @return - The CSS classes
|
|
64
|
+
*/
|
|
65
|
+
computeRowClass = (classes, node, highlightedNode) => {
|
|
66
|
+
let selected = false;
|
|
67
|
+
if (highlightedNode) {
|
|
68
|
+
selected =
|
|
69
|
+
node === highlightedNode ||
|
|
70
|
+
(node.id && node.id === highlightedNode.id) ||
|
|
71
|
+
node.pathLocator === highlightedNode.pathLocator;
|
|
72
|
+
}
|
|
73
|
+
return selected ? `${classes} selected` : classes;
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* Selects the doubled clicked node and dispatches a node-dblclicked event.
|
|
77
|
+
* @param event The triggering event
|
|
78
|
+
* @param host Host
|
|
79
|
+
* @return undefined
|
|
80
|
+
*/
|
|
81
|
+
onNodeDblClicked = (event, host) => {
|
|
82
|
+
host.dispatchEvent(new CustomEvent('node-dblclicked', {
|
|
83
|
+
detail: {
|
|
84
|
+
model: event.model,
|
|
85
|
+
},
|
|
86
|
+
}));
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* Returns the nodes on a path specified by a given path locator
|
|
90
|
+
* @param pathLocator - The separated address parts of a node
|
|
91
|
+
* @param tree - The main tree
|
|
92
|
+
* @return - The found nodes or empty array
|
|
93
|
+
*/
|
|
94
|
+
getTreePathParts = (pathLocator, tree) => {
|
|
95
|
+
if (!tree || !pathLocator) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
return tree
|
|
99
|
+
.getPathNodes(pathLocator)
|
|
100
|
+
.filter((node) => node !== undefined);
|
|
101
|
+
},
|
|
102
|
+
/**
|
|
103
|
+
* Returns a node based on a given path locator.
|
|
104
|
+
* If pathLocator is empty or not defined, null gets returned.
|
|
105
|
+
* If pathLocator is only partly valid, the last valid node gets returned.
|
|
106
|
+
* @param pathLocator - The separated address parts of a node
|
|
107
|
+
* @param tree - The main tree
|
|
108
|
+
* @return - The found node
|
|
109
|
+
*/
|
|
110
|
+
getNode = (pathLocator, tree) => {
|
|
111
|
+
if (!tree || !pathLocator) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const node = tree.getNodeByPathLocator(pathLocator);
|
|
115
|
+
let nodes;
|
|
116
|
+
if (!node) {
|
|
117
|
+
nodes = tree.getPathNodes(pathLocator).filter((n) => n != null);
|
|
118
|
+
}
|
|
119
|
+
return nodes && nodes.length > 0
|
|
120
|
+
? nodes.pop() || null
|
|
121
|
+
: node || null;
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/util/helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neovici/cosmoz-treenode-navigator",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
3
|
+
"version": "7.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "A Pion component that lets you navigate and search through hierarchically structured data-nodes and select one of them.",
|
|
5
6
|
"keywords": [
|
|
6
|
-
"
|
|
7
|
+
"pion",
|
|
8
|
+
"pionjs",
|
|
9
|
+
"haunted",
|
|
10
|
+
"lit-html",
|
|
7
11
|
"web-components"
|
|
8
12
|
],
|
|
9
13
|
"homepage": "https://github.com/neovici/cosmoz-treenode-navigator#readme",
|
|
@@ -16,21 +20,28 @@
|
|
|
16
20
|
},
|
|
17
21
|
"license": "Apache-2.0",
|
|
18
22
|
"author": "",
|
|
19
|
-
"main": "cosmoz-treenode-navigator.js",
|
|
23
|
+
"main": "dist/cosmoz-treenode-navigator.js",
|
|
24
|
+
"types": "dist/cosmoz-treenode-navigator.d.ts",
|
|
20
25
|
"directories": {
|
|
21
26
|
"test": "test"
|
|
22
27
|
},
|
|
23
28
|
"files": [
|
|
24
|
-
"
|
|
25
|
-
"helpers.js",
|
|
29
|
+
"dist",
|
|
26
30
|
"test/data"
|
|
27
31
|
],
|
|
28
32
|
"scripts": {
|
|
29
|
-
"lint": "eslint --cache --ext .js .",
|
|
30
|
-
"start": "
|
|
33
|
+
"lint": "eslint --cache --ext .js,.ts .",
|
|
34
|
+
"start": "npm run storybook:start",
|
|
31
35
|
"test": "wtr --coverage",
|
|
32
36
|
"test:watch": "wtr --watch",
|
|
33
|
-
"prepare": "husky install"
|
|
37
|
+
"prepare": "husky install && npm run build",
|
|
38
|
+
"prettier": "prettier --write \"**/*.{js,ts,json,css,md}\"",
|
|
39
|
+
"prettier:check": "prettier --check \"**/*.{js,ts,json,css,md}\"",
|
|
40
|
+
"build": "tsc",
|
|
41
|
+
"storybook:start": "storybook dev -p 8000",
|
|
42
|
+
"storybook:build": "storybook build",
|
|
43
|
+
"storybook:deploy": "storybook-to-ghpages",
|
|
44
|
+
"storybook:preview": "npm run storybook:build && web-dev-server --root-dir ./storybook-static/ --open"
|
|
34
45
|
},
|
|
35
46
|
"release": {
|
|
36
47
|
"plugins": [
|
|
@@ -58,15 +69,27 @@
|
|
|
58
69
|
]
|
|
59
70
|
}
|
|
60
71
|
},
|
|
72
|
+
"exports": {
|
|
73
|
+
".": {
|
|
74
|
+
"types": "./dist/cosmoz-treenode-navigator.d.ts",
|
|
75
|
+
"default": "./dist/cosmoz-treenode-navigator.js"
|
|
76
|
+
},
|
|
77
|
+
"./cosmoz-treenode-navigator": {
|
|
78
|
+
"types": "./dist/cosmoz-treenode-navigator.d.ts",
|
|
79
|
+
"default": "./dist/cosmoz-treenode-navigator.js"
|
|
80
|
+
},
|
|
81
|
+
"./cosmoz-treenode-button-view": {
|
|
82
|
+
"types": "./dist/cosmoz-treenode-button-view.d.ts",
|
|
83
|
+
"default": "./dist/cosmoz-treenode-button-view.js"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
61
86
|
"dependencies": {
|
|
62
87
|
"@lit-labs/virtualizer": "^2.0.0",
|
|
63
|
-
"@neovici/
|
|
64
|
-
"@neovici/cosmoz-dialog": "^3.0.0",
|
|
65
|
-
"@neovici/cosmoz-i18next": "^3.2.0",
|
|
88
|
+
"@neovici/cosmoz-i18next": "^3.4.0",
|
|
66
89
|
"@neovici/cosmoz-input": "^5.0.0",
|
|
67
|
-
"@neovici/cosmoz-tree": "^3.
|
|
68
|
-
"@neovici/cosmoz-utils": "^6.
|
|
69
|
-
"@pionjs/pion": "^2.
|
|
90
|
+
"@neovici/cosmoz-tree": "^3.6.1",
|
|
91
|
+
"@neovici/cosmoz-utils": "^6.8.1",
|
|
92
|
+
"@pionjs/pion": "^2.7.1",
|
|
70
93
|
"@polymer/iron-icons": "^3.0.0",
|
|
71
94
|
"@polymer/paper-button": "^3.0.0",
|
|
72
95
|
"@polymer/paper-icon-button": "^3.0.0",
|
|
@@ -77,6 +100,9 @@
|
|
|
77
100
|
"devDependencies": {
|
|
78
101
|
"@commitlint/cli": "^18.0.0",
|
|
79
102
|
"@commitlint/config-conventional": "^18.0.0",
|
|
103
|
+
"@eslint/eslintrc": "^3.3.0",
|
|
104
|
+
"@eslint/js": "^9.21.0",
|
|
105
|
+
"@neovici/cfg": "^2.1.0",
|
|
80
106
|
"@open-wc/testing": "^4.0.0",
|
|
81
107
|
"@polymer/iron-ajax": "^3.0.0",
|
|
82
108
|
"@polymer/iron-component-page": "^4.0.0",
|
|
@@ -85,8 +111,27 @@
|
|
|
85
111
|
"@polymer/test-fixture": "^4.0.2",
|
|
86
112
|
"@semantic-release/changelog": "^6.0.0",
|
|
87
113
|
"@semantic-release/git": "^10.0.0",
|
|
114
|
+
"@storybook/addon-essentials": "^8.6.4",
|
|
115
|
+
"@storybook/addon-links": "^8.6.4",
|
|
116
|
+
"@storybook/blocks": "^8.6.4",
|
|
117
|
+
"@storybook/builder-vite": "^8.6.4",
|
|
118
|
+
"@storybook/storybook-deployer": "^2.8.16",
|
|
119
|
+
"@storybook/web-components": "^8.6.4",
|
|
120
|
+
"@storybook/web-components-vite": "^8.6.4",
|
|
121
|
+
"@types/mocha": "^10.0.10",
|
|
122
|
+
"@types/node": "^22.13.10",
|
|
123
|
+
"@typescript-eslint/eslint-plugin": "^8.26.0",
|
|
124
|
+
"@typescript-eslint/parser": "^8.26.1",
|
|
125
|
+
"@web/dev-server-esbuild": "^1.0.4",
|
|
88
126
|
"@webcomponents/webcomponentsjs": "^2.0.0",
|
|
127
|
+
"eslint-config-prettier": "^10.1.1",
|
|
128
|
+
"eslint-plugin-html": "^8.1.2",
|
|
129
|
+
"eslint-plugin-import": "^2.31.0",
|
|
130
|
+
"eslint-plugin-mocha": "^10.5.0",
|
|
131
|
+
"globals": "^16.0.0",
|
|
89
132
|
"husky": "^8.0.0",
|
|
90
|
-
"
|
|
133
|
+
"lit": "^3.2.1",
|
|
134
|
+
"semantic-release": "^22.0.0",
|
|
135
|
+
"typescript": "^5.8.2"
|
|
91
136
|
}
|
|
92
137
|
}
|