gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/entity-table/components/sidebar-entity-selection.tsx · v0.3.2
Source
1 4cebd65 Mardin 2y ago import {
2 4cebd65 Mardin 2y ago ToggleGroup, ToggleGroupItem,
3 4cebd65 Mardin 2y ago Table, TableHeader, TableRow, TableBody, TableHead,
4 4cebd65 Mardin 2y ago ScrollArea, Button,
5 4cebd65 Mardin 2y ago } from "@marzneshin/components";
6 cf00df4 Mardin 2y ago import { cn } from "@marzneshin/utils";
7 4cebd65 Mardin 2y ago import {
8 4cebd65 Mardin 2y ago SidebarEntityCard,
9 4cebd65 Mardin 2y ago } from "@marzneshin/features/entity-table/components";
10 4cebd65 Mardin 2y ago import {
11 cf00df4 Mardin 2y ago useEntityTableContext,
12 4cebd65 Mardin 2y ago useSidebarEntityTableContext
13 4cebd65 Mardin 2y ago } from "@marzneshin/features/entity-table/contexts";
14 4cebd65 Mardin 2y ago import { useTranslation } from "react-i18next";
15 4cebd65 Mardin 2y ago
16 4cebd65 Mardin 2y ago export const SidebarEntitySelection = () => {
17 4cebd65 Mardin 2y ago const {
18 4cebd65 Mardin 2y ago sidebarEntityId,
19 4cebd65 Mardin 2y ago sidebarEntities,
20 4cebd65 Mardin 2y ago setSidebarEntityId,
21 cf00df4 Mardin 2y ago sidebarCardProps,
22 4cebd65 Mardin 2y ago } = useSidebarEntityTableContext()
23 cf00df4 Mardin 2y ago const { table } = useEntityTableContext()
24 cf00df4 Mardin 2y ago
25 cf00df4 Mardin 2y ago const scrollBarHeight = table.getState().pagination.pageSize <= 10 ? "max-h-[45rem]" : "max-h-full"
26 4cebd65 Mardin 2y ago const { t } = useTranslation();
27 4cebd65 Mardin 2y ago
28 4cebd65 Mardin 2y ago return (
29 4cebd65 Mardin 2y ago <Table className="w-full">
30 4cebd65 Mardin 2y ago <TableHeader>
31 4cebd65 Mardin 2y ago <TableRow>
32 4cebd65 Mardin 2y ago <TableHead className="hstack justify-between items-center">
33 4cebd65 Mardin 2y ago {t("inbounds")}
34 4cebd65 Mardin 2y ago <Button
35 4cebd65 Mardin 2y ago variant="ghost"
36 4cebd65 Mardin 2y ago size="sm"
37 4cebd65 Mardin 2y ago className="p-1"
38 4cebd65 Mardin 2y ago onMouseDown={() => setSidebarEntityId(undefined)}
39 4cebd65 Mardin 2y ago >
40 9f2486e Mardin 2y ago {t('deselect')}
41 4cebd65 Mardin 2y ago </Button>
42 4cebd65 Mardin 2y ago </TableHead>
43 4cebd65 Mardin 2y ago </TableRow>
44 4cebd65 Mardin 2y ago </TableHeader>
45 4cebd65 Mardin 2y ago <TableBody>
46 65afe33 Mardin 2y ago <ToggleGroup
47 65afe33 Mardin 2y ago type="single"
48 65afe33 Mardin 2y ago onValueChange={(value) => setSidebarEntityId(value === "" ? undefined : value)}
49 65afe33 Mardin 2y ago defaultValue={String(sidebarEntityId)}
50 65afe33 Mardin 2y ago >
51 cf00df4 Mardin 2y ago <ScrollArea className={cn("flex flex-col justify-start p-1 gap-3 h-full", scrollBarHeight)}>
52 65afe33 Mardin 2y ago {sidebarEntities.map((entity: any) => (
53 65afe33 Mardin 2y ago <ToggleGroupItem
54 65afe33 Mardin 2y ago className="px-0 w-full h-full"
55 65afe33 Mardin 2y ago value={String(entity.id)}
56 65afe33 Mardin 2y ago key={String(entity.id)}
57 65afe33 Mardin 2y ago id={String(entity.id)}>
58 65afe33 Mardin 2y ago <SidebarEntityCard
59 65afe33 Mardin 2y ago {...sidebarCardProps}
60 65afe33 Mardin 2y ago entity={entity}
61 65afe33 Mardin 2y ago checked={sidebarEntityId === String(entity.id)}
62 65afe33 Mardin 2y ago />
63 65afe33 Mardin 2y ago </ToggleGroupItem>
64 65afe33 Mardin 2y ago ))}
65 65afe33 Mardin 2y ago </ScrollArea>
66 65afe33 Mardin 2y ago </ToggleGroup>
67 4cebd65 Mardin 2y ago </TableBody>
68 4cebd65 Mardin 2y ago </Table>
69 4cebd65 Mardin 2y ago )
70 4cebd65 Mardin 2y ago }