1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  | import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; 
 |  import { 
 |  } from 'react-admin'; 
 |  import { Drawer, Box, Typography, Card, IconButton, Stack } from '@mui/material'; 
 |  import CloseIcon from '@mui/icons-material/Close'; 
 |  import * as Common from '@/utils/common'; 
 |  import { PAGE_DRAWER_WIDTH } from '@/config/setting'; 
 |    
 |  const PageDrawer = (props) => { 
 |      const { 
 |          title = 'Drawer', 
 |          drawerVal, 
 |          setDrawerVal, 
 |          closeCallback, 
 |          width = PAGE_DRAWER_WIDTH, 
 |          children 
 |      } = props; 
 |    
 |      const handleClose = () => { 
 |          setDrawerVal(null); 
 |          if (closeCallback) { 
 |              closeCallback(); 
 |          } 
 |      } 
 |    
 |      return ( 
 |          <Drawer 
 |              variant="persistent" 
 |              open={!!drawerVal} 
 |              anchor="right" 
 |              onClose={handleClose} 
 |              sx={{ zIndex: 100 }} 
 |          > 
 |              {!!drawerVal && ( 
 |                  <Box pt={5} width={{ xs: '100vW', sm: width }} height={'calc(100vh - 200px);'} mt={{ xs: 2, sm: 1 }}> 
 |                      <Stack direction="row" p={2}> 
 |                          <Typography variant="h6" flex="1"> 
 |                              {title} 
 |                          </Typography> 
 |                          <IconButton onClick={handleClose} size="small"> 
 |                              <CloseIcon /> 
 |                          </IconButton> 
 |                      </Stack> 
 |                      {children} 
 |                  </Box> 
 |              )} 
 |          </Drawer> 
 |      ) 
 |  } 
 |    
 |  export default PageDrawer; 
 |  
  |