From c960a48b4ff4ff806e33c2ca622d106c3915e7b8 Mon Sep 17 00:00:00 2001 From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com> Date: Tue, 17 Dec 2024 06:09:58 +0000 Subject: [PATCH] fix: z-index of field settings (#1469) --- .../primitives/document-flow/add-fields.tsx | 4 +++ .../primitives/document-flow/field-item.tsx | 29 +++++++++++++------ .../template-flow/add-template-fields.tsx | 4 +++ 3 files changed, 28 insertions(+), 9 deletions(-) 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 && (