| | |
| | | import { Layout as RALayout, CheckForApplicationUpdate } from "react-admin"; |
| | | import { Layout as RALayout, CheckForApplicationUpdate, useSidebarState } from "react-admin"; |
| | | import AppBar from './AppBar'; |
| | | import { MyMenu } from './MyMenu' |
| | | import { MyMenu } from './MyMenu'; |
| | | import TabsBar from './TabsBar'; |
| | | import { Box } from '@mui/material'; |
| | | |
| | | const LayoutContent = ({ children }) => { |
| | | const [sidebarIsOpen] = useSidebarState(); |
| | | const sidebarWidth = sidebarIsOpen ? 200 : 50; |
| | | |
| | | return ( |
| | | <RALayout |
| | | appBar={AppBar} |
| | | menu={MyMenu} |
| | | sx={{ |
| | | '& .RaLayout-content': { |
| | | position: 'absolute', |
| | | left: `${sidebarWidth}px`, |
| | | overflowY: 'auto', |
| | | width: `calc(100% - ${sidebarWidth}px)`, |
| | | height: 'calc(100% - 86px)', // 减去TabsBar的高度 (50px AppBar + 36px TabsBar) |
| | | top: '86px', |
| | | transition: (theme) => |
| | | theme.transitions.create(['left', 'width'], { |
| | | easing: theme.transitions.easing.sharp, |
| | | duration: theme.transitions.duration.leavingScreen, |
| | | }), |
| | | } |
| | | }} |
| | | > |
| | | <Box sx={{ |
| | | position: 'fixed', |
| | | top: 48, |
| | | left: sidebarWidth, |
| | | right: 0, |
| | | zIndex: 1100, |
| | | transition: (theme) => |
| | | theme.transitions.create('left', { |
| | | easing: theme.transitions.easing.sharp, |
| | | duration: theme.transitions.duration.leavingScreen, |
| | | }), |
| | | }}> |
| | | <TabsBar /> |
| | | </Box> |
| | | {children} |
| | | <CheckForApplicationUpdate /> |
| | | </RALayout> |
| | | ); |
| | | }; |
| | | |
| | | export const Layout = ({ children }) => ( |
| | | <RALayout |
| | | appBar={AppBar} |
| | | menu={MyMenu} |
| | | sx={{ '& .RaLayout-content': { position: 'absolute', left: '200px', overflowY: 'auto', width: 'calc(100% - 200px)', height: 'calc(100% - 50px)' } }} |
| | | > |
| | | {children} |
| | | <CheckForApplicationUpdate /> |
| | | </RALayout> |
| | | <LayoutContent>{children}</LayoutContent> |
| | | ); |