import React from 'react'; import { makeStyles, Theme, createStyles } from '@material-ui/core/styles'; import { Button, LinearProgress, Typography } from '@material-ui/core'; import { RestControllerProps } from './RestController'; const useStyles = makeStyles((theme: Theme) => createStyles({ loadingSettings: { margin: theme.spacing(0.5), }, loadingSettingsDetails: { margin: theme.spacing(4), textAlign: "center" }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), } }) ); export type RestFormProps = Omit, "loading" | "errorMessage"> & { data: D }; interface RestFormLoaderProps extends RestControllerProps { render: (props: RestFormProps) => JSX.Element; } export default function RestFormLoader(props: RestFormLoaderProps) { const { loading, errorMessage, loadData, render, data, ...rest } = props; const classes = useStyles(); if (loading || !data) { return (
Loading...
); } if (errorMessage) { return (
{errorMessage}
); } return render({ ...rest, loadData, data }); }