Skip to content

Commit

Permalink
feat: Add progress bar for route loading
Browse files Browse the repository at this point in the history
  • Loading branch information
DafyddLlyr committed Sep 16, 2024
1 parent 0cad0b9 commit a4bd110
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
36 changes: 36 additions & 0 deletions editor.planx.uk/src/components/RouteLoadingIndicator.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import Box from "@mui/material/Box";
import LinearProgress from "@mui/material/LinearProgress";
import { styled } from "@mui/material/styles";
import React, { useEffect, useState } from "react";
import { useLoadingRoute } from "react-navi";

const Root = styled(Box)({
width: "100%",
position: "fixed",
top: 0,
left: 0,
});

const RouteLoadingIndicator: React.FC<{
msDelayBeforeVisible?: number;
}> = ({ msDelayBeforeVisible = 50 }) => {
const isLoading = useLoadingRoute();
const [isVisible, setIsVisible] = useState(false);

useEffect(() => {
if (!isLoading) return setIsVisible(false);

const timer = setTimeout(() => setIsVisible(true), msDelayBeforeVisible);
return () => clearTimeout(timer);
}, [isLoading, msDelayBeforeVisible]);

if (!isVisible) return null;

return (
<Root role="alert" aria-busy="true" aria-live="assertive">
<LinearProgress />
</Root>
);
};

export default RouteLoadingIndicator;
2 changes: 2 additions & 0 deletions editor.planx.uk/src/pages/layout/AuthenticatedLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { containerClasses } from "@mui/material/Container";
import { styled } from "@mui/material/styles";
import EditorNavMenu from "components/EditorNavMenu";
import { HEADER_HEIGHT_EDITOR } from "components/Header";
import RouteLoadingIndicator from "components/RouteLoadingIndicator";
import React, { PropsWithChildren } from "react";
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
Expand Down Expand Up @@ -36,6 +37,7 @@ const DashboardContainer = styled(Box)(({ theme }) => ({

const Layout: React.FC<PropsWithChildren> = ({ children }) => (
<>
<RouteLoadingIndicator />
<Header />
<DashboardWrap>
<EditorNavMenu />
Expand Down

0 comments on commit a4bd110

Please sign in to comment.