index.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react';
  2. import Dialog, {
  3. DialogContent
  4. } from '@material/react-dialog';
  5. import Button from 'components/Button';
  6. import '@material/react-dialog/dist/dialog.min.css';
  7. import './styles.scss'
  8. interface DialogProps {
  9. isOpen: boolean
  10. actions: {
  11. [name: string]: {
  12. label: string,
  13. onSelect: () => void,
  14. isDefault?: boolean
  15. },
  16. },
  17. children?: React.ReactElement
  18. }
  19. const CBK_Dialog = ({ isOpen, actions, children }: DialogProps) => {
  20. return (
  21. <Dialog
  22. scrimClickAction={''}
  23. escapeKeyAction={''}
  24. open={isOpen}
  25. onClose={(action: string) => actions[action] && actions[action].onSelect() }
  26. className='cbk-dialog'
  27. >
  28. <DialogContent className='cbk-dialog__content'>
  29. {children}
  30. </DialogContent>
  31. <div className='cbk-dialog__footer'>
  32. {
  33. Object.keys(actions).map((action, index) => (
  34. <Button
  35. key={index}
  36. outlined={actions[action].isDefault}
  37. onClick={actions[action].onSelect}
  38. >
  39. {actions[action].label}
  40. </Button>
  41. ))
  42. }
  43. </div>
  44. </Dialog>
  45. )
  46. };
  47. export default CBK_Dialog;