From 95fbdb3600eab146cd3c0a4759a2b8b84c1719d4 Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Mon, 28 Sep 2026 14:41:12 +0100 Subject: [PATCH] fix(ui): discard cancelled signature pad dialog drafts The dialog kept its draft signature in state across open/close, while the pad inside remounts from the saved value. After cancelling, reopening showed the saved signature (or an empty pad), but the Next button stayed enabled and committed the discarded draft. Reset the draft to the saved value whenever the dialog opens or closes, and route all open-state changes through one disabled-aware handler. --- .../signature-pad/signature-pad-dialog.tsx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/ui/primitives/signature-pad/signature-pad-dialog.tsx b/packages/ui/primitives/signature-pad/signature-pad-dialog.tsx index 1dfc89048..fcc225d1d 100644 --- a/packages/ui/primitives/signature-pad/signature-pad-dialog.tsx +++ b/packages/ui/primitives/signature-pad/signature-pad-dialog.tsx @@ -41,6 +41,15 @@ export const SignaturePadDialog = ({ const [showSignatureModal, setShowSignatureModal] = useState(false); const [signature, setSignature] = useState(value ?? ''); + const onOpenChange = (open: boolean) => { + if (disabled) { + return; + } + + setSignature(value ?? ''); + setShowSignatureModal(open); + }; + return (
setShowSignatureModal(true)} + onClick={() => onOpenChange(true)} whileHover="onHover" > {!value && !disableAnimation && ( @@ -109,7 +118,7 @@ export const SignaturePadDialog = ({ )} - + { onChange(signature); - setShowSignatureModal(false); + onOpenChange(false); }} > {dialogConfirmText ? parseMessageDescriptor(i18n._, dialogConfirmText) : Next}