Feat: Add minimize icon and conditional render

This commit is contained in:
igorrCarvalho 2023-09-12 14:25:04 -03:00
commit b06cb9507f
3 changed files with 84 additions and 71 deletions

View file

@ -14,6 +14,7 @@ import { cleanEdges } from "../../utils/reactflowUtils";
import { nodeColors, nodeIconsLucide } from "../../utils/styleUtils"; import { nodeColors, nodeIconsLucide } from "../../utils/styleUtils";
import { classNames, toTitleCase } from "../../utils/utils"; import { classNames, toTitleCase } from "../../utils/utils";
import ParameterComponent from "./components/parameterComponent"; import ParameterComponent from "./components/parameterComponent";
import { Button } from "@mui/material";
export default function GenericNode({ export default function GenericNode({
data: olddata, data: olddata,
@ -29,6 +30,7 @@ export default function GenericNode({
const name = nodeIconsLucide[data.type] ? data.type : types[data.type]; const name = nodeIconsLucide[data.type] ? data.type : types[data.type];
const [validationStatus, setValidationStatus] = const [validationStatus, setValidationStatus] =
useState<validationStatusType | null>(null); useState<validationStatusType | null>(null);
const [showNode, setShowNode] = useState<boolean>(true);
// State for outline color // State for outline color
const { sseData, isBuilding } = useSSE(); const { sseData, isBuilding } = useSSE();
useEffect(() => { useEffect(() => {
@ -84,6 +86,13 @@ export default function GenericNode({
<div className="beta-badge-content">BETA</div> <div className="beta-badge-content">BETA</div>
</div> </div>
)} )}
<div>
<div className="grid justify-items-end bg-muted pt-2 pr-2 border-b rounded-t-lg">
<IconComponent
name="Minus"
className="hover:text-accent-foreground text-muted-foreground"
/>
</div>
<div className="generic-node-div-title"> <div className="generic-node-div-title">
<div className="generic-node-title-arrangement"> <div className="generic-node-title-arrangement">
<IconComponent <IconComponent
@ -157,6 +166,7 @@ export default function GenericNode({
</div> </div>
</div> </div>
</div> </div>
</div>
<div className="generic-node-desc"> <div className="generic-node-desc">
<div className="generic-node-desc-text">{data.node?.description}</div> <div className="generic-node-desc-text">{data.node?.description}</div>
@ -167,7 +177,8 @@ export default function GenericNode({
.map((templateField: string, idx) => ( .map((templateField: string, idx) => (
<div key={idx}> <div key={idx}>
{data.node!.template[templateField].show && {data.node!.template[templateField].show &&
!data.node!.template[templateField].advanced ? ( !data.node!.template[templateField].advanced &&
showNode ? (
<ParameterComponent <ParameterComponent
key={ key={
(data.node!.template[templateField].input_types?.join( (data.node!.template[templateField].input_types?.join(

View file

@ -267,7 +267,7 @@
@apply relative flex w-96 flex-col justify-center rounded-lg bg-background; @apply relative flex w-96 flex-col justify-center rounded-lg bg-background;
} }
.generic-node-div-title { .generic-node-div-title {
@apply flex w-full items-center justify-between gap-8 rounded-t-lg border-b bg-muted p-4; @apply flex w-full items-center justify-between gap-8 border-b bg-muted p-4;
} }
.generic-node-title-arrangement { .generic-node-title-arrangement {
@apply flex-max-width items-center truncate; @apply flex-max-width items-center truncate;

View file

@ -78,6 +78,7 @@ import {
X, X,
XCircle, XCircle,
Zap, Zap,
Minus
} from "lucide-react"; } from "lucide-react";
import { FaApple, FaGithub } from "react-icons/fa"; import { FaApple, FaGithub } from "react-icons/fa";
import { AirbyteIcon } from "../icons/Airbyte"; import { AirbyteIcon } from "../icons/Airbyte";
@ -308,4 +309,5 @@ export const nodeIconsLucide: iconsType = {
Key, Key,
Unplug, Unplug,
ChevronUp, ChevronUp,
Minus,
}; };