From 687a5b66c0b3e5a0b031579e23fe4f1c9fc775b6 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 7 Apr 2025 17:54:07 +0300 Subject: [PATCH] fix step components rendering --- .../orders/components/contacts-grid.tsx | 4 +- .../orders/components/datetime-select.tsx | 8 +--- .../orders/components/service-select.tsx | 3 -- apps/web/components/orders/order-form.tsx | 41 +++++++++++++------ 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/apps/web/components/orders/components/contacts-grid.tsx b/apps/web/components/orders/components/contacts-grid.tsx index ed2b800..1db5425 100644 --- a/apps/web/components/orders/components/contacts-grid.tsx +++ b/apps/web/components/orders/components/contacts-grid.tsx @@ -10,11 +10,9 @@ import Image from 'next/image'; import { use } from 'react'; export function ContactsGrid() { - const { customerId: selected, setCustomerId: setSelected, step } = use(OrderContext); + const { customerId: selected, setCustomerId: setSelected } = use(OrderContext); const { contacts, isLoading } = useCustomerContacts(); - if (step !== 'customer-select') return null; - if (isLoading) return ; function handleOnSelect(contactId: string) { diff --git a/apps/web/components/orders/components/datetime-select.tsx b/apps/web/components/orders/components/datetime-select.tsx index ebcacc8..ac7a18f 100644 --- a/apps/web/components/orders/components/datetime-select.tsx +++ b/apps/web/components/orders/components/datetime-select.tsx @@ -11,9 +11,7 @@ type TimeSlotsProps = { startTime?: string; }; export function DateSelect() { - const { date: selectedDate, setDate, step } = use(OrderContext); - - if (step !== 'datetime-select') return null; + const { date: selectedDate, setDate } = use(OrderContext); return ( ) { - const { step } = use(OrderContext); - - if (step !== 'datetime-select') return null; - const timeSlots = generateTimeSlots(startTime, endTime, interval); const morning = timeSlots.filter((time) => time.hour() < 12); diff --git a/apps/web/components/orders/components/service-select.tsx b/apps/web/components/orders/components/service-select.tsx index 0e10985..4410799 100644 --- a/apps/web/components/orders/components/service-select.tsx +++ b/apps/web/components/orders/components/service-select.tsx @@ -6,11 +6,8 @@ import { cn } from '@repo/ui/lib/utils'; import { use } from 'react'; export function ServiceSelect() { - const { step } = use(OrderContext); const { data } = useServicesQuery(); - if (step !== 'service-select') return null; - return data?.data.services.map( (service) => service && , ); diff --git a/apps/web/components/orders/order-form.tsx b/apps/web/components/orders/order-form.tsx index e90c035..904b295 100644 --- a/apps/web/components/orders/order-form.tsx +++ b/apps/web/components/orders/order-form.tsx @@ -1,3 +1,4 @@ +'use client'; import { BackButton, ContactsGrid, @@ -6,21 +7,35 @@ import { SubmitButton, TimeSelect, } from './components'; -import { OrderContextProvider } from '@/context/order'; +import { OrderContext, OrderContextProvider } from '@/context/order'; +import { withContext } from '@/utils/context'; +import { type JSX, use } from 'react'; + +const STEP_COMPONENTS: Record = { + 'customer-select': , + 'datetime-select': ( + <> + + + + ), + 'service-select': , +}; + +function getStepComponent(step: string) { + return STEP_COMPONENTS[step] ?? null; +} + +export const OrderForm = withContext(OrderContextProvider)(function () { + const { step } = use(OrderContext); -export function OrderForm() { return (
- - - - - -
- - -
-
+ {getStepComponent(step)} +
+ + +
); -} +});