Rename FrameworkPage -> FrameworkLayout

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-04-04 12:48:43 +04:00
parent 0e9d0ec935
commit 9a3327e937
5 changed files with 16 additions and 15 deletions

View File

@@ -7,7 +7,7 @@ import OrganizationLayout from "./OrganizationLayout";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
import { CreateFrameworkPage } from "./frameworks/CreateFrameworkPage"; import { CreateFrameworkPage } from "./frameworks/CreateFrameworkPage";
import { FrameworkListPage } from "./frameworks/FrameworkListPage"; import { FrameworkListPage } from "./frameworks/FrameworkListPage";
import { FrameworkPage } from "./frameworks/FrameworkPage"; import { FrameworkLayout } from "./frameworks/FrameworkLayout";
import { UpdateFrameworkPage } from "./frameworks/UpdateFrameworkPage"; import { UpdateFrameworkPage } from "./frameworks/UpdateFrameworkPage";
import { ControlPage } from "./frameworks/controls/ControlPage"; import { ControlPage } from "./frameworks/controls/ControlPage";
import { EditMitigationPage } from "./mitigations/EditMitigationPage"; import { EditMitigationPage } from "./mitigations/EditMitigationPage";
@@ -39,7 +39,7 @@ export function OrganizationsRoutes() {
<Route path="frameworks" element={<FrameworkListPage />} /> <Route path="frameworks" element={<FrameworkListPage />} />
<Route path="frameworks/create" element={<CreateFrameworkPage />} /> <Route path="frameworks/create" element={<CreateFrameworkPage />} />
<Route path="frameworks/:frameworkId/*"> <Route path="frameworks/:frameworkId/*">
<Route element={<FrameworkPage />}> <Route element={<FrameworkLayout />}>
<Route index /> <Route index />
<Route path="controls/:controlId" element={<ControlPage />} /> <Route path="controls/:controlId" element={<ControlPage />} />
</Route> </Route>

View File

@@ -5,9 +5,9 @@ import { useMatch } from "react-router";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import ErrorBoundary from "@/components/ErrorBoundary"; import ErrorBoundary from "@/components/ErrorBoundary";
const FrameworkView = lazy(() => import("./FrameworkView")); const FrameworkLayoutView = lazy(() => import("./FrameworkLayoutView"));
export function FrameworkViewSkeleton() { export function FrameworkLayoutViewSkeleton() {
return ( return (
<PageTemplateSkeleton <PageTemplateSkeleton
actions={ actions={
@@ -35,15 +35,18 @@ export function FrameworkViewSkeleton() {
); );
} }
export function FrameworkPage() { export function FrameworkLayout() {
const match = useMatch( const match = useMatch(
"organizations/:organizationId/frameworks/:frameworkId/*" "organizations/:organizationId/frameworks/:frameworkId/*"
); );
return ( return (
<Suspense key={match?.pathnameBase} fallback={<FrameworkViewSkeleton />}> <Suspense
key={match?.pathnameBase}
fallback={<FrameworkLayoutViewSkeleton />}
>
<ErrorBoundary key={match?.pathnameBase}> <ErrorBoundary key={match?.pathnameBase}>
<FrameworkView /> <FrameworkLayoutView />
</ErrorBoundary> </ErrorBoundary>
</Suspense> </Suspense>
); );

View File

@@ -21,9 +21,8 @@ import { useToast } from "@/hooks/use-toast";
import type { FrameworkViewQuery as FrameworkViewQueryType } from "./__generated__/FrameworkViewQuery.graphql"; import type { FrameworkViewQuery as FrameworkViewQueryType } from "./__generated__/FrameworkViewQuery.graphql";
import type { FrameworkViewDeleteMutation } from "./__generated__/FrameworkViewDeleteMutation.graphql"; import type { FrameworkViewDeleteMutation } from "./__generated__/FrameworkViewDeleteMutation.graphql";
import { PageTemplate } from "@/components/PageTemplate"; import { PageTemplate } from "@/components/PageTemplate";
import { FrameworkViewSkeleton } from "./FrameworkPage"; import { FrameworkLayoutViewSkeleton } from "./FrameworkLayout";
import { ControlList } from "./FrameworkView/ControlList"; import { ControlList } from "./FrameworkLayoutView/ControlList";
import ControlView from "./controls/ControlView";
const FrameworkViewQuery = graphql` const FrameworkViewQuery = graphql`
query FrameworkViewQuery($frameworkId: ID!) { query FrameworkViewQuery($frameworkId: ID!) {
@@ -68,9 +67,8 @@ function FrameworkViewContent({
}) { }) {
const data = usePreloadedQuery(FrameworkViewQuery, queryRef); const data = usePreloadedQuery(FrameworkViewQuery, queryRef);
const framework = data.node; const framework = data.node;
const control = data.node.firstControl?.edges[0];
const navigate = useNavigate(); const navigate = useNavigate();
const { organizationId, controlId } = useParams(); const { organizationId } = useParams();
const { toast } = useToast(); const { toast } = useToast();
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const [isDeleting, setIsDeleting] = useState(false); const [isDeleting, setIsDeleting] = useState(false);
@@ -153,7 +151,7 @@ function FrameworkViewContent({
> >
<div className="flex flex-row items-start justify-start w-full h-[calc(100vh-216px)] overflow-hidden -ml-8"> <div className="flex flex-row items-start justify-start w-full h-[calc(100vh-216px)] overflow-hidden -ml-8">
<ControlList fragmentKey={framework} /> <ControlList fragmentKey={framework} />
{controlId && <ControlView controlId={control?.node.id} />} <Outlet />
</div> </div>
{/* Delete Confirmation Dialog */} {/* Delete Confirmation Dialog */}
@@ -198,11 +196,11 @@ export default function FrameworkView() {
}, [loadQuery, frameworkId]); }, [loadQuery, frameworkId]);
if (!queryRef) { if (!queryRef) {
return <FrameworkViewSkeleton />; return <FrameworkLayoutViewSkeleton />;
} }
return ( return (
<Suspense fallback={<FrameworkViewSkeleton />}> <Suspense fallback={<FrameworkLayoutViewSkeleton />}>
<FrameworkViewContent queryRef={queryRef} /> <FrameworkViewContent queryRef={queryRef} />
</Suspense> </Suspense>
); );