fix: make the address appear when added

This commit is contained in:
Valentin Lab
2025-10-04 11:30:24 +02:00
parent 9185269874
commit 7217d945a3
4 changed files with 155 additions and 26 deletions

View File

@@ -0,0 +1,23 @@
<div class="row mt-3 address-row" data-address-id="{{ $address['id'] }}">
<div class="col-1">
@php
$inputName = isset($prefix) && $prefix ? $prefix.'[address_id]' : 'address_id';
@endphp
<x-form.radios.icheck name="{{ $inputName }}" val="{{ $address['id'] }}" id="address_{{ $address['id'] }}" />
</div>
<div class="col-10">
@if ($with_name ?? false)
{{ $address['name'] ?? '' }}<br />
@endif
{{ $address['address'] }}<br />
@if (! empty($address['address2']))
{{ $address['address2'] }}<br />
@endif
{{ $address['zipcode'] }} {{ $address['city'] }}
</div>
<div class="col-1 text-right">
<a class="text-danger" href="{{ route('Shop.Customers.delete_address', ['id' => $address['id']]) }}">
<i class="fa fa-trash" data-id="{{ $address['id'] }}"></i>
</a>
</div>
</div>

View File

@@ -1,26 +1,12 @@
@foreach ($addresses ?? [] as $address)
<div class="row mt-3">
<div class="col-1">
<x-form.radios.icheck name="@if ($prefix ?? false) {{ $prefix }} . '[]' @endif address_id"
val="{{ $address['id'] }}" id="address_{{ $address['id'] }}" />
</div>
<div class="col-10">
@if ($with_name ?? false)
{{ $address['name'] }}<br />
@endif
{{ $address['address'] }}<br />
@if ($address['address2'])
{{ $address['address2'] }}<br />
@endif
{{ $address['zipcode'] }} {{ $address['city'] }}
</div>
<div class="col-1">
<a href="{{ route('Shop.Customers.delete_address', ['id' => $address['id']]) }}">
<i class="fa fa-trash" class="delete" data-id="{{ $address['id'] }}"></i>
</a>
</div>
</div>
@endforeach
<div id="addresses_list_{{ $prefix }}" class="addresses-list">
@foreach ($addresses ?? [] as $address)
@include('Shop.Customers.partials.address_item', [
'address' => $address,
'prefix' => $prefix ?? null,
'with_name' => $with_name ?? false,
])
@endforeach
</div>
<div id="add_address_container_{{ $prefix }}" class="green-dark d-none mb-3 mt-3">
<x-card classBody="bg-green-dark yellow" title="Nouvelle adresse" classTitle="h4">
@@ -31,6 +17,18 @@
'label' => 'Adresse',
'customer' => [],
])
<div class="row mt-3">
<div class="col-md-6 mb-2">
<x-form.button id="save_address_{{ $prefix }}" class="btn-success btn-sm btn-block"
icon="fa-save" txt="Enregistrer cette adresse"
:metadata="'data-prefix='.$prefix" />
</div>
<div class="col-md-6 mb-2">
<x-form.button id="cancel_address_{{ $prefix }}" class="btn-outline-light btn-sm btn-block"
icon="fa-times" txt="Annuler"
:metadata="'data-prefix='.$prefix" />
</div>
</div>
</x-card>
</div>
@@ -43,8 +41,55 @@
@push('js')
<script>
$('#add_address_{{ $prefix }}').click(function() {
$('#add_address_container_{{ $prefix }}').toggleClass('d-none');
})
(function() {
var prefix = '{{ $prefix }}';
var $formContainer = $('#add_address_container_{{ $prefix }}');
var $list = $('#addresses_list_{{ $prefix }}');
var storeUrl = '{{ route('Shop.Customers.address.store') }}';
$('#add_address_{{ $prefix }}').on('click', function() {
$formContainer.toggleClass('d-none');
});
$('#cancel_address_{{ $prefix }}').on('click', function() {
$formContainer.addClass('d-none');
$formContainer.find('input[type="text"]').val('');
});
$('#save_address_{{ $prefix }}').on('click', function() {
const data = $formContainer.find(':input').serialize();
$.ajax({
url: storeUrl,
method: 'POST',
data: data + '&prefix=' + prefix,
success: function(response) {
if (response.html) {
$list.append(response.html);
}
$formContainer.addClass('d-none');
$formContainer.find('input[type="text"]').val('');
if (response.id) {
$list.find('#address_' + response.id).prop('checked', true);
}
if (typeof initIcheck === 'function') {
initIcheck('#addresses_list_{{ $prefix }} input[type="radio"]');
}
const message = response.message || '{{ __('Adresse enregistrée.') }}';
if (typeof growl === 'function') {
growl(message, 'success');
}
},
error: function(xhr) {
let message = '{{ __('Une erreur est survenue lors de l\'enregistrement de l\'adresse.') }}';
if (xhr.responseJSON && xhr.responseJSON.message) {
message = xhr.responseJSON.message;
}
if (typeof growl === 'function') {
growl(message, 'error');
}
}
});
});
})();
</script>
@endpush