import React, { FC, useState } from 'react'; import { Stack, Button, IconButton, Tooltip, Chip, Badge } from "@mui/material"; import { AddPair, deletePair, UpdatePair } from "../../api/workflow"; import { WorkflowFile } from "maxun-core"; import { ClearButton } from "../atoms/buttons/ClearButton"; import { GenericModal } from "../atoms/GenericModal"; import { PairEditForm } from "./PairEditForm"; import { PairDisplayDiv } from "../atoms/PairDisplayDiv"; import { EditButton } from "../atoms/buttons/EditButton"; import { BreakpointButton } from "../atoms/buttons/BreakpointButton"; import VisibilityIcon from '@mui/icons-material/Visibility'; import styled from "styled-components"; import { LoadingButton } from "@mui/lab"; type WhereWhatPair = WorkflowFile["workflow"][number]; interface PairProps { handleBreakpoint: () => void; isActive: boolean; index: number; pair: WhereWhatPair; updateWorkflow: (workflow: WorkflowFile) => void; numberOfPairs: number; handleSelectPairForEdit: (pair: WhereWhatPair, index: number) => void; } export const Pair: FC = ( { handleBreakpoint, isActive, index, pair, updateWorkflow, numberOfPairs, handleSelectPairForEdit }) => { const [open, setOpen] = useState(false); const [edit, setEdit] = useState(false); const [breakpoint, setBreakpoint] = useState(false); const enableEdit = () => setEdit(true); const disableEdit = () => setEdit(false); const handleOpen = () => setOpen(true); const handleClose = () => { setOpen(false); disableEdit(); } const handleDelete = () => { deletePair(index - 1).then((updatedWorkflow) => { updateWorkflow(updatedWorkflow); }).catch((error) => { console.error(error); }); }; const handleEdit = (pair: WhereWhatPair, newIndex: number) => { if (newIndex !== index){ AddPair((newIndex - 1), pair).then((updatedWorkflow) => { updateWorkflow(updatedWorkflow); }).catch((error) => { console.error(error); }); } else { UpdatePair((index - 1), pair).then((updatedWorkflow) => { updateWorkflow(updatedWorkflow); }).catch((error) => { console.error(error); }); } handleClose(); }; const handleBreakpointClick = () => { setBreakpoint(!breakpoint); handleBreakpoint(); }; return (
{isActive ? : breakpoint ? : }
{ enableEdit(); handleOpen(); }} />
{ edit ? :
}
); }; interface ViewButtonProps { handleClick: () => void; } const ViewButton = ({handleClick}: ViewButtonProps) => { return ( ); } const PairWrapper = styled.div<{ isActive: boolean }>` background-color: ${({ isActive }) => isActive ? 'rgba(255, 0, 0, 0.1)' : 'transparent' }; border: ${({ isActive }) => isActive ? 'solid 2px red' : 'none' }; display: flex; flex-direction: row; flex-grow: 1; width: 98%; color: gray; &:hover { color: dimgray; background: ${({ isActive }) => isActive ? 'rgba(255, 0, 0, 0.1)' : 'transparent' }; } `;