modal.tsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import {Fragment} from 'react';
  2. import {ModalRenderProps} from 'sentry/actionCreators/modal';
  3. import Button from 'sentry/components/button';
  4. import ButtonBar from 'sentry/components/buttonBar';
  5. import {t} from 'sentry/locale';
  6. type Props = {
  7. content: React.ReactElement;
  8. disabled: boolean;
  9. onSave: () => void;
  10. title: string;
  11. btnSaveLabel?: string;
  12. } & ModalRenderProps;
  13. const Modal = ({
  14. title,
  15. onSave,
  16. content,
  17. disabled,
  18. Header,
  19. Body,
  20. Footer,
  21. closeModal,
  22. btnSaveLabel = t('Save'),
  23. }: Props) => (
  24. <Fragment>
  25. <Header closeButton>{title}</Header>
  26. <Body>{content}</Body>
  27. <Footer>
  28. <ButtonBar gap={1.5}>
  29. <Button onClick={closeModal}>{t('Cancel')}</Button>
  30. <Button
  31. onClick={event => {
  32. event.preventDefault();
  33. onSave();
  34. }}
  35. disabled={disabled}
  36. type="submit"
  37. priority="primary"
  38. form="relay-form"
  39. >
  40. {btnSaveLabel}
  41. </Button>
  42. </ButtonBar>
  43. </Footer>
  44. </Fragment>
  45. );
  46. export default Modal;