import {UseFormReturnType} from "@mantine/form"; import {Button, Flex, rem} from "@mantine/core"; import {FC} from "react"; type CreateProps = { onCreate(values: T): void; } type EditProps = { onChange(values: T): void; element: T; } export type CreateEditFormProps = CreateProps | EditProps; type BaseProps = { form: UseFormReturnType onClose: () => void; closeOnSubmit?: boolean; children: React.JSX.Element; } type Props = BaseProps & (CreateProps | EditProps); const BaseFormModal = (props: Props) => { const {closeOnSubmit = false} = props; const isEditing = 'onChange' in props; const onSubmit = (values: T) => { console.log('----values'); console.log(values) if (isEditing) { props.onChange(values); } else { props.onCreate(values); } if (closeOnSubmit) props.onClose(); } return (
onSubmit(values))}> {props.children}
) } type BodyProps = { children: React.JSX.Element; } const Body: FC = ({children}) => { return ( {children} ) } BaseFormModal.Body = Body; export default BaseFormModal;