import React from "react"; import { useTranslate, useUserFriendlyName, useBack, useResourceParams, } from "@refinedev/core"; import Card from "@mui/material/Card"; import CardHeader from "@mui/material/CardHeader"; import CardActions from "@mui/material/CardActions"; import CardContent from "@mui/material/CardContent"; import IconButton from "@mui/material/IconButton"; import Typography from "@mui/material/Typography"; import Box from "@mui/material/Box"; import CircularProgress from "@mui/material/CircularProgress"; import { alpha } from "@mui/system"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { Breadcrumb, SaveButton, type SaveButtonProps } from "@components"; import type { CreateProps } from "../types"; import { RefinePageHeaderClassNames } from "@refinedev/ui-types"; /** * `` provides us a layout to display the page. * It does not contain any logic but adds extra functionalities like action buttons and giving titles to the page. * * @see {@link https://refine.dev/docs/ui-frameworks/mui/components/basic-views/create} for more details. */ export const Create: React.FC = ({ title, children, saveButtonProps: saveButtonPropsFromProps, resource: resourceFromProps, isLoading = false, breadcrumb: breadcrumbFromProps, wrapperProps, headerProps, contentProps, headerButtonProps, headerButtons, footerButtonProps, footerButtons, goBack: goBackFromProps, }) => { const translate = useTranslate(); const back = useBack(); const getUserFriendlyName = useUserFriendlyName(); const { resource, action, identifier } = useResourceParams({ resource: resourceFromProps, }); const breadcrumb = breadcrumbFromProps; const breadcrumbComponent = typeof breadcrumb !== "undefined" ? <>{breadcrumb} : ; const saveButtonProps: SaveButtonProps = { ...(isLoading ? { disabled: true } : {}), ...saveButtonPropsFromProps, }; const defaultFooterButtons = ; return ( {isLoading && ( theme.zIndex.drawer + 1, // this is needed to support custom themes, dark mode etc. bgcolor: (theme) => alpha(theme.palette.background.paper, 0.4), }} > )} {breadcrumbComponent} {translate( `${identifier}.titles.create`, `Create ${getUserFriendlyName( resource?.meta?.label ?? identifier, "singular", )}`, )} ) } avatar={ typeof goBackFromProps !== "undefined" ? ( goBackFromProps ) : ( ) } action={ headerButtons ? ( {headerButtons ? typeof headerButtons === "function" ? headerButtons({ defaultButtons: null, }) : headerButtons : null} ) : undefined } {...(headerProps ?? {})} /> {children} {footerButtons ? typeof footerButtons === "function" ? footerButtons({ defaultButtons: defaultFooterButtons, saveButtonProps, }) : footerButtons : defaultFooterButtons} ); };