@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.
108 lines (95 loc) • 2.81 kB
JavaScript
import React from 'react'
import PropTypes from 'prop-types'
import { Field, Fields, reduxForm } from 'redux-form'
import Geocoder from '../../Search/GeocoderSearchContainer'
import InputField from '../../../components/InputField/index'
import TextAreaField from '../../../components/TextAreaField/index'
import CheckboxGroup from '../../../components/CheckboxGroup/index'
import UserInfo from './UserInfo'
import i18n from '../../../i18n'
import { validator } from '../../../common/formUtils'
const InitiativeForm = ({ handleSubmit, user, error, goals }) => (
<form className="form-inputs">
<strong>{error}</strong>
<fieldset>
<p>
Hier kannst Du eine Initiative erfassen, die noch im Aufbau ist, um
Partner, Mitglieder, Land oder einen Betrieb zu finden.
</p>
<Field
name="goals"
groupLabel="Art der Initiative"
component={CheckboxGroup}
options={goals.map(({ id, name }) => ({
id,
name,
label: i18n.t(`forms.labels.goals.${name}`)
}))}
/>
<Field
name="description"
label="Beschreibung der Initiative"
component={TextAreaField}
maxLength="1000"
placeholder="z.B. Informationen zum Hintergrund oder zu gemeinsamen Aktivitäten."
rows="8"
/>
</fieldset>
<fieldset>
<legend>Name</legend>
<Field
name="name"
label="Bezeichnung der Initiative"
component={InputField}
type="text"
maxLength="100"
required
/>
<Field
name="url"
label="Website"
component={InputField}
placeholder="http://beispiel.de"
type="url"
maxLength="100"
/>
</fieldset>
<fieldset className="geocoder">
<legend>geplanter Standort der Initiative</legend>
<Fields
names={['city', 'address', 'latitude', 'longitude']}
name="geocoder"
label="Adresse und Ort"
markerIcon="Initiative"
component={Geocoder}
required
/>
</fieldset>
<UserInfo user={user} />
<div className="entries-editor-explanation">
<p>Mit einem * gekennzeichneten Felder müssen ausgefüllt werden.</p>
<input
type="button"
className="button submit"
value="Speichern"
onClick={handleSubmit}
/>
</div>
</form>
)
InitiativeForm.propTypes = {
handleSubmit: PropTypes.func.isRequired,
user: PropTypes.shape().isRequired,
goals: PropTypes.shape({
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired
}).isRequired,
error: PropTypes.string
}
InitiativeForm.defaultProps = {
error: ''
}
export default reduxForm({
form: 'initiative',
validate: validator('initiative')
})(InitiativeForm)