Skip to content
Snippets Groups Projects
EpglConnectModal.tsx 3.26 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Button, Dialog, IconButton } from '@material-ui/core'
    import CloseIcon from 'assets/icons/ico/close.svg'
    import { useI18n } from 'cozy-ui/transpiled/react/I18n'
    import Icon from 'cozy-ui/transpiled/react/Icon'
    
    import React, { useEffect, useState } from 'react'
    
    import './PartnerConnectModal.scss'
    
    import { StepContent } from './StepContent.interface'
    
    import EpglCreateAccount from './Steps/EpglCreateAccount'
    import EpglDoYouHaveAccount from './Steps/EpglDoYouHaveAccount'
    
    enum StepEnum {
      DoYouHaveAccount,
      CreateAccount,
    }
    
    interface EpglConnectModalProps {
      open: boolean
      handleCloseClick: () => void
      setShowForm: (value: boolean) => void
      goToPartnerSite: () => void
      setHasCreatedAccount: (value: boolean) => void
    }
    
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    const EpglConnectModal = ({
    
      open,
      handleCloseClick,
      setShowForm,
      goToPartnerSite,
      setHasCreatedAccount,
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    }: EpglConnectModalProps) => {
    
      const { t } = useI18n()
      const [currentStep, setCurrentStep] = useState(StepEnum.DoYouHaveAccount)
      useEffect(() => {
        if (open) {
          setCurrentStep(0)
        }
      }, [open])
    
    
      const handleGoToPartnerSite = () => {
    
        goToPartnerSite()
        setHasCreatedAccount(true)
        setShowForm(true)
        handleCloseClick()
    
      }
    
      const handleShowForm = () => {
    
        setShowForm(true)
        handleCloseClick()
    
      const steps: Record<StepEnum, StepContent> = {
    
        [StepEnum.DoYouHaveAccount]: {
          content: <EpglDoYouHaveAccount />,
          leftButton: (
            <Button
    
              onClick={() => setCurrentStep(StepEnum.CreateAccount)}
    
              classes={{
                root: 'btn-profile-back',
                label: 'text-16-bold',
              }}
            >
              {t('auth.button_create_account')}
            </Button>
          ),
          rightButton: (
            <Button
              onClick={handleShowForm}
              classes={{
                root: 'btn-profile-next',
                label: 'text-16-bold',
              }}
            >
              {t('auth.button_connect')}
            </Button>
          ),
        },
        [StepEnum.CreateAccount]: {
          content: <EpglCreateAccount />,
          leftButton: (
            <Button
    
              onClick={() => setCurrentStep(StepEnum.DoYouHaveAccount)}
    
              classes={{
                root: 'btn-profile-back',
                label: 'text-16-bold',
              }}
            >
              {`< ${t('auth.button_previous')}`}
            </Button>
          ),
          rightButton: (
            <Button
              onClick={handleGoToPartnerSite}
              classes={{
                root: 'btn-profile-next',
                label: 'text-16-bold',
              }}
            >
              {t('auth.eglgrandlyon.button_go_to_partner_site')}
            </Button>
          ),
        },
      }
    
      return (
        <Dialog
          open={open}
          onClose={handleCloseClick}
          classes={{
            root: 'modal-root',
            paper: 'modal-paper',
          }}
        >
          <IconButton
            aria-label={t('auth.accessibility.button_close')}
            className="modal-paper-close-button"
            onClick={handleCloseClick}
          >
            <Icon icon={CloseIcon} size={16} />
          </IconButton>
          <div className="partners-connection-step-content">
            {steps[currentStep].content}
          </div>
          <div className="partners-connection-step-navigation">
            {steps[currentStep].leftButton}
            {steps[currentStep].rightButton}
          </div>
        </Dialog>
      )
    }
    
    export default EpglConnectModal