@@ -25,7 +25,8 @@ const GeneratePathsModal = ({
2525 contentTypes,
2626 children,
2727} : Props ) => {
28- const [ open , setOpen ] = React . useState < boolean > ( ) ;
28+ const [ open , setOpen ] = React . useState < boolean > ( false ) ;
29+ const [ submitting , setSubmitting ] = React . useState < boolean > ( false ) ;
2930 const { formatMessage } = useIntl ( ) ;
3031 const [ selectedContentTypes , setSelectedContentTypes ] = React . useState < EnabledContentType [ 'uid' ] [ ] > ( [ ] ) ;
3132 const [ selectedGenerationType , setSelectedGenerationType ] = React . useState < GenerationType > ( ) ;
@@ -62,6 +63,7 @@ const GeneratePathsModal = ({
6263 < Flex direction = "column" alignItems = "start" gap = "1" marginTop = "2" >
6364 { contentTypes . map ( ( contentType ) => (
6465 < Checkbox
66+ key = { contentType . uid }
6567 aria-label = { `Select ${ contentType . name } ` }
6668 checked = { selectedContentTypes . includes ( contentType . uid ) }
6769 onCheckedChange = { ( ) => {
@@ -134,13 +136,19 @@ const GeneratePathsModal = ({
134136 < Button
135137 // eslint-disable-next-line @typescript-eslint/no-misused-promises
136138 onClick = { async ( ) => {
137- await onSubmit ( selectedContentTypes , selectedGenerationType ) ;
138- setOpen ( false ) ;
139+ try {
140+ setSubmitting ( true ) ;
141+ await onSubmit ( selectedContentTypes , selectedGenerationType ) ;
142+ setOpen ( false ) ;
143+ } finally {
144+ setSubmitting ( false ) ;
145+ }
139146 } }
147+ loading = { submitting }
140148 >
141149 { formatMessage ( {
142150 id : 'webtools.settings.button.generate_paths' ,
143- defaultMessage : 'Generate paths ' ,
151+ defaultMessage : 'Bulk generate ' ,
144152 } ) }
145153 </ Button >
146154 </ Modal . Footer >
0 commit comments