diff --git a/src/core/components/DataTable/filter/FilterBody.jsx b/src/core/components/DataTable/filter/FilterBody.jsx index fbaed68..40b77c1 100644 --- a/src/core/components/DataTable/filter/FilterBody.jsx +++ b/src/core/components/DataTable/filter/FilterBody.jsx @@ -63,24 +63,25 @@ function FilterBody({columns, drawerState, setDrawerState}) { const validationSchema = Yup.object().shape( columns.reduce((acc, column) => { - if (column._filterFn === "between" && column.datatype === "numeric") { - acc[column.id] = Yup.array().of(Yup.string()).test({ - test(value, ctx) { - console.log("vavavava", value) - const [start, end] = value.value || ["", ""]; - const startInt = parseInt(start, 10); - const endInt = parseInt(end, 10); - if (start && end && endInt <= startInt) { - return ctx.createError({ - message: `مقدار وارده باید بیشتر از (${start}) باشد` - }); - } else if ((start && !end) || (!start && end)) { - return ctx.createError({ - message: "این بخش را تکمیل نمایید" - }); - } - return true; - } + if (column._filterFn === "between") { + acc[column.id] = Yup.object().shape({ + value: Yup.array() + .of(Yup.string().nullable()) + .test({ + test(value, ctx) { + const [start, end] = value || ["", ""]; + if (column.datatype === "numeric" && start && end && parseInt(end, 10) <= parseInt(start, 10)) { + return ctx.createError({ + message: `مقدار وارده باید بیشتر از (${start}) باشد`, + }); + } else if ((start && !end) || (!start && end)) { + return ctx.createError({ + message: "این بخش را تکمیل نمایید", + }); + } + return true; + }, + }), }); } return acc; diff --git a/src/core/components/DataTable/filter/FilterBodyField.jsx b/src/core/components/DataTable/filter/FilterBodyField.jsx index 492ee65..1a91c05 100644 --- a/src/core/components/DataTable/filter/FilterBodyField.jsx +++ b/src/core/components/DataTable/filter/FilterBodyField.jsx @@ -70,6 +70,8 @@ function FilterBodyField({ setFieldValue={setFieldValue} defaultFilterTranslation={defaultFilterTranslation} handleOpenFilterBox={handleOpenFilterBox} + errors={errors} + touched={touched} /> ) : column.datatype === "array" && filterParameters.filterFn === "equals" ? ( ); diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx index 21cd195..5031372 100644 --- a/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx +++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx @@ -6,7 +6,12 @@ import {Box, FormHelperText, IconButton, InputAdornment} from "@mui/material"; import ClearIcon from "@mui/icons-material/Clear"; import moment from "jalali-moment"; -function MuiDatePicker({value, setFieldValue, name, minDate, maxDate, helperText, placeholder}) { +function MuiDatePicker({value, setFieldValue, name, minDate, maxDate, helperText, placeholder, error}) { + + // console.log("error", error); + // + // console.log("helperText", helperText) + return ( { - console.log(value) const date = new Date(value); const formattedDate = moment(date) .locale("en") @@ -30,6 +34,7 @@ function MuiDatePicker({value, setFieldValue, name, minDate, maxDate, helperText maxDate={maxDate ? new Date(maxDate) : null} slotProps={{ textField: { + error: error, placeholder: placeholder, InputProps: { endAdornment: ( @@ -56,7 +61,7 @@ function MuiDatePicker({value, setFieldValue, name, minDate, maxDate, helperText }, }} /> - + {helperText ? helperText : ""} diff --git a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx index e3c182d..9d4da31 100644 --- a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx +++ b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx @@ -21,7 +21,7 @@ function CustomTextFieldRange({ label={از {column.header}} value={filterParameters.value[0]} fullWidth - error={touched?.[column.id] && Boolean(errors?.[column.id])} + error={touched?.[`${column.id}`]?.value && Boolean(errors?.[`${column.id}`]?.value)} helperText={نوع فیلتر: {defaultFilterTranslation}} variant="outlined" @@ -33,8 +33,8 @@ function CustomTextFieldRange({ name={`${column.id}.value[1]`} onChange={handleChange} onBlur={handleBlur} - error={touched?.[column.id] && Boolean(errors?.[column.id])} - helperText={touched?.[column.id] ? errors?.[column.id] : null} + error={touched?.[`${column.id}`]?.value && Boolean(errors?.[`${column.id}`]?.value)} + helperText={touched?.[`${column.id}`]?.value ? errors?.[`${column.id}`]?.value : null} label={تا {column.header}} value={filterParameters.value[1]} fullWidth