This commit is contained in:
Moaz Dawalibi 2024-09-12 13:43:45 +03:00
parent d56c4a06bf
commit 089160a4ae
6 changed files with 40 additions and 27 deletions

View File

@ -1,7 +1,8 @@
import { create } from "zustand"; import { create } from "zustand";
interface FilterState { interface FilterState {
filterState: any[]; filterState: {};
InitialValue: {};
setFilterState: (data: any) => void; setFilterState: (data: any) => void;
clearFilterState: () => void; clearFilterState: () => void;
setWithOldValue: (data: any) => void; setWithOldValue: (data: any) => void;
@ -9,15 +10,14 @@ interface FilterState {
} }
export const useFilterState = create<FilterState>((set, get) => ({ export const useFilterState = create<FilterState>((set, get) => ({
filterState: [], filterState: {},
InitialValue:{name:""},
setFilterState: (data) => set(() => ({ filterState: data })), setFilterState: (data) => set(() => ({ filterState: data })),
clearFilterState: () => set(() => ({ filterState: [] })), clearFilterState: () => set(() => ({ filterState: [] })),
setWithOldValue: (data) => setWithOldValue: (data) =>
set((state) => ({ filterState: [...state.filterState, data] })), set((state) => ({ filterState: {...state.filterState, data} })),
setInitialValue: (data) => { setInitialValue: (data) => {
if (get().filterState.length < 1) { set(() => ({ InitialValue: data }));
set(() => ({ filterState: data }));
}
}, },
})); }));

View File

@ -1,6 +1,6 @@
import React, { ReactNode, useEffect, useState } from "react"; import React, { ReactNode, useEffect, useState } from "react";
import { FaFilter } from "react-icons/fa"; import { FaFilter } from "react-icons/fa";
import { Form, Formik, FormikConfig, FormikHelpers } from "formik"; import { Form, Formik, FormikConfig, FormikHelpers, useFormikContext } from "formik";
import { Button, ButtonProps, Divider, Modal } from "antd"; import { Button, ButtonProps, Divider, Modal } from "antd";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useModalState } from "./Modal"; import { useModalState } from "./Modal";
@ -35,11 +35,14 @@ interface SubmitButtonProps extends Omit<ButtonProps, "loading"> {}
const useFilter = () => { const useFilter = () => {
const { setIsOpen, isOpen } = useModalState((state) => state); const { setIsOpen, isOpen } = useModalState((state) => state);
const { filterState, setFilterState, clearFilterState } = useFilterState(); const { filterState, setFilterState, clearFilterState ,InitialValue} = useFilterState();
const [t] = useTranslation(); const [t] = useTranslation();
const [formValues, setFormValues] = useState({}); const [formValues, setFormValues] = useState({});
const formik = useFormikContext()
// Define the type for the callback // Define the type for the callback
type SubmitCallback = () => void; type SubmitCallback = () => void;
// console.log(formik?.values);
// console.log(InitialValue);
const FilterButton = () => { const FilterButton = () => {
const handleState = () => { const handleState = () => {
@ -64,6 +67,9 @@ const useFilter = () => {
setFilterState({}) setFilterState({})
}, []) }, [])
const FilterBody = ({ const FilterBody = ({
onSubmit, onSubmit,
children, children,
@ -79,10 +85,7 @@ const useFilter = () => {
}: FormikFormProps) => { }: FormikFormProps) => {
const handleSubmit = (values: any) => { const handleSubmit = (values: any) => {
setFilterState(values); setFilterState(values);
console.log(formValues,"prev");
setFormValues(values); setFormValues(values);
console.log(formValues,"next");
if (onSubmit) { if (onSubmit) {
onSubmit(values); onSubmit(values);
} }
@ -101,6 +104,7 @@ const useFilter = () => {
setFormValues({}); setFormValues({});
}; };
const handleOpen = () => { const handleOpen = () => {
setIsOpen(true); setIsOpen(true);
// setObjectToEdit({}); // setObjectToEdit({});
@ -123,20 +127,27 @@ const useFilter = () => {
<Formik <Formik
enableReinitialize={true} enableReinitialize={true}
onSubmit={handleSubmit} onSubmit={handleSubmit}
initialValues={formValues} initialValues={{}}
onReset={handleCancel} onReset={handleCancel}
{...formikProps} {...formikProps}
> >
<Form> {(formik) => {
<div>
<header> {t("models.filter")} <FaXmark onClick={()=>handleCancel(true)} /> </header> return (
<Divider /> <Form>
<main className="main_modal">
{isLoading ? <SpinContainer /> : children} <div>
<Divider /> <header> {t("models.filter")} <FaXmark onClick={()=>handleCancel(true)} /> </header>
</main> <Divider />
</div> <main className="main_modal">
</Form> {isLoading ? <SpinContainer /> : children}
<Divider />
</main>
</div>
</Form>
)
}}
</Formik> </Formik>
</Modal> </Modal>
</> </>

View File

@ -4,7 +4,6 @@ import useFormField from "../../../Hooks/useFormField";
import { Field } from "formik"; import { Field } from "formik";
import { ValidationFieldLabel } from "../components/ValidationFieldLabel"; import { ValidationFieldLabel } from "../components/ValidationFieldLabel";
import { ValidationFieldContainer } from "../components/ValidationFieldContainer"; import { ValidationFieldContainer } from "../components/ValidationFieldContainer";
import { FieldProps } from "../utils/types";
const Default = ({ const Default = ({
name, name,

View File

@ -7,7 +7,7 @@ interface FormValues {
interface FormikFormProps { interface FormikFormProps {
handleSubmit: (values: any) => void; handleSubmit: (values: any) => void;
initialValues: FormValues; initialValues: FormValues;
validationSchema: any; validationSchema?: any;
title?: string; title?: string;
children: ReactNode; children: ReactNode;
ButtonName?: string; ButtonName?: string;

View File

@ -1,8 +1,11 @@
import React from "react"; import React from "react";
import ValidationField from "../../../../Components/ValidationField/ValidationField"; import ValidationField from "../../../../Components/ValidationField/ValidationField";
import { Col, Row } from "reactstrap"; import { Col, Row } from "reactstrap";
import { useFormikContext } from "formik";
const FilterForm = () => { const FilterForm = () => {
const formik = useFormikContext();
return ( return (
<div> <div>
<Row> <Row>

View File

@ -27,7 +27,7 @@ interface ModelState {
} }
export const useObjectToEdit = create<ModelState>((set) => ({ export const useObjectToEdit = create<ModelState>((set) => ({
objectToEdit: null, c: null,
setObjectToEdit: (data) => set(() => ({ objectToEdit: data })), setObjectToEdit: (data) => set(() => ({ objectToEdit: data })),
OldObjectToEdit: null, OldObjectToEdit: null,
setOldObjectToEdit: (data) => set(() => ({ OldObjectToEdit: data })), setOldObjectToEdit: (data) => set(() => ({ OldObjectToEdit: data })),