diff --git a/src/core/components/DataTable/filter/FilterBody.jsx b/src/core/components/DataTable/filter/FilterBody.jsx index fb6dcea..7f221fd 100644 --- a/src/core/components/DataTable/filter/FilterBody.jsx +++ b/src/core/components/DataTable/filter/FilterBody.jsx @@ -22,10 +22,7 @@ const ScrollBox = styled(Box)({ '::-webkit-scrollbar-thumb': { background: '#16534a', borderRadius: '0px', - }, - '::-webkit-scrollbar-thumb:hover': { - background: '#ffffff', - }, + } }); function FilterBody({columns, drawerState, setDrawerState}) { @@ -52,11 +49,9 @@ function FilterBody({columns, drawerState, setDrawerState}) { setInitialValues(values); }, [columns, settingStore, userId, pageName, tableName]); - console.log("initialValues", initialValues) - const validationSchema = Yup.object().shape( columns.reduce((acc, column) => { - if (column._filterFn === "between") { + if (column._filterFn === "between" && column.datatype === "numeric") { acc[column.id] = Yup.array().of(Yup.string()).test({ test(value, ctx) { const [start, end] = value || ["", ""]; @@ -66,9 +61,9 @@ function FilterBody({columns, drawerState, setDrawerState}) { return ctx.createError({ message: `مقدار وارده باید بیشتر از (${start}) باشد` }); - } else if (start && !end) { + } else if ((start && !end) || (!start && end)) { return ctx.createError({ - message: "این بخش را پر نمایید" + message: "این بخش را تکمیل نمایید" }); } return true; @@ -79,8 +74,9 @@ function FilterBody({columns, drawerState, setDrawerState}) { }, {}) ); - const handleSubmit = (values) => { + const handleSubmit = (values, {setSubmitting}) => { console.log("Form values:", values); + setSubmitting(false); }; return ( @@ -94,7 +90,17 @@ function FilterBody({columns, drawerState, setDrawerState}) { onSubmit={handleSubmit} validationSchema={validationSchema} > - {({values, handleChange, handleBlur, setFieldValue, errors, touched}) => ( + {({ + values, + handleChange, + handleBlur, + setFieldValue, + errors, + touched, + isSubmitting, + isValid, + dirty + }) => (
{columns.map((column) => ( @@ -118,13 +124,19 @@ function FilterBody({columns, drawerState, setDrawerState}) { alignItems: 'center', pb: 2 }}> - +
)} diff --git a/src/core/components/DataTable/filter/FilterBodyField.jsx b/src/core/components/DataTable/filter/FilterBodyField.jsx index 879a5e0..8e431fe 100644 --- a/src/core/components/DataTable/filter/FilterBodyField.jsx +++ b/src/core/components/DataTable/filter/FilterBodyField.jsx @@ -67,6 +67,7 @@ function FilterBodyField({column, value, handleChange, handleBlur, setFieldValue @@ -92,6 +93,7 @@ function FilterBodyField({column, value, handleChange, handleBlur, setFieldValue { + setSelectedFilter(filterOption[index]); + } + return ( {filterOption.map((option, index) => ( handleChnageItem(event, index)} selected={option === selectedFilter} sx={{cursor: 'pointer', width: "100px", display: "flex", justifyContent: "center"}}> {columnFilterModeOptionFa[option]} @@ -26,4 +30,4 @@ function FilterOptionList({defaultFilter, filterOption, handleCloseFilterBox, an ); } -export default FilterOptionList; +export default FilterOptionList; \ No newline at end of file diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx index ec57e2f..db402a7 100644 --- a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx +++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePicker.jsx @@ -1,13 +1,19 @@ import React from 'react'; -import DatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/DatePicker"; +import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker"; +import {Typography} from "@mui/material"; function CustomDatePicker({column, value, defaultFilterTranslation, setFieldValue}) { return ( - + نوع فیلتر: {defaultFilterTranslation} (تاریخ) + + } /> ); } diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx index 847c16f..beaab98 100644 --- a/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx +++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/CustomDatePickerRange.jsx @@ -1,24 +1,33 @@ 'use client' -import DatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/DatePicker"; import React from "react"; +import {Box, Typography} from "@mui/material"; +import MuiDatePicker from "@/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker"; function CustomDatePickerRange({column, value, defaultFilterTranslation, setFieldValue}) { + return ( - <> - + + نوع فیلتر: {defaultFilterTranslation} (تاریخ) + + } /> - - + ); } diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/DatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/DatePicker.jsx deleted file mode 100644 index 19ffb3d..0000000 --- a/src/core/components/DataTable/filter/fieldsType/CustomDate/DatePicker.jsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; -import {LocalizationProvider, MobileDatePicker} from "@mui/x-date-pickers"; -import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali"; -import {faIR} from "@mui/x-date-pickers/locales"; -import {IconButton, InputAdornment, Typography} from "@mui/material"; -import ClearIcon from "@mui/icons-material/Clear"; -import moment from "jalali-moment"; - -function DatePicker({column, value, defaultFilterTranslation, setFieldValue}) { - return ( - - { - const date = new Date(value); - const formattedDate = moment(date) - .locale("en") - .format("YYYY-MM-DD"); - setFieldValue(column.id, formattedDate); - }} - slotProps={{ - textField: { - placeholder: "تاریخ خود را وارد کنید", - helperText: ( - - نوع فیلتر: {defaultFilterTranslation} (تاریخ) - - ), - InputProps: { - endAdornment: ( - - { - event.stopPropagation(); - setFieldValue(column.id, ""); - }} - sx={{ - color: "#bfbfbf", - '&:hover': { - backgroundColor: 'rgba(189, 189, 189, 0.1)', - color: "#363434" - }, - }} - > - - - - ), - }, - }, - }} - /> - - ); -} - -export default DatePicker; \ No newline at end of file diff --git a/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx new file mode 100644 index 0000000..40783ad --- /dev/null +++ b/src/core/components/DataTable/filter/fieldsType/CustomDate/MuiDatePicker.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import {LocalizationProvider, MobileDatePicker} from "@mui/x-date-pickers"; +import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali"; +import {faIR} from "@mui/x-date-pickers/locales"; +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}) { + return ( + + + { + const date = new Date(value); + const formattedDate = moment(date) + .locale("en") + .format("YYYY-MM-DD"); + setFieldValue(name, formattedDate); + }} + minDate={minDate ? new Date(minDate) : null} + maxDate={maxDate ? new Date(maxDate) : null} + slotProps={{ + textField: { + placeholder: placeholder, + InputProps: { + endAdornment: ( + + { + event.stopPropagation(); + setFieldValue(name, ""); + }} + sx={{ + color: "#bfbfbf", + '&:hover': { + backgroundColor: 'rgba(189, 189, 189, 0.1)', + color: "#363434" + }, + }} + > + + + + ), + }, + }, + }} + /> + + {helperText ? helperText : ""} + + + + ); +} + +export default MuiDatePicker; \ No newline at end of file diff --git a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx index 8bd3a76..22c48bc 100644 --- a/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx +++ b/src/core/components/DataTable/filter/fieldsType/CustomTextFieldRange.jsx @@ -21,6 +21,7 @@ function CustomTextFieldRange({ label={از {column.header}} value={value[0]} fullWidth + error={touched?.[column.id] && Boolean(errors?.[column.id])} helperText={نوع فیلتر: {defaultFilterTranslation}} variant="outlined"