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