68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { Form, Input } from "antd";
|
|
import React from "react";
|
|
import useFormField from "../../../Hooks/useFormField";
|
|
import { MdOutlineEdit } from "react-icons/md";
|
|
import { Field } from "formik";
|
|
const { TextArea } = Input;
|
|
|
|
const TextField = ({
|
|
name,
|
|
label,
|
|
label2,
|
|
placeholder,
|
|
isDisabled,
|
|
onChange,
|
|
props,
|
|
no_label,
|
|
label_icon,
|
|
className,
|
|
}: any) => {
|
|
const { formik, isError, errorMsg, t } = useFormField(name, props);
|
|
const TextFilehandleChange = (
|
|
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
|
|
) => {
|
|
// console.log('Change:', e.target.value);
|
|
formik.setFieldValue(name, e.target.value);
|
|
};
|
|
return (
|
|
<div className={`ValidationField w-100 ${className ?? ""} `}>
|
|
{no_label ? (
|
|
<label htmlFor={name} className="text">
|
|
<span>empty</span>
|
|
</label>
|
|
) : label_icon ? (
|
|
<div className="LabelWithIcon">
|
|
<label htmlFor={name} className="text">
|
|
{label2 ? label2 : t(`input.${label ? label : name}`)}
|
|
</label>
|
|
<MdOutlineEdit size={22} style={{ color: "#A098AE" }} />
|
|
</div>
|
|
) : (
|
|
<label htmlFor={name} className="text">
|
|
{label2 ? label2 : t(`input.${label ? label : name}`)}
|
|
</label>
|
|
)}
|
|
|
|
<Form.Item
|
|
hasFeedback
|
|
validateStatus={isError ? "error" : ""}
|
|
help={isError ? errorMsg : ""}
|
|
>
|
|
<Field
|
|
as={TextArea}
|
|
placeholder={t(`input.${placeholder ? placeholder : name}`)}
|
|
name={name}
|
|
disabled={isDisabled}
|
|
size="large"
|
|
showCount
|
|
maxLength={1000}
|
|
onChange={onChange || TextFilehandleChange}
|
|
style={{ height: 120 }}
|
|
/>
|
|
</Form.Item>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default React.memo(TextField);
|