From 01d8294e6cb5c5b19ad3c4588d3d6f65bf586bd7 Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Wed, 12 Jul 2023 23:58:43 -0300 Subject: [PATCH 01/10] =?UTF-8?q?refatora=C3=A7=C3=A3o=20de=20rotas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +-- src/layout/index.jsx | 15 +++++++++++++++ src/main.jsx | 21 +++++++++++++-------- src/pages/newPage.jsx | 5 +++++ src/pages/newPage2.jsx | 5 +++++ src/routers/index.jsx | 16 ++++++++++++++++ 6 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 src/layout/index.jsx create mode 100644 src/pages/newPage.jsx create mode 100644 src/pages/newPage2.jsx create mode 100644 src/routers/index.jsx diff --git a/package.json b/package.json index 495d91e..2d6a14a 100755 --- a/package.json +++ b/package.json @@ -11,13 +11,12 @@ "dependencies": { "@formkit/auto-animate": "^0.7.0", "@jsreport/browser-client": "^3.1.0", - "firebase": "^9.8.4", + "firebase": "^10.0.0", "formik": "^2.2.9", "lodash": "^4.17.21", "moment": "^2.29.3", "react": "^18.0.0", "react-dom": "^18.0.0", - "react-haiku": "^2.0.3", "react-router-dom": "^6.3.0", "react-transition-group": "^4.4.5", "recharts": "^2.1.16" diff --git a/src/layout/index.jsx b/src/layout/index.jsx new file mode 100644 index 0000000..476d97f --- /dev/null +++ b/src/layout/index.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import { Outlet } from "react-router-dom"; + +const Layout = () => { + return ( + +
nav
+
+ +
+
copyright
+
+ ) +} +export default Layout \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 6fb3986..f33ea77 100755 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,13 +1,18 @@ import React from 'react' import ReactDOM from 'react-dom/client' -import { BrowserRouter } from 'react-router-dom' -import App from './App' -// import './index.css' +import { createBrowserRouter, RouterProvider } from 'react-router-dom' +import list_routes from './routers' +import Layout from './layout' ReactDOM.createRoot(document.getElementById('root')).render( - // - - - -// + + , + children: list_routes + } + ]) + } /> + ) diff --git a/src/pages/newPage.jsx b/src/pages/newPage.jsx new file mode 100644 index 0000000..384a2f1 --- /dev/null +++ b/src/pages/newPage.jsx @@ -0,0 +1,5 @@ +export default function New(){ + return ( +

NewPage

+ ) +} \ No newline at end of file diff --git a/src/pages/newPage2.jsx b/src/pages/newPage2.jsx new file mode 100644 index 0000000..8fcf28e --- /dev/null +++ b/src/pages/newPage2.jsx @@ -0,0 +1,5 @@ +export default function New(){ + return ( +

NewPage2

+ ) +} \ No newline at end of file diff --git a/src/routers/index.jsx b/src/routers/index.jsx new file mode 100644 index 0000000..65327b5 --- /dev/null +++ b/src/routers/index.jsx @@ -0,0 +1,16 @@ +import NewPage from "../pages/newPage" +import NewPageTwo from "../pages/newPage2" + +const routers = [ + + { + path: "/2", + element: + }, + { + path: "/1", + element: + } +] + +export default routers \ No newline at end of file From 4318a224e5fa739b2a239118ebd0e513a8604c5a Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Thu, 13 Jul 2023 23:27:53 -0300 Subject: [PATCH 02/10] adicionado componentes no layout --- src/index.css | 153 +----------------------------------------- src/layout/Header.jsx | 32 +++------ src/layout/index.jsx | 18 +++-- src/main.jsx | 1 + 4 files changed, 23 insertions(+), 181 deletions(-) diff --git a/src/index.css b/src/index.css index d93af56..8a90c80 100755 --- a/src/index.css +++ b/src/index.css @@ -2,155 +2,4 @@ @tailwind components; -@tailwind utilities; - -@layer base { - td { - @apply border bg-white border-black text-center py-2; - } -} - -@layer components { - - .row { - @apply border bg-white border-black text-center py-2; - } - .header { - @apply border bg-gray-400 border-black text-center py-2 font-bold; - } - .page-conteiner { - @apply bg-slate-200 border-2 border-black p-2 m-16 rounded-md shadow-lg; - } - /* .form-input { - @apply m-1 border border-black rounded-md px-2 py-1; - } */ - .button { - @apply font-bold border border-black bg-slate-300 px-2 rounded-md py-1 hover:bg-gray-500 hover:text-white; - } - .button-active { - @apply font-bold border border-black px-2 rounded-md py-1 bg-gray-500 text-white; - } -} -.task { - zoom: 1.3; - background: url("./assets/open-iconic-master/svg/task.svg"); - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} - -.reload { - zoom: 1.3; - background: url("./assets/open-iconic-master/svg/loop-circular.svg"); - background-size: contain; - background-repeat: no-repeat; - background-position: center; - -} - -.clear { - zoom: 1.3; - background-image: url("./assets/open-iconic-master/svg/trash.svg"); - background-size: cover; -} - -.delete { - zoom: 1.3; - background: url("./assets/open-iconic-master/svg/circle-x.svg"); - background-size: contain; - background-repeat: no-repeat; -} - -.locked { - zoom: 1.2; - background: url("./assets/open-iconic-master/svg/lock-locked.svg"); - background-size: contain; - background-repeat: no-repeat; -} - -.unlocked { - zoom: 1.2; - background: url("./assets/open-iconic-master/svg/lock-unlocked.svg"); - background-size: contain; - background-repeat: no-repeat; -} - -.input-number::-webkit-inner-spin-button, -.input-number::-webkit-outer-spin-button { - display: none; -} -[list]::-webkit-calendar-picker-indicator { - display: none !important; -} - -#tabela { - display: flex; - flex-direction: column; -} - -form > div { - display: inline; -} -/** - * Ring of dots - * - * @author jh3y -*/ -@-webkit-keyframes ring-of-dots { - 0% { - -webkit-box-shadow: 20px 0px 0 0 #d4c3c3, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; } - 14.28571% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 #ba98dd, -4.45042px -19.49856px 0 0 #3b30d4, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 #ba98dd, -4.45042px -19.49856px 0 0 #3b30d4, 12.4698px -15.63663px 0 0 white; } - 28.57143% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 #ba98dd, -18.01938px -8.67767px 0 0 #3b30d4, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 #ba98dd, -18.01938px -8.67767px 0 0 #3b30d4, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 42.85714% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 #ba98dd, -18.01938px 8.67767px 0 0 #3b30d4, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 #ba98dd, -18.01938px 8.67767px 0 0 #3b30d4, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 57.14286% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 #ba98dd, -4.45042px 19.49856px 0 0 #3b30d4, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 #ba98dd, -4.45042px 19.49856px 0 0 #3b30d4, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 71.42857% { - -webkit-box-shadow: 20px 0px 0 0 #ba98dd, 12.4698px 15.63663px 0 0 #3b30d4, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 #ba98dd, 12.4698px 15.63663px 0 0 #3b30d4, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 85.71429% { - -webkit-box-shadow: 20px 0px 0 0 #3b30d4, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 #ba98dd; - box-shadow: 20px 0px 0 0 #3b30d4, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 #ba98dd; } - 100% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; } } -@keyframes ring-of-dots { - 0% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; } - 14.28571% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 #ba98dd, -4.45042px -19.49856px 0 0 #3b30d4, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 #ba98dd, -4.45042px -19.49856px 0 0 #3b30d4, 12.4698px -15.63663px 0 0 white; } - 28.57143% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 #ba98dd, -18.01938px -8.67767px 0 0 #3b30d4, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 #ba98dd, -18.01938px -8.67767px 0 0 #3b30d4, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 42.85714% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 #ba98dd, -18.01938px 8.67767px 0 0 #3b30d4, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 #ba98dd, -18.01938px 8.67767px 0 0 #3b30d4, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 57.14286% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 #ba98dd, -4.45042px 19.49856px 0 0 #3b30d4, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 #ba98dd, -4.45042px 19.49856px 0 0 #3b30d4, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 71.42857% { - -webkit-box-shadow: 20px 0px 0 0 #ba98dd, 12.4698px 15.63663px 0 0 #3b30d4, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; - box-shadow: 20px 0px 0 0 #ba98dd, 12.4698px 15.63663px 0 0 #3b30d4, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 white; } - 85.71429% { - -webkit-box-shadow: 20px 0px 0 0 #3b30d4, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 #ba98dd; - box-shadow: 20px 0px 0 0 #3b30d4, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 white, 12.4698px -15.63663px 0 0 #ba98dd; } - 100% { - -webkit-box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; - box-shadow: 20px 0px 0 0 white, 12.4698px 15.63663px 0 0 white, -4.45042px 19.49856px 0 0 white, -18.01938px 8.67767px 0 0 white, -18.01938px -8.67767px 0 0 white, -4.45042px -19.49856px 0 0 #ba98dd, 12.4698px -15.63663px 0 0 #3b30d4; } } - -.ring-of-dots:before { - animation: ring-of-dots 1s infinite linear reverse; - border-radius: 10px; - content: ''; - display: block; - height: 10px; - width: 10px; } \ No newline at end of file +@tailwind utilities; \ No newline at end of file diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx index 3f541eb..f7f4c53 100755 --- a/src/layout/Header.jsx +++ b/src/layout/Header.jsx @@ -1,43 +1,31 @@ import React from 'react'; -import UserMenu from './UserMenu'; -function Header({ - sidebarOpen, - setSidebarOpen -}) { - - // const [searchModalOpen, setSearchModalOpen] = useState(false) +function Header() { return (
-
+
- - {/* Header: Left side */}
- - {/* Hamburger button */} -
- - {/* Header: Right side */}

- - +
diff --git a/src/layout/index.jsx b/src/layout/index.jsx index 476d97f..2820272 100644 --- a/src/layout/index.jsx +++ b/src/layout/index.jsx @@ -1,15 +1,19 @@ import React from "react"; +import Header from "./Header"; +import Sidebar from "./Sidebar" import { Outlet } from "react-router-dom"; const Layout = () => { return ( - -
nav
-
- -
-
copyright
-
+
+ +
+
+
+ +
+
+
) } export default Layout \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index f33ea77..d761625 100755 --- a/src/main.jsx +++ b/src/main.jsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom/client' import { createBrowserRouter, RouterProvider } from 'react-router-dom' import list_routes from './routers' import Layout from './layout' +import './index.css' ReactDOM.createRoot(document.getElementById('root')).render( From 882e7d48b2ef62939c991ec7b5bea6ae5d16b6f1 Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Sat, 15 Jul 2023 01:09:48 -0300 Subject: [PATCH 03/10] =?UTF-8?q?configura=C3=A7=C3=A3o=20inicial=20de=20s?= =?UTF-8?q?tate=20da=20aplica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/contexts/useLayoutContext.jsx | 42 +++++++++++++++++++++++++++++++ src/layout/Header.jsx | 9 ++++--- src/layout/index.jsx | 20 ++++++++------- 3 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 src/contexts/useLayoutContext.jsx diff --git a/src/contexts/useLayoutContext.jsx b/src/contexts/useLayoutContext.jsx new file mode 100644 index 0000000..d6fe200 --- /dev/null +++ b/src/contexts/useLayoutContext.jsx @@ -0,0 +1,42 @@ +import React, { createContext, useContext, useReducer } from "react"; + +const LayoutContext = createContext() + +function handlerLayoutChange(state,action){ +switch (action.toggle){ + case "sidebarOpened": { + return { + ...state, + sidebarOpened: !state.sidebarOpened + } + }; + case "sidebarExpanded": { + return { + ...state, + sidebarExpanded: !state.sidebarExpanded + } + }; + case "userMenu": { + return { + ...state, + userMenu: !state.userMenu + } + }; + +} +} + +export function LayoutProvider({children}) { + + const [layoutState, setLayoutState] = useReducer(handlerLayoutChange,{sidebarOpened: false, sidebarExpanded: false, userMenu: false}) + + return ( + < LayoutContext.Provider value={{layoutState, setLayoutState}}> + {children} + + ) +} + +export function useLayoutContext(){ + return useContext(LayoutContext) +} \ No newline at end of file diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx index f7f4c53..19aab64 100755 --- a/src/layout/Header.jsx +++ b/src/layout/Header.jsx @@ -1,7 +1,9 @@ -import React from 'react'; - +import React, { useContext } from 'react'; +import { useLayoutContext } from '../contexts/useLayoutContext' function Header() { + const { layoutState, setLayoutState } = useLayoutContext() + return (

- + {layoutState.sidebarOpened ? "sim":"não"} +
diff --git a/src/layout/index.jsx b/src/layout/index.jsx index 2820272..8b51121 100644 --- a/src/layout/index.jsx +++ b/src/layout/index.jsx @@ -2,18 +2,20 @@ import React from "react"; import Header from "./Header"; import Sidebar from "./Sidebar" import { Outlet } from "react-router-dom"; - +import { LayoutProvider } from '../contexts/useLayoutContext' const Layout = () => { return ( -
- -
-
-
- -
+ +
+ +
+
+
+ +
+
-
+ ) } export default Layout \ No newline at end of file From f45b7977bfad2b5201110bf9bb08dce4e61dafca Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Sun, 23 Jul 2023 23:37:03 -0300 Subject: [PATCH 04/10] converter component para compound pattern --- src/layout/Sidebar.jsx | 468 +++++++++++++++++++++-------------------- src/layout/index.jsx | 9 +- 2 files changed, 251 insertions(+), 226 deletions(-) diff --git a/src/layout/Sidebar.jsx b/src/layout/Sidebar.jsx index 60ecdf8..4fb0655 100755 --- a/src/layout/Sidebar.jsx +++ b/src/layout/Sidebar.jsx @@ -1,132 +1,31 @@ -import React, { useState, useEffect, useRef } from "react"; -import { Link, useLocation } from "react-router-dom"; -// import {Tooltip} from "react-tooltip"; -function Sidebar({ sidebarOpen, setSidebarOpen }) { - const location = useLocation(); - const { pathname } = location; - - const trigger = useRef(null); - const sidebar = useRef(null); - - const storedSidebarExpanded = localStorage.getItem("sidebar-expanded"); - const [sidebarExpanded, setSidebarExpanded] = useState( - storedSidebarExpanded === null ? false : storedSidebarExpanded === "true" - ); - - // close on click outside - useEffect(() => { - const clickHandler = ({ target }) => { - if (!sidebar.current || !trigger.current) return; - if ( - !sidebarOpen || - sidebar.current.contains(target) || - trigger.current.contains(target) - ) - return; - setSidebarOpen(false); - }; - document.addEventListener("click", clickHandler); - return () => document.removeEventListener("click", clickHandler); - }); - - // close if the esc key is pressed - useEffect(() => { - const keyHandler = ({ keyCode }) => { - if (!sidebarOpen || keyCode !== 27) return; - setSidebarOpen(false); - }; - document.addEventListener("keydown", keyHandler); - return () => document.removeEventListener("keydown", keyHandler); - }); - - useEffect(() => { - localStorage.setItem("sidebar-expanded", sidebarExpanded); - if (sidebarExpanded) { - document.querySelector("body").classList.add("sidebar-expanded"); - } else { - document.querySelector("body").classList.remove("sidebar-expanded"); - } - }, [sidebarExpanded]); +import React from "react"; +import { useLayoutContext } from '../contexts/useLayoutContext' +import { Link } from "react-router-dom"; +function Wrapper({children}) { + + let { layoutState } = useLayoutContext() + return ( -
- {/* Sidebar backdrop (mobile only) */} - - - {/* Sidebar */} - @@ -22,6 +22,26 @@ function Wrapper({children}) { ) }; +function Header({logo}){ + let {setLayoutState} = useLayoutContext() + return( +
+ + + + +
+ ) +} + function MenuList({links}){ return ( @@ -49,17 +69,7 @@ function MenuList({links}){ className="flex items-center justify-between" title={link.title}>
- - - - - + {link.title} @@ -75,211 +85,28 @@ function MenuList({links}){ } +function ExpandButton(){ + let { layoutState, setLayoutState} = useLayoutContext() -export default {Wrapper, MenuList}; - - -// function Sidebarf() { - -// let { layoutState, setLayoutState } = useLayoutContext() - -// return ( -//
-// {/* Sidebar backdrop (mobile only) */} -// - -// {/* Sidebar */} -// -//
-// ); -// } - + return ( +
+
+ +
+
+ ) +} +export default {Wrapper, MenuList, Header, ExpandButton}; \ No newline at end of file diff --git a/src/layout/index.jsx b/src/layout/index.jsx index 4fa403e..7f40f12 100644 --- a/src/layout/index.jsx +++ b/src/layout/index.jsx @@ -3,15 +3,17 @@ import Header from "./Header"; import Sidebar from "./Sidebar" import { Outlet } from "react-router-dom"; import { LayoutProvider } from '../contexts/useLayoutContext' +import listRouters from "../routers" +import logo from "../style/icons/logo.png" -const Layout = ({ routers }) => { +const Layout = () => { return (
- {/* */} - - {/* */} + + +
diff --git a/src/main.jsx b/src/main.jsx index e3729e6..8d00ed9 100755 --- a/src/main.jsx +++ b/src/main.jsx @@ -11,7 +11,7 @@ ReactDOM.createRoot(document.getElementById('root')).render( , + element: , children: listRoutes } ]) diff --git a/src/routers/index.jsx b/src/routers/index.jsx index df4e08b..e6b9c25 100644 --- a/src/routers/index.jsx +++ b/src/routers/index.jsx @@ -1,15 +1,18 @@ import NewPage from "../pages/newPage" import NewPageTwo from "../pages/newPage2" +import barchart from "../style/icons/bar-chart.svg" const routers = [ { path: "/1", title: "Pagina 1", + icon: barchart, element: }, { path: "/2", title: "Pagina 2", + icon: barchart, element: } ] diff --git a/src/style/icons/bar-chart.svg b/src/style/icons/bar-chart.svg new file mode 100644 index 0000000..881a854 --- /dev/null +++ b/src/style/icons/bar-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/style/icons/logo.png b/src/style/icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..62f009af8ba59f8a82bb8c76203bd06b995217f0 GIT binary patch literal 49610 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 \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index ba38fc7..079e66d 100755 --- a/vite.config.js +++ b/vite.config.js @@ -5,6 +5,6 @@ import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [ react() - ] + ],assetsInclude: ['**/*.svg'] } ) From 758d2fdb50d13c3e09fd305e548996d912ba4914 Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Thu, 3 Aug 2023 21:55:33 -0300 Subject: [PATCH 08/10] logica do contexo de layouyr movida --- src/contexts/useLayoutContext.jsx | 29 ----------------------------- src/layout/Header.jsx | 8 +++++--- src/layout/Sidebar.jsx | 13 +++++++------ src/layout/index.jsx | 30 ++++++++++++++++++++++++------ src/main.jsx | 4 ++-- 5 files changed, 38 insertions(+), 46 deletions(-) delete mode 100644 src/contexts/useLayoutContext.jsx diff --git a/src/contexts/useLayoutContext.jsx b/src/contexts/useLayoutContext.jsx deleted file mode 100644 index 1a9215a..0000000 --- a/src/contexts/useLayoutContext.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React, { createContext, useContext, useReducer } from "react"; - -const LayoutContext = createContext() - -function handlerLayoutChange(state, action){ - - let newValue = Object.defineProperty( - state, - action.toggle, - { value: !state[action.toggle] } - ) - - return {...newValue} -} - -export function LayoutProvider({children}) { - - const [layoutState, setLayoutState] = useReducer(handlerLayoutChange,{sidebarOpen: false, sidebarExpanded: false, userMenu: false}) - - return ( - < LayoutContext.Provider value={{layoutState, setLayoutState}}> - {children} - - ) -} - -export function useLayoutContext(){ - return useContext(LayoutContext) -} \ No newline at end of file diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx index 122ac24..a51289a 100755 --- a/src/layout/Header.jsx +++ b/src/layout/Header.jsx @@ -1,8 +1,10 @@ -import React from 'react'; -import { useLayoutContext } from '../contexts/useLayoutContext' +import React, {useContext} from "react"; +import {layout} from "../layout"; + + function Header() { - const { layoutState, setLayoutState } = useLayoutContext() + const { layoutState, setLayoutState } = useContext(layout) return (
diff --git a/src/layout/Sidebar.jsx b/src/layout/Sidebar.jsx index af70790..cbaea4a 100755 --- a/src/layout/Sidebar.jsx +++ b/src/layout/Sidebar.jsx @@ -1,10 +1,11 @@ -import React from "react"; -import { useLayoutContext } from '../contexts/useLayoutContext' +import React, {useContext} from "react"; import { Link } from "react-router-dom"; +import {layout} from "../layout"; + function Wrapper({children}) { - let { layoutState } = useLayoutContext() + let {layoutState} = useContext(layout) return (
@@ -23,7 +24,7 @@ function Wrapper({children}) { }; function Header({logo}){ - let {setLayoutState} = useLayoutContext() + let {setLayoutState} = useContext(layout) return(
@@ -86,7 +87,7 @@ function MenuList({links}){ } function ExpandButton(){ - let { layoutState, setLayoutState} = useLayoutContext() + let { layoutState, setLayoutState} = useContext(layout) return (
diff --git a/src/layout/index.jsx b/src/layout/index.jsx index 7f40f12..911f40e 100644 --- a/src/layout/index.jsx +++ b/src/layout/index.jsx @@ -1,14 +1,32 @@ -import React from "react"; +import React, {useReducer, createContext} from "react"; import Header from "./Header"; import Sidebar from "./Sidebar" import { Outlet } from "react-router-dom"; -import { LayoutProvider } from '../contexts/useLayoutContext' +// import { LayoutProvider } from '../contexts/useLayoutContext' import listRouters from "../routers" import logo from "../style/icons/logo.png" -const Layout = () => { +export const layout = createContext() + +const INITIAL_STATES = {sidebarOpen: false, sidebarExpanded: false, userMenu: false} + +function handlerLayoutChange(state, action){ + + let newValue = Object.defineProperty( + state, + action.toggle, + { value: !state[action.toggle] } + ) + + return {...newValue} +} + +function LayoutContext() { + + const [layoutState, setLayoutState] = useReducer(handlerLayoutChange, INITIAL_STATES) + return ( - +
@@ -22,7 +40,7 @@ const Layout = () => {
- + ) } -export default Layout \ No newline at end of file +export default LayoutContext \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 8d00ed9..ecd52ab 100755 --- a/src/main.jsx +++ b/src/main.jsx @@ -2,7 +2,7 @@ import React from 'react' import ReactDOM from 'react-dom/client' import { createBrowserRouter, RouterProvider } from 'react-router-dom' import listRoutes from './routers' -import Layout from './layout' +import LayoutPage from './layout' import './index.css' @@ -11,7 +11,7 @@ ReactDOM.createRoot(document.getElementById('root')).render( , + element: , children: listRoutes } ]) From 3920d39878f7f83a378b283940a7821b55f8ca73 Mon Sep 17 00:00:00 2001 From: luizdeveloperbr Date: Sun, 20 Aug 2023 01:11:15 -0300 Subject: [PATCH 09/10] ajuste sidebar lg:screen --- src/layout/Sidebar.jsx | 16 +++++++++++----- src/layout/index.jsx | 1 - 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/layout/Sidebar.jsx b/src/layout/Sidebar.jsx index cbaea4a..99c7e2b 100755 --- a/src/layout/Sidebar.jsx +++ b/src/layout/Sidebar.jsx @@ -10,12 +10,18 @@ function Wrapper({children}) { return (
@@ -34,7 +40,7 @@ function Header({logo}){ onClick={() => setLayoutState({ toggle: "sidebarOpen" })} > Close sidebar - + @@ -94,10 +100,10 @@ function ExpandButton(){
-

- {layoutState.userMenu ? "sim":"não"} - -
+ {/* inicio */} +
+ {/* fim */} +
diff --git a/src/layout/Sidebar.jsx b/src/layout/Sidebar.jsx index 99c7e2b..720b1a7 100755 --- a/src/layout/Sidebar.jsx +++ b/src/layout/Sidebar.jsx @@ -8,12 +8,11 @@ function Wrapper({children}) { let {layoutState} = useContext(layout) return ( -
- + // -
) }; diff --git a/src/pages/newPage.jsx b/src/pages/newPage.jsx index 384a2f1..e19ae67 100644 --- a/src/pages/newPage.jsx +++ b/src/pages/newPage.jsx @@ -1,5 +1,9 @@ -export default function New(){ +import icon from '../style/icons/bar-chart.svg' + +function NewP(){ return (

NewPage

) -} \ No newline at end of file +} + +export {icon, NewP} \ No newline at end of file diff --git a/src/routers/index.jsx b/src/routers/index.jsx index e6b9c25..64203ce 100644 --- a/src/routers/index.jsx +++ b/src/routers/index.jsx @@ -1,20 +1,20 @@ -import NewPage from "../pages/newPage" -import NewPageTwo from "../pages/newPage2" -import barchart from "../style/icons/bar-chart.svg" +import {icon, NewP as ComponentPage} from "../pages/newPage" +// import NewPageTwo from "../pages/newPage2" +// import barchart from "../style/icons/bar-chart.svg" const routers = [ { path: "/1", title: "Pagina 1", - icon: barchart, - element: + icon: icon, + element: }, - { - path: "/2", - title: "Pagina 2", - icon: barchart, - element: - } + // { + // path: "/2", + // title: "Pagina 2", + // icon: barchart, + // element: + // } ] export default routers \ No newline at end of file