From 11329c4b3e263ee1a93486f922af409f2db78f0c Mon Sep 17 00:00:00 2001 From: Alexis Gousseau Date: Wed, 20 May 2026 14:55:57 +0200 Subject: [PATCH] fix: :bug: set trash models on User --- resources/ts/back/Pages/Users/Create.tsx | 17 ++-- resources/ts/back/Pages/Users/Edit.tsx | 41 +++++---- resources/ts/back/Pages/Users/Index.tsx | 105 ++++++++++++++++++----- resources/ts/back/Pages/Users/Show.tsx | 46 ++++++---- 4 files changed, 146 insertions(+), 63 deletions(-) diff --git a/resources/ts/back/Pages/Users/Create.tsx b/resources/ts/back/Pages/Users/Create.tsx index 0a64d16..8618087 100644 --- a/resources/ts/back/Pages/Users/Create.tsx +++ b/resources/ts/back/Pages/Users/Create.tsx @@ -10,15 +10,20 @@ import useTrans from "@/hooks/use-translations"; import { Actions, Methods } from "@/back/lib/enums"; import { AuthProp, SingleResource, UserModel } from "@/back/types/global"; -export default function Create({ data }: { data: SingleResource }) { +export default function Create({ + data, + modelName, +}: { + data: SingleResource; + modelName: string; +}) { const { viewAny } = (usePage().props.auth as AuthProp).policies.users; - const modelName = usePage().props.modelName as string; - const userModel = data.data as UserModel; + const model = data.data as UserModel; // Translations. const transBackToList = useTrans("uwil-backend::back.crud_back_to_list"); const transTitle = useTrans( - route().current(`back.users.duplicate`) + route().current(`back.${modelName}.duplicate`) ? "uwil-backend::crud.helpers.duplication_model" : "uwil-backend::crud.helpers.creation_model", { @@ -35,7 +40,7 @@ export default function Create({ data }: { data: SingleResource }) { viewAny && (
} tooltipContent={

{transBackToList}

} /> @@ -47,7 +52,7 @@ export default function Create({ data }: { data: SingleResource }) { return (
{ return ( @@ -36,24 +52,15 @@ export default function Edit({ data }: { data: SingleResource }) { }; return ( - + { export default function Index({ userModels, searchFields, + modelName, }: { userModels: Resource; searchFields: string; + modelName: string; }) { const { auth } = usePage().props as unknown as { auth: AuthProp; }; - const { create } = auth.policies.users; - const modelName = usePage().props.modelName as string; - const actionModels = [ - Views.VISUALIZATION, - Views.EDITION, - Views.DUPLICATION, - Views.DELETION, - ]; - + const { viewAny, viewTrash, create } = auth.policies.users; + const isArchiveRoute = route().current(`back.${modelName}.trash`); + const actionModels = isArchiveRoute + ? [Views.RESTORATION, Views.FORCEDELETION] + : [ + Views.VISUALIZATION, + Views.EDITION, + Views.DUPLICATION, + Views.ARCHIVATION, + ]; const columns = getColumns(); + + // Translations. + const transModel = useTrans(`uwil-backend::models.classes.${modelName}`, { + choice: 2, + }); + const transArchiveTitle = useTrans( + "uwil-backend::crud.helpers.archives_model", + { + params: { model: transModel }, + }, + ); + const transTitle = str(isArchiveRoute ? transArchiveTitle : transModel) + .ucFirst() + .value(); + const transCrudBackList = useTrans("uwil-backend::back.crud_back_to_list"); const transCrudAddEntry = useTrans("uwil-backend::back.crud_add_entry"); + const transAccessTo = useTrans("uwil-backend::back.crud_access_to", { + params: { + target: useTrans("uwil-backend::back.archived_entries"), + }, + }); + + const beforeNode = () => { + return ( + isArchiveRoute && + viewAny && ( +
+ } + tooltipContent={

{transCrudBackList}

} + /> +
+ ) + ); + }; + const afterNode = () => { return ( - create && ( - } - tooltipContent={

{transCrudAddEntry}

} - /> + !isArchiveRoute && ( +
+ {viewTrash && ( + } + tooltipContent={

{transAccessTo}

} + variant="outline" + /> + )} + {create && ( + } + tooltipContent={

{transCrudAddEntry}

} + /> + )} +
) ); }; return ( - + {isArchiveRoute && } + { ]; }; -export default function Show({ data }: { data: SingleResource }) { +export default function Show({ + data, + modelName, +}: { + data: SingleResource; + modelName: string; +}) { const { auth } = usePage().props as unknown as { auth: AuthProp; }; const { viewAny } = auth.policies.users; - const userModel = data.data as UserModel; - const actionModels = [Views.EDITION, Views.DUPLICATION, Views.DELETION]; - + const model = data.data as UserModel; + const actionModels = [Views.EDITION, Views.DUPLICATION, Views.ARCHIVATION]; const columns = getColumns(); - const transCrudBackList = useTrans("uwil-backend::back.crud_back_to_list"); + // Translations. + const transTitle = useTrans( + "uwil-backend::crud.helpers.visualization_model", + { + params: { + model: useTrans(`uwil-backend::models.classes.${modelName}`, { + choice: 1, + }), + }, + }, + ); + const transCrudBackToList = useTrans("uwil-backend::back.crud_back_to_list"); + const beforeNode = () => { return ( viewAny && ( @@ -144,7 +161,7 @@ export default function Show({ data }: { data: SingleResource }) { } - tooltipContent={

{transCrudBackList}

} + tooltipContent={

{transCrudBackToList}

} />
) @@ -152,22 +169,15 @@ export default function Show({ data }: { data: SingleResource }) { }; return ( - + {/* @ts-expect-error Weird error type on cell. */} - + ); }