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'
210import { GenericContent } from '@sensenet/default-content-types'
311import { useLogger , useRepository } from '@sensenet/hooks-react'
412import React , { useEffect , useRef , useState } from 'react'
@@ -8,7 +16,6 @@ import { useGlobalStyles } from '../../../globalStyles'
816import { useLocalization } from '../../../hooks'
917import { Icon } from '../../Icon'
1018import { InfluenceField , TInfluenceField } from './influenceField'
11-
1219export interface OperationsDialogProps {
1320 content : GenericContent
1421 OperationName : string
@@ -67,6 +74,7 @@ export function OperationsDialog(props: OperationsDialogProps) {
6774 const globalClasses = useGlobalStyles ( )
6875
6976 const [ UIDescription , setUIDescription ] = useState < UIDescription > ( )
77+ const [ isOperationSubmiting , setIsOperationSubmiting ] = useState ( false )
7078
7179 useEffect ( ( ) => {
7280 console . log ( props . OperationName )
@@ -87,6 +95,7 @@ export function OperationsDialog(props: OperationsDialogProps) {
8795 } , [ logger , props . OperationName , props . content . Path , repository ] )
8896
8997 const submitAction = async ( e : React . FormEvent < HTMLFormElement > ) => {
98+ setIsOperationSubmiting ( true )
9099 e . preventDefault ( )
91100 if ( ! formRef . current ) return
92101
@@ -112,6 +121,8 @@ export function OperationsDialog(props: OperationsDialogProps) {
112121 closeLastDialog ( )
113122 } catch ( error ) {
114123 logger . error ( { message : error . message } )
124+ } finally {
125+ setIsOperationSubmiting ( false )
115126 }
116127 }
117128
@@ -171,6 +182,8 @@ export function OperationsDialog(props: OperationsDialogProps) {
171182 color = "primary"
172183 variant = "contained"
173184 type = "submit"
185+ disabled = { isOperationSubmiting }
186+ endIcon = { isOperationSubmiting && < CircularProgress size = { 20 } /> }
174187 autoFocus = { true } >
175188 { UIDescription ?. submitTitle || localization . submit }
176189 </ Button >
0 commit comments