diff --git a/services/frontend/src/components/modals/docker-compose/volume/CreateVolumeModal.tsx b/services/frontend/src/components/modals/docker-compose/volume/CreateVolumeModal.tsx index e72154f..f3dde86 100644 --- a/services/frontend/src/components/modals/docker-compose/volume/CreateVolumeModal.tsx +++ b/services/frontend/src/components/modals/docker-compose/volume/CreateVolumeModal.tsx @@ -1,5 +1,4 @@ -import { useCallback, useMemo, useState } from "react"; -import { Formik } from "formik"; +import { useCallback } from "react"; import { getFinalValues, @@ -7,14 +6,13 @@ import { tabs, validationSchema } from "./form-utils"; -import General from "./General"; -import { CallbackFunction, IEditVolumeForm } from "../../../../types"; +import { + CallbackFunction, + IEditVolumeForm, + IVolumeNodeItem +} from "../../../../types"; import { toaster } from "../../../../utils"; -import { reportErrorsAndSubmit } from "../../../../utils/forms"; -import { ScrollView } from "../../../ScrollView"; -import Modal from "../../../Modal"; -import Tabs from "../../../Tabs"; -import Tab from "../../../Tab"; +import FormModal from "../../../FormModal"; interface ICreateVolumeModalProps { onHide: CallbackFunction; @@ -23,51 +21,25 @@ interface ICreateVolumeModalProps { const CreateVolumeModal = (props: ICreateVolumeModalProps) => { const { onHide, onAddEndpoint } = props; - const [openTab, setOpenTab] = useState("General"); - - const handleCreate = useCallback((values: IEditVolumeForm, formik: any) => { - onAddEndpoint(getFinalValues(values)); - formik.resetForm(); - onHide(); - - toaster(`Created "${values.entryName}" volume successfully`, "success"); - }, []); - const initialValues = useMemo(() => getInitialValues(), []); + const handleCreate = useCallback( + (finalValues: IVolumeNodeItem, values: IEditVolumeForm) => { + onAddEndpoint(finalValues); + toaster(`Created "${values.entryName}" volume successfully`, "success"); + }, + [onAddEndpoint] + ); return ( - - - {(formik) => ( - <> - - {tabs.map((tab) => ( - - ))} - - - - {openTab === "General" && } - - - - - Add - - - > - )} - - + ); }; diff --git a/services/frontend/src/components/modals/docker-compose/volume/EditVolumeModal.tsx b/services/frontend/src/components/modals/docker-compose/volume/EditVolumeModal.tsx index 04295cf..608a9fa 100644 --- a/services/frontend/src/components/modals/docker-compose/volume/EditVolumeModal.tsx +++ b/services/frontend/src/components/modals/docker-compose/volume/EditVolumeModal.tsx @@ -1,7 +1,4 @@ -import { useEffect, useMemo, useState } from "react"; -import { Formik } from "formik"; -import { XIcon } from "@heroicons/react/outline"; -import General from "./General"; +import { useEffect, useState } from "react"; import type { CallbackFunction, IEditVolumeForm, @@ -14,10 +11,7 @@ import { validationSchema } from "./form-utils"; import { toaster } from "../../../../utils"; -import { reportErrorsAndSubmit } from "../../../../utils/forms"; -import { ScrollView } from "../../../ScrollView"; -import Tabs from "../../../Tabs"; -import Tab from "../../../Tab"; +import FormModal from "../../../FormModal"; interface IEditVolumeModal { node: IVolumeNodeItem; @@ -27,7 +21,6 @@ interface IEditVolumeModal { const EditVolumeModal = (props: IEditVolumeModal) => { const { node, onHide, onUpdateEndpoint } = props; - const [openTab, setOpenTab] = useState("General"); const [selectedNode, setSelectedNode] = useState(); useEffect(() => { @@ -36,77 +29,25 @@ const EditVolumeModal = (props: IEditVolumeModal) => { } }, [node]); - const handleUpdate = (values: IEditVolumeForm) => { - onUpdateEndpoint(getFinalValues(values, selectedNode)); - + const handleUpdate = ( + finalValues: IVolumeNodeItem, + values: IEditVolumeForm + ) => { + onUpdateEndpoint(finalValues); toaster(`Updated "${values.entryName}" volume successfully`, "success"); }; - const initialValues = useMemo( - () => getInitialValues(selectedNode), - [selectedNode] - ); - return ( - - - - - - - Edit top level volumes - - - - - - - - {selectedNode && ( - - {(formik) => ( - <> - - {tabs.map((tab) => ( - - ))} - - - - {openTab === "General" && } - - - - - Save - - - > - )} - - )} - - - - + ); }; diff --git a/services/frontend/src/components/modals/docker-compose/volume/form-utils.ts b/services/frontend/src/components/modals/docker-compose/volume/form-utils.ts index 89d19b7..711c0ba 100644 --- a/services/frontend/src/components/modals/docker-compose/volume/form-utils.ts +++ b/services/frontend/src/components/modals/docker-compose/volume/form-utils.ts @@ -1,6 +1,7 @@ import * as yup from "yup"; import { IEditVolumeForm, IVolumeNodeItem } from "../../../../types"; import { pruneObject } from "../../../../utils/forms"; +import General from "./General"; export const validationSchema = yup.object({ entryName: yup @@ -74,6 +75,8 @@ export const getFinalValues = ( export const tabs = [ { - name: "General" + title: "General", + value: "general", + component: General } ];