Browse Source

fix: add Escape and click-outside dismiss for presets popup

The easing presets popup could only be closed by clicking the
toggle button again. Now it also closes on Escape key or clicking
outside the popup area.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 4 months ago
parent
commit
61565139a8
  1. 19
      src/components/nodes/ControlPanel.tsx

19
src/components/nodes/ControlPanel.tsx

@ -885,6 +885,25 @@ function EaseCurveControls({ node }: { node: Node }) {
const [showPresets, setShowPresets] = useState(false);
const presetsButtonRef = useRef<HTMLButtonElement>(null);
useEffect(() => {
if (!showPresets) return;
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === "Escape") setShowPresets(false);
};
const handleClickOutside = (e: MouseEvent) => {
if (presetsButtonRef.current?.contains(e.target as HTMLElement)) return;
setShowPresets(false);
};
window.addEventListener("keydown", handleKeyDown);
document.addEventListener("mousedown", handleClickOutside);
return () => {
window.removeEventListener("keydown", handleKeyDown);
document.removeEventListener("mousedown", handleClickOutside);
};
}, [showPresets]);
const inheritedEdge = useMemo(() => {
return edges.find((e) => e.target === node.id && e.targetHandle === "easeCurve") || null;
}, [edges, node.id]);

Loading…
Cancel
Save