Skip to content

Commit c719d67

Browse files
[WIKI-714] fix: close drag handle dropdown when any key is pressed #8040
1 parent 7178627 commit c719d67

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

packages/editor/src/core/extensions/table/plugins/drag-handles/column/drag-handle.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from "@floating-ui/react";
1313
import type { Editor } from "@tiptap/core";
1414
import { Ellipsis } from "lucide-react";
15-
import { useCallback, useState } from "react";
15+
import { useCallback, useEffect, useState } from "react";
1616
// plane imports
1717
import { cn } from "@plane/utils";
1818
// constants
@@ -78,6 +78,17 @@ export const ColumnDragHandle: React.FC<ColumnDragHandleProps> = (props) => {
7878
const role = useRole(context);
7979
const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click, role]);
8080

81+
useEffect(() => {
82+
if (!isDropdownOpen) return;
83+
const handleKeyDown = (event: KeyboardEvent) => {
84+
context.onOpenChange(false);
85+
event.preventDefault();
86+
event.stopPropagation();
87+
};
88+
document.addEventListener("keydown", handleKeyDown);
89+
return () => document.removeEventListener("keydown", handleKeyDown);
90+
}, [isDropdownOpen, context]);
91+
8192
const handleMouseDown = useCallback(
8293
(e: React.MouseEvent<HTMLButtonElement>) => {
8394
e.stopPropagation();

packages/editor/src/core/extensions/table/plugins/drag-handles/row/drag-handle.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from "@floating-ui/react";
1313
import type { Editor } from "@tiptap/core";
1414
import { Ellipsis } from "lucide-react";
15-
import { useCallback, useState } from "react";
15+
import { useCallback, useEffect, useState } from "react";
1616
// plane imports
1717
import { cn } from "@plane/utils";
1818
// constants
@@ -78,6 +78,17 @@ export const RowDragHandle: React.FC<RowDragHandleProps> = (props) => {
7878
const role = useRole(context);
7979
const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click, role]);
8080

81+
useEffect(() => {
82+
if (!isDropdownOpen) return;
83+
const handleKeyDown = (event: KeyboardEvent) => {
84+
context.onOpenChange(false);
85+
event.preventDefault();
86+
event.stopPropagation();
87+
};
88+
document.addEventListener("keydown", handleKeyDown);
89+
return () => document.removeEventListener("keydown", handleKeyDown);
90+
}, [isDropdownOpen, context]);
91+
8192
const handleMouseDown = useCallback(
8293
(e: React.MouseEvent<HTMLButtonElement>) => {
8394
e.stopPropagation();

0 commit comments

Comments
 (0)