From e6f5c06d371f69f890575685236715b33a6d860c Mon Sep 17 00:00:00 2001 From: G Date: Mon, 27 May 2024 18:00:01 +0000 Subject: [PATCH] a better atlernative for modals, the modal to show is provided to the function showModal. --- src/contexts/ModalsManagerContext.tsx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/contexts/ModalsManagerContext.tsx b/src/contexts/ModalsManagerContext.tsx index d2348be..613dc1a 100644 --- a/src/contexts/ModalsManagerContext.tsx +++ b/src/contexts/ModalsManagerContext.tsx @@ -8,6 +8,9 @@ export interface ImodalsManagerContext { closeLoadingModal(): void; showErrorModal(): void; closeErrorModal(): void; + + showModal(element: React.ReactElement): void; + closeModal(): void; } export const ModalsManagerContext = createContext({ @@ -15,6 +18,8 @@ export const ModalsManagerContext = createContext({ closeLoadingModal: () => {}, showErrorModal: () => {}, closeErrorModal: () => {}, + showModal: () => {}, + closeModal: () => {}, }); export const ModalsManagerProvider = ({ children }: { children: React.ReactNode }) => { @@ -22,6 +27,8 @@ export const ModalsManagerProvider = ({ children }: { children: React.ReactNode const [loadingModalVisible, setLoadingModalVisible] = useState(false); const [errorModalVisible, setErrorModalVisible] = useState(false); + const [modalElement, setModalElement] = useState(null); + const showLoadingModal = () => { setShowBackdrop(true); setLoadingModalVisible(true); @@ -42,6 +49,16 @@ export const ModalsManagerProvider = ({ children }: { children: React.ReactNode setErrorModalVisible(false); }; + const showModal = (element: React.ReactElement) => { + setModalElement(element); + setShowBackdrop(true); + }; + + const closeModal = () => { + setModalElement(null); + setShowBackdrop(false); + }; + return ( {children} {showBackdrop && } + {modalElement && modalElement} {loadingModalVisible && } {errorModalVisible && } @@ -60,7 +80,7 @@ export const ModalsManagerProvider = ({ children }: { children: React.ReactNode ); }; -export const useOverlayContext = () => { +export const useModalsManagerContext = () => { return useContext(ModalsManagerContext); }; -- libgit2 0.27.1