2026-09-09 13:51:00 +03:00
|
|
|
{{--
|
|
|
|
|
Shipping methods for the checkout page. Rendered inline by page.blade.php on
|
|
|
|
|
load, and re-rendered as a fragment by CheckoutController after every
|
|
|
|
|
address save / option change (bbk-checkout-form swaps it in). Radios
|
|
|
|
|
autosave via bbk-checkout-form#selectShipping — no submit button. A single
|
|
|
|
|
resolved option is auto-selected server-side and shown as a fixed line.
|
|
|
|
|
|
|
|
|
|
$shippingAddress, $shippingOptions come from the controller / page scope.
|
|
|
|
|
--}}
|
|
|
|
|
@php($selected = $shippingAddress?->shipping_option)
|
|
|
|
|
|
|
|
|
|
{{-- Rate resolution needs country (always Greece here) + postcode; until a
|
|
|
|
|
postcode is saved there's nothing to quote against yet. --}}
|
|
|
|
|
@if (! $shippingAddress?->postcode)
|
|
|
|
|
<p class="bbk-checkout-note">{{ __('checkout.page.shipping_method_empty') }}</p>
|
|
|
|
|
@elseif ($shippingOptions->isEmpty())
|
|
|
|
|
<p class="bbk-checkout-note">{{ __('checkout.page.shipping_method_none') }}</p>
|
|
|
|
|
@elseif ($shippingOptions->count() === 1)
|
|
|
|
|
@php($only = $shippingOptions->first())
|
|
|
|
|
<div class="bbk-checkout-shipping-confirmed">
|
|
|
|
|
<span class="bbk-checkout-shipping-option-detail">
|
|
|
|
|
<span class="bbk-checkout-shipping-option-name">{{ $only->name }}</span>
|
|
|
|
|
@if ($only->description)
|
|
|
|
|
<span class="bbk-checkout-shipping-option-description">{{ strip_tags($only->description) }}</span>
|
|
|
|
|
@endif
|
|
|
|
|
</span>
|
|
|
|
|
<span class="bbk-checkout-shipping-option-price">{{ $only->price->formatted() }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
@else
|
|
|
|
|
<div class="bbk-checkout-shipping-options">
|
|
|
|
|
@foreach ($shippingOptions as $option)
|
|
|
|
|
<label class="bbk-checkout-shipping-option">
|
|
|
|
|
<input
|
|
|
|
|
type="radio"
|
|
|
|
|
name="shipping_option"
|
|
|
|
|
value="{{ $option->identifier }}"
|
|
|
|
|
@checked($selected === $option->identifier)
|
|
|
|
|
data-action="change->bbk-checkout-form#selectShipping"
|
|
|
|
|
>
|
|
|
|
|
<span class="bbk-checkout-shipping-option-detail">
|
|
|
|
|
<span class="bbk-checkout-shipping-option-name">{{ $option->name }}</span>
|
|
|
|
|
@if ($option->description)
|
|
|
|
|
<span class="bbk-checkout-shipping-option-description">{{ strip_tags($option->description) }}</span>
|
|
|
|
|
@endif
|
|
|
|
|
</span>
|
|
|
|
|
<span class="bbk-checkout-shipping-option-price">{{ $option->price->formatted() }}</span>
|
|
|
|
|
</label>
|
|
|
|
|
@endforeach
|
|
|
|
|
</div>
|
|
|
|
|
@endif
|
2026-09-17 19:55:39 +03:00
|
|
|
|
|
|
|
|
{{--
|
|
|
|
|
Dummy Box Now locker picker — a Leaflet map standing in for Box Now's own
|
|
|
|
|
Destination Map JS widget, which only talks to their Production API (not
|
|
|
|
|
Stage/sandbox — see their Partner API manual §4.1), making it useless
|
|
|
|
|
for local/staging development. Backed by the same GET /destinations data
|
|
|
|
|
(including lat/lng) via CheckoutController::boxNowLockers(). Only shown
|
|
|
|
|
once the "box-now" shipping option is selected (bbk-checkout-form
|
|
|
|
|
toggles [hidden] on shipping-option change; see bbk-box-now-locker
|
|
|
|
|
Stimulus controller). Persists the choice via a separate autosave POST
|
|
|
|
|
(checkout.box-now.locker.select) rather than piggybacking on the
|
|
|
|
|
shipping-option field, since the two are independent pieces of state
|
|
|
|
|
(method vs. destination) that CheckoutService models as two calls
|
|
|
|
|
(selectShippingOption() / selectBoxNowLocker()).
|
|
|
|
|
--}}
|
|
|
|
|
<div
|
|
|
|
|
id="bbk-box-now-locker"
|
|
|
|
|
class="bbk-checkout-box-now-locker"
|
|
|
|
|
data-controller="bbk-box-now-locker"
|
|
|
|
|
data-bbk-box-now-locker-lockers-url-value="{{ route('checkout.box-now.lockers', app()->getLocale()) }}"
|
|
|
|
|
data-bbk-box-now-locker-select-url-value="{{ route('checkout.box-now.locker.select', app()->getLocale()) }}"
|
|
|
|
|
data-bbk-box-now-locker-loading-value="{{ __('checkout.page.box_now_locker_loading') }}"
|
|
|
|
|
data-bbk-box-now-locker-select-label-value="{{ __('checkout.page.box_now_locker_select') }}"
|
|
|
|
|
data-bbk-box-now-locker-selected-label-value="{{ __('checkout.page.box_now_locker_selected') }}"
|
|
|
|
|
data-bbk-box-now-locker-no-results-value="{{ __('checkout.page.box_now_locker_no_results') }}"
|
|
|
|
|
@if ($selected !== 'box-now') hidden @endif
|
|
|
|
|
>
|
|
|
|
|
<p class="bbk-checkout-box-now-locker-label">
|
|
|
|
|
{{ __('checkout.page.box_now_locker_label') }}
|
|
|
|
|
</p>
|
|
|
|
|
<input
|
|
|
|
|
type="search"
|
|
|
|
|
class="bbk-checkout-box-now-locker-search"
|
|
|
|
|
placeholder="{{ __('checkout.page.box_now_locker_search') }}"
|
|
|
|
|
data-bbk-box-now-locker-target="search"
|
|
|
|
|
data-action="input->bbk-box-now-locker#search"
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
id="bbk-box-now-locker-map"
|
|
|
|
|
class="bbk-checkout-box-now-locker-map"
|
|
|
|
|
data-bbk-box-now-locker-target="map"
|
|
|
|
|
></div>
|
|
|
|
|
<p
|
|
|
|
|
class="bbk-checkout-box-now-locker-chosen"
|
|
|
|
|
data-bbk-box-now-locker-target="chosen"
|
|
|
|
|
hidden
|
|
|
|
|
></p>
|
|
|
|
|
<p
|
|
|
|
|
class="bbk-checkout-status"
|
|
|
|
|
data-bbk-box-now-locker-target="status"
|
|
|
|
|
role="status"
|
|
|
|
|
aria-live="polite"
|
|
|
|
|
hidden
|
|
|
|
|
></p>
|
|
|
|
|
</div>
|