++ fix e controlli

This commit is contained in:
2026-07-30 17:05:39 +02:00
parent 712336d652
commit 440d63a6b9
54 changed files with 4921 additions and 1322 deletions

View File

@@ -3,16 +3,15 @@
<h1 class="text-2xl font-bold text-gray-900">Registro Assegnazioni</h1>
@can('settings.manage')
<div class="flex flex-wrap items-center gap-2">
<button wire:click="openS13"
class="btn-action btn-action-green" style="padding:8px 18px;font-size:14px;border-radius:8px"
title="Scarica il modulo S-13 compilato con le ultime 4 assegnazioni di un anno di servizio">
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3M3 17V7a2 2 0 012-2h5l2 2h7a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z"/></svg>
Modulo S-13
</button>
<button wire:click="openCreate" class="btn-action btn-action-indigo" style="padding:8px 18px;font-size:14px;border-radius:8px">
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"/></svg>
<x-btn variante="primary" wire:click="openCreate">
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"/></svg>
Nuova voce
</button>
</x-btn>
<x-btn variante="secondary" wire:click="openS13"
title="Scarica il modulo S-13 compilato con le ultime 4 assegnazioni di un anno di servizio">
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3M3 17V7a2 2 0 012-2h5l2 2h7a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z"/></svg>
Modulo S-13
</x-btn>
</div>
@endcan
</div>
@@ -110,21 +109,22 @@
<td class="px-3 py-2 whitespace-nowrap cell-actions">
<div class="flex items-center gap-1 flex-wrap">
@if($temporaryPdfUrl)
<a href="{{ $temporaryPdfUrl }}"
target="_blank"
rel="noopener noreferrer"
class="btn-action btn-action-indigo" title="PDF">
<svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"/></svg>
</a>
<x-btn variante="secondary" tono="tenue" dimensione="sm" icona
:href="$temporaryPdfUrl" target="_blank" rel="noopener noreferrer"
title="PDF" aria-label="Apri il PDF dell assegnazione">
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"/></svg>
</x-btn>
@endif
<button wire:click="openEdit({{ $a->id }})"
class="btn-action btn-action-gray" title="Modifica">
<svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"/></svg>
</button>
<button wire:click="askDelete({{ $a->id }})"
class="btn-action btn-action-red" title="Elimina">
<svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/></svg>
</button>
<x-btn variante="secondary" tono="tenue" dimensione="sm" icona
wire:click="openEdit({{ $a->id }})"
title="Modifica" aria-label="Modifica l assegnazione">
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"/></svg>
</x-btn>
<x-btn variante="danger" tono="tenue" dimensione="sm" icona
wire:click="askDelete({{ $a->id }})"
title="Elimina" aria-label="Elimina l assegnazione">
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/></svg>
</x-btn>
</div>
</td>
@endcan
@@ -162,18 +162,14 @@
</select>
@error('s13Anno') <span style="color:#dc2626;font-size:12px;">{{ $message }}</span> @enderror
<div style="display:flex;justify-content:flex-end;gap:10px;margin-top:20px;">
<button wire:click="$set('showS13Modal', false)"
style="background:#f3f4f6;color:#374151;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
Annulla
</button>
<button wire:click="downloadS13"
wire:loading.attr="disabled"
wire:target="downloadS13"
style="background:#16a34a;color:#fff;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
{{-- Azione principale prima, uscita dopo: stesso ordine dei form
e delle altre modali dell'applicazione. --}}
<div class="flex flex-wrap justify-end gap-2" style="margin-top:20px;">
<x-btn variante="primary" wire:click="downloadS13" wire:loading.attr="disabled" wire:target="downloadS13">
<span wire:loading.remove wire:target="downloadS13">Scarica PDF</span>
<span wire:loading wire:target="downloadS13">Generazione…</span>
</button>
</x-btn>
<x-btn variante="ghost" wire:click="$set('showS13Modal', false)">Annulla</x-btn>
</div>
</div>
</div>
@@ -265,15 +261,9 @@
</div>
</div>
<div style="display:flex;justify-content:flex-end;gap:10px;margin-top:20px;">
<button wire:click="$set('showModal', false)"
style="background:#f3f4f6;color:#374151;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
Annulla
</button>
<button wire:click="save"
style="background:#4f46e5;color:#fff;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
{{ $editingId ? 'Salva modifiche' : 'Crea voce' }}
</button>
<div class="flex flex-wrap justify-end gap-2" style="margin-top:20px;">
<x-btn variante="primary" wire:click="save">{{ $editingId ? 'Salva modifiche' : 'Crea voce' }}</x-btn>
<x-btn variante="ghost" wire:click="$set('showModal', false)">Annulla</x-btn>
</div>
</div>
</div>
@@ -285,15 +275,9 @@
<div style="background:#fff;border-radius:12px;width:100%;max-width:360px;padding:24px;">
<h2 style="font-size:17px;font-weight:700;color:#111827;margin-bottom:10px;">Elimina voce</h2>
<p style="font-size:14px;color:#6b7280;margin-bottom:20px;">Sei sicuro di voler eliminare questa assegnazione? L'operazione non può essere annullata.</p>
<div style="display:flex;justify-content:flex-end;gap:10px;">
<button wire:click="$set('showDeleteConfirm', false)"
style="background:#f3f4f6;color:#374151;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
Annulla
</button>
<button wire:click="deleteConfirmed"
style="background:#dc2626;color:#fff;border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;">
Elimina
</button>
<div class="flex flex-wrap justify-end gap-2">
<x-btn variante="danger" wire:click="deleteConfirmed">Elimina</x-btn>
<x-btn variante="ghost" wire:click="$set('showDeleteConfirm', false)">Annulla</x-btn>
</div>
</div>
</div>