1
- import { Button , createStyles , DialogActions , DialogContent , makeStyles , TextField } from '@material-ui/core'
1
+ import {
2
+ Button ,
3
+ CircularProgress ,
4
+ createStyles ,
5
+ DialogActions ,
6
+ DialogContent ,
7
+ makeStyles ,
8
+ TextField ,
9
+ } from '@material-ui/core'
2
10
import { GenericContent } from '@sensenet/default-content-types'
3
11
import { useLogger , useRepository } from '@sensenet/hooks-react'
4
12
import React , { useEffect , useRef , useState } from 'react'
@@ -8,7 +16,6 @@ import { useGlobalStyles } from '../../../globalStyles'
8
16
import { useLocalization } from '../../../hooks'
9
17
import { Icon } from '../../Icon'
10
18
import { InfluenceField , TInfluenceField } from './influenceField'
11
-
12
19
export interface OperationsDialogProps {
13
20
content : GenericContent
14
21
OperationName : string
@@ -67,6 +74,7 @@ export function OperationsDialog(props: OperationsDialogProps) {
67
74
const globalClasses = useGlobalStyles ( )
68
75
69
76
const [ UIDescription , setUIDescription ] = useState < UIDescription > ( )
77
+ const [ isOperationSubmiting , setIsOperationSubmiting ] = useState ( false )
70
78
71
79
useEffect ( ( ) => {
72
80
console . log ( props . OperationName )
@@ -87,6 +95,7 @@ export function OperationsDialog(props: OperationsDialogProps) {
87
95
} , [ logger , props . OperationName , props . content . Path , repository ] )
88
96
89
97
const submitAction = async ( e : React . FormEvent < HTMLFormElement > ) => {
98
+ setIsOperationSubmiting ( true )
90
99
e . preventDefault ( )
91
100
if ( ! formRef . current ) return
92
101
@@ -112,6 +121,8 @@ export function OperationsDialog(props: OperationsDialogProps) {
112
121
closeLastDialog ( )
113
122
} catch ( error ) {
114
123
logger . error ( { message : error . message } )
124
+ } finally {
125
+ setIsOperationSubmiting ( false )
115
126
}
116
127
}
117
128
@@ -171,6 +182,8 @@ export function OperationsDialog(props: OperationsDialogProps) {
171
182
color = "primary"
172
183
variant = "contained"
173
184
type = "submit"
185
+ disabled = { isOperationSubmiting }
186
+ endIcon = { isOperationSubmiting && < CircularProgress size = { 20 } /> }
174
187
autoFocus = { true } >
175
188
{ UIDescription ?. submitTitle || localization . submit }
176
189
</ Button >
0 commit comments