import React, { useState, createContext, useEffect, useContext } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; // ------Components------- import Breadcrumb from "../../components/common/Breadcrumb"; import TenantsList from "../../components/Tenanat/TenantsList"; import { useNavigate } from "react-router-dom"; import { useDebounce } from "../../utils/appUtils"; import { useFab } from "../../Context/FabContext"; //---------- Schema and defaultValues---- import { defaultFilterValues, filterSchema, } from "../../components/Tenanat/TenantSchema"; import TenantFilterPanel from "../../components/Tenanat/TenantFilterPanel"; // This is context that wrapping all components tenant releated , but must pass inside 'TenantContext.Provider' export const TenantContext = createContext(); export const useTenantContext = () => { const context = useContext(TenantContext); if (!context) { throw new Error("useTenantContext must be used within an TenantProvider"); } return context; }; const TenantPage = () => { const [searchText, setSearchText] = useState(""); const [isRefetching,setRefetching] = useState(false) const [refetchFn, setRefetchFn] = useState(null); const [filters, setFilter] = useState(); const debouncedSearch = useDebounce(searchText, 500); const contextValue = { }; const navigate = useNavigate(); const { setOffcanvasContent, setShowTrigger } = useFab(); // This Hook allow us to right-side bar for filter Tenants const methods = useForm({ resolver: zodResolver(filterSchema), defaultValues: defaultFilterValues, }); const { reset } = methods; useEffect(() => { setShowTrigger(true); setOffcanvasContent("Tenant Filters", ); return () => { setShowTrigger(false); setOffcanvasContent("", null); }; }, []); return (
setSearchText(e.target.value)} className="form-control form-control-sm" placeholder="Search Tenant" />
refetchFn && refetchFn()}> Refresh
); }; export default TenantPage;