{{-- REPEATABLE FIELD TYPE --}} @php $field['value'] = old_empty_or_null($field['name'], []) ?? $field['value'] ?? $field['default'] ?? []; // make sure the value is always an array, even if stored as JSON in database $field['value'] = is_string($field['value']) ? json_decode($field['value'], true) : $field['value']; if(!empty($field['value'])) { // when repeatable is used to create relations the value returned from those relations // would be collections, contrary to when saved as json in database and casted as array if (is_a($field['value'], \Illuminate\Support\Collection::class)) { $field['value'] = $field['value']->toArray(); } } $field['init_rows'] = $field['init_rows'] ?? $field['min_rows'] ?? 0; $field['max_rows'] = $field['max_rows'] ?? 0; $field['min_rows'] = $field['min_rows'] ?? 0; $field['subfields'] = $field['subfields'] ?? $field['fields'] ?? []; $field['reorder'] = $field['reorder'] ?? true; $field['wrapper']['class'] = isset($field['wrapper']['class']) ? $field['wrapper']['class'].' repeatable-group' : 'form-group col-sm-12 repeatable-group'; if($field['reorder'] !== false) { switch(gettype($field['reorder'])) { case 'string': { $field['subfields'] = Arr::prepend($field['subfields'], [ 'name' => $field['reorder'], 'type' => 'hidden', 'attributes' => [ 'data-reorder-input' => true ] ]); usort($field['value'], fn($a, $b) => $a[$field['reorder']] <=> $b[$field['reorder']]); } break; case 'array': { $field['subfields'] = Arr::prepend($field['subfields'], $field['reorder']); usort($field['value'], fn($a, $b) => $a[$field['reorder']['name']] <=> $b[$field['reorder']['name']]); } break; } } $subfieldNames = array_column(array_map(function($item) { $item['name'] = square_brackets_to_dots(implode(',', (array)$item['name'])); return $item; }, $field['subfields']), 'name'); @endphp @include('crud::fields.inc.wrapper_start') @include('crud::fields.inc.translatable_icon')
{!! $field['hint'] !!}
@endif @include('crud::fields.inc.wrapper_end') @push('crud_fields_scripts') @include($crud->getFirstFieldView('inc.repeatable_row'), ['hidden' => true]) @endpush {{-- FIELD EXTRA CSS --}} {{-- push things in the after_styles section --}} @push('crud_fields_styles') @loadOnce('repeatableFieldStyle') @endLoadOnce @endpush {{-- FIELD EXTRA JS --}} {{-- push things in the after_scripts section --}} @push('crud_fields_scripts') @loadOnce('bpFieldInitRepeatableElement') @endLoadOnce @endpush