From 464e470441287572cfda8d95484f781236b9db35 Mon Sep 17 00:00:00 2001 From: piotrruss Date: Mon, 9 Aug 2021 21:36:03 +0200 Subject: init commit --- components/App.js | 38 +++++++++++++++ components/Form.js | 46 ++++++++++++++++++ components/Header.js | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++ components/Layout.js | 67 ++++++++++++++++++++++++++ components/Popup.js | 32 +++++++++++++ components/index.js | 4 ++ 6 files changed, 319 insertions(+) create mode 100644 components/App.js create mode 100644 components/Form.js create mode 100644 components/Header.js create mode 100644 components/Layout.js create mode 100644 components/Popup.js create mode 100644 components/index.js (limited to 'components') diff --git a/components/App.js b/components/App.js new file mode 100644 index 0000000..02443f3 --- /dev/null +++ b/components/App.js @@ -0,0 +1,38 @@ +import React, {useState, useEffect, useRef} from 'react' +import useUser from 'lib/useUser' +import fetchJson from 'lib/fetchJson' +import {close, toggleMin, toggleMax, move} from 'helpers/windowActions' +import {Layout} from 'components' + +const App = ({children, app, apps, setApps}) => { + const winRef = useRef(null); + const [errorMsg, setErrorMsg] = useState('') + + useEffect(() => { + move(app.name, winRef, apps, setApps) + }, []) + + return ( + <> +
+
Notes
+
+ toggleMin('Notes', apps, setApps)}>_ + toggleMax('Notes', apps, setApps)}>+ + close('Notes', apps, setApps)}>x +
+
{children}
+
+ + ) +} + +export default App; diff --git a/components/Form.js b/components/Form.js new file mode 100644 index 0000000..fc14a75 --- /dev/null +++ b/components/Form.js @@ -0,0 +1,46 @@ +import React from 'react' +import PropTypes from 'prop-types' + +const Form = ({errorMessage, onSubmit, isLogin}) => ( +
+
+ {isLogin ? 'Login to access your notes' : 'Register new user'} +
+ + + + + + {errorMessage &&

{errorMessage}

} + + +
+) + +export default Form + +Form.propTypes = { + errorMessage: PropTypes.string, + onSubmit: PropTypes.func, +} diff --git a/components/Header.js b/components/Header.js new file mode 100644 index 0000000..4302af9 --- /dev/null +++ b/components/Header.js @@ -0,0 +1,132 @@ +import React, {useState} from 'react' +import Link from 'next/link' +import useUser from 'lib/useUser' +import fetchJson from 'lib/fetchJson' +import {toggleMin} from 'helpers/windowActions' +import {useRouter} from 'next/router' + +const Header = ({apps, setApps}) => { + const [userMenu, setUserMenu] = useState(false); + const {user, mutateUser} = useUser() + const router = useRouter() + + const handleLogout = async (e) => { + e.preventDefault() + mutateUser( + await fetchJson('/api/logout', {method: 'POST'}), + false + ) + router.push('/login') + } + + return ( +
+ + +
+ ) +} + +export default Header diff --git a/components/Layout.js b/components/Layout.js new file mode 100644 index 0000000..f77ea0c --- /dev/null +++ b/components/Layout.js @@ -0,0 +1,67 @@ +import React, {useState} from 'react' +import Head from 'next/head' +import Context from '../context'; +import Header from './Header' +import Popup from './Popup' +import PropTypes from 'prop-types' + +const Layout = ({ children, apps, setApps}) => { + const [popup, setPopup] = useState({}) + + return ( + + + Notes App + +
+
{children}
+
+
+ + + + ) +} + +export default Layout + +Layout.propTypes = { + children: PropTypes.node, +} diff --git a/components/Popup.js b/components/Popup.js new file mode 100644 index 0000000..911d2fa --- /dev/null +++ b/components/Popup.js @@ -0,0 +1,32 @@ +import React, {useState, useEffect} from 'react' + +const Popup = ({popup}) => { + const [visible, setVisible] = useState(false) + const { + content = null, + time = null, + error = null, + yes = null, + no = null, + } = popup + + useEffect(() => { + setVisible(true) + time && setTimeout(() => setVisible(false), time) + }, [popup]) + + if (!content) return null + + return visible ? ( +
+
{ content }
+ { + (yes || no) && (
+ {[yes, no].map(a => a && { setVisible(false); a.action() }} value={a.label} />)} +
) + } +
+ ) : null +} + +export default Popup diff --git a/components/index.js b/components/index.js new file mode 100644 index 0000000..4875559 --- /dev/null +++ b/components/index.js @@ -0,0 +1,4 @@ +export {default as Form} from './Form' +export {default as Header} from './Header' +export {default as Layout} from './Layout' +export {default as App} from './App' -- cgit v1.2.3