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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user