diff --git a/app/Livewire/Vault/TreeView.php b/app/Livewire/Vault/TreeView.php
index 059793c..0a0b304 100644
--- a/app/Livewire/Vault/TreeView.php
+++ b/app/Livewire/Vault/TreeView.php
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace App\Livewire\Vault;
+use App\Actions\UpdateVaultNode;
use App\Models\Vault;
use App\Models\VaultNode;
use Illuminate\Contracts\View\Factory;
@@ -17,6 +18,36 @@ final class TreeView extends Component
{
public Vault $vault;
+ public function moveNode(VaultNode $source, ?VaultNode $target): void
+ {
+ $this->authorize('view', $source->vault);
+
+ /** @var Vault $sourceVault */
+ $sourceVault = $source->vault;
+
+ /** @var VaultNode $target */
+ if ($target->exists && !$sourceVault->is($target->vault)) {
+ abort(403);
+ }
+
+ $parentId = null;
+
+ if ($target->exists) {
+ // Ignore if $target is a child of $source
+ if ($target->ancestors->pluck('id')->contains($source->id)) {
+ return;
+ }
+
+ $parentId = $target->is_file ? $target->parent_id : $target->id;
+ }
+
+ if ($source->parent_id === $parentId) {
+ return;
+ }
+
+ new UpdateVaultNode()->handle($source, ['parent_id' => $parentId]);
+ }
+
public function placeholder(): string
{
return <<<'HTML'
diff --git a/resources/views/components/treeView/index.blade.php b/resources/views/components/treeView/index.blade.php
index dcd9b4e..cb38808 100644
--- a/resources/views/components/treeView/index.blade.php
+++ b/resources/views/components/treeView/index.blade.php
@@ -1,3 +1,30 @@
-
+
{{ $slot }}
+
+@script
+
+@endscript
diff --git a/resources/views/components/treeView/item.blade.php b/resources/views/components/treeView/item.blade.php
index 00f6963..15fa87a 100644
--- a/resources/views/components/treeView/item.blade.php
+++ b/resources/views/components/treeView/item.blade.php
@@ -1,3 +1,12 @@
-
+@props(['node'])
+
+id }}')"
+ @dragenter.prevent=""
+ @dragover.prevent=""
+ @drop="moveNode(event)"
+>
{{ $slot }}
diff --git a/resources/views/components/treeView/itemFile.blade.php b/resources/views/components/treeView/itemFile.blade.php
index b31a8f2..f7f1585 100644
--- a/resources/views/components/treeView/itemFile.blade.php
+++ b/resources/views/components/treeView/itemFile.blade.php
@@ -1,19 +1,22 @@
-@props(['node'])
+@aware(['node'])
-
+
+ @if (!in_array($node->extension, App\Services\VaultFiles\Note::extensions()))
+ {{ $node->extension }}
+ @endif
+
@@ -22,8 +25,10 @@
{{ __('Rename') }}
-
+
{{ __('Delete') }}
diff --git a/resources/views/components/treeView/itemFolder.blade.php b/resources/views/components/treeView/itemFolder.blade.php
index 6987843..2998626 100644
--- a/resources/views/components/treeView/itemFolder.blade.php
+++ b/resources/views/components/treeView/itemFolder.blade.php
@@ -1,18 +1,21 @@
-@props(['node'])
+@aware(['node'])
-
+
diff --git a/resources/views/components/treeView/items.blade.php b/resources/views/components/treeView/items.blade.php
index 74c50dd..2d75456 100644
--- a/resources/views/components/treeView/items.blade.php
+++ b/resources/views/components/treeView/items.blade.php
@@ -1,8 +1,9 @@
@props(['root'])
-
diff --git a/resources/views/components/vault/treeViewRow.blade.php b/resources/views/components/vault/treeViewRow.blade.php
index 1a692a2..e1a6b7a 100644
--- a/resources/views/components/vault/treeViewRow.blade.php
+++ b/resources/views/components/vault/treeViewRow.blade.php
@@ -1,13 +1,13 @@
@props(['node'])
-
+
@if (!$node->is_file)
-
+
@if (!empty($node->children) && $node->children->count())
@include('components.vault.treeViewNode', ['nodes' => $node->children, 'root' => false])
@endif
@else
-
+
@endif
diff --git a/resources/views/livewire/vault/show.blade.php b/resources/views/livewire/vault/show.blade.php
index 6b6786d..cc9bc90 100644
--- a/resources/views/livewire/vault/show.blade.php
+++ b/resources/views/livewire/vault/show.blade.php
@@ -46,7 +46,15 @@
:class="{ 'translate-x-0': isLeftPanelOpen, '-translate-x-full hidden': !isLeftPanelOpen }"
>