Skip to content

Commit 75c7fb5

Browse files
committed
Merge branch 'feat/system-admin' into diazz-f2f-30377270
2 parents 35ddc97 + 433c8c1 commit 75c7fb5

File tree

20 files changed

+191
-154
lines changed

20 files changed

+191
-154
lines changed

src/apps/admin/src/admin-app.routes.tsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { baseDetailPath, createBadgePath } from '~/apps/gamification-admin'
12
import { AppSubdomain, ToolTitle } from '~/config'
23
import {
34
lazyLoad,
@@ -9,9 +10,11 @@ import {
910

1011
import {
1112
billingAccountRouteId,
13+
gamificationAdminRouteId,
1214
manageChallengeRouteId,
1315
manageReviewRouteId,
1416
permissionManagementRouteId,
17+
platformRouteId,
1518
rootRoute,
1619
userManagementRouteId,
1720
} from './config/routes.config'
@@ -107,6 +110,17 @@ const PermissionAddGroupMembersPage: LazyLoadedComponent = lazyLoad(
107110
'PermissionAddGroupMembersPage',
108111
)
109112

113+
const Platform: LazyLoadedComponent = lazyLoad(() => import('./platform/Platform'))
114+
const BadgeDetailPage: LazyLoadedComponent = lazyLoad(
115+
() => import('../../gamification-admin/src/pages/badge-detail/BadgeDetailPage'),
116+
)
117+
const BadgeListingPage: LazyLoadedComponent = lazyLoad(
118+
() => import('../../gamification-admin/src/pages/badge-listing/BadgeListingPage'),
119+
)
120+
const CreateBadgePage: LazyLoadedComponent = lazyLoad(
121+
() => import('../../gamification-admin/src/pages/create-badge/CreateBadgePage'),
122+
)
123+
110124
export const toolTitle: string = ToolTitle.admin
111125

112126
export const adminRoutes: ReadonlyArray<PlatformRoute> = [
@@ -256,6 +270,29 @@ export const adminRoutes: ReadonlyArray<PlatformRoute> = [
256270
id: permissionManagementRouteId,
257271
route: permissionManagementRouteId,
258272
},
273+
{
274+
children: [
275+
{
276+
element: (
277+
<BadgeListingPage
278+
rootPage={`${rootRoute}/${platformRouteId}/${gamificationAdminRouteId}`}
279+
/>
280+
),
281+
route: gamificationAdminRouteId,
282+
},
283+
{
284+
element: <CreateBadgePage />,
285+
route: `${gamificationAdminRouteId}${createBadgePath}`,
286+
},
287+
{
288+
element: <BadgeDetailPage />,
289+
route: `${gamificationAdminRouteId}${baseDetailPath}/:id`,
290+
},
291+
],
292+
element: <Platform />,
293+
id: platformRouteId,
294+
route: platformRouteId,
295+
},
259296
],
260297
domain: AppSubdomain.admin,
261298
element: <AdminApp />,

src/apps/admin/src/config/routes.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ export const manageReviewRouteId = 'review-management'
1313
export const userManagementRouteId = 'user-management'
1414
export const billingAccountRouteId = 'billing-account'
1515
export const permissionManagementRouteId = 'permission-management'
16+
export const gamificationAdminRouteId = 'gamification-admin'
17+
export const platformRouteId = 'platform'

src/apps/admin/src/lib/components/common/Layout/Layout.module.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@
1313
@include ltelg {
1414
padding: $sp-4;
1515
}
16+
17+
&.isPlatformPage {
18+
padding: 0;
19+
background-color: white;
20+
21+
@include ltelg {
22+
padding: 0;
23+
}
24+
}
1625
}
1726
}
1827

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,41 @@
1-
import { FC, PropsWithChildren } from 'react'
1+
import { FC, PropsWithChildren, useMemo } from 'react'
2+
import { useLocation } from 'react-router-dom'
3+
import classNames from 'classnames'
24

5+
import { platformRouteId } from '~/apps/admin/src/config/routes.config'
36
import { ContentLayout } from '~/libs/ui'
47

58
import { SystemAdminTabs } from '../Tab'
69

710
import styles from './Layout.module.scss'
811

9-
export const NullLayout: FC<PropsWithChildren> = props => (
10-
<>{props.children}</>
11-
)
12+
export const NullLayout: FC<PropsWithChildren> = props => <>{props.children}</>
1213

13-
export const Layout: FC<PropsWithChildren> = props => (
14-
<ContentLayout
15-
innerClass={styles.contantentLayoutInner}
16-
outerClass={styles.contentLayoutOuter}
17-
>
18-
<div className={styles.layout}>
19-
<SystemAdminTabs />
14+
export const Layout: FC<PropsWithChildren> = props => {
15+
const { pathname }: { pathname: string } = useLocation()
16+
const isPlatformPage = useMemo(
17+
() => pathname.indexOf(platformRouteId) >= 0,
18+
[pathname],
19+
)
2020

21-
<div className={styles.main}>
22-
{props.children}
21+
return (
22+
<ContentLayout
23+
innerClass={styles.contantentLayoutInner}
24+
outerClass={styles.contentLayoutOuter}
25+
>
26+
<div className={styles.layout}>
27+
<SystemAdminTabs />
28+
29+
<div
30+
className={classNames(styles.main, {
31+
[styles.isPlatformPage]: isPlatformPage,
32+
})}
33+
>
34+
{props.children}
35+
</div>
2336
</div>
24-
</div>
25-
</ContentLayout>
26-
)
37+
</ContentLayout>
38+
)
39+
}
2740

2841
export default Layout

src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import _ from 'lodash'
33
import { TabsNavItem } from '~/libs/ui'
44
import {
55
billingAccountRouteId,
6+
gamificationAdminRouteId,
67
manageChallengeRouteId,
78
manageReviewRouteId,
89
permissionManagementRouteId,
10+
platformRouteId,
911
userManagementRouteId,
1012
} from '~/apps/admin/src/config/routes.config'
1113

@@ -50,6 +52,16 @@ export const SystemAdminTabsConfig: TabsNavItem[] = [
5052
id: permissionManagementRouteId,
5153
title: 'Permission Management',
5254
},
55+
{
56+
children: [
57+
{
58+
id: `${platformRouteId}/${gamificationAdminRouteId}`,
59+
title: 'Badges',
60+
},
61+
],
62+
id: platformRouteId,
63+
title: 'Platform',
64+
},
5365
]
5466

5567
export function getTabIdFromPathName(pathname: string): string {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Wrapper for permission managment
3+
*/
4+
import { FC, useContext, useMemo } from 'react'
5+
import { Outlet, Routes } from 'react-router-dom'
6+
7+
import { routerContext, RouterContextData } from '~/libs/core'
8+
9+
import { adminRoutes } from '../admin-app.routes'
10+
import { platformRouteId } from '../config/routes.config'
11+
12+
/**
13+
* The router outlet with layout.
14+
*/
15+
export const Platform: FC = () => {
16+
const childRoutes = useChildRoutes()
17+
18+
return (
19+
<>
20+
<Outlet />
21+
<Routes>{childRoutes}</Routes>
22+
</>
23+
)
24+
}
25+
26+
function useChildRoutes(): Array<JSX.Element> | undefined {
27+
const { getRouteElement }: RouterContextData = useContext(routerContext)
28+
const childRoutes = useMemo(
29+
() => adminRoutes[0].children
30+
?.find(r => r.id === platformRouteId)
31+
?.children?.map(getRouteElement),
32+
[], // eslint-disable-line react-hooks/exhaustive-deps -- missing dependency: getRouteElement
33+
)
34+
return childRoutes
35+
}
36+
37+
export default Platform

src/apps/gamification-admin/src/GamificationAdmin.tsx

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/apps/gamification-admin/src/game-lib/hooks/use-gamification-breadcrumb.hook.tsx

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export * from './game-badge.model'
22
export * from './hooks/use-get-game-badges-page.hook'
3-
export * from './hooks/use-gamification-breadcrumb.hook'
43
export * from './hooks/use-get-game-badge-details.hook'
54
export * from './member-autocomplete'
65
export * from './pagination'

src/apps/gamification-admin/src/game-lib/modals/badge-created-modal/BadgeCreatedModal.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface BadgeCreatedModalProps {
1212
badge: GameBadge
1313
isOpen: boolean
1414
onClose: () => void
15+
rootPage: string;
1516
}
1617

1718
const BadgeCreatedModal: FC<BadgeCreatedModalProps> = (props: BadgeCreatedModalProps) => {
@@ -52,7 +53,7 @@ const BadgeCreatedModal: FC<BadgeCreatedModalProps> = (props: BadgeCreatedModalP
5253
label='View'
5354
primary
5455
size='lg'
55-
to={badgeDetailPath(props.badge.id)}
56+
to={badgeDetailPath(props.rootPage, props.badge.id)}
5657
/>
5758
<Button
5859
label='Create a new badge'

0 commit comments

Comments
 (0)