import { Stack, Table, TableTbody, TableTh, TableThead, TableTr } from "@mantine/core"; import type { GroupPermissionKey } from "@homarr/definitions"; import { getPermissionsWithChildren } from "@homarr/definitions"; import { useScopedI18n } from "@homarr/translation/client"; import type { AccessQueryData } from "./access-settings"; import { AccessDisplayRow } from "./access-table-rows"; import { GroupItemContent } from "./group-access-form"; export interface InheritTableProps { accessQueryData: AccessQueryData; mapPermissions: Partial>; fullAccessGroupPermission: GroupPermissionKey; } export const InheritAccessTable = ({ accessQueryData, mapPermissions, fullAccessGroupPermission, }: InheritTableProps) => { const tPermissions = useScopedI18n("permission"); return ( {tPermissions("field.user.label")} {tPermissions("field.permission.label")} {Array.from( accessQueryData.inherited .reduce((map, entry) => { const existing = map.get(entry.group.id); if (!existing) { map.set(entry.group.id, entry); } else if (getPermissionsWithChildren([entry.permission]).includes(existing.permission)) { map.set(entry.group.id, entry); } return map; }, new Map()) .values(), ).map(({ group, permission }) => { const entityPermission = permission in mapPermissions ? mapPermissions[permission] : getPermissionsWithChildren([permission]).includes(fullAccessGroupPermission) ? "full" : null; if (!entityPermission) { return null; } return ( } permission={entityPermission} /> ); })}
); };