Skip to content

Commit

Permalink
added full page fields view to hasOne/hasMany relationships
Browse files Browse the repository at this point in the history
  • Loading branch information
lee-to committed Jul 8, 2022
1 parent 876d54d commit e1a54d1
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 3 deletions.
2 changes: 1 addition & 1 deletion resources/views/components/field-container.blade.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@if($field->isHidden())
{{ $slot }}
@else
<div {!! $field->showWhenState ? "x-show='".$field->showWhenField." == ".$field->showWhenValue ."'" : ''!!}
<div {!! $field->showWhenState ? "x-show='".$field->showWhenField." == `".$field->showWhenValue ."`'" : ''!!}
class="border-b border-whiteblue dark:border-dark px-10 py-5"
>
<div>
Expand Down
2 changes: 1 addition & 1 deletion resources/views/fields/has-many.blade.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@include('moonshine::fields.shared.table-fields', [
@include('moonshine::fields.shared.'.($field->isFullPage() ? 'full' : 'table').'-fields', [
'field' => $field,
'resource' => $resource,
'item' => $item,
Expand Down
2 changes: 1 addition & 1 deletion resources/views/fields/has-one.blade.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@include('moonshine::fields.shared.table-fields', [
@include('moonshine::fields.shared.'.($field->isFullPage() ? 'full' : 'table').'-fields', [
'field' => $field,
'resource' => $resource,
'item' => $item,
Expand Down
66 changes: 66 additions & 0 deletions resources/views/fields/shared/full-fields.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<div x-data="handler_{{ $field->id() }}()" x-init="handler_init_{{ $field->id() }}">
<template x-for="(item, index{{ $level }}) in items" :key="index{{ $level }}">
<div :data-id="item.id" class="full_fields_{{ $field->id() }}">
@if(!method_exists($field, 'isRelationToOne') || !$field->isRelationToOne())
<div class="font-bold text-purple my-4" x-text="index{{ $level }} + 1"></div>
@endif

@foreach($field->getFields() as $subField)
<x-moonshine::field-container :field="$subField" :item="$model" :resource="$resource">
{{ $resource->renderField($subField, $model, $level+1) }}
</x-moonshine::field-container>
@endforeach

@if(!method_exists($field, 'isRelationToOne') || !$field->isRelationToOne())
<div class="my-4">
@if($field->isRemovable())
<button @click="removeField(index{{ $level }})" type="button" class="text-pink hover:text-pink inline-block">
@include("moonshine::shared.icons.delete", ["size" => 6, "color" => "pink", "class" => "mr-2"])
</button>
@endif
</div>
@endif
</div>
</template>

@if(!method_exists($field, 'isRelationToOne') || !$field->isRelationToOne())
<div class="my-4">
<button type="button"
class="bg-gradient-to-r from-purple to-pink text-white
text-white font-semibold py-2 px-4 rounded"
@click="addNewField()"
>
Добавить
</button>
@else
<button x-show="items.length == 0" type="button"
class="bg-gradient-to-r from-purple to-pink text-white
text-white font-semibold py-2 px-4 rounded"
@click="addNewField()"
>
Создать
</button>
</div>
@endif
</div>

<script>
function handler_{{ $field->id() }}() {
return {
handler_init_{{ $field->id() }} () {
this.items = @json($field->jsonValues($item));
},
items: [],
addNewField() {
if(Array.isArray(this.items)) {
this.items.push(@json($field->jsonValues()));
} else {
this.items = [@json($field->jsonValues())];
}
},
removeField(index) {
this.items.splice(index, 1);
},
}
}
</script>
14 changes: 14 additions & 0 deletions src/Traits/Fields/WithFieldsTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,20 @@ trait WithFieldsTrait

protected array $fields = [];

protected bool $fullPage = false;

public function fullPage(): static
{
$this->fullPage = true;

return $this;
}

public function isFullPage(): bool
{
return $this->fullPage;
}

public function getFields(): array
{
return collect($this->fields)->map(function ($field) {
Expand Down

0 comments on commit e1a54d1

Please sign in to comment.