diff --git a/apps/dokploy/components/ui/dialog.tsx b/apps/dokploy/components/ui/dialog.tsx index f3b6fedbd..0d71d059c 100644 --- a/apps/dokploy/components/ui/dialog.tsx +++ b/apps/dokploy/components/ui/dialog.tsx @@ -12,16 +12,30 @@ const Dialog = ({ onOpenChange, open, ...props -}: React.ComponentPropsWithoutRef) => ( - - - -); +}: React.ComponentPropsWithoutRef) => { + const [isOpened, setIsOpened] = React.useState(false); // for internal control + + const handleOpenChange = (open: boolean) => { + if (onOpenChange) { + onOpenChange(open); + } else { + setIsOpened(open); + } + }; + + return ( + + + + ); +}; Dialog.displayName = DialogPrimitive.Root.displayName; const DialogTrigger = DialogPrimitive.Trigger; @@ -37,7 +51,7 @@ const DialogOverlay = React.forwardRef< 0) { body.style.paddingRight = `${scrollbarWidth}px`; } @@ -74,8 +87,21 @@ const DialogContent = React.forwardRef< // Handle outside interactions properly with Command components const handleInteractOutside = React.useCallback( - (_e: Event) => { + (event: Event | React.MouseEvent) => { + // Don't close when clicking inside popovers, dropdowns, or command components + const target = event.target as HTMLElement; + if ( + target.closest("[data-radix-popper-content-wrapper]") || + target.closest("[cmdk-root]") || + target.closest("[data-radix-command-root]") + ) { + event.preventDefault(); + return; + } + if (onOpenChange) { + event.preventDefault(); + event.stopPropagation(); onOpenChange(false); } }, @@ -96,7 +122,10 @@ const DialogContent = React.forwardRef< return ( {/* Custom overlay for modal=false - no click handler to avoid Command conflicts */} -
+
{ - const target = e.target as HTMLElement; - // Don't close when clicking inside popovers, dropdowns, or command components - if ( - target.closest("[data-radix-popper-content-wrapper]") || - target.closest("[cmdk-root]") || - target.closest("[data-radix-command-root]") - ) { - e.preventDefault(); - return; - } - // Use our custom handler for modal=false behavior - handleInteractOutside(e); - }} + onInteractOutside={(event) => event.preventDefault()} {...props} >