clone-project-modal.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React, { memo, 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. function CloneProjectModal({
  6. show,
  7. handleHide,
  8. handleAfterCloned,
  9. projectId,
  10. projectName,
  11. }) {
  12. const [inFlight, setInFlight] = useState(false)
  13. const onHide = useCallback(() => {
  14. if (!inFlight) {
  15. handleHide()
  16. }
  17. }, [handleHide, inFlight])
  18. return (
  19. <AccessibleModal
  20. animation
  21. show={show}
  22. onHide={onHide}
  23. id="clone-project-modal"
  24. backdrop="static"
  25. >
  26. <CloneProjectModalContent
  27. handleHide={onHide}
  28. inFlight={inFlight}
  29. setInFlight={setInFlight}
  30. handleAfterCloned={handleAfterCloned}
  31. projectId={projectId}
  32. projectName={projectName}
  33. />
  34. </AccessibleModal>
  35. )
  36. }
  37. CloneProjectModal.propTypes = {
  38. handleHide: PropTypes.func.isRequired,
  39. show: PropTypes.bool.isRequired,
  40. handleAfterCloned: PropTypes.func.isRequired,
  41. projectId: PropTypes.string,
  42. projectName: PropTypes.string,
  43. }
  44. export default memo(CloneProjectModal)