feat(12.1-02): extend DocumentPageClient with selectedFieldId + textFillData shared state

- Add selectedFieldId and textFillData state variables
- Add handleFieldValueChange and handleQuickFill callbacks (both call setPreviewToken(null))
- Pass selectedFieldId, textFillData, onFieldSelect, onFieldValueChange to PdfViewerWrapper
- Pass textFillData, selectedFieldId, onQuickFill to PreparePanel
- textFillData starts as {} (no clientPropertyAddress seeding)
This commit is contained in:
Chandler Copeland
2026-03-21 16:25:51 -06:00
parent 46c7aaa7d5
commit f395819acd

View File

@@ -23,15 +23,35 @@ export function DocumentPageClient({
clientPropertyAddress,
}: DocumentPageClientProps) {
const [previewToken, setPreviewToken] = useState<string | null>(null);
const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);
const [textFillData, setTextFillData] = useState<Record<string, string>>({});
const handleFieldsChanged = useCallback(() => {
setPreviewToken(null);
}, []);
const handleFieldValueChange = useCallback((fieldId: string, value: string) => {
setTextFillData(prev => ({ ...prev, [fieldId]: value }));
setPreviewToken(null); // TXTF-03: reset staleness on any text value change
}, []);
const handleQuickFill = useCallback((fieldId: string, value: string) => {
setTextFillData(prev => ({ ...prev, [fieldId]: value }));
setPreviewToken(null); // TXTF-03: reset staleness on quick fill
}, []);
return (
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
<div className="lg:col-span-2">
<PdfViewerWrapper docId={docId} docStatus={docStatus} onFieldsChanged={handleFieldsChanged} />
<PdfViewerWrapper
docId={docId}
docStatus={docStatus}
onFieldsChanged={handleFieldsChanged}
selectedFieldId={selectedFieldId}
textFillData={textFillData}
onFieldSelect={setSelectedFieldId}
onFieldValueChange={handleFieldValueChange}
/>
</div>
<div className="lg:col-span-1 lg:sticky lg:top-6 lg:self-start lg:max-h-[calc(100vh-6rem)] lg:overflow-y-auto">
<PreparePanel
@@ -44,6 +64,9 @@ export function DocumentPageClient({
clientPropertyAddress={clientPropertyAddress}
previewToken={previewToken}
onPreviewTokenChange={setPreviewToken}
textFillData={textFillData}
selectedFieldId={selectedFieldId}
onQuickFill={handleQuickFill}
/>
</div>
</div>