diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index 4dbac7a5c..816e6be6a 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -22,6 +22,7 @@ import useFlowStore from "./stores/flowStore"; import useFlowsManagerStore from "./stores/flowsManagerStore"; import { useStoreStore } from "./stores/storeStore"; import { useTypesStore } from "./stores/typesStore"; +import { useShortcutsStore } from "./stores/shortcuts"; export default function App() { const removeFromTempNotificationList = useAlertStore( @@ -45,32 +46,6 @@ export default function App() { const refreshStars = useDarkStore((state) => state.refreshStars); const checkHasStore = useStoreStore((state) => state.checkHasStore); - const handleModalWShortcut = useFlowStore( - (state) => state.handleModalWShortcut - ); - const nodes = useFlowStore((state) => state.nodes); - - useEffect(() => { - const onKeyDown = (event: KeyboardEvent) => { - const selectedNode = nodes.filter((obj) => obj.selected); - if ( - (event.ctrlKey || event.metaKey) && - event.shiftKey && - event.key === "C" && - selectedNode.length > 0 - ) { - event.preventDefault(); - handleModalWShortcut("code"); - } - }; - - document.addEventListener("keydown", onKeyDown); - - return () => { - document.removeEventListener("keydown", onKeyDown); - }; - }, [handleModalWShortcut, nodes]); - useEffect(() => { refreshStars(); refreshVersion(); diff --git a/src/frontend/src/components/codeAreaComponent/index.tsx b/src/frontend/src/components/codeAreaComponent/index.tsx index f5f2947b5..db94065ba 100644 --- a/src/frontend/src/components/codeAreaComponent/index.tsx +++ b/src/frontend/src/components/codeAreaComponent/index.tsx @@ -15,6 +15,7 @@ export default function CodeAreaComponent({ id = "", readonly = false, openModal, + selected, }: CodeAreaComponentType) { const [myValue, setMyValue] = useState( typeof value == "string" ? value : JSON.stringify(value) @@ -33,6 +34,7 @@ export default function CodeAreaComponent({ return (
state.dark); const unselectAll = useFlowStore((state) => state.unselectAll); - const [height, setHeight] = useState(null); const setSuccessData = useAlertStore((state) => state.setSuccessData); const setErrorData = useAlertStore((state) => state.setErrorData); const [error, setError] = useState<{ detail: { error: string | undefined; traceback: string | undefined }; } | null>(null); + const handleModalWShortcut = useFlowStore( + (state) => state.handleModalWShortcut + ); + const openCodeModalWShortcut = useFlowStore( + (state) => state.openCodeModalWShortcut + ); + const [open, setOpen] = useState(false); + const nodes = useFlowStore((state) => state.nodes); useEffect(() => { // if nodeClass.template has more fields other than code and dynamic is true @@ -54,39 +62,31 @@ export default function CodeAreaModal({ if (dynamic && Object.keys(nodeClass!.template).length > 2) { return; } - }, []); - - const handleModalWShortcut = useFlowStore( - (state) => state.handleModalWShortcut - ); - const openCodeModalWShortcut = useFlowStore( - (state) => state.openCodeModalWShortcut - ); - const nodes = useFlowStore((state) => state.nodes); + }, []); useEffect(() => { - const onKeyDown = (event: KeyboardEvent) => { - const selectedNode = nodes.filter((obj) => obj.selected); + const handleKeyDown = (event: KeyboardEvent) => { if ( - (event.ctrlKey || event.metaKey) && - event.shiftKey && - event.key === "C" && - selectedNode.length > 0 + (event.key === "C" || event.key === "c") && + (event.metaKey || event.ctrlKey) && + selected ) { event.preventDefault(); - setOpen(openCodeModalWShortcut); + console.log("entrou") + setOpen((oldState) => !oldState); } }; - document.addEventListener("keydown", onKeyDown); - + document.addEventListener("keydown", handleKeyDown); return () => { - document.removeEventListener("keydown", onKeyDown); + document.removeEventListener("keydown", handleKeyDown); }; }, []); + useEffect(() => { + console.log(open) if (openModal) setOpen(true); - }, [openModal]); + }, [openModal, open]); function processNonDynamicField() { postValidateCode(code) @@ -171,14 +171,14 @@ export default function CodeAreaModal({ }; }, [error, setHeight]); - const [open, setOpen] = useState(false); useEffect(() => { setCode(value); }, [value, open]); + console.log(selected) return ( - + {children} {editCodeTitle} diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index 812eb9ed1..725d97f2e 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -97,10 +97,6 @@ export default function NodeToolbarComponent({ (state) => state.handleModalWShortcut ); - useEffect(() => { - setOpenModal(openCodeModalWShortcut); - }, [openCodeModalWShortcut, handleModalWShortcut]); - const setLastCopiedSelection = useFlowStore( (state) => state.setLastCopiedSelection ); @@ -217,6 +213,8 @@ export default function NodeToolbarComponent({ const [openModal, setOpenModal] = useState(false); const hasCode = Object.keys(data.node!.template).includes("code"); + console.log((selected && openModal)) + return ( <>
@@ -231,8 +229,9 @@ export default function NodeToolbarComponent({ data-testid="code-button-modal" >
- + selected={selected} + /> + )}
diff --git a/src/frontend/src/stores/shortcuts.ts b/src/frontend/src/stores/shortcuts.ts new file mode 100644 index 000000000..35f9da355 --- /dev/null +++ b/src/frontend/src/stores/shortcuts.ts @@ -0,0 +1,15 @@ +import { create } from "zustand"; +import { shortcutsStoreType } from "../types/store"; + +export const useShortcutsStore = create((set, get) => ({ + openCodeModalWShortcut: false, + handleModalWShortcut: (modal) => { + switch (modal) { + case "code": + set({ + openCodeModalWShortcut: !get().openCodeModalWShortcut, + }); + break; + } + }, +})); \ No newline at end of file diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts index 4f5d1bb60..ac4512c29 100644 --- a/src/frontend/src/types/components/index.ts +++ b/src/frontend/src/types/components/index.ts @@ -113,6 +113,7 @@ export type CodeAreaComponentType = { id?: string; readonly?: boolean; openModal?: boolean; + selected?: boolean; }; export type FileComponentType = { @@ -519,6 +520,7 @@ export type codeAreaModalPropsType = { dynamic?: boolean; readonly?: boolean; openModal?: boolean; + selected?: boolean; }; export type chatMessagePropsType = { diff --git a/src/frontend/src/types/store/index.ts b/src/frontend/src/types/store/index.ts index 331e16e30..ba6b0daee 100644 --- a/src/frontend/src/types/store/index.ts +++ b/src/frontend/src/types/store/index.ts @@ -18,3 +18,8 @@ export type StoreComponentResponse = { authorized: boolean; results: storeComponent[]; }; + +export type shortcutsStoreType = { + openCodeModalWShortcut: boolean; + handleModalWShortcut: (str: string) => void; +}; \ No newline at end of file