feat(frontend): updated `TextField` component

pull/75/head
Samuel Rowe 3 years ago
parent e45e686ac7
commit 225e80b8ac

@ -1,48 +1,49 @@
import _ from "lodash"; import lodash from "lodash";
import { useFormikContext } from "formik"; import { useFormikContext } from "formik";
import { FunctionComponent, ReactElement } from "react";
interface Props { export interface ITextFieldProps {
name: string; name: string;
help?: string; help?: string;
[key: string]: any; [key: string]: any;
} }
const TextField = (props: Props) => { const TextField: FunctionComponent<ITextFieldProps> = (
const { label, name, help, ...otherProps } = props; props: ITextFieldProps
): ReactElement => {
const { label, name, help, required, ...otherProps } = props;
const formik = useFormikContext(); const formik = useFormikContext();
const error = _.get(formik.touched, name) && _.get(formik.errors, name); const error =
lodash.get(formik.touched, name) && lodash.get(formik.errors, name);
return ( return (
<div className="relative pb-3 flex-auto"> <div>
<div className="grid grid-cols-6 gap-4"> {label && (
<div className="col-span-3">
<label <label
htmlFor={name} htmlFor={name}
className="block text-xs font-medium text-gray-700" className="block text-xs font-medium text-gray-700"
> >
{label} {label + (required ? "*" : "")}
</label> </label>
<div className="mt-1"> )}
<input <input
id={name} id={name}
name={name} name={name}
type="text" type="text"
autoComplete="none" autoComplete="none"
className="input-util" className="input-util mt-1"
required={required}
onBlur={formik.handleBlur} onBlur={formik.handleBlur}
onChange={formik.handleChange} onChange={formik.handleChange}
value={lodash.get(formik.values, name)}
{...otherProps} {...otherProps}
value={_.get(formik.values, name)}
/> />
{
<div className="mt-1 text-xs text-red-600"> <div className="mt-1 text-xs text-red-600">
{error && <div className="caption">{error}</div>} {error && <span className="caption">{error}</span>}
{!error && help} {!error && help}
</div> </div>
}
</div>
</div>
</div>
</div> </div>
); );
}; };

Loading…
Cancel
Save