fix: improve cloud-init scripts UI styling and behavior

Fix multiple UI/UX issues with cloud-init scripts management:

1. Fix card styling - Remove purple box background, use simple border
   - Changed from .box class to inline flex/border styling
   - Matches cloud provider tokens styling pattern

2. Remove script preview section
   - Preview was taking too much space and looked cluttered
   - Users can edit to see full script content

3. Make edit modal full width
   - Added fullWidth attribute to x-modal-input component
   - Provides better editing experience for long scripts

4. Fix fields clearing after update
   - Fields were being reset even in edit mode
   - Now only reset fields when creating new script
   - Edit mode preserves values after save

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai 2025-10-11 13:30:44 +02:00
parent 5463f4d496
commit 6c5adce633
2 changed files with 30 additions and 33 deletions

View file

@ -78,7 +78,11 @@ public function save()
$message = 'Cloud-init script created successfully.'; $message = 'Cloud-init script created successfully.';
} }
$this->reset(['name', 'script', 'scriptId']); // Only reset fields if creating (not editing)
if (! $this->scriptId) {
$this->reset(['name', 'script']);
}
$this->dispatch('scriptSaved'); $this->dispatch('scriptSaved');
$this->dispatch('success', $message); $this->dispatch('success', $message);

View file

@ -12,26 +12,20 @@
<div class="grid gap-4 lg:grid-cols-2"> <div class="grid gap-4 lg:grid-cols-2">
@forelse ($scripts as $script) @forelse ($scripts as $script)
<div wire:key="script-{{ $script->id }}" class="box group"> <div wire:key="script-{{ $script->id }}"
<div class="flex flex-col gap-2 mx-6"> class="flex flex-col gap-1 p-2 border dark:border-coolgray-200 hover:no-underline">
<div class="flex justify-between items-start"> <div class="flex justify-between items-center">
<div class="flex-1"> <div class="flex-1">
<div class="box-title">{{ $script->name }}</div> <div class="font-bold dark:text-white">{{ $script->name }}</div>
<div class="text-xs text-neutral-500 dark:text-neutral-400"> <div class="text-xs text-neutral-500 dark:text-neutral-400">
Created {{ $script->created_at->diffForHumans() }} Created {{ $script->created_at->diffForHumans() }}
</div> </div>
</div> </div>
</div> </div>
<div class="mt-2">
<div class="text-xs text-neutral-500 dark:text-neutral-400 mb-1">Script Preview:</div>
<pre
class="p-2 text-xs rounded bg-neutral-100 dark:bg-coolgray-100 overflow-x-auto max-h-32 overflow-y-auto">{{ Str::limit($script->script, 200) }}</pre>
</div>
<div class="flex gap-2 mt-2"> <div class="flex gap-2 mt-2">
@can('update', $script) @can('update', $script)
<x-modal-input buttonTitle="Edit" title="Edit Cloud-Init Script"> <x-modal-input buttonTitle="Edit" title="Edit Cloud-Init Script" fullWidth>
<livewire:security.cloud-init-script-form :scriptId="$script->id" <livewire:security.cloud-init-script-form :scriptId="$script->id"
wire:key="edit-{{ $script->id }}" /> wire:key="edit-{{ $script->id }}" />
</x-modal-input> </x-modal-input>
@ -49,7 +43,6 @@ class="p-2 text-xs rounded bg-neutral-100 dark:bg-coolgray-100 overflow-x-auto m
@endcan @endcan
</div> </div>
</div> </div>
</div>
@empty @empty
<div class="text-neutral-500">No cloud-init scripts found. Create one to get started.</div> <div class="text-neutral-500">No cloud-init scripts found. Create one to get started.</div>
@endforelse @endforelse