@keenmate/svelte-treeview 4.2.1 → 4.3.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.
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
onNodeDragStart?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
70
70
|
onNodeDragOver?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
71
71
|
onNodeDrop?: (node: LTreeNode<T>, draggedNode: LTreeNode<T>, event: DragEvent) => void;
|
|
72
|
-
contextMenuCallback?: (node: LTreeNode<T
|
|
72
|
+
contextMenuCallback?: (node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[];
|
|
73
73
|
|
|
74
74
|
// VISUALS
|
|
75
75
|
bodyClass?: string | null | undefined;
|
|
@@ -178,6 +178,13 @@
|
|
|
178
178
|
return tree?.searchNodes(searchText, searchOptions) || [];
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
+
// svelte-ignore non_reactive_update
|
|
182
|
+
export function closeContextMenu() {
|
|
183
|
+
contextMenuVisible = false;
|
|
184
|
+
contextMenuNode = null;
|
|
185
|
+
isDebugMenuActive = false;
|
|
186
|
+
}
|
|
187
|
+
|
|
181
188
|
export async function scrollToPath(
|
|
182
189
|
path: string,
|
|
183
190
|
options?: { expand?: boolean; highlight?: boolean; scrollOptions?: ScrollIntoViewOptions }
|
|
@@ -325,11 +332,6 @@
|
|
|
325
332
|
isDebugMenuActive = false; // This is a user-triggered menu, not debug menu
|
|
326
333
|
}
|
|
327
334
|
|
|
328
|
-
function closeContextMenu() {
|
|
329
|
-
contextMenuVisible = false;
|
|
330
|
-
contextMenuNode = null;
|
|
331
|
-
isDebugMenuActive = false;
|
|
332
|
-
}
|
|
333
335
|
|
|
334
336
|
function _onNodeDragStart(node: LTreeNode<T>, event: DragEvent) {
|
|
335
337
|
draggedNode = node;
|
|
@@ -529,15 +531,23 @@
|
|
|
529
531
|
{#if contextMenuVisible && contextMenuNode}
|
|
530
532
|
<div class="ltree-context-menu" style="left: {contextMenuX}px; top: {contextMenuY}px;">
|
|
531
533
|
{#if contextMenuCallback}
|
|
532
|
-
{@const menuItems = contextMenuCallback(contextMenuNode)}
|
|
534
|
+
{@const menuItems = contextMenuCallback(contextMenuNode, closeContextMenu)}
|
|
533
535
|
{#each menuItems as item}
|
|
534
536
|
{#if item.isDivider}
|
|
535
537
|
<div class="ltree-context-menu-divider"></div>
|
|
536
538
|
{:else}
|
|
537
539
|
<div
|
|
538
|
-
class="ltree-context-menu-item"
|
|
540
|
+
class="ltree-context-menu-item {item.className || ''}"
|
|
539
541
|
class:ltree-context-menu-item-disabled={item.isDisabled}
|
|
540
|
-
onclick={() =>
|
|
542
|
+
onclick={async () => {
|
|
543
|
+
if (!item.isDisabled) {
|
|
544
|
+
try {
|
|
545
|
+
await item.callback();
|
|
546
|
+
} catch (error) {
|
|
547
|
+
console.error('Context menu callback error:', error);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}}
|
|
541
551
|
>
|
|
542
552
|
{#if item.icon}
|
|
543
553
|
<span class="ltree-context-menu-icon">{item.icon}</span>
|
|
@@ -43,7 +43,7 @@ declare function $$render<T>(): {
|
|
|
43
43
|
onNodeDragStart?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
44
44
|
onNodeDragOver?: (node: LTreeNode<T>, event: DragEvent) => void;
|
|
45
45
|
onNodeDrop?: (node: LTreeNode<T>, draggedNode: LTreeNode<T>, event: DragEvent) => void;
|
|
46
|
-
contextMenuCallback?: (node: LTreeNode<T
|
|
46
|
+
contextMenuCallback?: (node: LTreeNode<T>, closeMenuCallback: () => void) => ContextMenuItem[];
|
|
47
47
|
bodyClass?: string | null | undefined;
|
|
48
48
|
selectedNodeClass?: string | null | undefined;
|
|
49
49
|
dragOverNodeClass?: string | null | undefined;
|
|
@@ -62,6 +62,7 @@ declare function $$render<T>(): {
|
|
|
62
62
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
63
63
|
filterNodes: (searchText: string, searchOptions?: SearchOptions) => void;
|
|
64
64
|
searchNodes: (searchText: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
65
|
+
closeContextMenu: () => void;
|
|
65
66
|
scrollToPath: (path: string, options?: {
|
|
66
67
|
expand?: boolean;
|
|
67
68
|
highlight?: boolean;
|
|
@@ -84,6 +85,7 @@ declare class __sveltets_Render<T> {
|
|
|
84
85
|
collapseAll: (nodePath?: string | null | undefined) => void;
|
|
85
86
|
filterNodes: (searchText: string, searchOptions?: SearchOptions) => void;
|
|
86
87
|
searchNodes: (searchText: string | null | undefined, searchOptions?: SearchOptions) => LTreeNode<T>[];
|
|
88
|
+
closeContextMenu: () => void;
|
|
87
89
|
scrollToPath: (path: string, options?: {
|
|
88
90
|
expand?: boolean;
|
|
89
91
|
highlight?: boolean;
|
package/dist/ltree/types.d.ts
CHANGED
|
@@ -5,8 +5,9 @@ export interface ContextMenuItem {
|
|
|
5
5
|
icon?: string;
|
|
6
6
|
title: string;
|
|
7
7
|
isDisabled?: boolean;
|
|
8
|
-
callback: () => void
|
|
8
|
+
callback: () => void | Promise<void>;
|
|
9
9
|
isDivider?: boolean;
|
|
10
|
+
className?: string;
|
|
10
11
|
}
|
|
11
12
|
export interface InsertArrayResult<T> {
|
|
12
13
|
successful: number;
|