chore: update eslint and prettier configuration
This commit is contained in:
@@ -36,7 +36,9 @@ export function useRoleColumns(): ColumnDef<Role>[] {
|
||||
accessorKey: 'effective_status',
|
||||
header: 'Status',
|
||||
cell: ({ row }) => (
|
||||
<Badge variant={row.original.effective_status ? 'default' : 'secondary'}>
|
||||
<Badge
|
||||
variant={row.original.effective_status ? 'default' : 'secondary'}
|
||||
>
|
||||
{row.original.effective_status ? 'Active' : 'Inactive'}
|
||||
</Badge>
|
||||
),
|
||||
|
||||
@@ -31,7 +31,10 @@ export function RoleFilters({
|
||||
onChange={onSearchChange}
|
||||
placeholder="Search roles"
|
||||
/>
|
||||
<Select value={statusFilter} onValueChange={(value) => onStatusChange(value as StatusFilter)}>
|
||||
<Select
|
||||
value={statusFilter}
|
||||
onValueChange={(value) => onStatusChange(value as StatusFilter)}
|
||||
>
|
||||
<SelectTrigger className="md:w-44">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
|
||||
@@ -54,7 +54,9 @@ export function RoleSheet({
|
||||
isSaving,
|
||||
}: RoleSheetProps) {
|
||||
const nameErrorMessage = isSubmitted ? errors.name?.message : undefined;
|
||||
const displayNameErrorMessage = isSubmitted ? errors.display_name?.message : undefined;
|
||||
const displayNameErrorMessage = isSubmitted
|
||||
? errors.display_name?.message
|
||||
: undefined;
|
||||
|
||||
return (
|
||||
<Sheet open={open} onOpenChange={onOpenChange}>
|
||||
@@ -72,7 +74,12 @@ export function RoleSheet({
|
||||
<form onSubmit={onSubmit} className="flex min-h-0 flex-1 flex-col">
|
||||
<div className="flex-1 space-y-5 overflow-y-auto px-6 py-4">
|
||||
<div className="grid gap-4 md:grid-cols-2">
|
||||
<FormField id="role-name" label="Role Name" required error={nameErrorMessage}>
|
||||
<FormField
|
||||
id="role-name"
|
||||
label="Role Name"
|
||||
required
|
||||
error={nameErrorMessage}
|
||||
>
|
||||
<Input
|
||||
id="role-name"
|
||||
placeholder="Enter role name"
|
||||
@@ -110,7 +117,9 @@ export function RoleSheet({
|
||||
error={isSubmitted ? errors.permission_ids?.message : undefined}
|
||||
className="space-y-3"
|
||||
labelEnd={
|
||||
<span className="text-muted-foreground">{permissionIds.length} selected</span>
|
||||
<span className="text-muted-foreground">
|
||||
{permissionIds.length} selected
|
||||
</span>
|
||||
}
|
||||
>
|
||||
{isPermissionsLoading ? (
|
||||
@@ -129,7 +138,9 @@ export function RoleSheet({
|
||||
|
||||
<SheetFooter className="shrink-0 border-t px-6 py-4 sm:flex-row sm:justify-end">
|
||||
<Button type="submit" disabled={isSaving || !canSubmit}>
|
||||
{isSaving ? <Loader2 className="mr-2 size-4 animate-spin" /> : null}
|
||||
{isSaving ? (
|
||||
<Loader2 className="mr-2 size-4 animate-spin" />
|
||||
) : null}
|
||||
{roleId ? 'Update Role' : 'Create Role'}
|
||||
</Button>
|
||||
<SheetClose asChild>
|
||||
|
||||
@@ -61,7 +61,9 @@ export function useRoleForm({
|
||||
const roleName = useWatch({ control, name: 'name' }) || '';
|
||||
const displayName = useWatch({ control, name: 'display_name' }) || '';
|
||||
const canSubmit =
|
||||
roleName.trim().length > 0 && displayName.trim().length > 0 && permissionIds.length > 0;
|
||||
roleName.trim().length > 0 &&
|
||||
displayName.trim().length > 0 &&
|
||||
permissionIds.length > 0;
|
||||
|
||||
const saveMutation = useMutation({
|
||||
mutationFn: (values: RoleFormValues) =>
|
||||
@@ -81,7 +83,9 @@ export function useRoleForm({
|
||||
queryClient.invalidateQueries({ queryKey: roleKeys.all });
|
||||
},
|
||||
onError: (_error, values) => {
|
||||
toast.error(values.id ? 'Failed to update role' : 'Failed to create role');
|
||||
toast.error(
|
||||
values.id ? 'Failed to update role' : 'Failed to create role',
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
@@ -116,14 +120,21 @@ export function useRoleForm({
|
||||
name: role.name || '',
|
||||
display_name: role.display_name || '',
|
||||
description: role.description || '',
|
||||
permission_ids: collectPermissionIdsByKeys(permissionTree, role.permissions || []),
|
||||
permission_ids: collectPermissionIdsByKeys(
|
||||
permissionTree,
|
||||
role.permissions || [],
|
||||
),
|
||||
});
|
||||
},
|
||||
[permissionTree, reset],
|
||||
);
|
||||
|
||||
const setPermissionIds = useCallback(
|
||||
(ids: number[]) => setValue('permission_ids', ids, { shouldDirty: true, shouldValidate: true }),
|
||||
(ids: number[]) =>
|
||||
setValue('permission_ids', ids, {
|
||||
shouldDirty: true,
|
||||
shouldValidate: true,
|
||||
}),
|
||||
[setValue],
|
||||
);
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ function buildRoleListParams({
|
||||
skip,
|
||||
limit,
|
||||
search_term: searchTerm || undefined,
|
||||
effective_status: statusFilter === 'all' ? undefined : statusFilter === 'active',
|
||||
effective_status:
|
||||
statusFilter === 'all' ? undefined : statusFilter === 'active',
|
||||
...getServerSortParams(sorting),
|
||||
};
|
||||
}
|
||||
@@ -40,7 +41,8 @@ function buildRoleListParams({
|
||||
export function useRolesQuery(params: UseRolesQueryParams) {
|
||||
const { skip, limit, searchTerm, statusFilter, sorting } = params;
|
||||
const listParams = useMemo(
|
||||
() => buildRoleListParams({ skip, limit, searchTerm, statusFilter, sorting }),
|
||||
() =>
|
||||
buildRoleListParams({ skip, limit, searchTerm, statusFilter, sorting }),
|
||||
[limit, searchTerm, skip, sorting, statusFilter],
|
||||
);
|
||||
|
||||
@@ -71,7 +73,8 @@ export function useRoleStatusMutation() {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: (role: Role) => roleService.updateRoleStatus(role.id, !role.effective_status),
|
||||
mutationFn: (role: Role) =>
|
||||
roleService.updateRoleStatus(role.id, !role.effective_status),
|
||||
onSuccess: () => {
|
||||
toast.success('Role status updated');
|
||||
queryClient.invalidateQueries({ queryKey: roleKeys.all });
|
||||
|
||||
@@ -23,7 +23,9 @@ import {
|
||||
} from './hooks/useRoleQueries';
|
||||
|
||||
export default function RolesPage() {
|
||||
const organizationId = useAppStore((state) => state.user?.organization_id ?? null);
|
||||
const organizationId = useAppStore(
|
||||
(state) => state.user?.organization_id ?? null,
|
||||
);
|
||||
const [isSheetOpen, setIsSheetOpen] = useState(false);
|
||||
const {
|
||||
skip,
|
||||
@@ -66,7 +68,8 @@ export default function RolesPage() {
|
||||
isSaving,
|
||||
} = roleForm;
|
||||
const statusMutation = useRoleStatusMutation();
|
||||
const { mutate: updateRoleStatus, isPending: isStatusPending } = statusMutation;
|
||||
const { mutate: updateRoleStatus, isPending: isStatusPending } =
|
||||
statusMutation;
|
||||
|
||||
const openCreate = useCallback(() => {
|
||||
prepareCreateRole();
|
||||
|
||||
Reference in New Issue
Block a user