PersonalData.jsx 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import PropTypes from 'prop-types'
  4. import { translate } from 'react-i18next'
  5. import {newFlashMessage} from '../../action-creator.sync.js'
  6. require('./PersonalData.styl')
  7. export class PersonalData extends React.Component {
  8. constructor (props) {
  9. super(props)
  10. this.state = {
  11. newName: '',
  12. newEmail: '',
  13. checkPassword: ''
  14. }
  15. }
  16. handleChangeName = e => this.setState({newName: e.target.value})
  17. handleChangeEmail = e => this.setState({newEmail: e.target.value})
  18. handleChangeCheckPassword = e => this.setState({checkPassword: e.target.value})
  19. handleClickSubmit = () => {
  20. const { props, state } = this
  21. if (state.newEmail !== '' && state.checkPassword === '') {
  22. props.dispatch(newFlashMessage(props.t('Please type your password in order to change your email. (For security reasons)'), 'info'))
  23. return
  24. }
  25. props.onClickSubmit(state.newName, state.newEmail, state.checkPassword)
  26. }
  27. render () {
  28. const { props } = this
  29. return (
  30. <div className='account__userpreference__setting__personaldata'>
  31. <div className='personaldata__sectiontitle subTitle ml-2 ml-sm-0'>
  32. {props.t('Account information')}
  33. </div>
  34. <div className='personaldata__text ml-2 ml-sm-0' />
  35. <form className='personaldata__form'>
  36. <div className='personaldata__form__title'>
  37. {props.t('Name:')}
  38. </div>
  39. <div className='d-flex align-items-center flex-wrap mb-4'>
  40. <input
  41. className='personaldata__form__txtinput primaryColorBorderLighten form-control mt-3 mt-sm-0'
  42. type='text'
  43. placeholder={props.t('Change your name')}
  44. onChange={this.handleChangeName}
  45. />
  46. </div>
  47. <div className='personaldata__form__title'>
  48. {props.t('Email Address:')}
  49. </div>
  50. <div className='d-flex align-items-center flex-wrap mb-4'>
  51. <input
  52. className='personaldata__form__txtinput primaryColorBorderLighten form-control mt-3 mt-sm-0'
  53. type='email'
  54. placeholder={props.t('Change your email')}
  55. onChange={this.handleChangeEmail}
  56. />
  57. <input
  58. className='personaldata__form__txtinput checkPassword primaryColorBorderLighten form-control mt-3 mt-sm-0'
  59. type='password'
  60. placeholder={props.t('Check your password')}
  61. onChange={this.handleChangeCheckPassword}
  62. />
  63. </div>
  64. <button
  65. type='button'
  66. className='personaldata__form__button primaryColorBorderLighten btn'
  67. onClick={this.handleClickSubmit}
  68. >
  69. {props.t('Send')}
  70. </button>
  71. </form>
  72. </div>
  73. )
  74. }
  75. }
  76. PersonalData.propTypes = {
  77. onClickSubmit: PropTypes.func
  78. }
  79. const mapStateToProps = () => ({})
  80. export default connect(mapStateToProps)(translate()(PersonalData))