This commit is contained in:
KarimAldeen 2024-03-27 11:50:01 +03:00
parent ae155ed639
commit 1cc0f9e527
7 changed files with 71 additions and 20 deletions

View File

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import "./ValidationField.scss"; import "./ValidationField.scss";
import { Date, Time, File, DataRange, SelectField, Default, CheckboxField } from './View'; import { Date, Time, File, DataRange, SelectField, Default, CheckboxField ,TextAreaField} from './View';
import { ValidationFieldProps } from "./types"; import { ValidationFieldProps } from "./types";
import MaltyFile from "./View/MaltyFile"; import MaltyFile from "./View/MaltyFile";
import SearchField from "./View/SearchField"; import SearchField from "./View/SearchField";
@ -24,6 +24,8 @@ const ValidationField: React.FC<ValidationFieldProps> = ({type , ...otherProps})
return <MaltyFile {...otherProps} />; return <MaltyFile {...otherProps} />;
case "Checkbox": case "Checkbox":
return <CheckboxField {...otherProps} />; return <CheckboxField {...otherProps} />;
case "TextArea":
return <TextAreaField {...otherProps} />;
default: default:
return <Default {...otherProps} type={type}/>; return <Default {...otherProps} type={type}/>;
} }

View File

@ -5,6 +5,8 @@ import useFormField from '../../../Hooks/useFormField';
const Default = ({ name, label, placeholder, isDisabled, onChange, props,type }: any) => { const Default = ({ name, label, placeholder, isDisabled, onChange, props,type }: any) => {
const { Field, formik, isError, errorMsg, t } = useFormField(name, props); const { Field, formik, isError, errorMsg, t } = useFormField(name, props);
return ( return (
<div className="ValidationField w-100" > <div className="ValidationField w-100" >
<label htmlFor={name} className="text"> <label htmlFor={name} className="text">

View File

@ -0,0 +1,45 @@
import { Form, Input } from 'antd'
import React from 'react'
import useFormField from '../../../Hooks/useFormField';
const { TextArea } = Input;
const TextAreaField = ({ name, label, placeholder, isDisabled, onChange, props,type }: any) => {
const { Field, formik, isError, errorMsg, t } = useFormField(name, props);
const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
console.log('Change:', e.target.value);
formik.setFieldValue(name, e.target.value)
};
return (
<div className="ValidationField w-100" >
<label htmlFor={name} className="text">
{t(`${label ? label : name}`)}
</label>
<Form.Item
hasFeedback
validateStatus={isError ? 'error' : ''}
help={isError ? errorMsg : ''}
>
<Field
as={TextArea}
placeholder={t(`${placeholder ?placeholder : name}`)}
name={name}
disabled={isDisabled}
size="large"
onChange={onChange || handleChange}
// onChange={onChange ? onChange : handleChange}
/>
</Form.Item>
</div>
);
};
export default React.memo(TextAreaField);
;

View File

@ -5,8 +5,7 @@ import DataRange from "./DataRange";
import CheckboxField from "./CheckboxField"; import CheckboxField from "./CheckboxField";
import Default from "./Default"; import Default from "./Default";
import File from "./File"; import File from "./File";
import TextAreaField from './TextArea'
@ -17,6 +16,7 @@ export {
DataRange, DataRange,
CheckboxField, CheckboxField,
Default, Default,
File File,
TextAreaField
} }

View File

@ -117,7 +117,7 @@
} }
export interface ValidationFieldPropstext { export interface ValidationFieldPropstext {
name: string; name: string;
type?: "text" | "number" | "password"; type?: "text" | "number" | "password" | "TextArea";
label?: string; label?: string;
className?: string; className?: string;
placeholder?: string; placeholder?: string;

View File

@ -50,18 +50,19 @@ function Form() {
return ( return (
<Row xs={1} sm={1} md={1} lg={2} xl={2}> <Row xs={1} sm={1} md={1} lg={2} xl={2}>
<Col> <Col>
<ValidationField name="body_en" /> <ValidationField name="title_en" />
<ValidationField name="body_ar" /> <ValidationField name="title_ar" />
<ValidationField name="body_de" /> <ValidationField name="title_de" />
{/* <ValidationField name="meta" /> */} {/* <ValidationField name="meta" /> */}
<ValidationField name="user_ids" label='user' type="Search" option={option} searchBy={"name"} isMulti /> <ValidationField name="user_ids" label='user' type="Search" option={option} searchBy={"name"} isMulti />
</Col> </Col>
<Col> <Col>
<ValidationField name="title_en" /> <ValidationField name="body_en" type='TextArea' />
<ValidationField name="title_ar" /> <ValidationField name="body_ar" type='TextArea'/>
<ValidationField name="title_de" /> <ValidationField name="body_de" type='TextArea'/>
{/* <ValidationField name="type" type="Select" option={type} /> */} {/* <ValidationField name="type" type="Select" option={type} /> */}

View File

@ -3,25 +3,26 @@ import { Col, Row } from 'reactstrap';
import ValidationField from '../../../../Components/ValidationField/ValidationField'; import ValidationField from '../../../../Components/ValidationField/ValidationField';
function Form() { function Form() {
const type = [{ lable: "other", value: "other" },{ lable: "product", value: "product"},{ lable: "order", value: "order" }] // const type = [{ lable: "other", value: "other" },{ lable: "product", value: "product"},{ lable: "order", value: "order" }]
return ( return (
<Row xs={1} sm={1} md={1} lg={2} xl={2}> <Row xs={1} sm={1} md={1} lg={2} xl={2}>
<Col>
<ValidationField name="body_en" />
<ValidationField name="body_ar" />
<ValidationField name="body_de" />
{/* <ValidationField name="meta" /> */}
</Col>
<Col> <Col>
<ValidationField name="title_en" /> <ValidationField name="title_en" />
<ValidationField name="title_ar" /> <ValidationField name="title_ar" />
<ValidationField name="title_de" /> <ValidationField name="title_de" />
</Col>
<Col>
<ValidationField name="body_en" type='TextArea' />
<ValidationField name="body_ar" type='TextArea'/>
<ValidationField name="body_de" type='TextArea'/>
{/* <ValidationField name="type" type="Select" option={type} /> */} {/* <ValidationField name="type" type="Select" option={type} /> */}