@neovici/cosmoz-treenode-navigator 8.5.0 → 9.0.1
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/NOTICE +6 -0
- package/README.md +143 -48
- package/dist/cosmoz-treenode-button-view.js +12 -1
- package/dist/cosmoz-treenode-button-view.js.map +1 -1
- package/dist/cosmoz-treenode-button-view.styles.d.ts.map +1 -1
- package/dist/cosmoz-treenode-button-view.styles.js +34 -15
- package/dist/cosmoz-treenode-button-view.styles.js.map +1 -1
- package/dist/cosmoz-treenode-navigator.d.ts +1 -1
- package/dist/cosmoz-treenode-navigator.d.ts.map +1 -1
- package/dist/cosmoz-treenode-navigator.js +128 -267
- package/dist/cosmoz-treenode-navigator.js.map +1 -1
- package/dist/cosmoz-treenode-navigator.styles.d.ts.map +1 -1
- package/dist/cosmoz-treenode-navigator.styles.js +59 -76
- package/dist/cosmoz-treenode-navigator.styles.js.map +1 -1
- package/dist/hooks/useNodes.d.ts.map +1 -1
- package/dist/hooks/useNodes.js +2 -1
- package/dist/hooks/useNodes.js.map +1 -1
- package/dist/hooks/useSourceTree.d.ts +33 -0
- package/dist/hooks/useSourceTree.d.ts.map +1 -0
- package/dist/hooks/useSourceTree.js +102 -0
- package/dist/hooks/useSourceTree.js.map +1 -0
- package/dist/tree-view/flatten.d.ts +29 -0
- package/dist/tree-view/flatten.d.ts.map +1 -0
- package/dist/tree-view/flatten.js +88 -0
- package/dist/tree-view/flatten.js.map +1 -0
- package/dist/tree-view/render.d.ts +22 -0
- package/dist/tree-view/render.d.ts.map +1 -0
- package/dist/tree-view/render.js +85 -0
- package/dist/tree-view/render.js.map +1 -0
- package/dist/tree-view/styles.d.ts +3 -0
- package/dist/tree-view/styles.d.ts.map +1 -0
- package/dist/tree-view/styles.js +134 -0
- package/dist/tree-view/styles.js.map +1 -0
- package/dist/tree-view/tree-view.d.ts +25 -0
- package/dist/tree-view/tree-view.d.ts.map +1 -0
- package/dist/tree-view/tree-view.js +27 -0
- package/dist/tree-view/tree-view.js.map +1 -0
- package/dist/tree-view/types.d.ts +59 -0
- package/dist/tree-view/types.d.ts.map +1 -0
- package/dist/tree-view/types.js +2 -0
- package/dist/tree-view/types.js.map +1 -0
- package/dist/tree-view/use-tree-view.d.ts +18 -0
- package/dist/tree-view/use-tree-view.d.ts.map +1 -0
- package/dist/tree-view/use-tree-view.js +175 -0
- package/dist/tree-view/use-tree-view.js.map +1 -0
- package/dist/util/source-tree.d.ts +26 -0
- package/dist/util/source-tree.d.ts.map +1 -0
- package/dist/util/source-tree.js +91 -0
- package/dist/util/source-tree.js.map +1 -0
- package/dist/util/source.d.ts.map +1 -1
- package/dist/util/source.js +4 -1
- package/dist/util/source.js.map +1 -1
- package/package.json +9 -8
|
@@ -1,303 +1,164 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '@neovici/cosmoz-input';
|
|
2
|
+
import { useHost } from '@neovici/cosmoz-utils/hooks/use-host';
|
|
3
|
+
import { notifyProperty } from '@neovici/cosmoz-utils/hooks/use-notify-property';
|
|
2
4
|
import { component, useCallback, useEffect, useMemo, useProperty, useRef, useState, } from '@pionjs/pion';
|
|
5
|
+
import { t } from 'i18next';
|
|
3
6
|
import { html, nothing } from 'lit-html';
|
|
4
|
-
import { guard } from 'lit-html/directives/guard.js';
|
|
5
7
|
import { ref } from 'lit-html/directives/ref.js';
|
|
6
8
|
import { when } from 'lit-html/directives/when.js';
|
|
7
|
-
import '@neovici/cosmoz-button/cosmoz-button';
|
|
8
|
-
import '@neovici/cosmoz-input';
|
|
9
|
-
import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
|
|
10
|
-
import { t } from 'i18next';
|
|
11
|
-
import { useHost } from '@neovici/cosmoz-utils/hooks/use-host';
|
|
12
|
-
import { notifyProperty } from '@neovici/cosmoz-utils/hooks/use-notify-property';
|
|
13
9
|
import style from './cosmoz-treenode-navigator.styles';
|
|
14
10
|
import { useNodes } from './hooks/useNodes';
|
|
15
|
-
import {
|
|
11
|
+
import { useSearchTree, useSourceTree } from './hooks/useSourceTree';
|
|
12
|
+
import './tree-view/tree-view';
|
|
16
13
|
import { treeSource } from './util/source';
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*/
|
|
30
|
-
searchMinLength = 3, opened, searchDebounceTimeout = 500, }) => {
|
|
31
|
-
const listRef = useRef();
|
|
14
|
+
const useSearch = (value, minLength, timeout) => {
|
|
15
|
+
const [query, setQuery] = useState('');
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const id = setTimeout(() => {
|
|
18
|
+
const trimmed = value.trim();
|
|
19
|
+
setQuery(trimmed.length >= minLength ? trimmed : '');
|
|
20
|
+
}, timeout);
|
|
21
|
+
return () => clearTimeout(id);
|
|
22
|
+
}, [value, minLength, timeout]);
|
|
23
|
+
return value.trim().length >= minLength ? query : '';
|
|
24
|
+
};
|
|
25
|
+
const NodeNavigator = ({ tree, source, searchMinLength = 3, searchDebounceTimeout = 500, opened, }) => {
|
|
32
26
|
const host = useHost();
|
|
33
|
-
|
|
27
|
+
const view = useRef();
|
|
34
28
|
const [nodePath, setNodePath] = useProperty('nodePath', '');
|
|
35
|
-
// highlightedNode is internal navigation state only
|
|
36
|
-
const [highlightedNode, setHighlightedNode] = useState(null);
|
|
37
|
-
const [search, setSearch] = useState('');
|
|
38
|
-
const [searchValue, setSearchValue] = useState('');
|
|
39
|
-
const [openNodePath, setOpenNodePath] = useState('');
|
|
40
29
|
const nodeSource = useMemo(() => source ?? treeSource(tree), [source, tree]);
|
|
41
|
-
const
|
|
42
|
-
const
|
|
30
|
+
const [value, setValue] = useState('');
|
|
31
|
+
const query = useSearch(value, searchMinLength, searchDebounceTimeout);
|
|
32
|
+
const { model, expanded, setExpanded, highlighted, setHighlighted, error, loading, retry: retryPath, } = useSourceTree(nodeSource, nodePath, opened);
|
|
33
|
+
const search = useSearchTree(nodeSource, query);
|
|
34
|
+
const [searchExpanded, setSearchExpanded] = useState([]);
|
|
35
|
+
const { nodes: path } = useNodes(() => (highlighted ? nodeSource.getPath(highlighted) : []), [nodeSource, highlighted]);
|
|
43
36
|
useEffect(() => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (searchLength > 0 && searchLength < searchMinLength) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
setSearch(searchValue.trim());
|
|
50
|
-
}, searchDebounceTimeout);
|
|
51
|
-
return () => clearTimeout(timeoutId);
|
|
52
|
-
}, [searchValue]);
|
|
53
|
-
const { nodes: dataPlane, loading, error, } = useNodes(() => search
|
|
54
|
-
? nodeSource.search(search, openNodePath)
|
|
55
|
-
: nodeSource.getLevel(openNodePath), [nodeSource, search, openNodePath]);
|
|
56
|
-
/**
|
|
57
|
-
* Opens a node (renderLevel) based on a given path
|
|
58
|
-
*
|
|
59
|
-
* Don't update nodePath here - this is just navigation
|
|
60
|
-
* nodePath should only change on selection
|
|
61
|
-
*
|
|
62
|
-
* @param clickedNode - The clicked node
|
|
63
|
-
* @return undefined
|
|
64
|
-
*/
|
|
65
|
-
const onNodeClick = useCallback((clickedNode) => {
|
|
66
|
-
setOpenNodePath(clickedNode?.pathLocator || '');
|
|
67
|
-
setSearchValue('');
|
|
68
|
-
setSearch('');
|
|
69
|
-
setHighlightedNode(null);
|
|
70
|
-
}, []);
|
|
71
|
-
/**
|
|
72
|
-
* Handles node selection (e.g. on double-click or Enter)
|
|
73
|
-
* @param node
|
|
74
|
-
*/
|
|
75
|
-
const onNodeSelect = useCallback((node) => {
|
|
76
|
-
if (node?.pathLocator) {
|
|
77
|
-
setNodePath(node.pathLocator);
|
|
78
|
-
}
|
|
79
|
-
}, []);
|
|
80
|
-
// Clear highlightedNodePath when navigating to a new folder
|
|
37
|
+
setSearchExpanded(search.found?.expanded ?? []);
|
|
38
|
+
}, [search.found]);
|
|
81
39
|
useEffect(() => {
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
notifyProperty(host, 'highlightedNodePath', '');
|
|
86
|
-
}, [openNodePath]);
|
|
87
|
-
// When nodePath changes externally, sync the view
|
|
40
|
+
if (opened)
|
|
41
|
+
setValue('');
|
|
42
|
+
}, [opened]);
|
|
88
43
|
useEffect(() => {
|
|
89
|
-
|
|
44
|
+
notifyProperty(host, 'highlightedNodePath', highlighted);
|
|
45
|
+
}, [highlighted]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (query)
|
|
48
|
+
setHighlighted('');
|
|
49
|
+
}, [query]);
|
|
50
|
+
const confirm = useCallback((path) => {
|
|
51
|
+
if (path)
|
|
52
|
+
setNodePath(path);
|
|
53
|
+
}, []);
|
|
54
|
+
const isLoading = query ? search.loading : loading || model.pending.size > 0;
|
|
55
|
+
const hasError = query ? search.error : error || model.errors.size > 0;
|
|
56
|
+
const items = query ? (search.found?.roots ?? []) : model.roots();
|
|
57
|
+
const expand = (paths) => {
|
|
58
|
+
if (query) {
|
|
59
|
+
setSearchExpanded(paths);
|
|
90
60
|
return;
|
|
91
61
|
}
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
62
|
+
for (const path of paths) {
|
|
63
|
+
if (!expanded.includes(path))
|
|
64
|
+
model.loadLevel(path);
|
|
95
65
|
}
|
|
96
|
-
|
|
97
|
-
|
|
66
|
+
setExpanded(paths);
|
|
67
|
+
};
|
|
68
|
+
const retry = () => {
|
|
69
|
+
if (query) {
|
|
70
|
+
search.retry();
|
|
98
71
|
return;
|
|
99
72
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}, [nodesOnNodePath, nodeSource, opened]);
|
|
103
|
-
// Notify highlightedNodePath when highlightedNode changes
|
|
104
|
-
useEffect(() => {
|
|
105
|
-
notifyProperty(host, 'highlightedNodePath', highlightedNode?.pathLocator || '');
|
|
106
|
-
}, [highlightedNode]);
|
|
107
|
-
const meta = useMeta({
|
|
108
|
-
dataPlane,
|
|
109
|
-
highlightedNode: highlightedNode ?? null,
|
|
110
|
-
onNodeClick,
|
|
111
|
-
});
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
if (!opened) {
|
|
73
|
+
if (error) {
|
|
74
|
+
retryPath();
|
|
114
75
|
return;
|
|
115
76
|
}
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
if (!list)
|
|
119
|
-
return null;
|
|
120
|
-
return list[Object.getOwnPropertySymbols(list)[0]];
|
|
121
|
-
};
|
|
122
|
-
const vlist = getVlist();
|
|
123
|
-
if (vlist && meta.highlightedNode) {
|
|
124
|
-
const index = meta.dataPlane?.indexOf(meta.highlightedNode);
|
|
125
|
-
if (index !== undefined && index >= 0) {
|
|
126
|
-
vlist.scrollToIndex = {
|
|
127
|
-
index,
|
|
128
|
-
position: 'center',
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// eslint-disable-next-line max-statements
|
|
133
|
-
const handler = (e) => {
|
|
134
|
-
if ((e.ctrlKey && e.altKey) || e.defaultPrevented) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const { dataPlane: items, highlightedNode: node } = meta;
|
|
138
|
-
const vlist = getVlist();
|
|
139
|
-
if (!vlist)
|
|
140
|
-
return;
|
|
141
|
-
const currentIndex = items.findIndex((i) => i.pathLocator === node?.pathLocator);
|
|
142
|
-
const navigateToIndex = (newIndex, position) => {
|
|
143
|
-
if (newIndex >= 0 && newIndex < items.length) {
|
|
144
|
-
setHighlightedNode(items[newIndex]);
|
|
145
|
-
const needsScroll = position === 'start'
|
|
146
|
-
? newIndex < vlist._firstVisible
|
|
147
|
-
: newIndex > vlist._lastVisible;
|
|
148
|
-
if (needsScroll) {
|
|
149
|
-
vlist.scrollToIndex = { index: newIndex, position };
|
|
150
|
-
}
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
return false;
|
|
154
|
-
};
|
|
155
|
-
switch (e.key) {
|
|
156
|
-
case 'Up':
|
|
157
|
-
case 'ArrowUp': {
|
|
158
|
-
e.preventDefault();
|
|
159
|
-
navigateToIndex(Math.max(currentIndex - 1, 0), 'start');
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
case 'Down':
|
|
163
|
-
case 'ArrowDown': {
|
|
164
|
-
e.preventDefault();
|
|
165
|
-
if (currentIndex < items.length - 1) {
|
|
166
|
-
navigateToIndex(currentIndex + 1, 'end');
|
|
167
|
-
}
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
case 'Enter':
|
|
171
|
-
e.preventDefault();
|
|
172
|
-
if (node) {
|
|
173
|
-
onNodeSelect(node);
|
|
174
|
-
}
|
|
175
|
-
break;
|
|
176
|
-
default:
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
document.addEventListener('keydown', handler, true);
|
|
181
|
-
return () => document.removeEventListener('keydown', handler, true);
|
|
182
|
-
}, [opened, meta, onNodeSelect]);
|
|
183
|
-
// Double-click handler for node selection
|
|
184
|
-
const handleNodeDblClick = () => {
|
|
185
|
-
if (highlightedNode) {
|
|
186
|
-
onNodeSelect(highlightedNode);
|
|
77
|
+
for (const path of model.errors) {
|
|
78
|
+
model.loadLevel(path);
|
|
187
79
|
}
|
|
188
80
|
};
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
81
|
+
const pickAncestor = (path) => {
|
|
82
|
+
setHighlighted(path);
|
|
83
|
+
if (!query) {
|
|
84
|
+
setExpanded((current) => [...new Set([...current, path])]);
|
|
85
|
+
model.loadLevel(path);
|
|
192
86
|
}
|
|
193
|
-
return html ` <div class="item">
|
|
194
|
-
${when(search, () => {
|
|
195
|
-
const parentPath = nodeSource.parentOf(node);
|
|
196
|
-
const heading = index === 0 ||
|
|
197
|
-
parentPath !== nodeSource.parentOf(dataPlane[index - 1])
|
|
198
|
-
? nodeSource.pathLabel(parentPath)
|
|
199
|
-
: undefined;
|
|
200
|
-
return when(heading, () => html `<div class="section">${heading}</div>`);
|
|
201
|
-
})}
|
|
202
|
-
<div
|
|
203
|
-
class=${computeRowClass('node', node, highlightedNode)}
|
|
204
|
-
data-testid="node"
|
|
205
|
-
@click=${() => setHighlightedNode(node)}
|
|
206
|
-
@dblclick=${handleNodeDblClick}
|
|
207
|
-
>
|
|
208
|
-
<div class="name" data-testid="node-name">
|
|
209
|
-
${nodeSource.label(node)}
|
|
210
|
-
</div>
|
|
211
|
-
${when(nodeSource.hasChildren(node) !== false, () => html `
|
|
212
|
-
<span
|
|
213
|
-
class="icon"
|
|
214
|
-
data-testid="node-arrow"
|
|
215
|
-
@click=${() => onNodeClick(node)}
|
|
216
|
-
>
|
|
217
|
-
<svg
|
|
218
|
-
viewBox="0 0 24 24"
|
|
219
|
-
preserveAspectRatio="xMidYMid meet"
|
|
220
|
-
focusable="false"
|
|
221
|
-
style="pointer-events: none; display: block; width: 100%; height: 100%;"
|
|
222
|
-
>
|
|
223
|
-
<g>
|
|
224
|
-
<path
|
|
225
|
-
d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
|
|
226
|
-
></path>
|
|
227
|
-
</g>
|
|
228
|
-
</svg>
|
|
229
|
-
</span>
|
|
230
|
-
`)}
|
|
231
|
-
</div>
|
|
232
|
-
</div>`;
|
|
233
87
|
};
|
|
234
88
|
return html `
|
|
235
89
|
<div class="header">
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
</
|
|
250
|
-
</span>
|
|
251
|
-
${guard([openNodes], () => openNodes
|
|
252
|
-
.filter((node) => node !== undefined)
|
|
253
|
-
.map((node) => html `
|
|
254
|
-
<span class="slash">/</span>
|
|
255
|
-
<span
|
|
256
|
-
class="pointer"
|
|
257
|
-
tabindex="0"
|
|
258
|
-
@click=${() => onNodeClick(node)}
|
|
259
|
-
>${nodeSource.label(node)}</span
|
|
260
|
-
>
|
|
261
|
-
`))}
|
|
262
|
-
</h3>
|
|
90
|
+
${when(path.length, () => html `<nav class="path" aria-label=${t('Path')} data-testid="path">
|
|
91
|
+
${path.map((node, index) => html `${index
|
|
92
|
+
? html `<span class="slash" aria-hidden="true">/</span>`
|
|
93
|
+
: nothing}<button
|
|
94
|
+
type="button"
|
|
95
|
+
class="crumb"
|
|
96
|
+
aria-current=${index === path.length - 1
|
|
97
|
+
? 'location'
|
|
98
|
+
: nothing}
|
|
99
|
+
@click=${() => pickAncestor(node.pathLocator)}
|
|
100
|
+
>
|
|
101
|
+
${nodeSource.label(node)}
|
|
102
|
+
</button>`)}
|
|
103
|
+
</nav>`)}
|
|
263
104
|
<cosmoz-input
|
|
264
105
|
autofocus
|
|
265
|
-
tabindex="0"
|
|
266
106
|
data-testid="search-input"
|
|
267
|
-
|
|
107
|
+
label=${t('Search nodes')}
|
|
108
|
+
.value=${value}
|
|
268
109
|
.placeholder=${t('Search...')}
|
|
269
|
-
@input=${(
|
|
270
|
-
|
|
110
|
+
@input=${(event) => setValue(event.target.value)}
|
|
111
|
+
@keydown=${(event) => {
|
|
112
|
+
if (event.key === 'ArrowDown') {
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
view.current?.focusActiveItem();
|
|
115
|
+
}
|
|
116
|
+
else if (event.key === 'Enter') {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
confirm(highlighted);
|
|
119
|
+
}
|
|
120
|
+
}}
|
|
121
|
+
></cosmoz-input>
|
|
271
122
|
</div>
|
|
272
|
-
<
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
123
|
+
<cosmoz-treenode-tree-view
|
|
124
|
+
class="items"
|
|
125
|
+
data-testid="tree"
|
|
126
|
+
label=${t('Nodes')}
|
|
127
|
+
.items=${items}
|
|
128
|
+
.getId=${(node) => node.pathLocator}
|
|
129
|
+
.getLabel=${nodeSource.label}
|
|
130
|
+
.getChildren=${query ? search.found?.getChildren : model.getChildren}
|
|
131
|
+
.hasChildren=${query
|
|
132
|
+
? (node) => (search.found?.getChildren(node).length ?? 0) > 0
|
|
133
|
+
: model.hasChildren}
|
|
134
|
+
.expanded=${query ? searchExpanded : expanded}
|
|
135
|
+
.selected=${highlighted || undefined}
|
|
136
|
+
@expanded-changed=${(event) => {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
expand(event.detail.value);
|
|
139
|
+
}}
|
|
140
|
+
@selected-changed=${(event) => {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
setHighlighted(event.detail.value);
|
|
143
|
+
}}
|
|
144
|
+
@activate=${(event) => confirm(event.detail.id)}
|
|
145
|
+
${ref((el) => {
|
|
146
|
+
view.current = el;
|
|
278
147
|
})}
|
|
148
|
+
></cosmoz-treenode-tree-view>
|
|
149
|
+
<div class="status" role="status" aria-live="polite">
|
|
150
|
+
${when(hasError, () => html `<span data-testid="error">${t('Could not load nodes.')}</span
|
|
151
|
+
><button class="retry" type="button" @click=${retry}>
|
|
152
|
+
${t('Try again')}
|
|
153
|
+
</button>`, () => when(isLoading, () => html `<span class="loading" data-testid="loading"
|
|
154
|
+
>${t('Loading...')}</span
|
|
155
|
+
>`, () => when(!items.length, () => html `<span data-testid=${query ? 'no-results' : 'empty'}
|
|
156
|
+
>${query
|
|
157
|
+
? t('No nodes match the search')
|
|
158
|
+
: t('Search to find a node.')}</span
|
|
159
|
+
>`)))}
|
|
279
160
|
</div>
|
|
280
|
-
${when(error, () => html `<div class="status" data-testid="error">
|
|
281
|
-
${t('Could not load nodes.')}
|
|
282
|
-
</div>`, () => when(loading, () => html `<div class="status" data-testid="loading">
|
|
283
|
-
${t('Loading...')}
|
|
284
|
-
</div>`, () => when(!dataPlane.length, () => html `<div class="status" data-testid="empty">
|
|
285
|
-
${search ? t('No matches.') : t('Search to find a node.')}
|
|
286
|
-
</div>`)))}
|
|
287
|
-
${when(search && openNodePath && nodeSource.scopedSearch, () => html `
|
|
288
|
-
<cosmoz-button
|
|
289
|
-
class="global-search"
|
|
290
|
-
variant="link"
|
|
291
|
-
full-width
|
|
292
|
-
data-testid="global-search-button"
|
|
293
|
-
@click=${() => setOpenNodePath('')}
|
|
294
|
-
>
|
|
295
|
-
${t('Click to search again but globally')}
|
|
296
|
-
</cosmoz-button>
|
|
297
|
-
`)}
|
|
298
161
|
`;
|
|
299
162
|
};
|
|
300
|
-
customElements.define('cosmoz-treenode-navigator', component(NodeNavigator, {
|
|
301
|
-
styleSheets: [style],
|
|
302
|
-
}));
|
|
163
|
+
customElements.define('cosmoz-treenode-navigator', component(NodeNavigator, { styleSheets: [style] }));
|
|
303
164
|
//# sourceMappingURL=cosmoz-treenode-navigator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmoz-treenode-navigator.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cosmoz-treenode-navigator.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmoz-treenode-navigator.styles.d.ts","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"cosmoz-treenode-navigator.styles.d.ts","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":";AAEA,wBAyFE"}
|