index.js 1007 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React from 'react';
  2. import { Drawer } from 'antd';
  3. import SiderMenu from './SiderMenu';
  4. /**
  5. * Recursively flatten the data
  6. * [{path:string},{path:string}] => {path,path2}
  7. * @param menus
  8. */
  9. export const getFlatMenuKeys = menuData => {
  10. let keys = [];
  11. menuData.forEach(item => {
  12. keys.push(item.path);
  13. if (item.children) {
  14. keys = keys.concat(getFlatMenuKeys(item.children));
  15. }
  16. });
  17. return keys;
  18. };
  19. const SiderMenuWrapper = props => {
  20. const { isMobile, menuData, collapsed, onCollapse } = props;
  21. return isMobile ? (
  22. <Drawer
  23. visible={!collapsed}
  24. placement="left"
  25. onClose={() => onCollapse(true)}
  26. style={{
  27. padding: 0,
  28. height: '100vh',
  29. }}
  30. >
  31. <SiderMenu
  32. {...props}
  33. flatMenuKeys={getFlatMenuKeys(menuData)}
  34. collapsed={isMobile ? false : collapsed}
  35. />
  36. </Drawer>
  37. ) : (
  38. <SiderMenu {...props} flatMenuKeys={getFlatMenuKeys(menuData)} />
  39. );
  40. };
  41. export default SiderMenuWrapper;