Untitled
vai tomar no cu dessa escolaunknown
tsx
a year ago
2.8 kB
14
Indexable
import { createContext, useState, ReactNode, useContext } from "react";
import { Bill, BillModalFields, Customer } from "../types";
import { ClientModalFields } from "../types/index";
interface IModalContext {
isClientOpen: boolean;
isBillOpen: boolean;
isEditBillOpen: boolean;
isUserOpen: boolean;
rowData: Customer | Bill | BillModalFields | ClientModalFields | null;
openBillModal: () => void;
closeBillModal: () => void;
openClientModal: () => void;
closeClientModal: () => void;
openEditBillModal: () => void;
closeEditBillModal: () => void;
openUserModal: () => void;
closeUserModal: () => void;
setRowData: (
data: Customer | Bill | BillModalFields | ClientModalFields | null
) => void;
}
export const ModalContext = createContext<IModalContext | undefined>(undefined);
export const ModalProvider: React.FC<{ children: ReactNode }> = ({
children,
}) => {
const [isClientOpen, setIsClientOpen] = useState<boolean>(false);
const [isEditBillOpen, setIsEditBillOpen] = useState<boolean>(false);
const [isBillOpen, setIsBillOpen] = useState<boolean>(false);
const [isUserOpen, setIsUserOpen] = useState<boolean>(false);
const [rowData, setRowData] = useState<
Customer | Bill | BillModalFields | ClientModalFields | null
>(null);
const openBillModal = () => {
setIsBillOpen(true);
};
const closeBillModal = () => {
setIsBillOpen(false);
setRowData(null);
};
const openClientModal = () => {
setIsClientOpen(true);
};
const closeClientModal = () => {
setIsClientOpen(false);
};
const openEditBillModal = () => {
setIsEditBillOpen(true);
};
const closeEditBillModal = () => {
setIsEditBillOpen(false);
};
const openUserModal = () => {
setIsUserOpen(true);
};
const closeUserModal = () => {
setIsUserOpen(false);
};
return (
<ModalContext.Provider
value={{
setRowData,
rowData,
isClientOpen,
isBillOpen,
isEditBillOpen,
isUserOpen,
openBillModal,
closeBillModal,
openClientModal,
closeClientModal,
openEditBillModal,
closeEditBillModal,
openUserModal,
closeUserModal,
}}
>
{children}
</ModalContext.Provider>
);
};
export function useModal() {
const context = useContext(ModalContext);
if (context === undefined) {
throw new Error("useModal must be used within a ModalProvider");
}
return context;
}
Editor is loading...
Leave a Comment