122 lines
5.2 KiB
PHP
122 lines
5.2 KiB
PHP
{{--
|
|
Server-rendered cart contents. Rendered inline on first page load inside
|
|
checkout/drawer.blade.php, and re-fetched + swapped into the drawer by
|
|
bbk-cart-controller after every mutation. $cart / $lines come from the view
|
|
composer in CheckoutModuleServiceProvider.
|
|
|
|
The data-bbk-cart-* attributes on the root are the module's read API for the
|
|
host (e.g. the header bag-icon count) — bbk-cart-controller reads them after
|
|
each swap and re-emits them on the `bbk-cart:updated` window event.
|
|
--}}
|
|
@php($count = $lines->sum('quantity'))
|
|
|
|
{{-- @dump($lines) --}}
|
|
|
|
<div
|
|
class="bbk-cart-content"
|
|
data-bbk-cart-count="{{ $count }}"
|
|
data-bbk-cart-total="{{ $cart?->total?->value ?? 0 }}"
|
|
>
|
|
@if ($lines->isEmpty())
|
|
<p class="bbk-cart-empty">{{ __('checkout.cart.empty') }}</p>
|
|
@else
|
|
<ul class="bbk-cart-items">
|
|
@each('checkout::partials.cart-line', $lines, 'line')
|
|
</ul>
|
|
|
|
<div class="bbk-cart-summary">
|
|
<div class="bbk-cart-coupon">
|
|
@if ($cart?->coupon_code)
|
|
<div class="bbk-cart-coupon-applied">
|
|
<span class="bbk-cart-coupon-code">{{ $cart->coupon_code }}</span>
|
|
|
|
<form
|
|
method="POST"
|
|
action="{{ route('checkout.cart.coupon.remove', app()->getLocale()) }}"
|
|
data-action="submit->bbk-cart#submit"
|
|
>
|
|
@csrf
|
|
@method('DELETE')
|
|
<button type="submit" class="bbk-cart-coupon-remove">
|
|
{{ __('checkout.cart.coupon_remove') }}
|
|
</button>
|
|
</form>
|
|
</div>
|
|
@else
|
|
<form
|
|
class="bbk-cart-coupon-form"
|
|
method="POST"
|
|
action="{{ route('checkout.cart.coupon.apply', app()->getLocale()) }}"
|
|
data-action="submit->bbk-cart#submit"
|
|
>
|
|
@csrf
|
|
<label class="bbk-visually-hidden" for="bbk-coupon-code">
|
|
{{ __('checkout.cart.coupon_label') }}
|
|
</label>
|
|
<input
|
|
type="text"
|
|
name="code"
|
|
id="bbk-coupon-code"
|
|
class="bbk-cart-coupon-input"
|
|
placeholder="{{ __('checkout.cart.coupon_placeholder') }}"
|
|
autocomplete="off"
|
|
required
|
|
>
|
|
<button type="submit" class="bbk-cart-coupon-submit">
|
|
{{ __('checkout.cart.coupon_apply') }}
|
|
</button>
|
|
</form>
|
|
|
|
@if ($couponError ?? false)
|
|
<p class="bbk-cart-coupon-error" role="alert">{{ __('checkout.cart.coupon_invalid') }}</p>
|
|
@endif
|
|
@endif
|
|
</div>
|
|
|
|
<div class="bbk-cart-summary-row">
|
|
<span>{{ __('checkout.cart.subtotal') }}</span>
|
|
<span>{{ $cart?->subTotal?->formatted() }}</span>
|
|
</div>
|
|
|
|
@if ($cart?->discountTotal?->value > 0)
|
|
<div class="bbk-cart-summary-row bbk-cart-summary-row--discount">
|
|
<span>{{ __('checkout.cart.discount') }}</span>
|
|
<span>−{{ $cart->discountTotal->formatted() }}</span>
|
|
</div>
|
|
@endif
|
|
|
|
{{-- Shipping + tax appear once the shopper has a shipping address
|
|
(i.e. they're on the checkout page). In the drawer, where no
|
|
address is set yet, only subtotal + total show. --}}
|
|
@if ($cart?->shippingAddress)
|
|
<div class="bbk-cart-summary-row">
|
|
<span>{{ __('checkout.cart.shipping') }}</span>
|
|
@if ($cart->shippingAddress->shipping_option)
|
|
<span>{{ $cart->shippingTotal?->formatted() }}</span>
|
|
@else
|
|
<span class="bbk-cart-summary-pending">{{ __('checkout.cart.shipping_pending') }}</span>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
|
|
@if ($cart?->taxTotal?->value > 0)
|
|
<div class="bbk-cart-summary-row">
|
|
<span>{{ __('checkout.cart.tax') }}</span>
|
|
<span>{{ $cart->taxTotal->formatted() }}</span>
|
|
</div>
|
|
@endif
|
|
|
|
{{-- Always shown — equals subtotal with nothing else applied,
|
|
diverges as discount / shipping / tax come in. --}}
|
|
<div class="bbk-cart-summary-row bbk-cart-summary-row--total">
|
|
<span>{{ __('checkout.cart.total') }}</span>
|
|
<span>{{ $cart?->total?->formatted() }}</span>
|
|
</div>
|
|
|
|
<a class="bbk-cart-checkout" href="{{ route('checkout.show', app()->getLocale()) }}">
|
|
{{ __('checkout.cart.checkout') }}
|
|
</a>
|
|
</div>
|
|
@endif
|
|
</div>
|