fix: 🐛 get the prefix route in props and not by hook in filters files
This commit is contained in:
parent
b1e56a8eae
commit
9e89d99177
11 changed files with 51 additions and 31 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -189,6 +189,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -305,6 +305,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -253,6 +253,7 @@ export default function Index({
|
|||
{isArchiveRoute && <SoftdeleteWarning />}
|
||||
<DataTableSearch
|
||||
modelRoute={modelName}
|
||||
prefixRoute={routeName}
|
||||
searchFields={searchFields}
|
||||
isArchiveRoute={isArchiveRoute}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue