Bläddra i källkod

fix: context menu state

Konstantinos Kaloutas 3 år sedan
förälder
incheckning
89bf35d282
1 ändrade filer med 16 tillägg och 15 borttagningar
  1. 16 15
      tldraw/apps/tldraw-logseq/src/components/ContextMenu/ContextMenu.tsx

+ 16 - 15
tldraw/apps/tldraw-logseq/src/components/ContextMenu/ContextMenu.tsx

@@ -19,17 +19,18 @@ export const ContextMenu = observer(function ContextMenu({
   const app = useApp()
   const app = useApp()
   const rContent = React.useRef<HTMLDivElement>(null)
   const rContent = React.useRef<HTMLDivElement>(null)
 
 
+  const runAndTransition = (f: Function) => {
+    f()
+    app.transition('select')
+  }
+
   return (
   return (
-    <ReactContextMenu.Root
-      onOpenChange={state => {
-        if (!state) app.transition('select')
-      }}
-    >
+    <ReactContextMenu.Root>
       <ReactContextMenu.Trigger>{children}</ReactContextMenu.Trigger>
       <ReactContextMenu.Trigger>{children}</ReactContextMenu.Trigger>
       <ReactContextMenu.Content
       <ReactContextMenu.Content
         className="tl-context-menu"
         className="tl-context-menu"
         ref={rContent}
         ref={rContent}
-        onEscapeKeyDown={preventDefault}
+        onEscapeKeyDown={()=> app.transition('select')}
         collisionBoundary={collisionRef.current}
         collisionBoundary={collisionRef.current}
         asChild
         asChild
         tabIndex={-1}
         tabIndex={-1}
@@ -37,7 +38,7 @@ export const ContextMenu = observer(function ContextMenu({
         <div>
         <div>
           {app.selectedShapes?.size > 0 && (
           {app.selectedShapes?.size > 0 && (
             <>
             <>
-              <ReactContextMenu.Item className="tl-context-menu-button" onClick={() => app.copy()}>
+              <ReactContextMenu.Item className="tl-context-menu-button" onClick={() => runAndTransition(app.copy)}>
                 Copy
                 Copy
                 <div className="tl-context-menu-right-slot">
                 <div className="tl-context-menu-right-slot">
                   <span className="keyboard-shortcut">
                   <span className="keyboard-shortcut">
@@ -47,7 +48,7 @@ export const ContextMenu = observer(function ContextMenu({
               </ReactContextMenu.Item>
               </ReactContextMenu.Item>
             </>
             </>
           )}
           )}
-          <ReactContextMenu.Item className="tl-context-menu-button" onClick={() => app.paste()}>
+          <ReactContextMenu.Item className="tl-context-menu-button" onClick={() => runAndTransition(app.paste)}>
             Paste
             Paste
             <div className="tl-context-menu-right-slot">
             <div className="tl-context-menu-right-slot">
               <span className="keyboard-shortcut">
               <span className="keyboard-shortcut">
@@ -58,7 +59,7 @@ export const ContextMenu = observer(function ContextMenu({
           <ReactContextMenu.Separator className="menu-separator" />
           <ReactContextMenu.Separator className="menu-separator" />
           <ReactContextMenu.Item
           <ReactContextMenu.Item
             className="tl-context-menu-button"
             className="tl-context-menu-button"
-            onClick={() => app.api.selectAll()}
+            onClick={() => runAndTransition(app.api.selectAll)}
           >
           >
             Select all
             Select all
             <div className="tl-context-menu-right-slot">
             <div className="tl-context-menu-right-slot">
@@ -70,7 +71,7 @@ export const ContextMenu = observer(function ContextMenu({
           {app.selectedShapes?.size > 1 && (
           {app.selectedShapes?.size > 1 && (
             <ReactContextMenu.Item
             <ReactContextMenu.Item
               className="tl-context-menu-button"
               className="tl-context-menu-button"
-              onClick={() => app.api.deselectAll()}
+              onClick={() => runAndTransition(app.api.deselectAll)}
             >
             >
               Deselect all
               Deselect all
             </ReactContextMenu.Item>
             </ReactContextMenu.Item>
@@ -79,7 +80,7 @@ export const ContextMenu = observer(function ContextMenu({
             <>
             <>
               <ReactContextMenu.Item
               <ReactContextMenu.Item
                 className="tl-context-menu-button"
                 className="tl-context-menu-button"
-                onClick={() => app.api.deleteShapes()}
+                onClick={() => runAndTransition(app.api.deleteShapes)}
               >
               >
                 Delete
                 Delete
                 <div className="tl-context-menu-right-slot">
                 <div className="tl-context-menu-right-slot">
@@ -93,13 +94,13 @@ export const ContextMenu = observer(function ContextMenu({
                   <ReactContextMenu.Separator className="menu-separator" />
                   <ReactContextMenu.Separator className="menu-separator" />
                   <ReactContextMenu.Item
                   <ReactContextMenu.Item
                     className="tl-context-menu-button"
                     className="tl-context-menu-button"
-                    onClick={() => app.flipHorizontal()}
+                    onClick={() => runAndTransition(app.flipHorizontal)}
                   >
                   >
                     Flip horizontally
                     Flip horizontally
                   </ReactContextMenu.Item>
                   </ReactContextMenu.Item>
                   <ReactContextMenu.Item
                   <ReactContextMenu.Item
                     className="tl-context-menu-button"
                     className="tl-context-menu-button"
-                    onClick={() => app.flipVertical()}
+                    onClick={() => runAndTransition(app.flipVertical)}
                   >
                   >
                     Flip vertically
                     Flip vertically
                   </ReactContextMenu.Item>
                   </ReactContextMenu.Item>
@@ -108,7 +109,7 @@ export const ContextMenu = observer(function ContextMenu({
               <ReactContextMenu.Separator className="menu-separator" />
               <ReactContextMenu.Separator className="menu-separator" />
               <ReactContextMenu.Item
               <ReactContextMenu.Item
                 className="tl-context-menu-button"
                 className="tl-context-menu-button"
-                onClick={() => app.bringToFront()}
+                onClick={() => runAndTransition(app.bringToFront)}
               >
               >
                 Move to front
                 Move to front
                 <div className="tl-context-menu-right-slot">
                 <div className="tl-context-menu-right-slot">
@@ -119,7 +120,7 @@ export const ContextMenu = observer(function ContextMenu({
               </ReactContextMenu.Item>
               </ReactContextMenu.Item>
               <ReactContextMenu.Item
               <ReactContextMenu.Item
                 className="tl-context-menu-button"
                 className="tl-context-menu-button"
-                onClick={() => app.sendToBack()}
+                onClick={() => runAndTransition(app.sendToBack)}
               >
               >
                 Move to back
                 Move to back
                 <div className="tl-context-menu-right-slot">
                 <div className="tl-context-menu-right-slot">