fix: 🐛 get the prefix route in props and not by hook in filters files

This commit is contained in:
Alexis Gousseau 2026-05-27 11:50:15 +02:00
parent b1e56a8eae
commit 9e89d99177
No known key found for this signature in database
GPG key ID: 7F3C786EE12DBB72
11 changed files with 51 additions and 31 deletions

View file

@ -8,14 +8,20 @@ import AddFilterToUrl from "@/back/lib/filters";
type Props = {
enums: LaravelEnum;
fieldName: string;
modelName: string;
modelRoute: string;
prefixRoute: string;
label: string;
placeholder: string;
};
function EnumFilter(props: Props) {
const { enums, fieldName, modelName, label, placeholder } = props;
export default function EnumFilter({
enums,
fieldName,
modelRoute,
prefixRoute,
label,
placeholder,
}: Props) {
const selectedEnumParam = Object.values(enums).find(
(status) => status.name === route().params.status,
);
@ -35,10 +41,8 @@ function EnumFilter(props: Props) {
...route().params,
[name]: selectedStatusName,
};
AddFilterToUrl({ modelName, params });
AddFilterToUrl({ modelRoute, prefixRoute, params });
}}
/>
);
}
export default EnumFilter;

View file

@ -6,16 +6,22 @@ import AddFilterToUrl from "@/back/lib/filters";
type Props = {
fieldName: string;
modelName: string;
modelRoute: string;
prefixRoute: string;
label: string;
placeholder: string;
/** Model target to display options */
targetModel?: string;
};
function MultiSelectRelationFilter(props: Props) {
const { targetModel, fieldName, label, placeholder, modelName } = props;
export default function MultiSelectRelationFilter({
targetModel,
fieldName,
label,
placeholder,
modelRoute,
prefixRoute,
}: Props) {
const valuesFromUrl: string[] =
typeof route().params[fieldName] === "string"
? route().params[fieldName].split(",")
@ -37,7 +43,7 @@ function MultiSelectRelationFilter(props: Props) {
...route().params,
[name]: valuesArray.length ? valuesArray.join(",") : undefined,
};
AddFilterToUrl({ modelName, params });
AddFilterToUrl({ modelRoute, prefixRoute, params });
}}
defaultValue={valuesFromUrl}
responsive={{
@ -54,5 +60,3 @@ function MultiSelectRelationFilter(props: Props) {
/>
);
}
export default MultiSelectRelationFilter;

View file

@ -5,13 +5,13 @@ import SimpleSwitch from "@/back/Components/Inputs/SimpleSwitch";
import AddFilterToUrl from "@/back/lib/filters";
type Props = {
fieldName: string;
modelName: string;
label: string;
fieldName: string;
modelRoute: string;
prefixRoute: string;
};
function SwitchFilter(props: Props) {
const { label, fieldName, modelName } = props;
export default function SwitchFilter({ label, fieldName, modelRoute, prefixRoute }: Props) {
return (
<SimpleSwitch
name={fieldName}
@ -24,10 +24,8 @@ function SwitchFilter(props: Props) {
...route().params,
[name]: value,
};
AddFilterToUrl({ modelName, params });
AddFilterToUrl({ modelRoute, prefixRoute, params });
}}
/>
);
}
export default SwitchFilter;

View file

@ -11,6 +11,7 @@ import AddFilterToUrl from "@/back/lib/filters";
type DataTableSearchProps = {
modelRoute: string;
prefixRoute: string;
searchFields: string;
isArchiveRoute?: boolean;
children?: ReactNode;
@ -18,6 +19,7 @@ type DataTableSearchProps = {
export default function DataTableSearch({
modelRoute,
prefixRoute,
searchFields,
isArchiveRoute = false,
children,
@ -34,11 +36,13 @@ export default function DataTableSearch({
search,
};
AddFilterToUrl({
modelName: modelRoute,
modelRoute,
prefixRoute,
params,
isArchiveRoute,
});
};
const onDeleteSearch = () => {
setSearch(null);
const params = {
@ -46,11 +50,13 @@ export default function DataTableSearch({
search: undefined,
};
AddFilterToUrl({
modelName: modelRoute,
modelRoute,
prefixRoute,
params,
isArchiveRoute,
});
};
return (
<>
<form

View file

@ -150,6 +150,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -150,6 +150,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -207,6 +207,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -189,6 +189,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -305,6 +305,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -253,6 +253,7 @@ export default function Index({
{isArchiveRoute && <SoftdeleteWarning />}
<DataTableSearch
modelRoute={modelName}
prefixRoute={routeName}
searchFields={searchFields}
isArchiveRoute={isArchiveRoute}
/>

View file

@ -1,20 +1,22 @@
// * Packages
import { AppEnv } from "@/types/global";
import { router, usePage } from "@inertiajs/react";
import { router } from "@inertiajs/react";
import { route } from "ziggy-js";
type RouterFiltersProps = {
modelName: string;
modelRoute: string;
prefixRoute: string;
params: {
[x: string]: string | boolean | undefined;
};
isArchiveRoute?: boolean;
};
export default function AddFilterToUrl(props: RouterFiltersProps) {
const { modelName, params, isArchiveRoute = false } = props;
const routeName = (usePage().props.appEnv as AppEnv).routes.name;
const targetRoute = `${routeName}${modelName}.${isArchiveRoute ? "trash" : "index"}`;
export default function AddFilterToUrl({
modelRoute,
prefixRoute,
params,
isArchiveRoute = false,
}: RouterFiltersProps) {
const targetRoute = `${prefixRoute}${modelRoute}.${isArchiveRoute ? "trash" : "index"}`;
return router.visit(route(targetRoute), {
method: "get",