diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx index 500fb0e..721ece3 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx @@ -2,7 +2,7 @@ import { useEffect, useMemo, useState } from "react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; -import { X, CheckCircle2, Circle, AlertTriangle, ChevronRight, ChevronDown, Trash2, RotateCcw } from "lucide-react"; +import { X, CheckCircle2, Circle, AlertTriangle, ChevronRight, ChevronDown, Trash2, RotateCcw, Loader2 } from "lucide-react"; import { Drawer, DrawerClose, @@ -1562,12 +1562,13 @@ export function InstructMeasureEditor({ ); const [checked, setChecked] = useState>(new Set()); - const [confirmOpen, setConfirmOpen] = useState(false); + const [confirmText, setConfirmText] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); useEffect(() => { setChecked(new Set()); + setConfirmText(""); setError(null); }, [dealId]); @@ -1582,10 +1583,9 @@ export function InstructMeasureEditor({ }); } - async function handleConfirm() { + async function handleSubmit() { const measureNames = Array.from(checked); - if (measureNames.length === 0) return; - setConfirmOpen(false); + if (measureNames.length === 0 || confirmText !== "confirm") return; setSubmitting(true); setError(null); try { @@ -1612,6 +1612,7 @@ export function InstructMeasureEditor({ hubspotError?: string; }; setChecked(new Set()); + setConfirmText(""); void queryClient.invalidateQueries({ queryKey: ["pibiMeasures", portfolioId, dealId] }); onSuccess?.(); if (json.hubspotSync === "failed") { @@ -1637,6 +1638,9 @@ export function InstructMeasureEditor({ } } + const hasSelection = checked.size > 0; + const canSubmit = hasSelection && confirmText === "confirm" && !submitting; + return (
{outOfOrderWarning && ( @@ -1675,17 +1679,46 @@ export function InstructMeasureEditor({
)} - {eligible.length > 0 && ( - + + {hasSelection && ( +
+
+ {Array.from(checked).map((m) => ( + + {m} + + ))} +
+ + +
)} + {error && (

)} - -

- - - Instruct measures - -

- The following measures will be instructed and approved: -

-
    - {Array.from(checked).map((m) => ( -
  • - - {m} -
  • - ))} -
- - - - -
-
); }