This commit is contained in:
anovazzi1 2023-06-14 21:59:15 -03:00 • committed by GitHub
commit 23a7e556e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 108 additions and 101 deletions

View file

@ -47,8 +47,6 @@ export default function GenericNode({
} }
}, []); }, []);
useEffect(() => {}, [closePopUp]);
const validateNode = useCallback( const validateNode = useCallback(
debounce(async () => { debounce(async () => {
try { try {
@ -87,6 +85,8 @@ export default function GenericNode({
return; return;
} }
useEffect(() => {}, [closePopUp, data.node.template]);
return ( return (
<> <>
<NodeToolbar> <NodeToolbar>

View file

@ -10,15 +10,14 @@ const ShadTooltip = (props) => {
<TooltipProvider> <TooltipProvider>
<Tooltip delayDuration={props.delayDuration}> <Tooltip delayDuration={props.delayDuration}>
<TooltipTrigger asChild>{props.children}</TooltipTrigger> <TooltipTrigger asChild>{props.children}</TooltipTrigger>
{props.open && (
<TooltipContent <TooltipContent
side={props.side} side={props.side}
avoidCollisions={false} avoidCollisions={false}
sticky="always" sticky="always"
> >
{props.content} {props.content}
</TooltipContent> </TooltipContent>
)}
</Tooltip> </Tooltip>
</TooltipProvider> </TooltipProvider>
); );

View file

@ -20,13 +20,18 @@ export default function CodeAreaComponent({
onChange(""); onChange("");
} }
}, [disabled, onChange]); }, [disabled, onChange]);
useEffect(() => {
setMyValue(value);
}, [value]);
return ( return (
<div <div
className={ className={
disabled ? "pointer-events-none cursor-not-allowed w-full" : "w-full" disabled ? "pointer-events-none cursor-not-allowed w-full" : "w-full"
} }
> >
<div className="w-full flex items-center gap-3"> <div className="w-full flex items-center">
<span <span
onClick={() => { onClick={() => {
openPopUp( openPopUp(
@ -41,7 +46,7 @@ export default function CodeAreaComponent({
}} }}
className={ className={
editNode editNode
? "truncate cursor-pointer placeholder:text-center text-gray-500 border-0 block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 shadow-sm sm:text-sm" + ? "truncate cursor-pointer placeholder:text-center text-gray-500 block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 border-1 shadow-sm sm:text-sm" +
INPUT_STYLE INPUT_STYLE
: "truncate block w-full text-gray-500 px-3 py-2 rounded-md border border-gray-300 dark:border-gray-700 shadow-sm sm:text-sm" + : "truncate block w-full text-gray-500 px-3 py-2 rounded-md border border-gray-300 dark:border-gray-700 shadow-sm sm:text-sm" +
INPUT_STYLE + INPUT_STYLE +
@ -64,7 +69,7 @@ export default function CodeAreaComponent({
}} }}
> >
{!editNode && ( {!editNode && (
<ArrowTopRightOnSquareIcon className="w-6 h-6 hover:text-ring dark:text-gray-300" /> <ArrowTopRightOnSquareIcon className="w-6 h-6 hover:text-ring dark:text-gray-300 ml-3" />
)} )}
</button> </button>
</div> </div>

View file

@ -31,7 +31,7 @@ export default function Dropdown({
<Listbox.Button <Listbox.Button
className={ className={
editNode editNode
? "relative pr-9 arrow-hide placeholder:text-center block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md shadow-sm sm:text-sm border-gray-300 border-1" + ? "relative pr-8 placeholder:text-center block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md shadow-sm sm:text-sm border-gray-300 border-1" +
INPUT_STYLE INPUT_STYLE
: "ring-1 ring-slate-300 dark:ring-slate-600 w-full py-2 pl-3 pr-10 text-left dark:focus:ring-offset-2 dark:focus:ring-offset-gray-900 dark:focus:ring-1 dark:focus:ring-gray-600 dark:focus-visible:ring-gray-900 dark:focus-visible:ring-offset-2 focus-visible:outline-none dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 shadow-sm sm:text-sm" + : "ring-1 ring-slate-300 dark:ring-slate-600 w-full py-2 pl-3 pr-10 text-left dark:focus:ring-offset-2 dark:focus:ring-offset-gray-900 dark:focus:ring-1 dark:focus:ring-gray-600 dark:focus-visible:ring-gray-900 dark:focus-visible:ring-offset-2 focus-visible:outline-none dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 shadow-sm sm:text-sm" +
INPUT_STYLE INPUT_STYLE
@ -40,9 +40,7 @@ export default function Dropdown({
<span className="block truncate w-full">{internalValue}</span> <span className="block truncate w-full">{internalValue}</span>
<span <span
className={ className={
editNode "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"
? "hidden"
: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"
} }
> >
<ChevronUpDownIcon <ChevronUpDownIcon
@ -62,7 +60,7 @@ export default function Dropdown({
<Listbox.Options <Listbox.Options
className={ className={
editNode editNode
? "arrow-hide absolute z-10 mt-1 max-h-60 overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm w-[215px]" ? "absolute z-10 mt-1 max-h-60 overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm w-[215px]"
: "absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm " : "absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm "
} }
> >

View file

@ -23,6 +23,11 @@ export default function FloatComponent({
onChange(""); onChange("");
} }
}, [disabled, onChange]); }, [disabled, onChange]);
useEffect(() => {
setMyValue(value);
}, [value]);
return ( return (
<div <div
className={ className={

View file

@ -47,23 +47,13 @@ export const MenuBar = ({ flows, tabId }) => {
<Link to="/"> <Link to="/">
<ChevronLeft className="w-4" /> <ChevronLeft className="w-4" />
</Link> </Link>
<Button variant="primary" size="sm"> <div className="flex items-center font-medium text-sm rounded-md py-1 px-1.5 gap-0.5">
{/* <RenameLabel
value={current_flow.name}
setValue={(value) => {
if (value !== "") {
let newFlow = _.cloneDeep(current_flow);
newFlow.name = value;
updateFlow(newFlow);
}
}}
rename={rename}
setRename={setRename}
/> */}
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger className="gap-2 flex items-center"> <DropdownMenuTrigger>
{current_flow.name} <Button className="gap-2 flex items-center" variant="primary">
<ChevronDown className="w-4 h-4" /> {current_flow.name}
<ChevronDown className="w-4 h-4" />
</Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="w-44"> <DropdownMenuContent className="w-44">
<DropdownMenuLabel>Edit</DropdownMenuLabel> <DropdownMenuLabel>Edit</DropdownMenuLabel>
@ -119,7 +109,7 @@ export const MenuBar = ({ flows, tabId }) => {
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
</Button> </div>
</div> </div>
); );
}; };

View file

@ -78,7 +78,7 @@ export default function InputFileComponent({
onClick={handleButtonClick} onClick={handleButtonClick}
className={ className={
editNode editNode
? "truncate placeholder:text-center text-gray-500 border-0 block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 shadow-sm sm:text-sm" + ? "truncate placeholder:text-center text-gray-500 block w-full pt-0.5 pb-0.5 form-input dark:bg-gray-900 dark:text-gray-300 dark:border-gray-600 rounded-md border-gray-300 shadow-sm sm:text-sm border-1" +
INPUT_STYLE INPUT_STYLE
: "truncate block w-full text-gray-500 dark:text-gray-300 px-3 py-2 rounded-md border border-gray-300 dark:border-gray-700 shadow-sm sm:text-sm" + : "truncate block w-full text-gray-500 dark:text-gray-300 px-3 py-2 rounded-md border border-gray-300 dark:border-gray-700 shadow-sm sm:text-sm" +
INPUT_STYLE + INPUT_STYLE +

View file

@ -21,6 +21,11 @@ export default function IntComponent({
onChange(""); onChange("");
} }
}, [disabled, onChange]); }, [disabled, onChange]);
useEffect(() => {
setMyValue(value);
}, [value]);
return ( return (
<div <div
className={ className={

View file

@ -1,8 +1,6 @@
import { ArrowTopRightOnSquareIcon } from "@heroicons/react/24/outline"; import { ArrowTopRightOnSquareIcon } from "@heroicons/react/24/outline";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import { PopUpContext } from "../../contexts/popUpContext"; import { PopUpContext } from "../../contexts/popUpContext";
import CodeAreaModal from "../../modals/codeAreaModal";
import TextAreaModal from "../../modals/textAreaModal";
import { TextAreaComponentType } from "../../types/components"; import { TextAreaComponentType } from "../../types/components";
import GenericModal from "../../modals/genericModal"; import GenericModal from "../../modals/genericModal";
import { TypeModal } from "../../utils"; import { TypeModal } from "../../utils";
@ -22,6 +20,11 @@ export default function PromptAreaComponent({
onChange(""); onChange("");
} }
}, [disabled, onChange]); }, [disabled, onChange]);
useEffect(() => {
setMyValue(value);
}, [value]);
return ( return (
<div <div
className={ className={

View file

@ -14,9 +14,8 @@ const buttonVariants = cva(
outline: outline:
"border border-input hover:bg-accent hover:text-accent-foreground", "border border-input hover:bg-accent hover:text-accent-foreground",
primary: primary:
"bg-background text-secondary-foreground hover:bg-background/80", "border bg-background text-secondary-foreground hover:bg-background/80 hover:shadow-sm",
secondary: secondary: "bg-muted text-secondary-foreground hover:bg-secondary/80",
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
ghost: "hover:bg-accent hover:text-accent-foreground", ghost: "hover:bg-accent hover:text-accent-foreground",
link: "underline-offset-4 hover:underline text-primary", link: "underline-offset-4 hover:underline text-primary",
}, },

View file

@ -44,7 +44,7 @@ const TabsContextInitialValue: TabsContextType = {
lastCopiedSelection: null, lastCopiedSelection: null,
setLastCopiedSelection: (selection: any) => {}, setLastCopiedSelection: (selection: any) => {},
getNodeId: (nodeType:string) => "", getNodeId: (nodeType: string) => "",
paste: ( paste: (
selection: { nodes: any; edges: any }, selection: { nodes: any; edges: any },
position: { x: number; y: number; paneX?: number; paneY?: number } position: { x: number; y: number; paneX?: number; paneY?: number }
@ -281,8 +281,8 @@ export function TabsProvider({ children }: { children: ReactNode }) {
}); });
} }
function getNodeId(nodeType:string) { function getNodeId(nodeType: string) {
return nodeType+"-"+incrementNodeId(); return nodeType + "-" + incrementNodeId();
} }
/** /**
@ -376,7 +376,7 @@ export function TabsProvider({ children }: { children: ReactNode }) {
? { x: position.paneX + position.x, y: position.paneY + position.y } ? { x: position.paneX + position.x, y: position.paneY + position.y }
: reactFlowInstance.project({ x: position.x, y: position.y }); : reactFlowInstance.project({ x: position.x, y: position.y });
selectionInstance.nodes.forEach((n:NodeType) => { selectionInstance.nodes.forEach((n: NodeType) => {
// Generate a unique node ID // Generate a unique node ID
let newId = getNodeId(n.data.type); let newId = getNodeId(n.data.type);
idsMap[n.id] = newId; idsMap[n.id] = newId;

View file

@ -33,8 +33,8 @@
--ring: 215 20.2% 65.1%; /* hsl(215 20% 65%) */ --ring: 215 20.2% 65.1%; /* hsl(215 20% 65%) */
--radius: 0.5rem; --radius: 0.5rem;
} }
.dark { .dark {
--background: 224 71% 4%; /* hsl(224 71% 4%) */ --background: 224 71% 4%; /* hsl(224 71% 4%) */
@ -66,9 +66,9 @@
--ring: 216 34% 17%; /* hsl(216 34% 17%) */ --ring: 216 34% 17%; /* hsl(216 34% 17%) */
--radius: 0.5rem; --radius: 0.5rem;
}
} }
}
:root { :root {
--background: 0 0% 100%; /* hsl(0 0% 100%) */ --background: 0 0% 100%; /* hsl(0 0% 100%) */
@ -94,25 +94,44 @@
} }
.dark { .dark {
-background: 224 71% 4%; /* hsl(224 71% 4%) */ -background: 224 71% 4%;
-foreground: 213 31% 91%; /* hsl(213 31% 91%) */ /* hsl(224 71% 4%) */
-muted: 223 47% 11%; /* hsl(223 47% 11%) */ -foreground: 213 31% 91%;
-muted-foreground: 215.4 16.3% 56.9%; /* hsl(215 16% 56%) */ /* hsl(213 31% 91%) */
-popover: 224 71% 4%; /* hsl(224 71% 4%) */ -muted: 223 47% 11%;
-popover-foreground: 215 20.2% 65.1%; /* hsl(215 20% 65%) */ /* hsl(223 47% 11%) */
-card: 224 71% 4%; /* hsl(224 71% 4%) */ -muted-foreground: 215.4 16.3% 56.9%;
-card-foreground: 213 31% 91%; /* hsl(213 31% 91%) */ /* hsl(215 16% 56%) */
-border: 216 34% 17%; /* hsl(216 34% 17%) */ -popover: 224 71% 4%;
-input: 216 34% 17%; /* hsl(216 34% 17%) */ /* hsl(224 71% 4%) */
-primary: 210 40% 98%; /* hsl(210 40% 98%) */ -popover-foreground: 215 20.2% 65.1%;
-primary-foreground: 222.2 47.4% 1.2%; /* hsl(222 47% 1%) */ /* hsl(215 20% 65%) */
-secondary: 222.2 47.4% 11.2%; /* hsl(222 47% 11%) */ -card: 224 71% 4%;
-secondary-foreground: 210 40% 98%; /* hsl(210 40% 98%) */ /* hsl(224 71% 4%) */
-accent: 216 34% 17%; /* hsl(216 34% 17%) */ -card-foreground: 213 31% 91%;
-accent-foreground: 210 40% 98%; /* hsl(210 40% 98%) */ /* hsl(213 31% 91%) */
-destructive: 0 63% 31%; /* hsl(0 63% 31%) */ -border: 216 34% 17%;
-destructive-foreground: 210 40% 98%; /* hsl(210 40% 98%) */ /* hsl(216 34% 17%) */
-ring: 216 34% 17%; /* hsl(216 34% 17%) */ -input: 216 34% 17%;
/* hsl(216 34% 17%) */
-primary: 210 40% 98%;
/* hsl(210 40% 98%) */
-primary-foreground: 222.2 47.4% 1.2%;
/* hsl(222 47% 1%) */
-secondary: 222.2 47.4% 11.2%;
/* hsl(222 47% 11%) */
-secondary-foreground: 210 40% 98%;
/* hsl(210 40% 98%) */
-accent: 216 34% 17%;
/* hsl(216 34% 17%) */
-accent-foreground: 210 40% 98%;
/* hsl(210 40% 98%) */
-destructive: 0 63% 31%;
/* hsl(0 63% 31%) */
-destructive-foreground: 210 40% 98%;
/* hsl(210 40% 98%) */
-ring: 216 34% 17%;
/* hsl(216 34% 17%) */
-radius: 0.5rem; -radius: 0.5rem;
} }

View file

@ -33,6 +33,7 @@ import {
DialogTrigger, DialogTrigger,
} from "../../components/ui/dialog"; } from "../../components/ui/dialog";
import { Button } from "../../components/ui/button"; import { Button } from "../../components/ui/button";
import { Edit } from "lucide-react";
import { Badge } from "../../components/ui/badge"; import { Badge } from "../../components/ui/badge";
export default function EditNodeModal({ data }: { data: NodeDataType }) { export default function EditNodeModal({ data }: { data: NodeDataType }) {
@ -55,7 +56,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
const { closePopUp } = useContext(PopUpContext); const { closePopUp } = useContext(PopUpContext);
const { types } = useContext(typesContext); const { types } = useContext(typesContext);
const ref = useRef(); const ref = useRef();
const { save } = useContext(TabsContext);
const [enabled, setEnabled] = useState(null); const [enabled, setEnabled] = useState(null);
if (nodeLength == 0) { if (nodeLength == 0) {
closePopUp(); closePopUp();
@ -160,7 +160,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
} }
onChange={(t: string[]) => { onChange={(t: string[]) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
) : data.node.template[n].multiline ? ( ) : data.node.template[n].multiline ? (
@ -170,7 +169,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
) : ( ) : (
@ -183,7 +181,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
)} )}
@ -196,7 +193,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
setEnabled={(e) => { setEnabled={(e) => {
data.node.template[n].value = e; data.node.template[n].value = e;
setEnabled(e); setEnabled(e);
save();
}} }}
size="small" size="small"
disabled={false} disabled={false}
@ -210,7 +206,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
</div> </div>
@ -238,7 +233,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
</div> </div>
@ -255,7 +249,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
suffixes={data.node.template[n].suffixes} suffixes={data.node.template[n].suffixes}
onFileChange={(t: string) => { onFileChange={(t: string) => {
data.node.template[n].content = t; data.node.template[n].content = t;
save();
}} }}
></InputFileComponent> ></InputFileComponent>
</div> </div>
@ -267,7 +260,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
</div> </div>
@ -279,7 +271,6 @@ export default function EditNodeModal({ data }: { data: NodeDataType }) {
value={data.node.template[n].value ?? ""} value={data.node.template[n].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[n].value = t; data.node.template[n].value = t;
save();
}} }}
/> />
</div> </div>

View file

@ -21,7 +21,6 @@ export default function ModalField({
type, type,
index, index,
}) { }) {
const { save } = useContext(TabsContext);
const [enabled, setEnabled] = useState( const [enabled, setEnabled] = useState(
data.node.template[name]?.value ?? false data.node.template[name]?.value ?? false
); );
@ -71,7 +70,6 @@ export default function ModalField({
} }
onChange={(t: string[]) => { onChange={(t: string[]) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
) : data.node.template[name].multiline ? ( ) : data.node.template[name].multiline ? (
@ -80,7 +78,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
) : ( ) : (
@ -90,7 +87,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
)} )}
@ -104,7 +100,6 @@ export default function ModalField({
setEnabled={(t) => { setEnabled={(t) => {
data.node.template[name].value = t; data.node.template[name].value = t;
setEnabled(t); setEnabled(t);
save();
}} }}
/> />
</div> </div>
@ -115,7 +110,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
</div> </div>
@ -134,7 +128,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t) => { onChange={(t) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
</div> </div>
@ -150,7 +143,6 @@ export default function ModalField({
suffixes={data.node.template[name].suffixes} suffixes={data.node.template[name].suffixes}
onFileChange={(t: string) => { onFileChange={(t: string) => {
data.node.template[name].content = t; data.node.template[name].content = t;
save();
}} }}
></InputFileComponent> ></InputFileComponent>
</div> </div>
@ -161,7 +153,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
</div> </div>
@ -172,7 +163,6 @@ export default function ModalField({
value={data.node.template[name].value ?? ""} value={data.node.template[name].value ?? ""}
onChange={(t: string) => { onChange={(t: string) => {
data.node.template[name].value = t; data.node.template[name].value = t;
save();
}} }}
/> />
</div> </div>

View file

@ -16,6 +16,7 @@ import {
import { Button } from "../../components/ui/button"; import { Button } from "../../components/ui/button";
import { Checkbox } from "../../components/ui/checkbox"; import { Checkbox } from "../../components/ui/checkbox";
import { EXPORT_DIALOG_SUBTITLE } from "../../constants"; import { EXPORT_DIALOG_SUBTITLE } from "../../constants";
import { Download } from "lucide-react";
import EditFlowSettings from "../../components/EditFlowSettingsComponent"; import EditFlowSettings from "../../components/EditFlowSettingsComponent";
export default function ExportModal() { export default function ExportModal() {
@ -45,7 +46,7 @@ export default function ExportModal() {
<DialogHeader> <DialogHeader>
<DialogTitle className="flex items-center"> <DialogTitle className="flex items-center">
<span className="pr-2">Export</span> <span className="pr-2">Export</span>
<ArrowDownTrayIcon <Download
className="h-6 w-6 text-gray-800 pl-1 dark:text-white" className="h-6 w-6 text-gray-800 pl-1 dark:text-white"
aria-hidden="true" aria-hidden="true"
/> />

View file

@ -79,14 +79,13 @@ export default function ImportModal() {
<div className="z-50 absolute top-2 left-0 hidden pt-4 pl-4 sm:block"> <div className="z-50 absolute top-2 left-0 hidden pt-4 pl-4 sm:block">
<button <button
type="button" type="button"
className="rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500 focus:ring-offset-1" className="rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"
onClick={() => { onClick={() => {
setShowExamples(false); setShowExamples(false);
}} }}
> >
<span className="sr-only">Close</span>
<ArrowLeftIcon <ArrowLeftIcon
className="h-6 w-6 text-gray-800 ml-1 dark:text-white" className="h-5 w-5 text-gray-800 ml-1 dark:text-white"
aria-hidden="true" aria-hidden="true"
/> />
</button> </button>
@ -98,7 +97,7 @@ export default function ImportModal() {
{showExamples ? "Select an example" : "Import"} {showExamples ? "Select an example" : "Import"}
</span> </span>
<ArrowUpTrayIcon <ArrowUpTrayIcon
className="h-6 w-6 text-gray-800 ml-1 dark:text-white" className="h-5 w-5 text-gray-800 ml-1 dark:text-white"
aria-hidden="true" aria-hidden="true"
/> />
</DialogTitle> </DialogTitle>

View file

@ -21,6 +21,7 @@ import { alertContext } from "../../../../contexts/alertContext";
import { updateFlowInDatabase } from "../../../../controllers/API"; import { updateFlowInDatabase } from "../../../../controllers/API";
import { INPUT_STYLE } from "../../../../constants"; import { INPUT_STYLE } from "../../../../constants";
import { Input } from "../../../../components/ui/input"; import { Input } from "../../../../components/ui/input";
import { Separator } from "../../../../components/ui/separator";
export default function ExtraSidebar() { export default function ExtraSidebar() {
const { data } = useContext(typesContext); const { data } = useContext(typesContext);
@ -71,14 +72,14 @@ export default function ExtraSidebar() {
} }
return ( return (
<div className="flex flex-col overflow-hidden scrollbar-hide h-full border-r"> <div className="flex flex-col overflow-hidden scrollbar-hide h-full border-r w-[200px]">
<div className="mt-2 mb-2 w-full flex gap-2 justify-between px-2 items-center"> <div className="mt-2 mb-2 w-full flex gap-2 justify-between px-2 items-center">
<ShadTooltip delayDuration={1000} content="Import" side="top"> <ShadTooltip delayDuration={1000} content="Import" side="top">
<button <button
className="hover:dark:hover:bg-[#242f47] text-gray-700 w-full justify-center shadow-sm transition-all duration-500 ease-in-out dark:bg-gray-800 dark:text-gray-300 relative inline-flex items-center rounded-md bg-white px-2 py-2 ring-1 ring-inset ring-gray-300 hover:bg-gray-50" className="hover:dark:hover:bg-[#242f47] text-gray-700 w-full justify-center shadow-sm transition-all duration-500 ease-in-out dark:bg-gray-800 dark:text-gray-300 relative inline-flex items-center rounded-md bg-white px-2 py-2 ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
onClick={() => { onClick={() => {
// openPopUp(<ImportModal />); // openPopUp(<ImportModal />);
uploadFlow() uploadFlow();
}} }}
> >
<FileUp className="w-5 h-5 dark:text-gray-300"></FileUp> <FileUp className="w-5 h-5 dark:text-gray-300"></FileUp>
@ -122,9 +123,9 @@ export default function ExtraSidebar() {
</button> </button>
</ShadTooltip> </ShadTooltip>
</div> </div>
{/* <Separator /> */} <Separator />
<div className="relative mt-2 flex items-center mb-2 mx-2"> <div className="relative mt-2 flex items-center mb-2 mx-auto">
<Input <input
type="text" type="text"
name="search" name="search"
id="search" id="search"

View file

@ -6,6 +6,7 @@ import {
SVGProps, SVGProps,
} from "react"; } from "react";
import { NodeDataType } from "../flow/index"; import { NodeDataType } from "../flow/index";
import { typesContextType } from "../typesContext";
export type InputComponentType = { export type InputComponentType = {
value: string; value: string;
disabled?: boolean; disabled?: boolean;
@ -39,6 +40,7 @@ export type ParameterComponentType = {
required?: boolean; required?: boolean;
name?: string; name?: string;
tooltipTitle: string; tooltipTitle: string;
dataContext?: typesContextType;
}; };
export type InputListComponentType = { export type InputListComponentType = {
value: string[]; value: string[];

View file

@ -17,7 +17,7 @@ export type TabsContextType = {
//disable CopyPaste //disable CopyPaste
disableCopyPaste: boolean; disableCopyPaste: boolean;
setDisableCopyPaste: (value: boolean) => void; setDisableCopyPaste: (value: boolean) => void;
getNodeId: (nodeType:string) => string; getNodeId: (nodeType: string) => string;
paste: ( paste: (
selection: { nodes: any; edges: any }, selection: { nodes: any; edges: any },
position: { x: number; y: number; paneX?: number; paneY?: number } position: { x: number; y: number; paneX?: number; paneY?: number }

View file

@ -644,7 +644,7 @@ export function checkUpperWords(str: string) {
export function updateIds(newFlow, getNodeId) { export function updateIds(newFlow, getNodeId) {
let idsMap = {}; let idsMap = {};
newFlow.nodes.forEach((n:NodeType) => { newFlow.nodes.forEach((n: NodeType) => {
// Generate a unique node ID // Generate a unique node ID
let newId = getNodeId(n.data.type); let newId = getNodeId(n.data.type);
idsMap[n.id] = newId; idsMap[n.id] = newId;