aboutsummaryrefslogtreecommitdiffstats
path: root/components/Form.js
blob: 681f13af3387df155c491b0326b4494909e2fefd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import styles from 'styles/Main.module.scss'
import React from 'react'
import PropTypes from 'prop-types'
import useSettings from 'hooks/useSettings'

const Form = ({ errorMessage, onSubmit, isLogin }) => {
  const { settings, setSettings, t } = useSettings()

  const themeChange = c => {
    setSettings(prev => ({ ...prev, theme: c }))
  }

  const languageChange = l => {
    setSettings(prev => ({ ...prev, language: l }))
  }

  return (
    <form className={`window window--popup ${styles.userForm}`} onSubmit={onSubmit}>
      <div className='window__content--popup'>
        {isLogin ? t('log_in') : t('register_user')}
      </div>
      <input type='email' name='email' placeholder='email' required />
      <input type='password' name='password' minLength='6' placeholder={t('password')} required />
      {!isLogin && (
        <>
          <input type='password' name='password_confirm' placeholder={t('confirm_password')} required />
          <legend>{t('language')}</legend>
          <fieldset>
            {['en', 'pl', 'es', 'de'].map(l => (
              <fieldset key={l}>
                <input
                  id={`language_${l}`}
                  type='radio'
                  name='language'
                  value={l}
                  defaultChecked={settings.language === l}
                  onChange={() => languageChange(l)}
                />
                <label htmlFor={`language_${l}`}>{l.toUpperCase()}</label>
              </fieldset>
            ))}
          </fieldset>
          <legend>{t('color_theme')}</legend>
          <fieldset>
            {['green', 'blue', 'black'].map(c => (
              <fieldset key={c}>
                <input
                  id={`theme_${c}`}
                  type='radio'
                  name='theme'
                  value={c}
                  defaultChecked={settings.theme === c}
                  onChange={() => themeChange(c)}
                />
                <label htmlFor={`theme_${c}`} />
              </fieldset>
            ))}
          </fieldset>
        </>
      )}

      <input className='window__button' type='submit' value={isLogin ? t('login') : t('register')} />

      {errorMessage && <p className='error'>{t(errorMessage)}</p>}
    </form>
  )
}

export default Form

Form.propTypes = {
  errorMessage: PropTypes.string,
  onSubmit: PropTypes.func
}