summaryrefslogtreecommitdiffstats
path: root/client/src/admin/jsx
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/admin/jsx')
-rw-r--r--client/src/admin/jsx/App.jsx32
-rw-r--r--client/src/admin/jsx/Info.jsx10
-rw-r--r--client/src/admin/jsx/LangSwitch.jsx42
-rw-r--r--client/src/admin/jsx/MainScreen.jsx10
-rw-r--r--client/src/admin/jsx/TopBar.jsx35
-rw-r--r--client/src/admin/jsx/User.jsx39
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;