index.js 1014 B

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