From 9b2ba72671e0e0839d62da0550aaa1b44757fa13 Mon Sep 17 00:00:00 2001 From: Samuel Rowe Date: Sat, 30 Jul 2022 13:00:29 +0530 Subject: [PATCH] refactor(frontend): updated general form of service modal to use `Records` component --- .../src/components/Modal/service/General.tsx | 172 +++++------------- 1 file changed, 50 insertions(+), 122 deletions(-) diff --git a/services/frontend/src/components/Modal/service/General.tsx b/services/frontend/src/components/Modal/service/General.tsx index bdbe10d..dc7bf36 100644 --- a/services/frontend/src/components/Modal/service/General.tsx +++ b/services/frontend/src/components/Modal/service/General.tsx @@ -1,12 +1,8 @@ +import { styled } from "@mui/joy"; import TextField from "../../global/FormElements/TextField"; -import { useCallback } from "react"; -import { PlusIcon } from "@heroicons/react/outline"; -import { Button, styled } from "@mui/joy"; -import { useFormikContext } from "formik"; -import Record from "../../Record"; -import { IEditServiceForm } from "../../../types"; +import Records from "../../Records"; -const Fields = styled("div")` +const Root = styled("div")` display: flex; flex-direction: column; row-gap: ${({ theme }) => theme.spacing(1)}; @@ -22,124 +18,56 @@ const ImageNameGroup = styled("div")` width: 100%; `; -const Group = styled("div")` - display: flex; - flex-direction: column; - align-items: center; -`; - -const GroupTitle = styled("h5")` - font-size: 0.85rem; - color: #374151; - font-weight: 700; - width: 100%; - text-align: left; -`; - -const Records = styled("div")` - display: flex; - flex-direction: column; - row-gap: ${({ theme }) => theme.spacing(1)}; -`; - -const AddButton = styled(Button)` - margin-top: ${({ theme }) => theme.spacing(1)}; -`; - -const Description = styled("p")` - margin-top: ${({ theme }) => theme.spacing(1)}; - text-align: center; - color: #7a7a7a; - font-size: 14px; -`; - const General = () => { - const formik = useFormikContext(); - const { ports } = formik.values; - - const handleNewPort = useCallback(() => { - formik.setFieldValue(`ports[${ports.length}]`, { - hostPort: "", - containerPort: "", - protocol: "" - }); - }, [formik]); - - const handleRemovePort = useCallback( - (index: number) => { - const newPorts = ports.filter( - (_: unknown, currentIndex: number) => currentIndex != index - ); - formik.setFieldValue(`ports`, newPorts); - }, - [formik] - ); - - const emptyPorts = ports && ports.length === 0 ? true : false; - return ( - <> - - - - - - - - - Ports - {!emptyPorts && ( - - {ports.map((_: unknown, index: number) => ( - - ))} - - )} - {emptyPorts && No service ports.} + + + + + + + - - - New port - - - - + [ + { + name: `ports[${index}].hostPort`, + placeholder: "Host Port", + required: true, + type: "text" + }, + { + name: `ports[${index}].containerPort`, + placeholder: "Container Port", + type: "text" + }, + { + name: `ports[${index}].protocol`, + placeholder: "Protocol", + type: "toggle", + options: [ + { + value: "tcp", + text: "TCP" + }, + { + value: "udp", + text: "UDP" + } + ] + } + ]} + newValue={{ + hostPort: "", + containerPort: "", + protocol: "" + }} + /> + ); };