index.js 1014 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import 'rc-drawer-menu/assets/index.css';
  2. import React from 'react';
  3. import DrawerMenu from 'rc-drawer-menu';
  4. import SiderMenu from './SiderMenu';
  5. /**
  6. * Recursively flatten the data
  7. * [{path:string},{path:string}] => {path,path2}
  8. * @param menus
  9. */
  10. const getFlatMenuKeys = menuData => {
  11. let keys = [];
  12. menuData.forEach(item => {
  13. if (item.children) {
  14. keys = keys.concat(getFlatMenuKeys(item.children));
  15. }
  16. keys.push(item.path);
  17. });
  18. return keys;
  19. };
  20. export default props =>
  21. props.isMobile || props.fixSiderbar ? (
  22. <DrawerMenu
  23. parent={null}
  24. level={null}
  25. iconChild={null}
  26. open={!props.collapsed}
  27. onMaskClick={() => {
  28. props.onCollapse(true);
  29. }}
  30. width="256px"
  31. >
  32. <SiderMenu
  33. {...props}
  34. flatMenuKeys={getFlatMenuKeys(props.menuData)}
  35. collapsed={props.isMobile ? false : props.collapsed}
  36. />
  37. </DrawerMenu>
  38. ) : (
  39. <SiderMenu {...props} flatMenuKeys={getFlatMenuKeys(props.menuData)} />
  40. );