sendou.ink/app/form/fields/WeaponSelectFormField.tsx
2026-01-18 18:21:19 +02:00

40 lines
990 B
TypeScript

import { WeaponSelect } from "~/components/WeaponSelect";
import type { MainWeaponId } from "~/modules/in-game-lists/types";
import type { FormFieldProps } from "../types";
import { FormFieldMessages, useTranslatedTexts } from "./FormFieldWrapper";
import styles from "./WeaponSelectFormField.module.css";
type WeaponSelectFormFieldProps = FormFieldProps<"weapon-select"> & {
value: MainWeaponId | null;
onChange: (value: MainWeaponId | null) => void;
};
export function WeaponSelectFormField({
name,
label,
bottomText,
error,
required,
value,
onChange,
onBlur,
}: WeaponSelectFormFieldProps) {
const { translatedLabel } = useTranslatedTexts({ label });
return (
<div className={styles.root}>
<WeaponSelect
label={translatedLabel}
value={value}
onChange={(id) => {
onChange(id);
onBlur?.(id);
}}
isRequired={required}
clearable={!required}
/>
<FormFieldMessages name={name} error={error} bottomText={bottomText} />
</div>
);
}