@teikei/map
Version:
Teikei map SPA component. Teikei is the software that powers ernte-teilen.org, a website that maps out Community-supported Agriculture in Germany.
106 lines (96 loc) • 3.07 kB
JavaScript
import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { updateUser } from '../UserOnboarding/duck'
import { Field, reduxForm } from 'redux-form'
import i18n from '../../i18n'
import InputField from '../../components/InputField/index'
import { validator } from '../../common/formUtils'
const UserAccount = ({ handleSubmit, error }) => (
<div className="user-account">
<div className="user-container">
<h1>Benutzerkonto anpassen</h1>
<form onSubmit={handleSubmit}>
<div className="form-inputs">
<strong>{error}</strong>
<fieldset>
<legend>Deine Benutzerdaten</legend>
{/* TODO implement identityChange with verificaiton email */}
{/*<p className="form-explanation">*/}
{/*Bitte beachte, dass Du eine E-Mail zur Bestätigung der neuen*/}
{/*Email-Adresse erhalten wirst, falls du sie hier änderst.*/}
{/*</p>*/}
<Field
name="name"
label={i18n.t('user.form.name')}
component={InputField}
type="text"
maxLength="100"
/>
<Field
name="email"
label={i18n.t('user.form.email')}
component={InputField}
type="email"
maxLength="100"
/>
<Field
name="phone"
label={i18n.t('user.form.phone')}
component={InputField}
type="text"
maxLength="100"
/>
</fieldset>
<fieldset>
<legend>Passwort</legend>
<Field
name="password"
label="Aktuelles Passwort"
component={InputField}
type="password"
maxLength="100"
/>
<p className="form-explanation">
Wir benötigen das aktuelle Passwort, um die Änderung zu bestätigen
</p>
</fieldset>
</div>
<div className="form-actions">
<input type="submit" className="button submit" value="Speichern" />
</div>
</form>
</div>
</div>
)
UserAccount.propTypes = {
handleSubmit: PropTypes.func.isRequired,
error: PropTypes.string
}
UserAccount.defaultProps = {
error: ''
}
const mapStateToProps = ({ user }) => ({
initialValues: user.currentUser
})
// TODO only send dirty values for identityChange
// const mapDispatchToProps = dispatch => ({
// onSubmit: (payload, dispatch, { initialValues }) =>
// dispatch(
// updateUser(
// _.pick([..._.keys(dirtyValues(payload, initialValues)), 'password'])
// )
// )
// })
const mapDispatchToProps = dispatch => ({
onSubmit: (payload, dispatch) => dispatch(updateUser(payload))
})
const UserAccountContainer = connect(
mapStateToProps,
mapDispatchToProps
)(
reduxForm({ form: 'useraccount', validate: validator('changeUserAccount') })(
UserAccount
)
)
export default UserAccountContainer