next-enterprise/components/Form/SelectInput.tsx

31 lines
974 B
TypeScript
Raw Normal View History

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