import React, { createContext, useState, useEffect, useContext, useRef } from "react"; import Breadcrumb from "../../components/common/Breadcrumb"; import GlobalModel from "../../components/common/GlobalModel"; import { useFab } from "../../Context/FabContext"; import ManageRecurringExpense from "../../components/RecurringExpense/ManageRecurringExpense"; import RecurringExpenseList from "../../components/RecurringExpense/RecurringExpenseList"; import { PAYEE_RECURRING_EXPENSE } from "../../utils/constants"; import { defaultRecurringExpense, SearchRecurringExpenseSchema } from "../../components/RecurringExpense/RecurringExpenseSchema"; import ViewRecurringExpense from "../../components/RecurringExpense/ViewRecurringExpense"; import HandleRecurringExpenseExport from "../../components/RecurringExpense/HandleRecurringExpenseExport"; export const RecurringExpenseContext = createContext(); export const useRecurringExpenseContext = () => { const context = useContext(RecurringExpenseContext); if (!context) { throw new Error( "useRecurringExpenseContext must be used within an ExpenseProvider" ); } return context; }; const RecurringExpensePage = () => { const [ManageRequest, setManageRequest] = useState({ IsOpen: null, RecurringId: null, }); const tableRef = useRef(null); const [filteredData, setFilteredData] = useState([]); const [exportLoading, setExportLoading] = useState(false); const [searchText, setSearchText] = useState(""); const [filters, setFilters] = useState(defaultRecurringExpense); const [viewRecurring, setViewRecurring] = useState({ view: false, recurringId: null, }); const [selectedStatuses, setSelectedStatuses] = useState( PAYEE_RECURRING_EXPENSE.map((s) => s.id) ); const [search, setSearch] = useState(""); const contextValue = { setManageRequest, setViewRecurring, }; const handleStatusChange = (id) => { setSelectedStatuses((prev) => prev.includes(id) ? prev.filter((s) => s !== id) : [...prev, id] ); }; const handleExport = (type) => { HandleRecurringExpenseExport(type, filters, search, tableRef, setExportLoading); }; return (
{/* Breadcrumb */} {/* Top Bar */}
{/* Left Column: Search + Filter */}
setSearch(e.target.value)} />
    {PAYEE_RECURRING_EXPENSE.map(({ id, label }) => (
  • handleStatusChange(id)} />
  • ))}
{/* Right Column: Add Button + 3-Dots Menu */}
{/* 3-Dots Dropdown */}

{ManageRequest.IsOpen && ( setManageRequest({ IsOpen: null, expenseId: null }) } > setManageRequest({ IsOpen: null, RecurringId: null }) } requestToEdit={ManageRequest.RecurringId} /> )} {viewRecurring.view && ( setViewRecurring({ IsOpen: null, recurringId: null }) } > {/* setViewRecurring({ IsOpen: null, recurringId: null }) } RecurringId={viewRecurring.recurringId} /> */} )}
); }; export default RecurringExpensePage;