"use client"; import { useTranslations } from "next-intl"; import { FormFieldWrapper } from "../../../../components/forms"; import { Checkbox, FieldLabel, Tooltip, TooltipContent, TooltipTrigger } from "../../../../shadcnui"; import { UserInterface } from "../../../user"; import { useCurrentUserContext } from "../../../user/contexts"; import { RoleInterface } from "../../data"; type FormRolesProps = { form: any; id: string; name: string; roles: RoleInterface[]; }; export function FormRoles({ form, id, name, roles }: FormRolesProps) { const t = useTranslations(); const { hasAccesToFeature } = useCurrentUserContext(); return (
{(field) => (
{roles .filter((role: RoleInterface) => role.isSelectable) .sort((a: RoleInterface, b: RoleInterface) => a.name.localeCompare(b.name)) .map((role: RoleInterface) => { if (role.requiredFeature && !hasAccesToFeature(role.requiredFeature.id)) return null; return (
roleId === role.id)} onCheckedChange={(checked) => { if (checked) { form.setValue(id, [...(field.value as string[]), role.id]); } else { form.setValue( id, (field.value as string[]).filter((roleId: string) => roleId !== role.id), ); } }} /> {t(`role.roles`, { role: role.id.replaceAll(`-`, ``) })} {t(`role.roles_descriptions`, { role: role.id.replaceAll(`-`, ``) })}
); })}
)}
); }