@props([ 'as' => 'modal', // 'modal' | 'trigger' // Shared 'modalId' => 'viewDetailsModal', // Modal only /** When false, no dimmed overlay; page behind stays clickable (Bootstrap data-backdrop="false"). */ 'backdrop' => true, 'entityLabel' => 'Details', 'historyTarget' => '#versionHistoryModal', 'form' => null, /** Permission form slug for gating Edit/Delete/History (e.g. 'user', 'permission', 'item', 'plans'). Edit/Delete use 'edit'|'delete'; History uses 'view_history_modal'. */ 'formKey' => null, // Trigger only 'detailsUrl' => '', 'entityId' => '', 'entityName' => '', 'editUrl' => '', 'deleteUrl' => '', ]) @if($as === 'trigger') {{-- Clickable trigger (use in table rows): opens modal and loads content via JS. --}} merge(['class' => 'details-modal-trigger text-primary font-weight-medium'])->merge(['style' => 'text-decoration: none; cursor: pointer;']) }} data-modal-id="{{ $modalId }}" data-details-url="{{ $detailsUrl }}" data-entity-id="{{ $entityId }}" data-entity-name="{{ display_attr($entityName) }}" data-edit-url="{{ $editUrl }}" data-delete-url="{{ $deleteUrl }}"> @if($slot->isEmpty()) {{ display_text($entityName) }} @else {{ $slot }} @endif @else @php $useModernDetailsShell = ! in_array($modalId, ['projectDetailsModal', 'pcFormDetailsModal'], true); @endphp @if ($useModernDetailsShell) @once @push('stylesheets') @endpush @push('scripts') @endpush @endonce @endif {{-- Full modal: view details (body loaded via AJAX) + footer with Edit, Delete, History, Close. --}}
@endif