ldc-ovoteam/resources/ts/back/Components/Inputs/StaticRouteSelect.tsx

65 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2026-03-30 14:17:31 +02:00
import { usePage } from "@inertiajs/react";
import { useEffect } from "react";
2026-03-30 14:17:31 +02:00
import EnumSelect from "@/back/Components/Inputs/EnumSelect";
import str from "@/hooks/use-string";
import trans from "@/hooks/use-translations";
2026-03-30 14:17:31 +02:00
interface Props {
name: string;
selected: number;
required: boolean;
label: string;
setData: (name: string, value: number | null) => void;
}
export default function StaticRouteSelect(props: Readonly<Props>) {
2026-03-30 14:17:31 +02:00
const { name, selected, required, label, setData } = props;
const enumStaticRoutesEnum = usePage().props
.enumStaticRoutesEnum as LaravelEnum | null;
2026-03-30 14:17:31 +02:00
const transSelectValue = str(
trans("uwil-backend::back.static_route.select_value"),
2026-03-30 14:17:31 +02:00
)
.ucFirst()
.value();
const transNoRoutes = str(
trans("uwil-backend::back.static_route.no_route_defined"),
2026-03-30 14:17:31 +02:00
)
.ucFirst()
.value();
useEffect(() => {
if (!enumStaticRoutesEnum) {
setData(name, null);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
if (!enumStaticRoutesEnum) {
return <p className="text-sm text-muted-foreground">{transNoRoutes}</p>;
}
return (
<EnumSelect
name={name}
label={label}
placeholder={transSelectValue}
selected={selected}
options={enumStaticRoutesEnum}
setData={(fieldName, value) => {
setData(
fieldName,
typeof value === "number"
? value
: value !== null
? Number(value)
: null,
);
}}
2026-03-30 14:17:31 +02:00
required={required}
/>
);
}