From 47904af9502a8ee424f9c2a5c77f72e192f79b8b Mon Sep 17 00:00:00 2001 From: abdel-17 Date: Wed, 3 Dec 2025 02:08:03 +0200 Subject: [PATCH 1/2] breaking: pass {parent, node} instead of just node --- .../src/lib/components/Tree.svelte | 4 ++-- .../src/lib/components/types.ts | 20 +++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/svelte-file-tree/src/lib/components/Tree.svelte b/packages/svelte-file-tree/src/lib/components/Tree.svelte index d05adea..86e533c 100644 --- a/packages/svelte-file-tree/src/lib/components/Tree.svelte +++ b/packages/svelte-file-tree/src/lib/components/Tree.svelte @@ -129,8 +129,8 @@ return expandedIds.has(node.id); }, inClipboard: () => clipboardIds.has(node.id), - disabled: () => parent?.disabled || isItemDisabled(node), - visible: () => (parent === undefined || parent.expanded) && !isItemHidden(node), + disabled: () => parent?.disabled || isItemDisabled({ parent, node }), + visible: () => (parent === undefined || parent.expanded) && !isItemHidden({ parent, node }), }); result.push(item); diff --git a/packages/svelte-file-tree/src/lib/components/types.ts b/packages/svelte-file-tree/src/lib/components/types.ts index f01ae1e..be57831 100644 --- a/packages/svelte-file-tree/src/lib/components/types.ts +++ b/packages/svelte-file-tree/src/lib/components/types.ts @@ -22,6 +22,22 @@ export type TreeChildrenSnippetArgs< export type PasteOperation = "copy" | "cut"; +export type IsItemDisabledArgs< + TFile extends FileNode = FileNode, + TFolder extends FolderNode = DefaultTFolder, +> = { + parent: TreeItemState | undefined; + node: TFile | TFolder; +}; + +export type IsItemHiddenArgs< + TFile extends FileNode = FileNode, + TFolder extends FolderNode = DefaultTFolder, +> = { + parent: TreeItemState | undefined; + node: TFile | TFolder; +}; + export type OnResolveNameConflictArgs< TFile extends FileNode = FileNode, TFolder extends FolderNode = DefaultTFolder, @@ -79,8 +95,8 @@ export interface TreeProps< clipboardIds?: SvelteSet; pasteOperation?: PasteOperation; ref?: HTMLDivElement | null; - isItemDisabled?: (node: TFile | TFolder) => boolean; - isItemHidden?: (node: TFile | TFolder) => boolean; + isItemDisabled?: (args: IsItemDisabledArgs) => boolean; + isItemHidden?: (args: IsItemHiddenArgs) => boolean; copyNode?: (node: TFile | TFolder) => TFile | TFolder; shouldClearClipboard?: (operation: PasteOperation) => boolean; onResolveNameConflict?: ( From d1b36e778c1b3b663a07626bacf1ac85d215dab1 Mon Sep 17 00:00:00 2001 From: abdel-17 Date: Wed, 3 Dec 2025 02:17:55 +0200 Subject: [PATCH 2/2] chore: add changeset --- .changeset/empty-planets-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/empty-planets-wash.md diff --git a/.changeset/empty-planets-wash.md b/.changeset/empty-planets-wash.md new file mode 100644 index 0000000..d8996b0 --- /dev/null +++ b/.changeset/empty-planets-wash.md @@ -0,0 +1,5 @@ +--- +"svelte-file-tree": minor +--- + +breaking: pass {parent, node} to `isItemDisabled` and `isItemHidden`