diff options
author | 2020-11-18 23:15:38 +0100 | |
---|---|---|
committer | 2020-11-18 23:15:38 +0100 | |
commit | 1870f3fdf43707a15fda0f609a021f516f45eb63 (patch) | |
tree | fbaf527a47cd89a171df18da4b41e8ce34668555 /client/src/admin/jsx | |
parent | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (diff) | |
download | website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.tar.gz website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.tar.bz2 website_creator-1870f3fdf43707a15fda0f609a021f516f45eb63.zip |
finish auth routes, create cookie token, fix folder structure, add context to FE
Diffstat (limited to 'client/src/admin/jsx')
-rw-r--r-- | client/src/admin/jsx/App.jsx | 32 | ||||
-rw-r--r-- | client/src/admin/jsx/Info.jsx | 10 | ||||
-rw-r--r-- | client/src/admin/jsx/LangSwitch.jsx | 42 | ||||
-rw-r--r-- | client/src/admin/jsx/MainScreen.jsx | 10 | ||||
-rw-r--r-- | client/src/admin/jsx/TopBar.jsx | 35 | ||||
-rw-r--r-- | client/src/admin/jsx/User.jsx | 39 |
6 files changed, 148 insertions, 20 deletions
diff --git a/client/src/admin/jsx/App.jsx b/client/src/admin/jsx/App.jsx index c5be77c..146af70 100644 --- a/client/src/admin/jsx/App.jsx +++ b/client/src/admin/jsx/App.jsx @@ -3,33 +3,35 @@ import ReactDOM from 'react-dom'; import "../scss/index.scss"; -import texts from '../../common/data/texts.js'; -import TopBar from '../../common/jsx/TopBar.jsx'; -import Info from '../../common/jsx/Info.jsx'; +import TopBar from './TopBar.jsx'; +import Info from './Info.jsx'; import MainScreen from './MainScreen.jsx'; +import Context from '../context'; +import { defaultLanguage } from '../data/translations'; const App = () => { - const [adminLang, setAdminLang] = useState('en'); + const [lang, setLang] = useState(defaultLanguage); const [projects, setProjects] = useState([]); const [info, setInfo] = useState(''); const [hover, setHover] = useState(''); const [view, setView] = useState('main'); const [user, setUser] = useState(null); - const t = (key) => texts[adminLang][key] || texts['en'][key]; - // useEffect(() => { - // setInfo('no-saved-websites') - // setHover(''); - // }, [user]); + useEffect(() => { + setInfo('no-saved-websites'); + setUser('admin@op.pl'); + }, []); return ( - <div className="main"> - <TopBar lang={adminLang} setLang={setAdminLang} setHover={setHover} user={user} setUser={setUser} t={t} /> - <div className="main__content"> - { view === 'main' && <MainScreen projects={projects} t={t} setHover={setHover} /> } + <Context.Provider value={{ lang, setHover, setInfo }}> + <div className="main"> + <TopBar lang={lang} setLang={setLang} user={user} setUser={setUser} /> + <div className="main__content"> + { view === 'main' && <MainScreen projects={projects} /> } + </div> + <Info info={info} hover={hover} /> </div> - <Info info={info} hover={hover} t={t} /> - </div> + </Context.Provider> ) }; diff --git a/client/src/admin/jsx/Info.jsx b/client/src/admin/jsx/Info.jsx new file mode 100644 index 0000000..75294e1 --- /dev/null +++ b/client/src/admin/jsx/Info.jsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { t } from '../hocs'; + +const Info = ({ info, hover }) => ( + <p className="info"> + { hover ? t(hover) : t(info) } + </p> +); + +export default Info; diff --git a/client/src/admin/jsx/LangSwitch.jsx b/client/src/admin/jsx/LangSwitch.jsx new file mode 100644 index 0000000..2494bef --- /dev/null +++ b/client/src/admin/jsx/LangSwitch.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { WithHover } from '../hocs'; +import { languages } from '../data/translations.js' + +const LangSwitch = ({ lang, setLang, opened, setOpened}) => { + const handleSetLang = (key) => { + setLang(key); + setOpened(false); + }; + + return ( + <div className="lang-switch"> + <WithHover message="click-to-change-language"> + <span + className={`lang-switch__main-item${opened === 'lang' ? ' lang-switch__main-item--active' : ''}`} + onClick={() => setOpened(opened !== 'lang' ? 'lang' : false)} + > + {lang} + </span> + { + opened === 'lang' && ( + <div className="lang-switch__list"> + { + languages.map(key => key !== lang && ( + <span + className="lang-switch__item" + key={key} + onClick={() => handleSetLang(key)} + > + {key} + </span> + )) + } + </div> + ) + } + </WithHover> + </div> + ); +}; + +export default LangSwitch; diff --git a/client/src/admin/jsx/MainScreen.jsx b/client/src/admin/jsx/MainScreen.jsx index ff28256..3d65384 100644 --- a/client/src/admin/jsx/MainScreen.jsx +++ b/client/src/admin/jsx/MainScreen.jsx @@ -1,21 +1,21 @@ import React, { Fragment } from 'react'; -import WithHover from '../../common/jsx/WithHover.jsx'; +import { WithHover, t } from '../hocs'; -const MainScreen = ({ projects, t, setHover }) => ( +const MainScreen = ({ projects }) => ( <div className="main-screen"> <h1 className="main-screen__header">{ t('main-title') }</h1> <div className="main-screen__list"> { !projects.length && ( - <WithHover setHover={setHover} message="edit-current-project-hover"> + <WithHover message="edit-current-project-hover"> <p className="main-screen__item">{ t('edit-current-project') }</p> </WithHover> )} { !projects.length && ( - <WithHover setHover={setHover} message="show-saved-projects-hover"> + <WithHover message="show-saved-projects-hover"> <p className="main-screen__item">{ t('show-saved-projects') }</p> </WithHover> )} - <WithHover setHover={setHover} message="create-new-project-hover"> + <WithHover message="create-new-project-hover"> <p className="main-screen__item">{ t('create-new-project') }</p> </WithHover> </div> diff --git a/client/src/admin/jsx/TopBar.jsx b/client/src/admin/jsx/TopBar.jsx new file mode 100644 index 0000000..e9be676 --- /dev/null +++ b/client/src/admin/jsx/TopBar.jsx @@ -0,0 +1,35 @@ +import React, {useState} from 'react'; +import LangSwitch from './LangSwitch.jsx'; +import User from './User.jsx'; + +const TopBar = ({ user, setUser, lang, setLang }) => { + const [opened, setOpened] = useState(false); + + return ( + <div className="top-bar"> + { opened !== false && ( + <div + className="top-bar__fog" + onClick={() => setOpened(false)} + /> + )} + <LangSwitch + lang={lang} + setLang={setLang} + opened={opened} + setOpened={setOpened} + /> + { user && ( + <User + user={user} + setUser={setUser} + opened={opened} + setOpened={setOpened} + /> + ) + } + </div> + ); +}; + +export default TopBar; diff --git a/client/src/admin/jsx/User.jsx b/client/src/admin/jsx/User.jsx new file mode 100644 index 0000000..22b96b4 --- /dev/null +++ b/client/src/admin/jsx/User.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { WithHover, t } from '../hocs'; +import logout from '../api/logout'; + +const User = ({ user, setUser, opened, setOpened }) => { + const handleLogout = () => { + setOpened(false); + logout(); + }; + const handleChangePass = () => { setOpened(false) }; + const handleRemoveUser = () => { setOpened(false) }; + + return ( + <div className="user"> + <WithHover message="click-to-change-user"> + <span + className={`user__main-item${opened === 'user' ? ' user__main-item--active' : ''}`} + onClick={() => setOpened(opened !== 'user' ? 'user' : false)} + > + {user} + </span> + { + opened === 'user' && ( + <div className="user__list" > + <WithHover message="click-to-logout"> + <span className="user__item" onClick={handleLogout}>{t('logout')}</span> + </WithHover> + <WithHover message="click-to-change-user-settings"> + <span className="user__item" onClick={handleChangePass}>{t('user-settings')}</span> + </WithHover> + </div> + ) + } + </WithHover> + </div> + ); +}; + +export default User; |