resolved filter issues

This commit is contained in:
pramod mahajan 2025-08-12 14:53:48 +05:30
parent 56b5633c51
commit f581b0e311
3 changed files with 39 additions and 30 deletions

View File

@ -1,5 +1,5 @@
import { zodResolver } from "@hookform/resolvers/zod";
import React, { useState } from "react";
import React, { useState,useCallback } from "react";
import { FormProvider, useForm, useFormContext } from "react-hook-form";
import { defaultFilterValues, filterSchema } from "./TenantSchema";
import Label from "../common/Label";
@ -10,30 +10,44 @@ import { DateRangePicker1 } from "../common/DateRangePicker";
import moment from "moment";
const TenantFilterPanel = ({onApply}) => {
const [resetKey, setResetKey] = useState(0);
const method = useForm({
const [resetKey, setResetKey] = useState(0);
const methods = useForm({
resolver: zodResolver(filterSchema),
defaultValues: defaultFilterValues,
});
const { control, register, handleSubmit, reset, watch } = method;
const { data, isError, isLoading } = useIndustries();
const closePanel = () => {
document.querySelector(".offcanvas.show .btn-close")?.click();
};
const onSubmit = (formData) => {
onApply({
...formData
})
};
const onClear = () => {
reset(filterSchema);
setResetKey((prev) => prev + 1);
const { handleSubmit, reset } = methods;
const { data: industries = [], isLoading } = useIndustries();
const handleClosePanel = useCallback(() => {
document.querySelector(".offcanvas.show .btn-close")?.click();
}, []);
const onSubmit = useCallback(
(formData) => {
onApply({
...formData,
startDate: moment.utc(formData.startDate, "DD-MM-YYYY").toISOString(),
endDate: moment.utc(formData.endDate, "DD-MM-YYYY").toISOString(),
});
handleClosePanel();
},
[onApply, handleClosePanel]
);
const onClear = useCallback(() => {
reset(defaultFilterValues);
setResetKey((prev) => prev + 1); // triggers DateRangePicker reset
onApply(defaultFilterValues);
}, [onApply, reset]);
if (isLoading) {
return <div className="text-center">Loading...</div>;
}
closePanel();
};
if (isLoading) return <div className="text-center">Loading...</div>;
return (
<FormProvider {...method}>
<FormProvider {...methods}>
<form onSubmit={handleSubmit(onSubmit)}>
<div className="text-start mb-1">
<div className="text-start my-2">
@ -48,7 +62,7 @@ const TenantFilterPanel = ({onApply}) => {
<SelectMultiple
name="industryIds"
label="Industries"
options={data}
options={industries}
labelKey="name"
valueKey="id"
/>
@ -85,10 +99,11 @@ const TenantFilterPanel = ({onApply}) => {
type="button"
className="btn btn-secondary btn-xs"
onClick={onClear}
>
Clear
</button>
<button type="submit" className="btn btn-primary btn-xs">
<button type="submit" className="btn btn-primary btn-xs" >
Apply
</button>
</div>

View File

@ -45,16 +45,10 @@ const TenantPage = () => {
});
const { reset } = methods;
const clearFilter = () => {
setFilter(defaultFilter);
reset();
};
useEffect(() => {
setShowTrigger(true);
setOffcanvasContent("Tenant Filters", <TenantFilterPanel onApply={setFilter}
clearFilter={clearFilter}/>);
/>);
return () => {
setShowTrigger(false);
setOffcanvasContent("", null);

View File

@ -78,7 +78,7 @@ export const CONSTANT_TEXT = {
}
export const reference = [
{ val: "google", name: "Google" },
{ val: "frined", name: "Friend" },
{ val: "frineds", name: "Friends" },
{ val: "advertisement", name: "Advertisement" },
{ val: "root tenant", name: "Root Tenant" },
];