add switch corporate & fix table & fix policy
This commit is contained in:
48
frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx
Executable file
48
frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx
Executable file
@@ -0,0 +1,48 @@
|
||||
import { FormControl, InputLabel, MenuItem, Select, SelectChangeEvent } from '@mui/material';
|
||||
import { useContext, useEffect, useState } from 'react';
|
||||
import { UserCurrentCorporateContext } from '../../../contexts/UserCurrentCorporate';
|
||||
import axios from '../../../utils/axios';
|
||||
|
||||
/* ---------------------------------- types --------------------------------- */
|
||||
type CorporateDataProps = {
|
||||
id: number;
|
||||
name: string;
|
||||
};
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
export default function CorporatePopover() {
|
||||
const { corporateValue, setCorporateValue } = useContext(UserCurrentCorporateContext);
|
||||
const [corporateData, setCorporateData] = useState([]);
|
||||
|
||||
const handleCorporateChange = (event: SelectChangeEvent) => {
|
||||
setCorporateValue(event.target.value as string);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
// @ts-ignore
|
||||
const corporateManages = await axios.get(`/corporate-manage`);
|
||||
setCorporateData(corporateManages.data);
|
||||
})();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<FormControl>
|
||||
<InputLabel id="simple-corporate-select-lable">Corporate</InputLabel>
|
||||
<Select
|
||||
labelId="simple-corporate-select-lable"
|
||||
id="corporate-select-lable"
|
||||
value={corporateValue}
|
||||
label="Corporate"
|
||||
defaultValue={corporateValue}
|
||||
onChange={handleCorporateChange}
|
||||
>
|
||||
{corporateData.map((row: CorporateDataProps, index) => (
|
||||
<MenuItem key={index} value={row.id}>
|
||||
{row.name}
|
||||
</MenuItem>
|
||||
))}
|
||||
</Select>
|
||||
</FormControl>
|
||||
);
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import AccountPopover from './AccountPopover';
|
||||
import LanguagePopover from './LanguagePopover';
|
||||
import ContactsPopover from './ContactsPopover';
|
||||
import NotificationsPopover from './NotificationsPopover';
|
||||
import CorporatePopover from './CorporatePopover';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@@ -92,6 +93,7 @@ export default function DashboardHeader({
|
||||
<Box sx={{ flexGrow: 1 }} />
|
||||
|
||||
<Stack direction="row" alignItems="center" spacing={{ xs: 0.5, sm: 1.5 }}>
|
||||
<CorporatePopover />
|
||||
<LanguagePopover />
|
||||
<NotificationsPopover />
|
||||
<ContactsPopover />
|
||||
|
||||
@@ -13,6 +13,9 @@ import { HEADER, NAVBAR } from '../../config';
|
||||
import DashboardHeader from './header';
|
||||
import NavbarVertical from './navbar/NavbarVertical';
|
||||
import NavbarHorizontal from './navbar/NavbarHorizontal';
|
||||
import useLocalStorage from '../../hooks/useLocalStorage';
|
||||
import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate';
|
||||
import useAuth from '../../hooks/useAuth';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@@ -47,6 +50,7 @@ export default function DashboardLayout() {
|
||||
const { collapseClick, isCollapse } = useCollapseDrawer();
|
||||
|
||||
const { themeLayout } = useSettings();
|
||||
const { user } = useAuth();
|
||||
|
||||
const isDesktop = useResponsive('up', 'lg');
|
||||
|
||||
@@ -54,6 +58,12 @@ export default function DashboardLayout() {
|
||||
|
||||
const verticalLayout = themeLayout === 'vertical';
|
||||
|
||||
const [corporateValue, setCorporateValue] = useLocalStorage(
|
||||
'corporateValue',
|
||||
`${user.corporate.id}`
|
||||
);
|
||||
const value = { corporateValue, setCorporateValue };
|
||||
|
||||
if (verticalLayout) {
|
||||
return (
|
||||
<>
|
||||
@@ -86,19 +96,21 @@ export default function DashboardLayout() {
|
||||
}
|
||||
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
display: { lg: 'flex' },
|
||||
minHeight: { lg: 1 },
|
||||
}}
|
||||
>
|
||||
<DashboardHeader isCollapse={isCollapse} onOpenSidebar={() => setOpen(true)} />
|
||||
<UserCurrentCorporateContext.Provider value={value}>
|
||||
<Box
|
||||
sx={{
|
||||
display: { lg: 'flex' },
|
||||
minHeight: { lg: 1 },
|
||||
}}
|
||||
>
|
||||
<DashboardHeader isCollapse={isCollapse} onOpenSidebar={() => setOpen(true)} />
|
||||
|
||||
<NavbarVertical isOpenSidebar={open} onCloseSidebar={() => setOpen(false)} />
|
||||
<NavbarVertical isOpenSidebar={open} onCloseSidebar={() => setOpen(false)} />
|
||||
|
||||
<MainStyle collapseClick={collapseClick}>
|
||||
<Outlet />
|
||||
</MainStyle>
|
||||
</Box>
|
||||
<MainStyle collapseClick={collapseClick}>
|
||||
<Outlet />
|
||||
</MainStyle>
|
||||
</Box>
|
||||
</UserCurrentCorporateContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user