-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModalProvider.tsx
126 lines (108 loc) · 4.63 KB
/
ModalProvider.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import { InvitationSentModal } from 'containers/AccountSettings/CompanyRelationships/OutgoingRelationships/InvitationSentModal';
import { AmbitionSimulationPrompt } from 'containers/Modals/AmbitionSimulationPrompt';
import { CorporateEmissionFormContainer } from 'containers/Modals/CorporateEmissionForm';
import { EditInterests } from 'containers/Modals/EditInterests';
import { EmissionPathSelect } from 'containers/Modals/EmissionPathSelect';
import { ExternalLinkDisclaimerModal } from 'containers/Modals/ExternalLinkDisclaimerModal/ExternalLinkDisclaimerModal';
import { IEAInfoPopup } from 'containers/Modals/IEAInfoPopup';
import { InexperiencedEmissionsWizard } from 'containers/Modals/InexperiencedEmissionsWizard';
import { MissingDataPrivacyInfoPrompt } from 'containers/Modals/MissingDataPrivacyInfoPrompt';
import { PrivacySharingModal } from 'containers/Modals/PrivacySharing';
import { RemoveEmissionForm } from 'containers/Modals/RemoveEmissionForm';
import { TargetFormContainer } from 'containers/Modals/TargetForm';
import { TaskListPrompt } from 'containers/Modals/TaskListPrompt';
import React, { ReactNode, useState } from 'react';
import { ModalContext } from './ModalContext';
import { ModalState, ModalType } from './types';
interface IProps {
children: ReactNode;
}
export const ModalProvider = ({ children }: IProps) => {
const [modalState, setModalState] = useState<ModalState | null>(null);
const closeModal = () => {
setModalState(null);
};
const openModal = (newState: ModalState) => {
setModalState(newState);
};
return (
<ModalContext.Provider value={{ closeModal, modalState, openModal }}>
{children}
{modalState?.modalType === ModalType.EDIT_INTERESTS && (
<EditInterests
closeModal={closeModal}
hasIntroText={modalState?.contentProps.hasIntroText}
translationPrefix={modalState?.contentProps.translationPrefix}
/>
)}
{modalState?.modalType === ModalType.EMISSION_PATH_SELECT && (
<EmissionPathSelect
closeModal={closeModal}
emissionType={modalState?.contentProps.emissionType}
selectedEmissionYear={modalState?.contentProps.selectedEmissionYear}
/>
)}
{modalState?.modalType === ModalType.TASK_LIST_PROMPT && (
<TaskListPrompt
closeModal={closeModal}
contentType={modalState?.contentProps.contentType}
/>
)}
{modalState?.modalType === ModalType.MISSING_DATA_PRIVACY_INFO_PROMPT && (
<MissingDataPrivacyInfoPrompt
closeModal={closeModal}
name={modalState.contentProps.name}
/>
)}
{modalState?.modalType === ModalType.INEXPERIENCED_USER_FLOW && (
<InexperiencedEmissionsWizard
closeModal={closeModal}
emissionType={modalState?.contentProps.emissionType}
selectedEmissionYear={modalState?.contentProps.selectedEmissionYear}
/>
)}
{modalState?.modalType === ModalType.AMBITION_SIMULATION_PROMPT && (
<AmbitionSimulationPrompt closeModal={closeModal} />
)}
{modalState?.modalType === ModalType.TARGET_FORM && (
<TargetFormContainer closeModal={closeModal} />
)}
{modalState?.modalType === ModalType.CORPORATE_EMISSION_FORM && (
<CorporateEmissionFormContainer
closeModal={closeModal}
onNewBaselineSuccess={modalState?.contentProps.onNewBaselineSuccess}
onNewActualSuccess={modalState?.contentProps.onNewActualSuccess}
formType={modalState?.contentProps.formType}
selectedEmissionYear={modalState?.contentProps.selectedEmissionYear}
/>
)}
{modalState?.modalType === ModalType.REMOVE_EMISSION_FORM && (
<RemoveEmissionForm closeModal={closeModal} />
)}
{modalState?.modalType === ModalType.IEA_INFO && (
<IEAInfoPopup closeModal={closeModal} />
)}
{modalState?.modalType === ModalType.INVITATION_SENT && (
<InvitationSentModal closeModal={closeModal} />
)}
{modalState?.modalType === ModalType.EXTERNAL_LINK_DISCLAIMER && (
<ExternalLinkDisclaimerModal
closeModal={closeModal}
externalLink={modalState?.contentProps.externalLink}
/>
)}
{(modalState?.modalType === ModalType.EMISSION_ALLOCATION ||
modalState?.modalType === ModalType.NEW_CONNECTION) && (
<PrivacySharingModal
closeModal={(type) => {
closeModal();
if (type && modalState?.onClose) {
modalState.onClose(type);
}
}}
modalType={modalState.modalType}
/>
)}
</ModalContext.Provider>
);
};