diff --git a/frontend/dashboard/.eslintrc b/frontend/dashboard/.eslintrc
index 0ddcccd0..e101f76b 100755
--- a/frontend/dashboard/.eslintrc
+++ b/frontend/dashboard/.eslintrc
@@ -31,6 +31,7 @@
"import/no-useless-path-segments": 1,
"import/no-extraneous-dependencies": 0,
"@typescript-eslint/naming-convention": 0,
+ "import/extensions": "never",
"object-curly-spacing": [
1,
"always"
diff --git a/frontend/dashboard/src/contexts/ConfiguredCorporateContext.tsx b/frontend/dashboard/src/contexts/ConfiguredCorporateContext.tsx
new file mode 100644
index 00000000..5fde9420
--- /dev/null
+++ b/frontend/dashboard/src/contexts/ConfiguredCorporateContext.tsx
@@ -0,0 +1,49 @@
+import { Corporate } from '@/@types/corporates';
+import axios from '@/utils/axios';
+import { ReactNode, createContext, useState, useEffect } from 'react';
+import { useParams } from 'react-router';
+// hooks
+import useResponsive from '../hooks/useResponsive';
+
+// ----------------------------------------------------------------------
+
+export type ConfiguredCorporateContextProps = {
+ currentCorporate?: Corporate | null;
+};
+
+const initialState: ConfiguredCorporateContextProps = {
+ currentCorporate: null,
+};
+
+const ConfiguredCorporateContext = createContext(initialState);
+
+type ConfiguredCorporateProviderProps = {
+ children: ReactNode;
+};
+
+function ConfiguredCorporateProvider({ children }: ConfiguredCorporateProviderProps) {
+ const { corporate_id } = useParams();
+ const [corporate, setCorporate] = useState(null);
+
+ useEffect(() => {
+ // Load Corporate
+ console.log('calling corporate' + corporate_id);
+
+ axios.get(`corporates/${corporate_id}`)
+ .then((res) => {
+ setCorporate(res.data)
+ })
+ }, []);
+
+ return (
+
+ {children}
+
+ );
+}
+
+export { ConfiguredCorporateProvider, ConfiguredCorporateContext };
diff --git a/frontend/dashboard/src/layouts/dashboard/index.tsx b/frontend/dashboard/src/layouts/dashboard/index.tsx
index 569ddb4c..6a30c399 100755
--- a/frontend/dashboard/src/layouts/dashboard/index.tsx
+++ b/frontend/dashboard/src/layouts/dashboard/index.tsx
@@ -90,6 +90,15 @@ export default function DashboardLayout() {
sx={{
display: { lg: 'flex' },
minHeight: { lg: 1 },
+
+ pl: {
+ xs: 2,
+ lg: 0
+ },
+ pr: {
+ xs: 2,
+ lg: 0
+ },
}}
>
setOpen(true)} />
diff --git a/frontend/dashboard/src/pages/Corporates/ConfigLayout.tsx b/frontend/dashboard/src/pages/Corporates/ConfigLayout.tsx
new file mode 100644
index 00000000..63e02a8c
--- /dev/null
+++ b/frontend/dashboard/src/pages/Corporates/ConfigLayout.tsx
@@ -0,0 +1,19 @@
+import { Outlet } from 'react-router-dom';
+// @mui
+import { Stack } from '@mui/material';
+import { ConfiguredCorporateProvider } from '@/contexts/ConfiguredCorporateContext';
+
+export default function ConfigLayout() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/frontend/dashboard/src/pages/Corporates/CorporateTabNavigations.tsx b/frontend/dashboard/src/pages/Corporates/CorporateTabNavigations.tsx
index 4e4289ff..d882a464 100755
--- a/frontend/dashboard/src/pages/Corporates/CorporateTabNavigations.tsx
+++ b/frontend/dashboard/src/pages/Corporates/CorporateTabNavigations.tsx
@@ -80,7 +80,7 @@ export default function CorporateTabNavigations({ position }: Props) {
allowScrollButtonsMobile
aria-label="scrollable force tabs example"
>
- {mainTabItems.map((tabItem, index) => ( { navigate("/corporates/"+corporate_id+"/"+mainTabItems[index].path) }}label={tabItem.label}/>))}
+ {mainTabItems.map((tabItem, index) => ( { navigate("/corporate/"+corporate_id+"/"+mainTabItems[index].path) }}label={tabItem.label}/>))}
)
}
diff --git a/frontend/dashboard/src/pages/Corporates/Division/Index.tsx b/frontend/dashboard/src/pages/Corporates/Division/Index.tsx
index 3744a469..78da9fe0 100755
--- a/frontend/dashboard/src/pages/Corporates/Division/Index.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Division/Index.tsx
@@ -1,4 +1,7 @@
+import { Corporate } from "@/@types/corporates";
+import { ConfiguredCorporateContext } from "@/contexts/ConfiguredCorporateContext";
import { Card, Grid } from "@mui/material";
+import { useContext, useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import HeaderBreadcrumbs from "../../../components/HeaderBreadcrumbs";
import Page from "../../../components/Page";
@@ -12,6 +15,14 @@ export default function Divisions() {
const { themeStretch } = useSettings();
const { corporate_id } = useParams();
+
+ const [corporate, setCorporate] = useState();
+
+ const configuredCorporateContext = useContext(ConfiguredCorporateContext);
+
+ useEffect(() => {
+ setCorporate(configuredCorporateContext.currentCorporate);
+ }, [configuredCorporateContext])
return (
@@ -24,7 +35,7 @@ export default function Divisions() {
href: '/corporates',
},
{
- name: 'Corporate Name',
+ name: corporate?.name ?? '-',
href: '/corporates/'+corporate_id,
},
{
diff --git a/frontend/dashboard/src/pages/Corporates/Index.tsx b/frontend/dashboard/src/pages/Corporates/Index.tsx
index 3d22df70..1d16264a 100755
--- a/frontend/dashboard/src/pages/Corporates/Index.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Index.tsx
@@ -333,7 +333,7 @@ export default function Corporates() {
Edit
-
+
diff --git a/frontend/dashboard/src/pages/Corporates/Show.tsx b/frontend/dashboard/src/pages/Corporates/Show.tsx
index 08d3f009..6e3325e1 100755
--- a/frontend/dashboard/src/pages/Corporates/Show.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Show.tsx
@@ -11,26 +11,25 @@ import Page from '../../components/Page';
import axios from '../../utils/axios';
import useAuth from '../../hooks/useAuth';
import { Link , NavLink as RouterLink, useParams } from 'react-router-dom';
-import React, { useEffect, useRef, useState } from 'react';
+import React, { useContext, useEffect, useRef, useState } from 'react';
import { Theme, useTheme } from '@mui/material/styles';
import { Corporate } from '../../@types/corporates';
import { LaravelPaginatedData, LaravelPaginatedDataDefault } from '../../@types/paginated-data';
import HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs';
import CorporateTabNavigations from './CorporateTabNavigations';
import { fCurrency } from '../../utils/formatNumber';
+import { ConfiguredCorporateContext } from '@/contexts/ConfiguredCorporateContext';
export default function Corporates() {
const { themeStretch } = useSettings();
const { corporate_id } = useParams();
- const [corporate, setCorporate] = useState();
+ const [corporate, setCorporate] = useState();
+
+ const configuredCorporateContext = useContext(ConfiguredCorporateContext);
useEffect(() => {
- // TODO Use Hooks
- axios.get(`corporates/${corporate_id}`)
- .then((res) => {
- setCorporate(res.data)
- })
- }, [])
+ setCorporate(configuredCorporateContext.currentCorporate);
+ }, [configuredCorporateContext])
const headStyle = {
fontWeight: 'bold',
@@ -51,8 +50,7 @@ export default function Corporates() {
},
]}
/>
-
-
+
{/* */}
diff --git a/frontend/dashboard/src/routes/index.tsx b/frontend/dashboard/src/routes/index.tsx
index cbdecd1d..40645265 100755
--- a/frontend/dashboard/src/routes/index.tsx
+++ b/frontend/dashboard/src/routes/index.tsx
@@ -89,8 +89,18 @@ export default function Router() {
element: ,
},
{
- path: 'corporates/:corporate_id',
- element: ,
+ path: 'corporate',
+ element: , // Layout that use the context
+ children: [
+ {
+ path: ':corporate_id',
+ element: ,
+ },
+ {
+ path: ':corporate_id/divisions',
+ element: ,
+ },
+ ]
},
{
path: 'corporates/:corporate_id/edit',
@@ -272,6 +282,9 @@ const NotFound = Loadable(lazy(() => import('../pages/Page404')));
const Members = Loadable(lazy(() => import('../pages/Members/Index')));
const MedicinesCreate = Loadable(lazy(() => import('../pages/Medicines/Create')));
+// Corporate
+const ConfigLayout = Loadable(lazy(() => import('../pages/Corporates/ConfigLayout')));
+
const Corporate = Loadable(lazy(() => import('../pages/Corporates/Index')));
const CorporateCreate = Loadable(lazy(() => import('../pages/Corporates/CreateUpdate')));
const CorporateShow = Loadable(lazy(() => import('../pages/Corporates/Show')));
diff --git a/frontend/dashboard/tsconfig.json b/frontend/dashboard/tsconfig.json
index e992023b..843bc48b 100755
--- a/frontend/dashboard/tsconfig.json
+++ b/frontend/dashboard/tsconfig.json
@@ -15,7 +15,11 @@
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
- "jsx": "react-jsx"
+ "jsx": "react-jsx",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
},
- "include": ["src"]
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.json" }]
}
diff --git a/frontend/dashboard/vite.config.ts b/frontend/dashboard/vite.config.ts
index a56ef19d..557fde33 100755
--- a/frontend/dashboard/vite.config.ts
+++ b/frontend/dashboard/vite.config.ts
@@ -2,6 +2,7 @@ import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import svgrPlugin from 'vite-plugin-svgr'
import { VitePWA } from 'vite-plugin-pwa'
+import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
@@ -20,4 +21,7 @@ export default defineConfig({
},
}),
],
+ resolve: {
+ alias: [{ find: '@', replacement: path.resolve(__dirname, 'src') }],
+ }
})