-
Notifications
You must be signed in to change notification settings - Fork 199
/
Copy pathMenuBody.js
56 lines (50 loc) · 1.29 KB
/
MenuBody.js
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
52
53
54
55
56
import React, { useContext } from 'react'
import PropTypes from 'prop-types'
import MenuContext from './MenuContext'
import MenuCard from './MenuCard'
const MenuBody = React.memo(
({ CardComponent, wrapProps, card, cards, rootHeader, rootFooter, children }) => {
const { classes, drawerWidth } = useContext(MenuContext)
const position = -drawerWidth * card
return (
<>
{children}
<div
className={classes.bodyWrap}
style={{ transform: `translateX(${position}px)` }}
{...wrapProps}
>
{cards.map((item, depth) => (
<CardComponent
card={card}
key={depth}
item={item}
depth={depth}
rootHeader={rootHeader}
rootFooter={rootFooter}
/>
))}
</div>
</>
)
},
)
MenuBody.propTypes = {
/**
* Additional props for the wrap element
*/
wrapProps: PropTypes.object,
/**
* Overrides the default component used to display menu cards
*/
CardComponent: PropTypes.elementType.isRequired,
card: PropTypes.number,
cards: PropTypes.array,
rootHeader: PropTypes.any,
rootFooter: PropTypes.any,
}
MenuBody.defaultProps = {
wrapProps: {},
CardComponent: MenuCard,
}
export default MenuBody