From d4218d550d47fcafd555a3e7a556985d34643765 Mon Sep 17 00:00:00 2001 From: NatSquared Date: Thu, 6 Jun 2024 13:01:43 -0700 Subject: [PATCH 01/11] Upgrade react-router-dom to access useBlocker() --- met-web/package-lock.json | 56 +++++++++++++++++++-------------------- met-web/package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/met-web/package-lock.json b/met-web/package-lock.json index 1f2a20c6f..c6d7ff152 100644 --- a/met-web/package-lock.json +++ b/met-web/package-lock.json @@ -74,7 +74,7 @@ "react-map-gl": "^7.0.21", "react-player": "^2.12.0", "react-redux": "^7.2.8", - "react-router-dom": "^6.10.0", + "react-router-dom": "^6.23.1", "react-scripts": "^5.0.1", "react-svg": "^15.0.1", "recharts": "^2.4.3", @@ -4815,11 +4815,11 @@ } }, "node_modules/@remix-run/router": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz", - "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/@rollup/plugin-babel": { @@ -21103,29 +21103,29 @@ } }, "node_modules/react-router": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz", - "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "dependencies": { - "@remix-run/router": "1.5.0" + "@remix-run/router": "1.16.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz", - "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "dependencies": { - "@remix-run/router": "1.5.0", - "react-router": "6.10.0" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", @@ -29626,9 +29626,9 @@ } }, "@remix-run/router": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz", - "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==" + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==" }, "@rollup/plugin-babel": { "version": "5.3.1", @@ -41818,20 +41818,20 @@ } }, "react-router": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz", - "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", "requires": { - "@remix-run/router": "1.5.0" + "@remix-run/router": "1.16.1" } }, "react-router-dom": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz", - "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", "requires": { - "@remix-run/router": "1.5.0", - "react-router": "6.10.0" + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" } }, "react-scripts": { diff --git a/met-web/package.json b/met-web/package.json index 4607e85e3..dec3a8b97 100644 --- a/met-web/package.json +++ b/met-web/package.json @@ -69,7 +69,7 @@ "react-map-gl": "^7.0.21", "react-player": "^2.12.0", "react-redux": "^7.2.8", - "react-router-dom": "^6.10.0", + "react-router-dom": "^6.23.1", "react-scripts": "^5.0.1", "react-svg": "^15.0.1", "recharts": "^2.4.3", From 92541d79f3410634fd2ab501ee6a446220163628 Mon Sep 17 00:00:00 2001 From: NatSquared Date: Thu, 6 Jun 2024 13:05:21 -0700 Subject: [PATCH 02/11] Update app structure to use createBrowserRouter; style changes --- met-web/src/App.tsx | 117 ++++++--------- .../appLayouts/AuthenticatedLayout.tsx | 41 +++++ .../components/appLayouts/PublicLayout.tsx | 27 ++++ .../src/components/common/Layout/index.tsx | 36 +++-- .../common/Navigation/Breadcrumb.tsx | 60 +++++++- .../layout/Header/InternalHeader.tsx | 6 +- .../src/components/layout/SideNav/SideNav.tsx | 1 + met-web/src/routes/AuthenticatedRoutes.tsx | 142 +++++++++++------- met-web/src/routes/UnauthenticatedRoutes.tsx | 56 +++---- 9 files changed, 308 insertions(+), 178 deletions(-) create mode 100644 met-web/src/components/appLayouts/AuthenticatedLayout.tsx create mode 100644 met-web/src/components/appLayouts/PublicLayout.tsx diff --git a/met-web/src/App.tsx b/met-web/src/App.tsx index 8413a16f8..8ede5f481 100644 --- a/met-web/src/App.tsx +++ b/met-web/src/App.tsx @@ -1,24 +1,22 @@ import React, { useEffect, useState, useContext } from 'react'; import '@bcgov/design-tokens/css-prefixed/variables.css'; // Will be available to use in all component import './App.scss'; -import { Route, BrowserRouter as Router, Routes } from 'react-router-dom'; +import { + Route, + BrowserRouter as Router, + RouterProvider, + Routes, + createBrowserRouter, + createRoutesFromElements, +} from 'react-router-dom'; import { useAppSelector, useAppDispatch } from './hooks'; -import { MidScreenLoader, MobileToolbar } from './components/common'; -import { Box, Container, useMediaQuery, Theme } from '@mui/material'; -import InternalHeader from './components/layout/Header/InternalHeader'; -import PublicHeader from './components/layout/Header/PublicHeader'; +import { MidScreenLoader } from './components/common'; import UnauthenticatedRoutes from './routes/UnauthenticatedRoutes'; import AuthenticatedRoutes from './routes/AuthenticatedRoutes'; -import { Notification } from 'components/common/notification'; -import PageViewTracker from 'routes/PageViewTracker'; -import { NotificationModal } from 'components/common/modal'; -import { FeedbackModal } from 'components/feedback/FeedbackModal'; import { AppConfig } from 'config'; import NoAccess from 'routes/NoAccess'; import { getTenant } from 'services/tenantService'; import NotFound from 'routes/NotFound'; -import Footer from 'components/layout/Footer'; -import { ZIndex } from 'styles/Theme'; import { TenantState, loadingTenant, saveTenant } from 'reduxSlices/tenantSlice'; import { LanguageState } from 'reduxSlices/languageSlice'; import { openNotification } from 'services/notificationService/notificationSlice'; @@ -27,6 +25,8 @@ import DocumentTitle from 'DocumentTitle'; import { Languages } from 'constants/language'; import { AuthKeyCloakContext } from './components/auth/AuthKeycloakContext'; import { determinePathSegments, findTenantInPath } from './utils'; +import { AuthenticatedLayout } from 'components/appLayouts/AuthenticatedLayout'; +import { PublicLayout } from 'components/appLayouts/PublicLayout'; interface Translations { [languageId: string]: { [key: string]: string }; @@ -34,7 +34,6 @@ interface Translations { const App = () => { const drawerWidth = 280; - const isMediumScreen: boolean = useMediaQuery((theme: Theme) => theme.breakpoints.up('md')); const dispatch = useAppDispatch(); const roles = useAppSelector((state) => state.user.roles); const authenticationLoading = useAppSelector((state) => state.user.authentication.loading); @@ -203,71 +202,49 @@ const App = () => { } if (!isAuthenticated) { - return ( - - - - - - - - -