refactor: don't close dialog on drag

This commit is contained in:
zhom
2025-08-13 09:03:24 +04:00
parent f2b3b2cc69
commit ceb2eec80e
2 changed files with 11 additions and 4 deletions
+6
View File
@@ -63,6 +63,12 @@ function DialogContent({
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[10000] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[10000] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
className, className,
)} )}
onInteractOutside={(event) => {
const target = event.target as HTMLElement | null;
if (target?.closest('[data-window-drag-area="true"]')) {
event.preventDefault();
}
}}
{...props} {...props}
> >
{children} {children}
+5 -4
View File
@@ -16,11 +16,11 @@ export function WindowDragArea() {
checkPlatform(); checkPlatform();
}, []); }, []);
const handleMouseDown = (e: React.MouseEvent) => { const handlePointerDown = (e: React.PointerEvent) => {
// Only handle left mouse button
if (e.button !== 0) return; if (e.button !== 0) return;
e.preventDefault();
e.stopPropagation();
// Start dragging asynchronously
const startDrag = async () => { const startDrag = async () => {
try { try {
const window = getCurrentWindow(); const window = getCurrentWindow();
@@ -42,7 +42,8 @@ export function WindowDragArea() {
<button <button
type="button" type="button"
className="fixed top-0 right-0 left-0 h-10 bg-transparent border-0 z-[9999] select-none" className="fixed top-0 right-0 left-0 h-10 bg-transparent border-0 z-[9999] select-none"
onMouseDown={handleMouseDown} data-window-drag-area="true"
onPointerDown={handlePointerDown}
onContextMenu={(e) => { onContextMenu={(e) => {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();