diff --git a/src/frontend/src/components/renderIconComponent/index.tsx b/src/frontend/src/components/renderIconComponent/index.tsx new file mode 100644 index 000000000..241566f93 --- /dev/null +++ b/src/frontend/src/components/renderIconComponent/index.tsx @@ -0,0 +1,46 @@ +import ForwardedIconComponent from "../genericIconComponent"; + +export default function RenderIcons({ + isMac, + hasShift, + filteredShortcut, + shortcutWPlus, +}: { + isMac: boolean; + hasShift: boolean; + filteredShortcut: string[]; + shortcutWPlus: string[]; +}): JSX.Element { + return hasShift ? ( + <> + {isMac ? ( + + ) : ( + filteredShortcut[0] + )} + + {filteredShortcut.map((key, idx) => { + if (idx > 0) { + return {key.toUpperCase()} ; + } + })} + + ) : ( + <> + {shortcutWPlus[0].toLowerCase() === "space" ? ( + "Space" + ) : shortcutWPlus[0].length <= 1 ? ( + shortcutWPlus[0] + ) : isMac ? ( + + ) : ( + shortcutWPlus[0] + )} + {shortcutWPlus.map((key, idx) => { + if (idx > 0) { + return {key.toUpperCase()} ; + } + })} + + ); +} diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index 40dfa0066..e534ce69d 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -3,7 +3,9 @@ import { useEffect, useState } from "react"; import { useHotkeys } from "react-hotkeys-hook"; import { useUpdateNodeInternals } from "reactflow"; import CodeAreaComponent from "../../../../components/codeAreaComponent"; -import IconComponent from "../../../../components/genericIconComponent"; +import IconComponent, { + ForwardedIconComponent, +} from "../../../../components/genericIconComponent"; import ShadTooltip from "../../../../components/shadTooltipComponent"; import { Select, @@ -32,6 +34,7 @@ import { } from "../../../../utils/reactflowUtils"; import { classNames, cn } from "../../../../utils/utils"; import ToolbarSelectItem from "./toolbarSelectItem"; +import RenderIcons from "../../../../components/renderIconComponent"; export default function NodeToolbarComponent({ data, @@ -44,6 +47,7 @@ export default function NodeToolbarComponent({ setShowState, onCloseAdvancedModal, }: nodeToolbarPropsType): JSX.Element { + const isMac = navigator.platform.toUpperCase().includes("MAC"); const nodeLength = Object.keys(data.node!.template).filter( (templateField) => templateField.charAt(0) !== "_" && @@ -57,7 +61,7 @@ export default function NodeToolbarComponent({ data.node.template[templateField].type === "Any" || data.node.template[templateField].type === "int" || data.node.template[templateField].type === "dict" || - data.node.template[templateField].type === "NestedDict") + data.node.template[templateField].type === "NestedDict"), ).length; const hasStore = useStoreStore((state) => state.hasStore); @@ -196,7 +200,7 @@ export default function NodeToolbarComponent({ const [showconfirmShare, setShowconfirmShare] = useState(false); const [showOverrideModal, setShowOverrideModal] = useState(false); const [flowComponent, setFlowComponent] = useState( - createFlowComponent(cloneDeep(data), version) + createFlowComponent(cloneDeep(data), version), ); // useEffect(() => { @@ -215,7 +219,7 @@ export default function NodeToolbarComponent({ const updateNodeInternals = useUpdateNodeInternals(); const setLastCopiedSelection = useFlowStore( - (state) => state.setLastCopiedSelection + (state) => state.setLastCopiedSelection, ); const setSuccessData = useAlertStore((state) => state.setSuccessData); @@ -289,7 +293,7 @@ export default function NodeToolbarComponent({ nodes, edges, setNodes, - setEdges + setEdges, ); break; case "override": @@ -313,20 +317,56 @@ export default function NodeToolbarComponent({ y: 10, paneX: nodes.find((node) => node.id === data.id)?.position.x, paneY: nodes.find((node) => node.id === data.id)?.position.y, - } + }, ); break; } }; const isSaved = flows.some((flow) => - Object.values(flow).includes(data.node?.display_name!) + Object.values(flow).includes(data.node?.display_name!), ); + function displayShortcut({ + name, + shortcut, + }: { + name: string; + shortcut: string; + }): JSX.Element { + let hasShift: boolean = false; + const fixedShortcut = shortcut?.split("+"); + fixedShortcut.forEach((key) => { + if (key.toLowerCase().includes("shift")) { + hasShift = true; + } + }); + const filteredShortcut = fixedShortcut.filter( + (key) => !key.toLowerCase().includes("shift"), + ); + let shortcutWPlus: string[] = []; + if (!hasShift) shortcutWPlus = filteredShortcut.join("+").split(" "); + return ( +
+ {name} + + + +
+ ); + } + const setNode = useFlowStore((state) => state.setNode); const handleOnNewValue = ( - newValue: string | string[] | boolean | Object[] + newValue: string | string[] | boolean | Object[], ): void => { if (data.node!.template[name].value !== newValue) { takeSnapshot(); @@ -378,7 +418,14 @@ export default function NodeToolbarComponent({
{hasCode && ( - + name.split(" ")[0].toLowerCase() === "code", + )!, + )} + side="top" + > */} - + name.split(" ")[0].toLowerCase() === "freeze", + )!, + )} + side="top" + > @@ -468,13 +529,13 @@ export default function NodeToolbarComponent({ */}