+
+
+ this.handleChangeField('birthcity', ev.target.value)
+ }
+ type="text"
+ name="birthcity"
+ label={t('PersonalInfo.birthcity')}
+ placeholder={t('PersonalInfo.birthcity-placeholder')}
+ />
+ this.handleChangeField('nationality', option)}
+ value={formData.nationality}
+ type="select"
+ name="nationality"
+ options={nationalities}
+ label={t('PersonalInfo.nationality')}
+ />
+
+
+
+
+ )
+ }
+
+ handleChangeField(name, value) {
+ const formData = {
+ ...this.state.formData,
+ [name]: value
+ }
+ this.setState({
+ formData
+ })
+ }
+
+ async handleSave(ev) {
+ const {
+ client,
+ onBeforeSave,
+ onAfterSave,
+ onSaveSuccessful,
+ myself
+ } = this.props
+ const { formData } = this.state
+ ev && ev.preventDefault()
+ onBeforeSave && onBeforeSave()
+ try {
+ const attributes = {
+ nationality: formData.nationality.value,
+ birthcity: formData.birthcity
+ }
+ const updatedMyself = {
+ ...myself,
+ ...attributes
+ }
+ await client.save(updatedMyself)
+ onSaveSuccessful && onSaveSuccessful(updatedMyself)
+ } finally {
+ onAfterSave && onAfterSave()
+ }
+ }
+}
+
+export default compose(
+ translate(),
+ withClient
+)(PersonalInfoForm)
diff --git a/src/ducks/personal-info/Infos.jsx b/src/ducks/personal-info/Infos.jsx
new file mode 100644
index 0000000000..55004c3b77
--- /dev/null
+++ b/src/ducks/personal-info/Infos.jsx
@@ -0,0 +1,22 @@
+import React from 'react'
+import Icon from 'cozy-ui/transpiled/react/Icon'
+import { Media, Bd, Img } from 'cozy-ui/transpiled/react/Media'
+import { Text, SubTitle } from 'cozy-ui/transpiled/react/Text'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+
+const PersonalInfoDescription = () => {
+ const { t } = useI18n()
+ return (
+