diff --git a/inertia/mantine/components/dashboard/dashboard_navbar.tsx b/inertia/mantine/components/dashboard/dashboard_navbar.tsx
index ec36077..04cb286 100644
--- a/inertia/mantine/components/dashboard/dashboard_navbar.tsx
+++ b/inertia/mantine/components/dashboard/dashboard_navbar.tsx
@@ -8,6 +8,7 @@ import {
NavLink,
ScrollArea,
Skeleton,
+ Stack,
Text,
} from '@mantine/core';
import { useTranslation } from 'react-i18next';
@@ -29,12 +30,17 @@ export function DashboardNavbar({ isOpen, toggle }: DashboardNavbarProps) {
variant: 'subtle',
color: 'blue',
active: true,
+ styles: {
+ label: {
+ fontSize: '16px',
+ },
+ },
};
return (
- Menu
+ Navigation
@@ -52,6 +58,7 @@ export function DashboardNavbar({ isOpen, toggle }: DashboardNavbarProps) {
label={t('settings')}
leftSection={}
variant="subtle"
+ styles={common.styles}
/>
}
/>
-
+
{t('favorite')} • {0}
- {Array(15)
- .fill(0)
- .map((_, index) => (
-
- ))}
+
+ {Array(15)
+ .fill(0)
+ .map((_, index) => (
+
+ ))}
+
);
diff --git a/inertia/mantine/layouts/_mantine_base_layout.tsx b/inertia/mantine/layouts/_mantine_base_layout.tsx
index d84304f..6e28d1e 100644
--- a/inertia/mantine/layouts/_mantine_base_layout.tsx
+++ b/inertia/mantine/layouts/_mantine_base_layout.tsx
@@ -26,13 +26,24 @@ export default function BaseLayout({ children }: { children: ReactNode }) {
}
};
+ const canTransition = (currentLocation: URL, newLocation: URL) =>
+ currentLocation.pathname !== newLocation.pathname;
+
useEffect(() => {
+ const currentLocation = new URL(window.location.href);
flipClass(TRANSITION_IN_CLASS, TRANSITION_OUT_CLASS);
- router.on('start', () =>
- flipClass(TRANSITION_OUT_CLASS, TRANSITION_IN_CLASS)
+
+ router.on(
+ 'start',
+ (event) =>
+ canTransition(currentLocation, event.detail.visit.url) &&
+ flipClass(TRANSITION_OUT_CLASS, TRANSITION_IN_CLASS)
);
- router.on('finish', () =>
- flipClass(TRANSITION_IN_CLASS, TRANSITION_OUT_CLASS)
+ router.on(
+ 'finish',
+ (event) =>
+ canTransition(currentLocation, event.detail.visit.url) &&
+ flipClass(TRANSITION_IN_CLASS, TRANSITION_OUT_CLASS)
);
}, []);
diff --git a/inertia/pages/mantine_dashboard.tsx b/inertia/pages/mantine_dashboard.tsx
index 70ec81e..36af817 100644
--- a/inertia/pages/mantine_dashboard.tsx
+++ b/inertia/pages/mantine_dashboard.tsx
@@ -7,13 +7,15 @@ import {
Text,
} from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
+import { useEffect } from 'react';
import DashboardProviders from '~/components/dashboard/dashboard_provider';
import LinkItem from '~/components/dashboard/link/link_item';
import { MantineFooter } from '~/components/footer/mantine_footer';
+import useShortcut from '~/hooks/use_shortcut';
+import { DashboardAside } from '~/mantine/components/dashboard/dashboard_aside';
import { DashboardNavbar } from '~/mantine/components/dashboard/dashboard_navbar';
import { MantineDashboardLayout } from '~/mantine/layouts/mantine_dashboard_layout';
import { CollectionWithLinks } from '~/types/app';
-import '../styles/body_overflow_hidden.css';
import classes from './dashboard.module.css';
interface DashboardPageProps {
@@ -22,15 +24,29 @@ interface DashboardPageProps {
}
export default function MantineDashboard(props: Readonly) {
- const [openedNavbar, { toggle: toggleNavbar }] = useDisclosure();
- const [openedAside, { toggle: toggleAside }] = useDisclosure();
+ const [openedNavbar, { toggle: toggleNavbar, close: closeNavbar }] =
+ useDisclosure();
+ const [openedAside, { toggle: toggleAside, close: closeAside }] =
+ useDisclosure();
+
+ useShortcut('ESCAPE_KEY', () => {
+ closeNavbar();
+ closeAside();
+ });
+
+ useEffect(() => {
+ document.body.style.overflow = 'hidden';
+ return () => {
+ document.body.style.overflow = 'auto';
+ };
+ }, []);
return (
) {
hiddenFrom="sm"
size="sm"
/>
- {props.activeCollection.name}
+ {props.activeCollection.name}
) {
-
-
- Aside
-
-
-
+
diff --git a/inertia/styles/body_overflow_hidden.css b/inertia/styles/body_overflow_hidden.css
deleted file mode 100644
index d1b79bf..0000000
--- a/inertia/styles/body_overflow_hidden.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- overflow: hidden;
-}