diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ea7ed09 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..98a18d9 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/react-ts.iml b/.idea/react-ts.iml new file mode 100644 index 0000000..ff88395 --- /dev/null +++ b/.idea/react-ts.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/userProfile/src/index.tsx b/userProfile/src/index.tsx index df4d969..3907e1c 100644 --- a/userProfile/src/index.tsx +++ b/userProfile/src/index.tsx @@ -1,5 +1,146 @@ import './style.css'; +import React, { FC, useState } from 'react'; +import ReactDom from 'react-dom'; +import { Button, Input, Select, Gapped, Modal } from '@skbkontur/react-ui'; +const items = [ + 'Москва', + 'Екатеринбург', + 'Санкт-Петербург', + 'Новосибирск', + 'Казань', + 'Нижний Новгород', + 'Челябинск', + 'Самара', + 'Омск', + 'Ростов-на-Дону', + 'Уфа' +]; + +type FormData = { + name: string; + surname: string; + city: string; +}; + +type DataState = { + saved: FormData; + current: FormData; +}; + +const defaultForm = { + name: '', + surname: '', + city: undefined +}; + +const Form: React.FC = () => { + const [data, setData] = useState({ + saved: { ...defaultForm }, + current: { ...defaultForm } + }); + const [saved, setSaved] = useState(false); + const [opened, setOpened] = useState(false); + const [panel, setPanel] = useState(false); + function changeValue(value: string, field: string) { + setData({ ...data, current: { ...data.current, [field]: value } }); + } + + function renderModal() { + const listItems = []; + if (data.current.name !== data.saved.name) + listItems.push( +

+ Имя: было {data.saved.name} стало {data.current.name} +

+ ); + if (data.current.surname !== data.saved.surname) + listItems.push( +

+ Фамилия: была {data.saved.surname} стала {data.current.surname} +

+ ); + if (data.saved.city !== data.current.city) + listItems.push( +

+ Город: был {data.saved.city} стал {data.current.city} +

+ ); + return ( + + Пользователь сохранен + {listItems.length !== 0 && saved &&
Измененные данные: {listItems}
}
+ + + +
+ ); + } + + function open() { + setOpened(true); + } + + function close() { + setOpened(false); + setData({ ...data, saved: data.current }); + setSaved(true); + } + + return ( + <> +
+

Информация о пользователе

+ + + +