fix: display only delivery types that have a price and auto-select first

This commit is contained in:
Valentin Lab
2025-10-05 10:08:02 +02:00
parent bd63a92604
commit e080d98e81
2 changed files with 29 additions and 3 deletions

View File

@@ -15,9 +15,15 @@ class DeliveryTypes
$types = self::getAll(); $types = self::getAll();
foreach ($types as $type) { foreach ($types as $type) {
$price = self::getPrice($type->id, $weight);
if ($price === false) {
continue;
}
$data[$type->id] = [ $data[$type->id] = [
'name' => $type->name, 'name' => $type->name,
'price' => self::getPrice($type->id, $weight), 'price' => $price,
]; ];
} }

View File

@@ -7,7 +7,18 @@
</th> </th>
</tr> </tr>
</thead> </thead>
@foreach ($delivery_types as $delivery_type_id => $delivery_type) @php
$deliveryTypes = collect($delivery_types);
$preselectedDeliveryTypeId = old('delivery_type_id');
if ($preselectedDeliveryTypeId === null || $preselectedDeliveryTypeId === '') {
$preselectedDeliveryTypeId = $deliveryTypes->keys()->first();
}
$deliveryTypes = $deliveryTypes->all();
@endphp
@foreach ($deliveryTypes as $delivery_type_id => $delivery_type)
<tr> <tr>
<td> <td>
@include('components.form.radios.icheck', [ @include('components.form.radios.icheck', [
@@ -15,6 +26,7 @@
'val' => $delivery_type_id, 'val' => $delivery_type_id,
'id' => 'delivery_type_' . $delivery_type_id, 'id' => 'delivery_type_' . $delivery_type_id,
'class' => 'delivery_type', 'class' => 'delivery_type',
'value' => $preselectedDeliveryTypeId,
]) ])
</td> </td>
<td> <td>
@@ -31,11 +43,19 @@
@push('js') @push('js')
<script> <script>
function handleDeliveryTypes() { function handleDeliveryTypes() {
$('input.delivery_type').change(function() { var $deliveryTypeInputs = $('input.delivery_type');
$deliveryTypeInputs.change(function() {
var deliveryTypeId = $(this).val(); var deliveryTypeId = $(this).val();
var deliveryId = $('input[name=delivery_id]:checked').val() var deliveryId = $('input[name=delivery_id]:checked').val()
refreshBasketTotal(deliveryId, deliveryTypeId); refreshBasketTotal(deliveryId, deliveryTypeId);
}); });
var $preselected = $deliveryTypeInputs.filter(':checked').first();
if ($preselected.length) {
$preselected.trigger('change');
}
} }
handleDeliveryTypes(); handleDeliveryTypes();
</script> </script>