From d71f579fcaf83fe74ef1bfe3ef147b41e921f92a Mon Sep 17 00:00:00 2001
From: unrenamed <renkonazbka@gmail.com>
Date: Sun, 24 Nov 2024 13:32:13 +0200
Subject: [PATCH 1/2] fix: prevent parent drawers from closing when canceling
 nested drawers

Ensure the "Cancel" button in nested drawers stops event propagation to avoid unintentionally closing parent drawers. Addresses unintended event bubbling within Vaul's drawer components. Has the same effect on Radix dialog components, although does not affect the UI behavior.
---
 apps/web/ui/modals/accept-invite-modal.tsx           | 3 ++-
 apps/web/ui/modals/add-bank-account-modal.tsx        | 5 ++++-
 apps/web/ui/modals/deposit-funds-modal.tsx           | 5 ++++-
 apps/web/ui/modals/link-builder/advanced-modal.tsx   | 8 ++++++--
 apps/web/ui/modals/link-builder/expiration-modal.tsx | 6 ++++--
 apps/web/ui/modals/link-builder/og-modal.tsx         | 6 ++++--
 apps/web/ui/modals/link-builder/password-modal.tsx   | 6 ++++--
 apps/web/ui/modals/link-builder/targeting-modal.tsx  | 6 ++++--
 apps/web/ui/modals/link-builder/utm-modal.tsx        | 3 ++-
 apps/web/ui/modals/link-qr-modal.tsx                 | 3 ++-
 10 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/apps/web/ui/modals/accept-invite-modal.tsx b/apps/web/ui/modals/accept-invite-modal.tsx
index 18be07adcd..aecb4fd6a7 100644
--- a/apps/web/ui/modals/accept-invite-modal.tsx
+++ b/apps/web/ui/modals/accept-invite-modal.tsx
@@ -89,7 +89,8 @@ function AcceptInviteModal({
           <div className="flex flex-col space-y-6 bg-gray-50 px-4 py-8 text-left sm:px-16">
             <Button
               text="Back to dashboard"
-              onClick={() => {
+              onClick={(e) => {
+                e.stopPropagation();
                 router.push("/");
                 setShowAcceptInviteModal(false);
               }}
diff --git a/apps/web/ui/modals/add-bank-account-modal.tsx b/apps/web/ui/modals/add-bank-account-modal.tsx
index bf496c18b8..7c14338a13 100644
--- a/apps/web/ui/modals/add-bank-account-modal.tsx
+++ b/apps/web/ui/modals/add-bank-account-modal.tsx
@@ -140,7 +140,10 @@ const AddBankAccountForm = ({ closeModal }: AddBankAccountFormProps) => {
           text="Cancel"
           className="h-9 w-fit"
           disabled={isSubmitting || isExecuting}
-          onClick={closeModal}
+          onClick={(e) => {
+            e.stopPropagation();
+            closeModal();
+          }}
         />
 
         <Button
diff --git a/apps/web/ui/modals/deposit-funds-modal.tsx b/apps/web/ui/modals/deposit-funds-modal.tsx
index 899d648a1f..4645a14477 100644
--- a/apps/web/ui/modals/deposit-funds-modal.tsx
+++ b/apps/web/ui/modals/deposit-funds-modal.tsx
@@ -105,7 +105,10 @@ const DepositFundsForm = ({ closeModal }: { closeModal: () => void }) => {
           text="Cancel"
           className="h-9 w-fit"
           disabled={isSubmitting || isExecuting}
-          onClick={closeModal}
+          onClick={(e) => {
+            e.stopPropagation();
+            closeModal();
+          }}
         />
 
         <Button
diff --git a/apps/web/ui/modals/link-builder/advanced-modal.tsx b/apps/web/ui/modals/link-builder/advanced-modal.tsx
index 383f195678..36d3cff038 100644
--- a/apps/web/ui/modals/link-builder/advanced-modal.tsx
+++ b/apps/web/ui/modals/link-builder/advanced-modal.tsx
@@ -176,7 +176,8 @@ function AdvancedModal({
               <button
                 type="button"
                 className="text-xs font-medium text-gray-700 transition-colors hover:text-gray-950"
-                onClick={() => {
+                onClick={(e) => {
+                  e.stopPropagation();
                   setValueParent("externalId", null, { shouldDirty: true });
                   setValueParent("identifier", null, { shouldDirty: true });
                   setShowAdvancedModal(false);
@@ -192,7 +193,10 @@ function AdvancedModal({
               variant="secondary"
               text="Cancel"
               className="h-9 w-fit"
-              onClick={() => setShowAdvancedModal(false)}
+              onClick={(e) => {
+                e.stopPropagation();
+                setShowAdvancedModal(false)
+              }}
             />
             <Button
               type="submit"
diff --git a/apps/web/ui/modals/link-builder/expiration-modal.tsx b/apps/web/ui/modals/link-builder/expiration-modal.tsx
index 35c4b45848..4b9ba4439f 100644
--- a/apps/web/ui/modals/link-builder/expiration-modal.tsx
+++ b/apps/web/ui/modals/link-builder/expiration-modal.tsx
@@ -231,7 +231,8 @@ function ExpirationModal({
               <button
                 type="button"
                 className="text-xs font-medium text-gray-700 transition-colors hover:text-gray-950"
-                onClick={() => {
+                onClick={(e) => {
+                  e.stopPropagation();
                   setValueParent("expiresAt", null, { shouldDirty: true });
                   setValueParent("expiredUrl", null, { shouldDirty: true });
                   setShowExpirationModal(false);
@@ -247,7 +248,8 @@ function ExpirationModal({
               variant="secondary"
               text="Cancel"
               className="h-9 w-fit"
-              onClick={() => {
+              onClick={(e) => {
+                e.stopPropagation();
                 reset();
                 setShowExpirationModal(false);
               }}
diff --git a/apps/web/ui/modals/link-builder/og-modal.tsx b/apps/web/ui/modals/link-builder/og-modal.tsx
index 66a6101a1a..f23f429cb1 100644
--- a/apps/web/ui/modals/link-builder/og-modal.tsx
+++ b/apps/web/ui/modals/link-builder/og-modal.tsx
@@ -436,7 +436,8 @@ function OGModalInner({
                 <button
                   type="button"
                   className="text-xs font-medium text-gray-700 transition-colors hover:text-gray-950"
-                  onClick={() => {
+                  onClick={(e) => {
+                    e.stopPropagation();
                     setValueParent("proxy", false, { shouldDirty: true });
                     setShowOGModal(false);
                   }}
@@ -451,7 +452,8 @@ function OGModalInner({
                 variant="secondary"
                 text="Cancel"
                 className="h-9 w-fit"
-                onClick={() => {
+                onClick={(e) => {
+                  e.stopPropagation();
                   reset();
                   setShowOGModal(false);
                 }}
diff --git a/apps/web/ui/modals/link-builder/password-modal.tsx b/apps/web/ui/modals/link-builder/password-modal.tsx
index b6c204ada4..86938a0170 100644
--- a/apps/web/ui/modals/link-builder/password-modal.tsx
+++ b/apps/web/ui/modals/link-builder/password-modal.tsx
@@ -176,7 +176,8 @@ function PasswordModalInner({
             <button
               type="button"
               className="text-xs font-medium text-gray-700 transition-colors hover:text-gray-950"
-              onClick={() => {
+              onClick={(e) => {
+                e.stopPropagation();
                 setValueParent("password", null, { shouldDirty: true });
                 setShowPasswordModal(false);
               }}
@@ -191,7 +192,8 @@ function PasswordModalInner({
             variant="secondary"
             text="Cancel"
             className="h-9 w-fit"
-            onClick={() => {
+            onClick={(e) => {
+              e.stopPropagation();
               reset();
               setShowPasswordModal(false);
             }}
diff --git a/apps/web/ui/modals/link-builder/targeting-modal.tsx b/apps/web/ui/modals/link-builder/targeting-modal.tsx
index f41d2d98d1..5d0168aa31 100644
--- a/apps/web/ui/modals/link-builder/targeting-modal.tsx
+++ b/apps/web/ui/modals/link-builder/targeting-modal.tsx
@@ -365,7 +365,8 @@ function TargetingModal({
                 <button
                   type="button"
                   className="text-xs font-medium text-gray-700 transition-colors hover:text-gray-950"
-                  onClick={() => {
+                  onClick={(e) => {
+                    e.stopPropagation();
                     setValueParent("ios", null, { shouldDirty: true });
                     setValueParent("android", null, { shouldDirty: true });
                     setValueParent("geo", null, { shouldDirty: true });
@@ -382,7 +383,8 @@ function TargetingModal({
                 variant="secondary"
                 text="Cancel"
                 className="h-9 w-fit"
-                onClick={() => {
+                onClick={(e) => {
+                  e.stopPropagation();
                   reset();
                   setShowTargetingModal(false);
                 }}
diff --git a/apps/web/ui/modals/link-builder/utm-modal.tsx b/apps/web/ui/modals/link-builder/utm-modal.tsx
index 6763160c17..cf25f87162 100644
--- a/apps/web/ui/modals/link-builder/utm-modal.tsx
+++ b/apps/web/ui/modals/link-builder/utm-modal.tsx
@@ -255,7 +255,8 @@ function UTMModalInner({ setShowUTMModal }: UTMModalProps) {
             variant="secondary"
             text="Cancel"
             className="h-9 w-fit"
-            onClick={() => {
+            onClick={(e) => {
+              e.stopPropagation();
               reset();
               setShowUTMModal(false);
             }}
diff --git a/apps/web/ui/modals/link-qr-modal.tsx b/apps/web/ui/modals/link-qr-modal.tsx
index f9d08822e1..b830ec81c3 100644
--- a/apps/web/ui/modals/link-qr-modal.tsx
+++ b/apps/web/ui/modals/link-qr-modal.tsx
@@ -335,7 +335,8 @@ function LinkQRModalInner({
           variant="secondary"
           text="Cancel"
           className="h-9 w-fit"
-          onClick={() => {
+          onClick={(e) => {
+            e.stopPropagation();
             setShowLinkQRModal(false);
           }}
         />

From 9ce1112341972e5fdc8303123dd33d38add99286 Mon Sep 17 00:00:00 2001
From: unrenamed <renkonazbka@gmail.com>
Date: Sun, 24 Nov 2024 15:14:40 +0200
Subject: [PATCH 2/2] fix: apply Prettier formatting

---
 apps/web/ui/modals/link-builder/advanced-modal.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/apps/web/ui/modals/link-builder/advanced-modal.tsx b/apps/web/ui/modals/link-builder/advanced-modal.tsx
index 36d3cff038..6fca1754b2 100644
--- a/apps/web/ui/modals/link-builder/advanced-modal.tsx
+++ b/apps/web/ui/modals/link-builder/advanced-modal.tsx
@@ -195,7 +195,7 @@ function AdvancedModal({
               className="h-9 w-fit"
               onClick={(e) => {
                 e.stopPropagation();
-                setShowAdvancedModal(false)
+                setShowAdvancedModal(false);
               }}
             />
             <Button