Feat: add shortcut to open code modal (Ctrl shift C)

This commit is contained in:
igorrCarvalho 2024-02-28 18:09:06 -03:00
commit 0e55a4f8c8
7 changed files with 64 additions and 0 deletions

View file

@ -21,6 +21,7 @@ import { useDarkStore } from "./stores/darkStore";
import useFlowsManagerStore from "./stores/flowsManagerStore";
import { useStoreStore } from "./stores/storeStore";
import { useTypesStore } from "./stores/typesStore";
import useFlowStore from "./stores/flowStore";
export default function App() {
const removeFromTempNotificationList = useAlertStore(
@ -44,6 +45,25 @@ 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();

View file

@ -267,6 +267,7 @@ export default function GenericNode({
showNode={showNode}
openAdvancedModal={false}
onCloseAdvancedModal={() => {}}
selected={selected}
></NodeToolbarComponent>
</NodeToolbar>
<div

View file

@ -47,6 +47,27 @@ export default function CodeAreaModal({
}
}, []);
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);
if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === "C" && selectedNode.length > 0) {
event.preventDefault();
setOpen(openCodeModalWShortcut)
}
}
document.addEventListener("keydown", onKeyDown);
return () => {
document.removeEventListener("keydown", onKeyDown);
}
}, []);
useEffect(() => {
if (openModal) setOpen(true);
}, [openModal]);

View file

@ -36,6 +36,7 @@ export default function NodeToolbarComponent({
numberOfHandles,
showNode,
name = "code",
selected,
onCloseAdvancedModal,
}: nodeToolbarPropsType): JSX.Element {
const nodeLength = Object.keys(data.node!.template).filter(
@ -89,6 +90,14 @@ export default function NodeToolbarComponent({
}, [showModalAdvanced]);
const updateNodeInternals = useUpdateNodeInternals();
const openCodeModalWShortcut = useFlowStore(state => state.openCodeModalWShortcut);
const handleModalWShortcut = useFlowStore(state => state.handleModalWShortcut);
useEffect(() => {
console.log(openCodeModalWShortcut)
setOpenModal(openCodeModalWShortcut)
}, [openCodeModalWShortcut, handleModalWShortcut])
const setLastCopiedSelection = useFlowStore(state => state.setLastCopiedSelection);
useEffect(() => {
setFlowComponent(createFlowComponent(cloneDeep(data), version));

View file

@ -48,6 +48,16 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
flowPool: {},
inputs: [],
outputs: [],
openCodeModalWShortcut: false,
handleModalWShortcut: ((modal) => {
switch (modal) {
case "code":
set((state) => ({
openCodeModalWShortcut: !state.openCodeModalWShortcut,
}));
break
}
}),
setFlowPool: (flowPool) => {
set({ flowPool });
},

View file

@ -484,6 +484,7 @@ export type nodeToolbarPropsType = {
name?: string;
openAdvancedModal?: boolean;
onCloseAdvancedModal?: (close: boolean) => void;
selected: boolean;
};
export type parsedDataType = {

View file

@ -37,6 +37,8 @@ export type FlowPoolType = {
};
export type FlowStoreType = {
openCodeModalWShortcut: boolean;
handleModalWShortcut: (modal: string) => void
flowPool: FlowPoolType;
inputs: Array<{ type: string; id: string }>;
outputs: Array<{ type: string; id: string }>;