From e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d Mon Sep 17 00:00:00 2001 From: Piotr Russ Date: Mon, 16 Nov 2020 00:10:28 +0100 Subject: api, login, auth --- client/src/common/jsx/Info.jsx | 9 ++++++++ client/src/common/jsx/LangSwitch.jsx | 43 ++++++++++++++++++++++++++++++++++++ client/src/common/jsx/TopBar.jsx | 38 +++++++++++++++++++++++++++++++ client/src/common/jsx/User.jsx | 38 +++++++++++++++++++++++++++++++ client/src/common/jsx/WithHover.jsx | 13 +++++++++++ 5 files changed, 141 insertions(+) create mode 100644 client/src/common/jsx/Info.jsx create mode 100644 client/src/common/jsx/LangSwitch.jsx create mode 100644 client/src/common/jsx/TopBar.jsx create mode 100644 client/src/common/jsx/User.jsx create mode 100644 client/src/common/jsx/WithHover.jsx (limited to 'client/src/common/jsx') diff --git a/client/src/common/jsx/Info.jsx b/client/src/common/jsx/Info.jsx new file mode 100644 index 0000000..00d04b3 --- /dev/null +++ b/client/src/common/jsx/Info.jsx @@ -0,0 +1,9 @@ +import React from 'react'; + +const Info = ({info, hover, t}) => ( +

+ { hover ? t(hover) : t(info) } +

+); + +export default Info; diff --git a/client/src/common/jsx/LangSwitch.jsx b/client/src/common/jsx/LangSwitch.jsx new file mode 100644 index 0000000..eba1b27 --- /dev/null +++ b/client/src/common/jsx/LangSwitch.jsx @@ -0,0 +1,43 @@ +import React from 'react'; +import WithHover from './WithHover.jsx'; +import texts from '../data/texts.js'; + +const LangSwitch = ({ lang, setLang, setHover, opened, setOpened}) => { + + const handleSetLang = (key) => { + setLang(key); + setOpened(false); + }; + + return ( +
+ + setOpened(opened !== 'lang' ? 'lang' : false)} + > + {lang} + + { + opened === 'lang' && ( +
+ { + Object.keys(texts).map(key => key !== lang && ( + handleSetLang(key)} + > + {key} + + )) + } +
+ ) + } +
+
+ ); +}; + +export default LangSwitch; diff --git a/client/src/common/jsx/TopBar.jsx b/client/src/common/jsx/TopBar.jsx new file mode 100644 index 0000000..6e5ad6a --- /dev/null +++ b/client/src/common/jsx/TopBar.jsx @@ -0,0 +1,38 @@ +import React, {useState} from 'react'; +import LangSwitch from './LangSwitch.jsx'; +import User from './User.jsx'; + +const TopBar = ({user, setUser, setHover, lang, setLang, t={t}}) => { + const [opened, setOpened] = useState(false); + + return ( +
+ { opened !== false && ( +
setOpened(false)} + /> + )} + + { user && ( + + ) + } +
+ ); +}; + +export default TopBar; diff --git a/client/src/common/jsx/User.jsx b/client/src/common/jsx/User.jsx new file mode 100644 index 0000000..8b05d44 --- /dev/null +++ b/client/src/common/jsx/User.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import WithHover from './WithHover.jsx'; + +const User = ({user, setUser, setHover, t, opened, setOpened}) => { + const handleLogout = () => { + setOpened(false); + setUser(null); + }; + const handleChangePass = () => { setOpened(false) }; + const handleRemoveUser = () => { setOpened(false) }; + + return ( +
+ + setOpened(opened !== 'user' ? 'user' : false)} + > + {user} + + { + opened === 'user' && ( +
+ + {t('logout')} + + + {t('user-settings')} + +
+ ) + } +
+
+ ); +}; + +export default User; diff --git a/client/src/common/jsx/WithHover.jsx b/client/src/common/jsx/WithHover.jsx new file mode 100644 index 0000000..bb1a7f4 --- /dev/null +++ b/client/src/common/jsx/WithHover.jsx @@ -0,0 +1,13 @@ +import React from 'react'; + +const WithHover = ({ children, setHover, message, classes }) => ( +
setHover(message)} + onMouseLeave={()=>setHover(null)} + className={classes} + > + {children} +
+); + +export default WithHover; -- cgit v1.2.3