modal-content.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { useState, Dispatch, SetStateAction } from 'react'
  2. import { useTranslation, Trans } from 'react-i18next'
  3. import getMeta from '../../../../utils/meta'
  4. import LeaveModalForm, { LeaveModalFormProps } from './modal-form'
  5. import OLButton from '@/features/ui/components/ol/ol-button'
  6. import {
  7. OLModalBody,
  8. OLModalFooter,
  9. OLModalHeader,
  10. OLModalTitle,
  11. } from '@/features/ui/components/ol/ol-modal'
  12. type LeaveModalContentProps = {
  13. handleHide: () => void
  14. inFlight: boolean
  15. setInFlight: Dispatch<SetStateAction<boolean>>
  16. }
  17. function LeaveModalContentBlock({
  18. setInFlight,
  19. isFormValid,
  20. setIsFormValid,
  21. }: LeaveModalFormProps) {
  22. const { t } = useTranslation()
  23. const { isOverleaf } = getMeta('ol-ExposedSettings')
  24. const hasPassword = getMeta('ol-hasPassword')
  25. if (isOverleaf && !hasPassword) {
  26. return (
  27. <p>
  28. <b>
  29. <a href="/user/password/reset">{t('delete_acct_no_existing_pw')}</a>
  30. </b>
  31. </p>
  32. )
  33. }
  34. return (
  35. <LeaveModalForm
  36. setInFlight={setInFlight}
  37. isFormValid={isFormValid}
  38. setIsFormValid={setIsFormValid}
  39. />
  40. )
  41. }
  42. function LeaveModalContent({
  43. handleHide,
  44. inFlight,
  45. setInFlight,
  46. }: LeaveModalContentProps) {
  47. const { t } = useTranslation()
  48. const [isFormValid, setIsFormValid] = useState(false)
  49. return (
  50. <>
  51. <OLModalHeader closeButton>
  52. <OLModalTitle>{t('delete_account')}</OLModalTitle>
  53. </OLModalHeader>
  54. <OLModalBody>
  55. <p>
  56. <Trans
  57. i18nKey="delete_account_warning_message_3"
  58. components={{ strong: <strong /> }}
  59. />
  60. </p>
  61. <LeaveModalContentBlock
  62. setInFlight={setInFlight}
  63. isFormValid={isFormValid}
  64. setIsFormValid={setIsFormValid}
  65. />
  66. </OLModalBody>
  67. <OLModalFooter>
  68. <OLButton disabled={inFlight} onClick={handleHide} variant="secondary">
  69. {t('cancel')}
  70. </OLButton>
  71. <OLButton
  72. form="leave-form"
  73. type="submit"
  74. variant="danger"
  75. disabled={inFlight || !isFormValid}
  76. >
  77. {inFlight ? <>{t('deleting')}…</> : t('delete')}
  78. </OLButton>
  79. </OLModalFooter>
  80. </>
  81. )
  82. }
  83. export default LeaveModalContent