import React from "react"; import { Card, Space, ButtonProps, PageHeader, PageHeaderProps, Spin, } from "antd"; import { useResourceWithRoute, useMutationMode, useNavigation, useTranslate, useRouterContext, } from "@hooks"; import { DeleteButton, RefreshButton, ListButton, DeleteButtonProps, SaveButton, } from "@components"; import { userFriendlyResourceName } from "@definitions"; import { MutationMode, ResourceRouterParams } from "../../../interfaces"; export interface EditProps { title?: string; actionButtons?: React.ReactNode; saveButtonProps?: ButtonProps; mutationMode?: MutationMode; recordItemId?: string; pageHeaderProps?: PageHeaderProps; canDelete?: boolean; deleteButtonProps?: DeleteButtonProps; resource?: string; isLoading?: boolean; } /** * `` provides us a layout for displaying the page. * It does not contain any logic but adds extra functionalities like a refresh button. * * @see {@link https://refine.dev/docs/api-references/components/basic-views/edit} for more details. */ export const Edit: React.FC = ({ title, actionButtons, saveButtonProps, mutationMode: mutationModeProp, recordItemId, children, deleteButtonProps, pageHeaderProps, canDelete, resource: resourceFromProps, isLoading = false, }) => { const translate = useTranslate(); const { goBack, list } = useNavigation(); const resourceWithRoute = useResourceWithRoute(); const { mutationMode: mutationModeContext } = useMutationMode(); const mutationMode = mutationModeProp ?? mutationModeContext; const { useParams } = useRouterContext(); const { resource: routeResourceName, action: routeFromAction, id: idFromRoute, } = useParams(); const resource = resourceWithRoute(resourceFromProps ?? routeResourceName); const isDeleteButtonVisible = canDelete ?? (resource.canDelete || deleteButtonProps); return ( {!recordItemId && ( )} } {...pageHeaderProps} > {actionButtons ?? ( <> {isDeleteButtonVisible && ( { list( resource.route ?? resource.name, ); }} {...deleteButtonProps} /> )} )} , ]} > {children} ); };