- added graph on dashboard - added recent txns Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
"use client"
|
|
|
|
import React from 'react'
|
|
import dayjs, { Dayjs } from 'dayjs';
|
|
import styles from './calendar.module.css'
|
|
import { CalendarPicker } from '@mui/x-date-pickers/CalendarPicker';
|
|
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
|
import { createTheme, ThemeProvider } from '@mui/material/styles';
|
|
import { styled } from '@mui/material/styles';
|
|
import { PickersDay, PickersDayProps } from '@mui/x-date-pickers/PickersDay';
|
|
|
|
|
|
interface CustomPickerDayProps extends PickersDayProps<Dayjs> {
|
|
dayIsBetween: boolean;
|
|
isFirstDay: boolean;
|
|
isLastDay: boolean;
|
|
}
|
|
|
|
|
|
const CustomPickersDay = styled(PickersDay, {
|
|
shouldForwardProp: (prop) =>
|
|
prop !== 'dayIsBetween' && prop !== 'isFirstDay' && prop !== 'isLastDay',
|
|
})<CustomPickerDayProps>(({ theme, dayIsBetween, isFirstDay, isLastDay }) => ({
|
|
...(dayIsBetween && {
|
|
borderRadius: 0,
|
|
backgroundColor: theme.palette.primary.main,
|
|
color: theme.palette.common.white,
|
|
'&:hover, &:focus': {
|
|
backgroundColor: theme.palette.primary.dark,
|
|
},
|
|
}),
|
|
...(isFirstDay && {
|
|
borderTopLeftRadius: '50%',
|
|
borderBottomLeftRadius: '50%',
|
|
}),
|
|
...(isLastDay && {
|
|
borderTopRightRadius: '50%',
|
|
borderBottomRightRadius: '50%',
|
|
}),
|
|
})) as React.ComponentType<CustomPickerDayProps>;
|
|
|
|
|
|
export default function RecurringCol() {
|
|
const [value, setValue] = React.useState<Dayjs | null>(dayjs('2021-01-23'));
|
|
|
|
const theme = createTheme({
|
|
components: {
|
|
// Name of the component
|
|
MuiButtonBase: {
|
|
defaultProps: {
|
|
// The props to change the default for.
|
|
disableRipple: true, // No more ripple, on the whole application 💣!
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
const renderWeekPickerDay = (
|
|
date: Dayjs,
|
|
selectedDates: Array<Dayjs | null>,
|
|
pickersDayProps: PickersDayProps<Dayjs>,
|
|
) => {
|
|
if (!value) {
|
|
return <PickersDay {...pickersDayProps} />;
|
|
}
|
|
|
|
return (
|
|
<CustomPickersDay
|
|
{...pickersDayProps}
|
|
/>
|
|
);
|
|
};
|
|
|
|
return (
|
|
<div className={styles.calendarDiv}>
|
|
<LocalizationProvider dateAdapter={AdapterDayjs}>
|
|
<ThemeProvider theme={theme}>
|
|
<CalendarPicker
|
|
date={value}
|
|
onChange={(newDate) => setValue(newDate)}
|
|
showDaysOutsideCurrentMonth={true}
|
|
renderDay={renderWeekPickerDay}
|
|
/>
|
|
</ThemeProvider>
|
|
</LocalizationProvider>
|
|
</div>
|
|
)
|
|
}
|