2026-03-12 12:24:25 +00:00

177 lines
4.9 KiB
JavaScript

import React from 'react';
import Widget from '../Widget';
import { Link } from 'react-router-dom';
import { Box, Grid, Breadcrumbs, Tabs, Tab } from '@mui/material';
import { styled } from '@mui/material/styles';
import { Typography, Button } from '../Wrappers';
import {
NavigateNext as NavigateNextIcon,
CalendarToday as CalendarIcon,
} from '@mui/icons-material';
import { useLocation } from 'react-router-dom';
// styles
import useStyles from '../Layout/styles';
// components
import structure from '../Sidebar/SidebarStructure';
// Tab styling
const CustomTab = styled(Tab)(() => ({
minWidth: 72,
textTransform: 'none',
fontWeight: 400,
}));
//Sidebar structure
const BreadCrumbs = () => {
const location = useLocation();
const classes = useStyles();
const [value, setValue] = React.useState(2);
const renderBreadCrumbs = () => {
let url = location.pathname;
let route = url
.split('/')
.slice(1)
.map((route) =>
route
.split('-')
.map((word) => word[0].toUpperCase() + word.slice(1))
.join(' '),
);
const length = route.length;
return route.map((item, index) => {
let middlewareUrl =
'/' +
url
.split('/')
.slice(1, index + 2)
.join('/');
return (
<Breadcrumbs
key={index + '_b'}
separator={<NavigateNextIcon fontSize='small' />}
aria-label='breadcrumb'
>
<Typography
variant='h6'
color={length === index + 1 ? 'primary' : ''}
>
{length === index + 1 ? (
item
) : (
<Link
to={middlewareUrl}
style={{ color: 'unset', textDecoration: 'none' }}
>
{item}
</Link>
)}
</Typography>
</Breadcrumbs>
);
});
};
const handleChange = (event, newValue) => {
setValue(newValue);
};
const date = () => {
let dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
let d = new Date()
let year = d.getFullYear()
let month = d.getMonth()
let date = d.getDate()
let day = d.getDay() + 1
return `${date} ${monthNames[month]} ${year}, ${dayNames[day - 1]}`
}
function a11yProps(index) {
return {
id: `simple-tab-${index}`,
'aria-controls': `simple-tabpanel-${index}`,
};
}
return (
<Widget
disableWidgetMenu
inheritHeight
className={classes.margin}
bodyClass={classes.navPadding}
>
<Grid
container
direction='row'
justifyContent='space-between'
alignItems='center'
wrap={'nowrap'}
style={{ overflowX: 'auto' }}
>
{
structure.map((c) => {
if (
location.pathname.includes(c.link) &&
c.link &&
c.label === 'Dashboard'
) {
return (
<Box display='flex' alignItems='center' key={c.id}>
<Breadcrumbs aria-label='breadcrumb'>
<Typography variant='h4'>{c.label}</Typography>
</Breadcrumbs>
{location.pathname.includes('/app/dashboard') && (
<Tabs
value={value}
onChange={handleChange}
aria-label='simple tabs example'
variant='scrollable'
scrollButtons='auto'
style={{ marginLeft: 38 }}
>
<CustomTab label='Today' {...a11yProps(0)} />
<CustomTab label='This week' {...a11yProps(1)} />
<CustomTab label='This month' {...a11yProps(2)} />
<CustomTab label='This year' {...a11yProps(3)} />
</Tabs>
)}
</Box>
);
}
})
}
{location.pathname.includes('/app/dashboard') ? (
<Box display='flex' alignItems='center'>
<CalendarIcon className={classes.calendarIcon} />
<Typography className={classes.date} style={{ marginRight: 38 }}>
{/*29 Oct 2019, Tuesday*/}
{date()}
</Typography>
<Button
variant='contained'
color='secondary'
className={classes.button}
>
Latest Reports
</Button>
</Box>
) : (
<Breadcrumbs
separator={<NavigateNextIcon fontSize='small' />}
aria-label='breadcrumb'
>
{renderBreadCrumbs()}
</Breadcrumbs>
)}
</Grid>
</Widget>
);
};
export default BreadCrumbs;