Fix admin subpages not having a layout

This commit is contained in:
Gabe Kangas
2023-01-11 22:43:34 -08:00
parent dd72879d09
commit 2ff4316ee6
3 changed files with 48 additions and 27 deletions

View File

@@ -14,6 +14,9 @@ import { AppProps } from 'next/app';
import { ReactElement, ReactNode } from 'react';
import { NextPage } from 'next';
import { RecoilRoot } from 'recoil';
import { Router, useRouter } from 'next/router';
import { AdminLayout } from '../components/layouts/AdminLayout';
export type NextPageWithLayout<P = {}, IP = P> = NextPage<P, IP> & {
getLayout?: (page: ReactElement) => ReactNode;
@@ -24,10 +27,15 @@ type AppPropsWithLayout = AppProps & {
};
export default function App({ Component, pageProps }: AppPropsWithLayout) {
// Use the layout defined at the page level, if available
const getLayout = Component.getLayout ?? (page => page);
const router = useRouter() as Router;
const isAdminPage = router.pathname.startsWith('/admin');
if (isAdminPage) {
return <AdminLayout pageProps={pageProps} Component={Component} router={router} />;
}
return getLayout(
const layout = Component.getLayout ?? (page => page);
return layout(
<RecoilRoot>
<Component {...pageProps} />
</RecoilRoot>,

View File

@@ -182,27 +182,3 @@ export default function Home() {
</div>
);
}
Home.getLayout = function getLayout(page: ReactElement) {
return (
<>
<link rel="stylesheet" href="/styles/admin/main-layout.css" />
<link rel="stylesheet" href="/styles/admin/form-textfields.css" />
<link rel="stylesheet" href="/styles/admin/config-socialhandles.css" />
<link rel="stylesheet" href="/styles/admin/config-storage.css" />
<link rel="stylesheet" href="/styles/admin/config-edit-string-tags.css" />
<link rel="stylesheet" href="/styles/admin/config-video-variants.css" />
<link rel="stylesheet" href="/styles/admin/config-public-details.css" />
<link rel="stylesheet" href="/styles/admin/home.css" />
<link rel="stylesheet" href="/styles/admin/chat.css" />
<link rel="stylesheet" href="/styles/admin/pages.css" />
<link rel="stylesheet" href="/styles/admin/offline-notice.css" />
<ServerStatusProvider>
<AlertMessageProvider>
<MainLayout>{page}</MainLayout>
</AlertMessageProvider>
</ServerStatusProvider>
</>
);
};