import React from "react"; import { Box, Card, Group, ActionIcon, Stack, Title, LoadingOverlay, } from "@mantine/core"; import { ResourceRouterParams, useMutationMode, useNavigation, useRefineContext, useResourceWithRoute, userFriendlyResourceName, useRouterContext, useTranslate, } from "@pankod/refine-core"; import { IconArrowLeft } from "@tabler/icons"; import { DeleteButton, ListButton, RefreshButton, SaveButton, Breadcrumb, } from "@components"; import { EditProps } from "../types"; export const Edit: React.FC = (props) => { const { children, resource: resourceFromProps, recordItemId, deleteButtonProps, mutationMode: mutationModeFromProps, saveButtonProps, canDelete, dataProviderName, isLoading, footerButtons: footerButtonsFromProps, footerButtonProps, headerButtons: headerButtonsFromProps, headerButtonProps, wrapperProps, contentProps, headerProps, goBack: goBackFromProps, breadcrumb: breadcrumbFromProps, title, } = props; const translate = useTranslate(); const { goBack, list } = useNavigation(); const resourceWithRoute = useResourceWithRoute(); const { useParams } = useRouterContext(); const { mutationMode: mutationModeContext } = useMutationMode(); const mutationMode = mutationModeFromProps ?? mutationModeContext; const { resource: routeResourceName, action: routeFromAction, id: idFromRoute, } = useParams(); const resource = resourceWithRoute(resourceFromProps ?? routeResourceName); const isDeleteButtonVisible = canDelete ?? (resource.canDelete || deleteButtonProps); const { options } = useRefineContext(); const breadcrumb = typeof breadcrumbFromProps === "undefined" ? options?.breadcrumb : breadcrumbFromProps; const breadcrumbComponent = typeof breadcrumb !== "undefined" ? ( <>{breadcrumb} ?? undefined ) : ( ); const id = recordItemId ?? idFromRoute; const loadingOverlayVisible = isLoading ?? saveButtonProps?.disabled ?? false; const defaultHeaderButtons = ( <> {!recordItemId && ( )} ); const defaultFooterButtons = ( <> {isDeleteButtonVisible && ( { list(resource.route ?? resource.name); }} dataProviderName={dataProviderName} {...deleteButtonProps} /> )} ); const buttonBack = goBackFromProps === (false || null) ? null : ( {typeof goBackFromProps !== "undefined" ? ( goBackFromProps ) : ( )} ); const headerButtons = headerButtonsFromProps ? typeof headerButtonsFromProps === "function" ? headerButtonsFromProps({ defaultButtons: defaultHeaderButtons, }) : headerButtonsFromProps : defaultHeaderButtons; const footerButtons = footerButtonsFromProps ? typeof footerButtonsFromProps === "function" ? footerButtonsFromProps({ defaultButtons: defaultFooterButtons }) : footerButtonsFromProps : defaultFooterButtons; return ( {breadcrumbComponent} {buttonBack} {title ?? ( {translate( `${resource.name}.titles.edit`, `Edit ${userFriendlyResourceName( resource.label ?? resource.name, "singular", )}`, )} )} {headerButtons} {children} {footerButtons} ); };