diff --git a/packages/ui/primitives/document-flow/add-fields.tsx b/packages/ui/primitives/document-flow/add-fields.tsx index afa80b14a..4300a95a3 100644 --- a/packages/ui/primitives/document-flow/add-fields.tsx +++ b/packages/ui/primitives/document-flow/add-fields.tsx @@ -129,6 +129,7 @@ export const AddFieldsFormPartial = ({ currentStep === 1 && typeof documentFlow.onBackStep === 'function' && canGoBack; const [showAdvancedSettings, setShowAdvancedSettings] = useState(false); const [currentField, setCurrentField] = useState(); + const [activeFieldId, setActiveFieldId] = useState(null); const form = useForm({ defaultValues: { @@ -652,6 +653,9 @@ export const AddFieldsFormPartial = ({ }} hideRecipients={hideRecipients} hasErrors={!!hasFieldError} + active={activeFieldId === field.formId} + onFieldActivate={() => setActiveFieldId(field.formId)} + onFieldDeactivate={() => setActiveFieldId(null)} /> ); })} diff --git a/packages/ui/primitives/document-flow/field-item.tsx b/packages/ui/primitives/document-flow/field-item.tsx index d77e55047..7d3a1c33c 100644 --- a/packages/ui/primitives/document-flow/field-item.tsx +++ b/packages/ui/primitives/document-flow/field-item.tsx @@ -47,6 +47,9 @@ export type FieldItemProps = { recipientIndex?: number; hideRecipients?: boolean; hasErrors?: boolean; + active?: boolean; + onFieldActivate?: () => void; + onFieldDeactivate?: () => void; }; export const FieldItem = ({ @@ -67,8 +70,10 @@ export const FieldItem = ({ recipientIndex = 0, hideRecipients = false, hasErrors, + active, + onFieldActivate, + onFieldDeactivate, }: FieldItemProps) => { - const [active, setActive] = useState(false); const [coords, setCoords] = useState({ pageX: 0, pageY: 0, @@ -150,6 +155,8 @@ export const FieldItem = ({ }); if (isOutsideOfField) { + setSettingsActive(false); + onFieldDeactivate?.(); onBlur?.(); } }; @@ -188,10 +195,12 @@ export const FieldItem = ({ return createPortal( setActive(true)} - onResizeStart={() => setActive(true)} + onDragStart={() => onFieldActivate?.()} + onResizeStart={() => onFieldActivate?.()} enableResizing={!fixedSize} onResizeStop={(_e, _d, ref) => { - setActive(false); + onFieldDeactivate?.(); onResize?.(ref); }} onDragStop={(_e, d) => { - setActive(false); + onFieldDeactivate?.(); onMove?.(d.node); }} > @@ -226,8 +235,10 @@ export const FieldItem = ({ !fixedSize && '[container-type:size]', )} data-error={hasErrors ? 'true' : undefined} - onClick={() => { + onClick={(e) => { + e.stopPropagation(); setSettingsActive((prev) => !prev); + onFieldActivate?.(); onFocus?.(); }} ref={$el} @@ -264,7 +275,7 @@ export const FieldItem = ({ {!disabled && settingsActive && ( -
+
{advancedField && (