From 9c6eeeb4260f9e477d71adebe8633f23400ad8be Mon Sep 17 00:00:00 2001 From: Stephen Adamson Date: Sat, 6 Jun 2026 15:18:37 +0100 Subject: [PATCH] Fixes --- .../admin/BookingCreateModal.svelte | 15 +++++-- .../components/admin/WalkInCreateModal.svelte | 17 ++++--- frontend/src/routes/account/+page.svelte | 44 +++---------------- 3 files changed, 30 insertions(+), 46 deletions(-) diff --git a/frontend/src/lib/components/admin/BookingCreateModal.svelte b/frontend/src/lib/components/admin/BookingCreateModal.svelte index d4d88ce..c978d31 100644 --- a/frontend/src/lib/components/admin/BookingCreateModal.svelte +++ b/frontend/src/lib/components/admin/BookingCreateModal.svelte @@ -942,12 +942,19 @@ { guestPhone = e.currentTarget.value; }} - onblur={() => { if (guestPhone && !isValidUKPhone(guestPhone)) guestPhoneError = 'Invalid UK phone number'; else guestPhoneError = ''; }} - class={guestPhoneError ? 'border-red-500' : ''} + oninput={(e) => { + guestPhone = e.currentTarget.value; + }} + onblur={() => { + if (guestPhone && !isValidUKPhone(guestPhone)) + guestPhoneError = 'Invalid UK phone number'; + else guestPhoneError = ''; + }} /> {#if guestPhoneError}

{guestPhoneError}

diff --git a/frontend/src/lib/components/admin/WalkInCreateModal.svelte b/frontend/src/lib/components/admin/WalkInCreateModal.svelte index c50bbc2..f5661cb 100644 --- a/frontend/src/lib/components/admin/WalkInCreateModal.svelte +++ b/frontend/src/lib/components/admin/WalkInCreateModal.svelte @@ -625,12 +625,19 @@ { guestPhone = e.currentTarget.value; }} - onblur={() => { guestPhoneError = guestPhone && !isValidUKPhone(guestPhone) ? 'Invalid UK phone number' : ''; }} - class={guestPhoneError ? 'border-red-500' : ''} + oninput={(e) => { + guestPhone = e.currentTarget.value; + }} + onblur={() => { + if (guestPhone && !isValidUKPhone(guestPhone)) + guestPhoneError = 'Invalid UK phone number'; + else guestPhoneError = ''; + }} /> {#if guestPhoneError}

{guestPhoneError}

diff --git a/frontend/src/routes/account/+page.svelte b/frontend/src/routes/account/+page.svelte index 8a933a3..e7c48b1 100644 --- a/frontend/src/routes/account/+page.svelte +++ b/frontend/src/routes/account/+page.svelte @@ -6,7 +6,7 @@ import { toast } from 'svelte-sonner'; import UserBookingModal from '$lib/components/account/UserBookingModal.svelte'; import { isValidUKPhone, formatPhoneDisplay, toE164UK } from '$lib/utils/phone'; - import { savedCardsStore } from '$lib/stores/savedCards.svelte'; + import { savedCardsStore, type SavedCard } from '$lib/stores/savedCards.svelte'; // zxcvbn-ts imports import { zxcvbn, zxcvbnOptions } from '@zxcvbn-ts/core'; @@ -120,38 +120,8 @@ let notifPrefs = $state({ emailEnabled: true, smsEnabled: true, browserPushEnabled: true }); - type SavedCard = { - id: string; - brand: string; - last_4: string; - exp_month: number; - exp_year: number; - is_default: boolean; - }; - - let savedCards = $state([]); let loadingCards = $state(false); - async function fetchSavedCards() { - loadingCards = true; - try { - const res = await fetch('/api/user/payment-methods', { - headers: { Authorization: `Bearer ${authStore.currentToken}` } - }); - if (res.ok) { - savedCards = await res.json(); - if (savedCards.length > 0 && !buySelectedCard) { - const defaultCard = savedCards.find((c) => c.is_default) || savedCards[0]; - buySelectedCard = defaultCard.id; - } - } - } catch { - toast.error('Failed to load saved cards'); - } finally { - loadingCards = false; - } - } - let cardToDelete = $state(null); let showDeleteCardDialog = $state(false); @@ -163,7 +133,7 @@ }); if (res.ok) { toast.success('Card removed'); - savedCards = savedCards.filter((c) => c.id !== card.id); + savedCardsStore = savedCardsStore.filter((c) => c.id !== card.id); } else { toast.error('Failed to remove card'); } @@ -444,7 +414,7 @@ } $effect(() => { - if (savedCards.length === 0 && buySelectedCard !== '') { + if (savedCardsStore.length === 0 && buySelectedCard !== '') { buySelectedCard = ''; } }); @@ -1834,14 +1804,14 @@ - {:else if savedCards.length === 0} + {:else if savedCardsStore.length === 0}

No saved cards yet

{:else}
- {#each savedCards as card (card.id)} + {#each savedCardsStore as card (card.id)}
Payment Method - {#if savedCards.length > 0} + {#if savedCardsStore.length > 0}
- {#each savedCards as card (card.id)} + {#each savedCardsStore as card (card.id)}