@php $pageTitle = $settings['overrideTitle'] ?? $settings['title']; @endphp @extends($settings['guard'].'.layouts.default') @section('page_title', $pageTitle . config('default.page_title_delimiter') . config('default.app_name')) @section('content')
{{-- Page Header --}} @if($settings['search'])
@foreach(request()->except(['search', 'page']) as $key => $value) @if(is_array($value)) @foreach($value as $subKey => $subValue) @endforeach @else @endif @endforeach
{{-- Autocomplete dropdown --}}
{{ trans('common.navigate') }} ↑ ↓ • {{ trans('common.select') }} ↵ • {{ trans('common.to_clear') }} ⌫
@endif @if (isset($settings['customLink']) && $settings['customLink']) @php $linkVariant = $settings['customLink']['variant'] ?? 'default'; @endphp @endif @if ($settings['insert']) @endif @if ($settings['export']) @php $exportBaseQuery = request()->except('page'); @endphp @endif
{{-- Table Card --}}
{{-- Help Content Accordion --}} @if(isset($settings['helpContent']) && $settings['helpContent']) @php $helpCookieName = 'help_dismissed_' . $dataDefinition->name; $helpDismissed = request()->cookie($helpCookieName); @endphp
{{-- Collapsed state --}}
{{-- Expanded state --}}
{{-- Icon --}} {{-- Content --}}

{{ $settings['helpContent']['title'] ?? trans('common.help_getting_started') }}

{!! $settings['helpContent']['content'] ?? '' !!}
@if(isset($settings['helpContent']['steps']) && is_array($settings['helpContent']['steps']))
@foreach($settings['helpContent']['steps'] as $index => $step)
{{ $index + 1 }}

{{ $step['title'] ?? '' }}

@if(isset($step['description']))

{{ $step['description'] }}

@endif
@endforeach
@endif @if(isset($settings['helpContent']['link'])) @endif
@endif {{-- Table --}}
@if ($settings['multiSelect']) @endif @if ($tableData['columns']) @foreach ($tableData['columns'] as $column) @if (!$column['hidden']) @endif @endforeach @endif @if ($settings['hasActions']) @endif @if ($tableData['data']->all() !== null) @foreach ($tableData['data']->all() as $i => $row) @php $rowClickUrl = null; if (! $settings['multiSelect']) { if ($settings['edit']) { $rowClickUrl = route($settings['guard'].'.data.edit', ['name' => $dataDefinition->name, 'id' => $row['id']]); } elseif ($settings['view']) { $rowClickUrl = route($settings['guard'].'.data.view', ['name' => $dataDefinition->name, 'id' => $row['id']]); } else { $searchValue = null; if ($settings['subject_column'] && isset($row[$settings['subject_column']])) { $searchValue = trim(strip_tags(html_entity_decode((string) $row[$settings['subject_column']]))); } $searchValue = $searchValue !== '' ? $searchValue : (string) $row['id']; $rowClickUrl = route($settings['guard'].'.data.list', ['name' => $dataDefinition->name]).'?'. http_build_query(array_merge(request()->except('page'), ['search' => $searchValue])); } } @endphp @if ($settings['multiSelect']) @endif @foreach ($tableData['columns'] as $column) @if (!$column['hidden']) @endif @endforeach @if ($settings['hasActions']) @endif @endforeach @endif @if($tableData['data']->total() == 0) @endif
@if ($column['filter'])
@else @if ($column['sortable']) @php $sortParams = request()->except('page'); $sortParams['order'] = $column['name']; $sortParams['orderDir'] = (request()->input('orderDir', null) == 'asc') ? 'desc' : 'asc'; @endphp {!! $column['text'] !!} @else {!! $column['text'] !!} @endif @endif
{{ trans('common.actions') }}
40) title="{{ parse_attr(strip_tags($row[$column['name']])) }}" @endif> @if (in_array($column['type'], ['boolean', 'impersonate', 'qr']))
@endif @if (in_array($column['type'], ['date_time'])) @endif @if (in_array($column['type'], ['belongsTo', 'belongsToMany']) && strlen($row[$column['name']]) > 40) {{-- Relation values are HTML-escaped in DataDefinition::processRelationColumn, so render raw to avoid double-encoding. --}} {!! $row[$column['name']] !!} @else {!! $row[$column['name']] !!} @endif @if (in_array($column['type'], ['boolean', 'impersonate', 'qr']))
@endif @if (in_array($column['type'], ['date_time'])) @endif
@if ($settings['view']) @endif @if ($settings['edit']) @endif @if ($settings['delete']) @endif
@if($settings['icon']) @else @endif

@if(request()->get('search')) {{ trans('common.no_search_results') }} @else {{ trans('common.no_items_yet', ['items' => $settings['title']]) }} @endif

@if(request()->get('search')) {{ trans('common.no_search_results_description', ['term' => request()->get('search')]) }} @elseif(isset($settings['emptyStateDescription']) && $settings['emptyStateDescription']) {{ $settings['emptyStateDescription'] }} @else {{ trans('common.no_items_yet_description') }} @endif

@if($settings['insert'] && !request()->get('search')) {{ trans('common.add_first_item') }} @elseif(request()->get('search')) {{ trans('common.clear_search') }} @endif
{{-- Footer --}} @if (($tableData['data']->total() > 0 && $settings['multiSelect']) || $tableData['data']->hasPages())
@if ($settings['multiSelect'])
@endif {{-- Per-page selector (only if there are more than 20 records) --}} @if($tableData['data']->total() > 20)
@endif
@if ($tableData['data']->hasPages())
{{ $tableData['data']->onEachSide(5)->links('pagination.custom') }}
@endif
@endif @if ($settings['delete']) @endif @if ($settings['multiSelect']) @endif
{{-- Custom JavaScript from DataDefinition settings --}} @php $customJs = null; if (!empty($settings['js'])) { if (is_string($settings['js'])) { // String = applies to all views $customJs = $settings['js']; } elseif (is_array($settings['js'])) { // Check for exact match or comma-separated keys containing 'list' foreach ($settings['js'] as $views => $code) { $viewList = array_map('trim', explode(',', $views)); if (in_array('list', $viewList) || in_array('all', $viewList)) { $customJs = $code; break; } } } } @endphp @if ($customJs) @endif @stop