@@ -24,7 +24,7 @@ posthog.init(process.env.POSTHOG_KEY!, {
|
|||||||
const HomePage = lazy(() => import("./pages/HomePage"));
|
const HomePage = lazy(() => import("./pages/HomePage"));
|
||||||
const NotFoundPage = lazy(() => import("./pages/NotFoundPage"));
|
const NotFoundPage = lazy(() => import("./pages/NotFoundPage"));
|
||||||
const PeoplesPage = lazy(() => import("./pages/PeoplesPage"));
|
const PeoplesPage = lazy(() => import("./pages/PeoplesPage"));
|
||||||
const VendorList = lazy(() => import("./pages/VendorList"));
|
const VendorListPage = lazy(() => import("./pages/VendorListPage"));
|
||||||
const FrameworksPage = lazy(() => import("./pages/FrameworksPage"));
|
const FrameworksPage = lazy(() => import("./pages/FrameworksPage"));
|
||||||
const FrameworkOverviewPage = lazy(() => import("./pages/FrameworkOverviewPage"));
|
const FrameworkOverviewPage = lazy(() => import("./pages/FrameworkOverviewPage"));
|
||||||
const VendorOverviewPage = lazy(() => import("./pages/VendorOverviewPage"));
|
const VendorOverviewPage = lazy(() => import("./pages/VendorOverviewPage"));
|
||||||
@@ -71,7 +71,7 @@ function App() {
|
|||||||
element={
|
element={
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
<VendorList />
|
<VendorListPage />
|
||||||
</ErrorBoundary>
|
</ErrorBoundary>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,12 @@ import { Badge } from "@/components/ui/badge";
|
|||||||
import { CircleUser, Globe, Shield, Store } from "lucide-react";
|
import { CircleUser, Globe, Shield, Store } from "lucide-react";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
|
import { Link } from "react-router";
|
||||||
import Fuse from "fuse.js";
|
import Fuse from "fuse.js";
|
||||||
import type { VendorListQuery as VendorListQueryType } from "./__generated__/VendorListQuery.graphql";
|
import type { VendorListPageQuery as VendorListPageQueryType } from "./__generated__/VendorListPageQuery.graphql";
|
||||||
|
|
||||||
const VendorListQuery = graphql`
|
const VendorListPageQuery = graphql`
|
||||||
query VendorListQuery {
|
query VendorListPageQuery {
|
||||||
node(id: "AZSfP_xAcAC5IAAAAAAltA") {
|
node(id: "AZSfP_xAcAC5IAAAAAAltA") {
|
||||||
id
|
id
|
||||||
... on Organization {
|
... on Organization {
|
||||||
@@ -46,9 +47,9 @@ const vendorsList = [
|
|||||||
function VendorListContent({
|
function VendorListContent({
|
||||||
queryRef,
|
queryRef,
|
||||||
}: {
|
}: {
|
||||||
queryRef: PreloadedQuery<VendorListQueryType>;
|
queryRef: PreloadedQuery<VendorListPageQueryType>;
|
||||||
}) {
|
}) {
|
||||||
const data = usePreloadedQuery(VendorListQuery, queryRef);
|
const data = usePreloadedQuery(VendorListPageQuery, queryRef);
|
||||||
const vendors = data.node?.vendors?.edges?.map(edge => edge?.node) ?? [];
|
const vendors = data.node?.vendors?.edges?.map(edge => edge?.node) ?? [];
|
||||||
const [searchTerm, setSearchTerm] = useState("");
|
const [searchTerm, setSearchTerm] = useState("");
|
||||||
const [filteredVendors, setFilteredVendors] = useState<Array<typeof vendors[0]>>([]);
|
const [filteredVendors, setFilteredVendors] = useState<Array<typeof vendors[0]>>([]);
|
||||||
@@ -125,11 +126,11 @@ function VendorListContent({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
{vendors.map((vendor) => (
|
{vendors.map((vendor) => (
|
||||||
<div
|
<div key={vendor?.id} className="block hover:bg-accent/50 transition-colors">
|
||||||
key={vendor?.id}
|
<Link
|
||||||
|
to={`/vendors/${vendor?.id}`}
|
||||||
className="flex items-center justify-between p-4 rounded-lg border bg-card text-card-foreground shadow-sm"
|
className="flex items-center justify-between p-4 rounded-lg border bg-card text-card-foreground shadow-sm"
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
@@ -154,6 +155,7 @@ function VendorListContent({
|
|||||||
Not assessed
|
Not assessed
|
||||||
</Badge>
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
@@ -177,8 +179,8 @@ function VendorListFallback() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function VendorList() {
|
export default function VendorListPage() {
|
||||||
const [queryRef, loadQuery] = useQueryLoader<VendorListQueryType>(VendorListQuery);
|
const [queryRef, loadQuery] = useQueryLoader<VendorListPageQueryType>(VendorListPageQuery);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadQuery({});
|
loadQuery({});
|
||||||
Reference in New Issue
Block a user