clone-project-modal.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React, { useCallback, useState } from 'react'
  2. import PropTypes from 'prop-types'
  3. import CloneProjectModalContent from './clone-project-modal-content'
  4. import AccessibleModal from '../../../shared/components/accessible-modal'
  5. import withErrorBoundary from '../../../infrastructure/error-boundary'
  6. const CloneProjectModal = React.memo(function CloneProjectModal({
  7. show,
  8. handleHide,
  9. openProject,
  10. }) {
  11. const [inFlight, setInFlight] = useState(false)
  12. const onHide = useCallback(() => {
  13. if (!inFlight) {
  14. handleHide()
  15. }
  16. }, [handleHide, inFlight])
  17. return (
  18. <AccessibleModal
  19. animation
  20. show={show}
  21. onHide={onHide}
  22. id="clone-project-modal"
  23. backdrop="static"
  24. >
  25. <CloneProjectModalContent
  26. handleHide={onHide}
  27. inFlight={inFlight}
  28. setInFlight={setInFlight}
  29. openProject={openProject}
  30. />
  31. </AccessibleModal>
  32. )
  33. })
  34. CloneProjectModal.propTypes = {
  35. handleHide: PropTypes.func.isRequired,
  36. show: PropTypes.bool.isRequired,
  37. openProject: PropTypes.func.isRequired,
  38. }
  39. export default withErrorBoundary(CloneProjectModal)