2024-03-03 22:09:33 -05:00
|
|
|
import { useField } from "formik"
|
|
|
|
|
import React from "react"
|
|
|
|
|
import ErrorMessage from "./ErrorMessage"
|
|
|
|
|
import RequiredAsterisk from "./RequiredAsterisk"
|
|
|
|
|
|
|
|
|
|
const SelectInput = ({ label, ...props }: { label?: string; name: string; [x: string]: any }) => {
|
2024-03-05 17:42:30 -05:00
|
|
|
// Since `useField` only needs `name`, and optionally `type` and `value`, we destruct those from props
|
2024-03-03 22:09:33 -05:00
|
|
|
const { required, ...restProps } = props
|
|
|
|
|
const [field, meta] = useField(restProps)
|
|
|
|
|
|
|
|
|
|
return (
|
2024-03-04 20:50:32 -05:00
|
|
|
<div className="flex flex-col gap-3">
|
2024-03-03 22:09:33 -05:00
|
|
|
{label && (
|
|
|
|
|
<label className="text-md" htmlFor={props.id || props.name}>
|
|
|
|
|
{label}
|
2024-03-04 20:50:32 -05:00
|
|
|
<RequiredAsterisk required={required} />
|
2024-03-03 22:09:33 -05:00
|
|
|
</label>
|
|
|
|
|
)}
|
2024-03-04 20:50:32 -05:00
|
|
|
|
|
|
|
|
<div className="flex flex-col">
|
|
|
|
|
<select className="h-10 w-full rounded-lg border border-grey-500 px-4 text-sm" {...field} {...restProps} />
|
|
|
|
|
<ErrorMessage touched={meta.touched} error={meta.error} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
2024-03-03 22:09:33 -05:00
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default SelectInput
|