finishing slicing ui client benefit config

This commit is contained in:
korospace
2023-10-30 18:32:50 +07:00
parent e34ec97d27
commit de476ad3be
9 changed files with 497 additions and 29 deletions

View File

@@ -0,0 +1,194 @@
import { useEffect, useState } from 'react';
import { Box, Grid } from '@mui/material';
import Button from '@mui/material/Button';
import { styled } from '@mui/material/styles';
import Dialog from '@mui/material/Dialog';
import DialogTitle from '@mui/material/DialogTitle';
import DialogContent from '@mui/material/DialogContent';
import DialogActions from '@mui/material/DialogActions';
import IconButton from '@mui/material/IconButton';
import CloseIcon from '@mui/icons-material/Close';
import Typography from '@mui/material/Typography';
import { useForm } from 'react-hook-form';
import { FormProvider, RHFTextField } from '@/components/hook-form';
/**
* Custom Style
* =====================================================
*/
const BootstrapDialog = styled(Dialog)(({ theme }) => ({
}));
/**
* Utils, Types, Functions
* ============================================
*/
import { BenefitConfigurationListType } from '../Model/Types';
import palette from '@/theme/palette';
/**
* Props
* =====================================================
*/
type Props = {
data?: BenefitConfigurationListType,
isOpen: boolean,
handleCancleProp: () => void,
};
export default function BenefitConfigurationDialog({ ...props }: Props) {
// setup form
// ====================================
const defaultValues: BenefitConfigurationListType = {
benefit_name: '',
amount_incurred: 0,
amount_approved: 0,
amount_not_approved: 0,
excess_paid: 0,
};
const methods = useForm<any>({
defaultValues
});
const { handleSubmit, reset, setValue, formState: { isDirty, isSubmitting } } = methods;
// Submit Form
// =====================================
const submitHandler = async (data: BenefitConfigurationListType) => {
return true;
}
// Set Value Form
// =====================================
useEffect(() => {
setValue('amount_incurred', props.data?.amount_incurred)
setValue('amount_approved', props.data?.amount_approved)
setValue('amount_not_approved', props.data?.amount_not_approved)
setValue('excess_paid', props.data?.excess_paid)
}, [props.data])
return (
<FormProvider methods={methods} onSubmit={handleSubmit(submitHandler)}>
<BootstrapDialog
onClose={props.handleCancleProp}
aria-labelledby="customized-dialog-title"
open={props.isOpen}
maxWidth={'md'}
>
<DialogTitle sx={{ m: 0, p: 2, background: palette.light.primary.main, color: palette.light.grey[0], display: 'flex', alignItems: 'center', justifyContent: 'space-between' }} id="customized-dialog-title">
<Typography variant="body2" sx={{ fontWeight: 'bold' }}>
Client Benefit Configuration
</Typography>
<IconButton
aria-label="close"
onClick={props.handleCancleProp}
sx={{color: (theme) => theme.palette.grey[0]}}
>
<CloseIcon />
</IconButton>
</DialogTitle>
<DialogContent sx={{ p: '0px' }}>
<Box sx={{ py: '24px', px: '32px'}}>
<Box sx={{ p: '24px', border: '1px solid rgba(0,0,0,0.125)', borderRadius: '12px'}}>
<Grid container spacing={3}>
{/* Benefit Name */}
<Grid item xs={12}>
<Typography variant="body2" sx={{ fontWeight: 'bold'}}>
{props.data?.benefit_name}
</Typography>
</Grid>
<Grid item xs={12}>
<Grid container spacing={3}>
<Grid item xs={3}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="body2" component="div">
Amount Incurred*
</Typography>
</Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextField
id="amount_incurred"
name='amount_incurred'
placeholder='Amount Incurred'
/>
</Grid>
</Grid>
</Grid>
<Grid item xs={3}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="body2" component="div">
Amount Approved*
</Typography>
</Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextField
id="amount_approved"
name='amount_approved'
placeholder='Amount Approved'
/>
</Grid>
</Grid>
</Grid>
<Grid item xs={3}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="body2" component="div">
Amount Not Approved*
</Typography>
</Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextField
id="amount_not_approved"
name='amount_not_approved'
placeholder='Amount Not Approved'
/>
</Grid>
</Grid>
</Grid>
<Grid item xs={3}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="body2" component="div">
Excess Paid*
</Typography>
</Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextField
id="excess_paid"
name='excess_paid'
placeholder='Excess Paid'
/>
</Grid>
</Grid>
</Grid>
</Grid>
</Grid>
</Grid>
</Box>
</Box>
</DialogContent>
<DialogActions>
<Button variant='outlined' onClick={props.handleCancleProp} aria-label="close">
Cancle
</Button>
<Button variant='contained' onClick={props.handleCancleProp}>
Save
</Button>
</DialogActions>
</BootstrapDialog>
</FormProvider>
);
}