import React from "react"; import { Card, PageHeader, PageHeaderProps, Space, Spin } from "antd"; import { ResourceRouterParams } from "../../../interfaces"; import { EditButton, DeleteButton, RefreshButton, ListButton, } from "@components"; import { useNavigation, useResourceWithRoute, useRouterContext, useTranslate, } from "@hooks"; import { userFriendlyResourceName } from "@definitions"; export interface ShowProps { title?: string; canEdit?: boolean; canDelete?: boolean; actionButtons?: React.ReactNode; isLoading?: boolean; pageHeaderProps?: PageHeaderProps; resource?: string; recordItemId?: string; } /** * `` 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/show} for more details. */ export const Show: React.FC = ({ title, canEdit, canDelete, actionButtons, isLoading = false, children, pageHeaderProps, resource: resourceFromProps, recordItemId, }) => { const translate = useTranslate(); const { goBack, list } = useNavigation(); const resourceWithRoute = useResourceWithRoute(); const { useParams } = useRouterContext(); const { resource: routeResourceName, action: routeFromAction, id: idFromRoute, } = useParams(); const resource = resourceWithRoute(resourceFromProps ?? routeResourceName); const isDeleteButtonVisible = canDelete ?? resource.canDelete; const isEditButtonVisible = canEdit ?? resource.canEdit; const id = recordItemId ?? encodeURIComponent(idFromRoute); return ( {!recordItemId && ( )} {isEditButtonVisible && ( )} {isDeleteButtonVisible && ( list(resource.route ?? resource.name) } /> )} } {...pageHeaderProps} > {children} ); };