@@ -18,7 +18,7 @@ export const CippAddUserDrawer = ({
1818 const userSettingsDefaults = useSettings ( ) ;
1919
2020 const formControl = useForm ( {
21- mode : "onBlur " ,
21+ mode : "onChange " ,
2222 defaultValues : {
2323 tenantFilter : userSettingsDefaults . currentTenant ,
2424 usageLocation : userSettingsDefaults . usageLocation ,
@@ -52,22 +52,36 @@ export const CippAddUserDrawer = ({
5252 }
5353 newFields . tenantFilter = userSettingsDefaults . currentTenant ;
5454
55+ // Preserve the currently selected template when copying properties
56+ const currentTemplate = formControl . getValues ( "userTemplate" ) ;
57+ if ( currentTemplate ) {
58+ newFields . userTemplate = currentTemplate ;
59+ }
60+
5561 formControl . reset ( newFields ) ;
5662 }
5763 } , [ formValues ] ) ;
5864
5965 useEffect ( ( ) => {
6066 if ( createUser . isSuccess ) {
61- formControl . reset ( {
67+ const resetValues = {
6268 tenantFilter : userSettingsDefaults . currentTenant ,
6369 usageLocation : userSettingsDefaults . usageLocation ,
64- } ) ;
70+ } ;
71+
72+ // Preserve the default template if it exists
73+ const currentTemplate = formControl . getValues ( "userTemplate" ) ;
74+ if ( currentTemplate ?. addedFields ?. defaultForTenant ) {
75+ resetValues . userTemplate = currentTemplate ;
76+ }
77+
78+ formControl . reset ( resetValues ) ;
6579 }
6680 } , [ createUser . isSuccess ] ) ;
6781
68- const handleSubmit = ( ) => {
69- formControl . trigger ( ) ;
70- if ( ! isValid ) {
82+ const handleSubmit = async ( ) => {
83+ const isFormValid = await formControl . trigger ( ) ;
84+ if ( ! isFormValid ) {
7185 return ;
7286 }
7387 const values = formControl . getValues ( ) ;
@@ -84,17 +98,40 @@ export const CippAddUserDrawer = ({
8498
8599 const handleCloseDrawer = ( ) => {
86100 setDrawerVisible ( false ) ;
87- formControl . reset ( {
101+ const resetValues = {
88102 tenantFilter : userSettingsDefaults . currentTenant ,
89103 usageLocation : userSettingsDefaults . usageLocation ,
90- } ) ;
104+ } ;
105+
106+ // Preserve the default template if it exists
107+ const currentTemplate = formControl . getValues ( "userTemplate" ) ;
108+ if ( currentTemplate ?. addedFields ?. defaultForTenant ) {
109+ resetValues . userTemplate = currentTemplate ;
110+ }
111+
112+ formControl . reset ( resetValues ) ;
113+ } ;
114+
115+ const handleOpenDrawer = ( ) => {
116+ const resetValues = {
117+ tenantFilter : userSettingsDefaults . currentTenant ,
118+ usageLocation : userSettingsDefaults . usageLocation ,
119+ } ;
120+
121+ const currentTemplate = formControl . getValues ( "userTemplate" ) ;
122+ if ( currentTemplate ?. addedFields ?. defaultForTenant ) {
123+ resetValues . userTemplate = currentTemplate ;
124+ }
125+
126+ formControl . reset ( resetValues ) ;
127+ setDrawerVisible ( true ) ;
91128 } ;
92129
93130 return (
94131 < >
95132 < PermissionButton
96133 requiredPermissions = { requiredPermissions }
97- onClick = { ( ) => setDrawerVisible ( true ) }
134+ onClick = { handleOpenDrawer }
98135 startIcon = { < PersonAdd /> }
99136 >
100137 { buttonText }
@@ -117,8 +154,8 @@ export const CippAddUserDrawer = ({
117154 { createUser . isPending
118155 ? "Creating User..."
119156 : createUser . isSuccess
120- ? "Create Another User"
121- : "Create User" }
157+ ? "Create Another User"
158+ : "Create User" }
122159 </ Button >
123160 < Button variant = "outlined" onClick = { handleCloseDrawer } >
124161 Close
0 commit comments