From 6c474c7cc8450680ef1b52792a465c1babad7a8a Mon Sep 17 00:00:00 2001 From: Arthur Bassi Date: Mon, 10 Aug 2026 13:46:23 -0300 Subject: [PATCH] fix(work-orders): address wizard create review findings Sync open range state from draft props, clear pocNotes on site switch, and remove the unsupported create status picker. Co-authored-by: Cursor --- .../wizard/use-wizard-date-field-state.ts | 14 +++++++++--- .../wizard-step-location-site-select.tsx | 1 + .../wizard/wizard-step-vendor-time.tsx | 22 ------------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/app/(protected)/workorders/_components/wizard/use-wizard-date-field-state.ts b/src/app/(protected)/workorders/_components/wizard/use-wizard-date-field-state.ts index ada32016..ae48b4b5 100644 --- a/src/app/(protected)/workorders/_components/wizard/use-wizard-date-field-state.ts +++ b/src/app/(protected)/workorders/_components/wizard/use-wizard-date-field-state.ts @@ -52,13 +52,21 @@ export function useWizardDateFieldState({ const [rangeStart, setRangeStart] = useState(value || ""); const [rangeEnd, setRangeEnd] = useState(scheduleEnd || ""); + useEffect(() => { + if (!open) { + return; + } + // Keep draft props as source of truth while open so parent clears + // (e.g. Clear schedule) cannot leave stale rangeStart/rangeEnd. + setRangeStart(value || ""); + setRangeEnd(scheduleEnd || ""); + }, [open, value, scheduleEnd]); + useEffect(() => { if (open) { - setRangeStart(value || ""); - setRangeEnd(scheduleEnd || ""); setCellMode(initialMode); } - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line react-hooks/exhaustive-deps -- reseat mode only when the popover opens }, [open]); function handleRangeClick(iso: string) { diff --git a/src/app/(protected)/workorders/_components/wizard/wizard-step-location-site-select.tsx b/src/app/(protected)/workorders/_components/wizard/wizard-step-location-site-select.tsx index 3cc42c58..8d06d966 100644 --- a/src/app/(protected)/workorders/_components/wizard/wizard-step-location-site-select.tsx +++ b/src/app/(protected)/workorders/_components/wizard/wizard-step-location-site-select.tsx @@ -41,6 +41,7 @@ export function WizardStepLocationSiteSelect({ siteCode: loc ? resolveSiteCode(loc) : "", pocName: "", pocPhone: "", + pocNotes: "", }); }} /> diff --git a/src/app/(protected)/workorders/_components/wizard/wizard-step-vendor-time.tsx b/src/app/(protected)/workorders/_components/wizard/wizard-step-vendor-time.tsx index cb2a7cbf..7dbcb199 100644 --- a/src/app/(protected)/workorders/_components/wizard/wizard-step-vendor-time.tsx +++ b/src/app/(protected)/workorders/_components/wizard/wizard-step-vendor-time.tsx @@ -2,10 +2,7 @@ import { Clock, ExternalLink, Mail, User, Wrench } from "lucide-react"; import { Text } from "@/components/ui/text"; import type { VendorDropdownItem } from "@/domain/work-orders/types/work-order"; import { - ALL_WIZARD_STATUSES, TIME_SLOTS, - WIZARD_STATUS_DOTS, - type WizardWOStatus, type WorkOrderWizardDraft, } from "@/domain/work-orders/types/work-order-wizard"; import { calcDuration, fmt12 } from "@/domain/work-orders/utils/wizard-date-utils"; @@ -19,7 +16,6 @@ import { DLG_INPUT_STYLE, } from "@/app/(protected)/workorders/_components/wizard/wizard-input-styles"; import { - ColorDot, Detail, WizLabel, WizLabelRow, @@ -117,8 +113,6 @@ export function WizardStepVendorTime({ onPatch, }: WizardStepVendorTimeProps) { const selectedVendor = vendors.find((v) => String(v.id) === draft.vendorId); - const statusValue = (draft.status || "Incomplete") as WizardWOStatus; - const statusDotColor = WIZARD_STATUS_DOTS[statusValue] ?? WIZARD_STATUS_DOTS.Incomplete; const selectedDistance = formatVendorDistance(selectedVendor?.distanceMiles); return ( @@ -234,22 +228,6 @@ export function WizardStepVendorTime({ )} - -
- Status - } - options={ALL_WIZARD_STATUSES.map((s) => ({ - key: s, - label: s, - left: , - }))} - onPick={(s) => onUpdate("status", s as WizardWOStatus)} - /> -
); }