@@ -7,123 +7,83 @@ import NewAclWizard from "../users/partials/wizard/NewAclWizard";
77import NewGroupWizard from "../users/partials/wizard/NewGroupWizard" ;
88import NewUserWizard from "../users/partials/wizard/NewUserWizard" ;
99import { Modal , ModalHandle } from "./modals/Modal" ;
10- import { useState } from "react" ;
1110
1211/**
1312 * This component renders the modal for adding new resources
1413 */
15- export type NewResource = "events" | "series" | "user" | "group" | "acl" | "themes" ;
14+ export type NewResource =
15+ | "events"
16+ | "series"
17+ | "user"
18+ | "group"
19+ | "acl"
20+ | "themes" ;
1621
1722const NewResourceModal = ( {
18- handleClose,
19- resource,
20- modalRef,
23+ handleClose,
24+ resource,
25+ modalRef,
2126} : {
22- handleClose : ( ) => void ,
23- resource : "events" | "series" | "user" | "group" | "acl" | "themes"
24- modalRef : React . RefObject < ModalHandle | null >
27+ handleClose : ( ) => void ;
28+ resource : "events" | "series" | "user" | "group" | "acl" | "themes" ;
29+ modalRef : React . RefObject < ModalHandle | null > ;
2530} ) => {
26- const { t } = useTranslation ( ) ;
27- const [ mode , setMode ] = useState < "form" | "confirm" > ( "form" ) ;
28- const [ closeRequested , setCloseRequested ] = useState ( false ) ;
31+ const { t } = useTranslation ( ) ;
2932
30- const close = ( ) => {
31- handleClose ( ) ;
32- } ;
33+ const close = ( ) => {
34+ handleClose ( ) ;
35+ } ;
3336
34- const onAttemptClose = ( ) => {
35- if ( mode === "form" && modalRef . current ?. isOpen ?.( ) ) {
36- setCloseRequested ( true ) ;
37- return false ; // prevent close, show confirmation modal
38- }
39- if ( mode === "confirm" ) {
40- cancelClose ( ) ; // go back to form mode
41- return true ; // make modal close
42- }
43- return true ; // default allow close
44- } ;
37+ const headerText = ( ) => {
38+ switch ( resource ) {
39+ case "events" :
40+ return t ( "EVENTS.EVENTS.NEW.CAPTION" ) ;
41+ case "series" :
42+ return t ( "EVENTS.SERIES.NEW.CAPTION" ) ;
43+ case "themes" :
44+ return t ( "CONFIGURATION.THEMES.DETAILS.NEWCAPTION" ) ;
45+ case "acl" :
46+ return t ( "USERS.ACLS.NEW.CAPTION" ) ;
47+ case "group" :
48+ return t ( "USERS.GROUPS.NEW.CAPTION" ) ;
49+ case "user" :
50+ return t ( "USERS.USERS.DETAILS.NEWCAPTION" ) ;
51+ }
52+ } ;
4553
46- // When closeRequested is set, switch to confirm mode
47- useEffect ( ( ) => {
48- if ( closeRequested ) {
49- setMode ( "confirm" ) ;
50- setCloseRequested ( false ) ;
51- }
52- } , [ closeRequested ] ) ;
53-
54- const confirmClose = ( ) => {
55- modalRef . current ?. close ?.( ) ;
56- } ;
57- const cancelClose = ( ) => {
58- setMode ( "form" ) ;
59- } ;
60-
61- const headerText = ( ) => {
62- switch ( resource ) {
63- case "events" : return t ( "EVENTS.EVENTS.NEW.CAPTION" ) ;
64- case "series" : return t ( "EVENTS.SERIES.NEW.CAPTION" ) ;
65- case "themes" : return t ( "CONFIGURATION.THEMES.DETAILS.NEWCAPTION" ) ;
66- case "acl" : return t ( "USERS.ACLS.NEW.CAPTION" ) ;
67- case "group" : return t ( "USERS.GROUPS.NEW.CAPTION" ) ;
68- case "user" : return t ( "USERS.USERS.DETAILS.NEWCAPTION" ) ;
69- }
70- } ;
71-
72- return (
73- < Modal
74- header = { mode === "confirm" ? "Confirm Close" : headerText ( ) }
75- classId = "add-event-modal"
76- // initialFocus={"#firstField"}
77- ref = { modalRef }
78- closeCallback = { onAttemptClose }
79- >
80- < div style = { { display : mode === "form" ? "block" : "none" } } >
81- { resource === "events" && (
82- // New Event Wizard
83- < NewEventWizard close = { close } />
84- ) }
85- { resource === "series" && (
86- // New Series Wizard
87- < NewSeriesWizard close = { close } />
88- ) }
89- { resource === "themes" && (
90- // New Theme Wizard
91- < NewThemeWizard close = { close } />
92- ) }
93- { resource === "acl" && (
94- // New ACL Wizard
95- < NewAclWizard close = { close } />
96- ) }
97- { resource === "group" && (
98- // New Group Wizard
99- < NewGroupWizard close = { close } />
100- ) }
101- { resource === "user" && (
102- // New User Wizard
103- < NewUserWizard close = { close } />
104- ) }
105- </ div >
106- { mode === "confirm" && (
107- < div style = { { padding : "1rem" } } >
108- < p > Are you sure you want to close? Your changes will be lost.</ p >
109- < div style = { { display : "flex" , justifyContent : "flex-end" , gap : "1rem" , marginTop : "1rem" } } >
110- < button
111- style = { { backgroundColor : "red" , color : "white" , padding : "0.5rem 1rem" } }
112- onClick = { confirmClose }
113- >
114- Yes, Close
115- </ button >
116- < button
117- style = { { backgroundColor : "gray" , color : "white" , padding : "0.5rem 1rem" } }
118- onClick = { cancelClose }
119- >
120- No, Go Back
121- </ button >
122- </ div >
123- </ div >
124- ) }
125- </ Modal >
126- ) ;
54+ return (
55+ < Modal
56+ header = { headerText ( ) }
57+ classId = "add-event-modal"
58+ // initialFocus={"#firstField"}
59+ ref = { modalRef }
60+ >
61+ { resource === "events" && (
62+ // New Event Wizard
63+ < NewEventWizard close = { close } />
64+ ) }
65+ { resource === "series" && (
66+ // New Series Wizard
67+ < NewSeriesWizard close = { close } />
68+ ) }
69+ { resource === "themes" && (
70+ // New Theme Wizard
71+ < NewThemeWizard close = { close } />
72+ ) }
73+ { resource === "acl" && (
74+ // New ACL Wizard
75+ < NewAclWizard close = { close } />
76+ ) }
77+ { resource === "group" && (
78+ // New Group Wizard
79+ < NewGroupWizard close = { close } />
80+ ) }
81+ { resource === "user" && (
82+ // New User Wizard
83+ < NewUserWizard close = { close } />
84+ ) }
85+ </ Modal >
86+ ) ;
12787} ;
12888
12989export default NewResourceModal ;
0 commit comments