Fixes for giftcards and phone input

This commit is contained in:
2026-06-06 15:10:48 +01:00
parent 5258f90b06
commit 4e174a6123
6 changed files with 986 additions and 768 deletions
@@ -3,6 +3,7 @@
import { toast } from 'svelte-sonner';
import { SvelteDate } from 'svelte/reactivity';
import { CalendarDate, getLocalTimeZone, type DateValue } from '@internationalized/date';
import { isValidUKPhone, toE164UK } from '$lib/utils/phone';
// UI Components
import * as Modal from '$lib/components/ui/dialog';
@@ -57,6 +58,7 @@
let selectedUserId = $state<string | null>(null);
let guestName = $state('');
let guestPhone = $state('');
let guestPhoneError = $state('');
let loadingUsers = $state(false);
// Step 2: Services
@@ -659,7 +661,11 @@
let finalUserId = selectedUserId;
if (userType === 'guest') {
const phone = guestPhone.trim() || '+447700900000';
if (!isValidUKPhone(guestPhone)) {
toast.error('Please enter a valid UK phone number for the guest');
return;
}
const phone = toE164UK(guestPhone)!;
const createRes = await fetch('/api/users/guest', {
method: 'POST',
headers: {
@@ -939,8 +945,13 @@
class="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none"
placeholder="07700 900000"
value={guestPhone}
oninput={(e) => (guestPhone = e.currentTarget.value)}
oninput={(e) => { guestPhone = e.currentTarget.value; }}
onblur={() => { if (guestPhone && !isValidUKPhone(guestPhone)) guestPhoneError = 'Invalid UK phone number'; else guestPhoneError = ''; }}
class={guestPhoneError ? 'border-red-500' : ''}
/>
{#if guestPhoneError}
<p class="mt-1 text-xs text-red-600">{guestPhoneError}</p>
{/if}
</div>
<p class="rounded-lg bg-yellow-50 p-3 text-sm text-yellow-800">
Booking as a guest creates a temporary record. Encourage them to sign up for