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']) + +
  • {{ $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']) -
      +> {{ $slot }}
    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 }" >
    -

    {{ $vault->name }}

    +

    + + {{ $vault->name }} + +