index.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { Menu, Modal, ModalProps } from 'antd';
  2. import React, { useState } from 'react';
  3. type Props = {
  4. items: Array<{
  5. key: string;
  6. label: string;
  7. onClick?: () => void;
  8. children?: React.ReactNode;
  9. }>;
  10. modal: ModalProps;
  11. };
  12. function MenuModal({ items, modal }: Props) {
  13. const [currentMenuKey, setCurrentMenuKey] = useState('edit');
  14. return (
  15. <Modal {...modal}>
  16. <div className='flex justify-between gap-4'>
  17. <div className='w-1/6'>
  18. <Menu
  19. className='h-full'
  20. selectedKeys={[currentMenuKey]}
  21. mode='inline'
  22. onSelect={info => {
  23. setCurrentMenuKey(info.key);
  24. }}
  25. inlineCollapsed={false}
  26. items={items.map(item => ({ key: item.key, label: item.label }))}
  27. />
  28. </div>
  29. <div className='w-5/6'>
  30. {items.map(item => {
  31. if (item.key === currentMenuKey) {
  32. return <React.Fragment key={item.key}>{item.children}</React.Fragment>;
  33. }
  34. })}
  35. </div>
  36. </div>
  37. </Modal>
  38. );
  39. }
  40. export default MenuModal;