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,
|
clientPropertyAddress,
|
||||||
}: DocumentPageClientProps) {
|
}: DocumentPageClientProps) {
|
||||||
const [previewToken, setPreviewToken] = useState<string | null>(null);
|
const [previewToken, setPreviewToken] = useState<string | null>(null);
|
||||||
|
const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);
|
||||||
|
const [textFillData, setTextFillData] = useState<Record<string, string>>({});
|
||||||
|
|
||||||
const handleFieldsChanged = useCallback(() => {
|
const handleFieldsChanged = useCallback(() => {
|
||||||
setPreviewToken(null);
|
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 (
|
return (
|
||||||
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
||||||
<div className="lg:col-span-2">
|
<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>
|
||||||
<div className="lg:col-span-1 lg:sticky lg:top-6 lg:self-start lg:max-h-[calc(100vh-6rem)] lg:overflow-y-auto">
|
<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
|
<PreparePanel
|
||||||
@@ -44,6 +64,9 @@ export function DocumentPageClient({
|
|||||||
clientPropertyAddress={clientPropertyAddress}
|
clientPropertyAddress={clientPropertyAddress}
|
||||||
previewToken={previewToken}
|
previewToken={previewToken}
|
||||||
onPreviewTokenChange={setPreviewToken}
|
onPreviewTokenChange={setPreviewToken}
|
||||||
|
textFillData={textFillData}
|
||||||
|
selectedFieldId={selectedFieldId}
|
||||||
|
onQuickFill={handleQuickFill}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user