Skip to content

Commit c0dc15d

Browse files
authored
Merge pull request #1647 from SenseNet/feature/2220-operations-modal-loading-state
feature: loading state to operation
2 parents 221ef66 + 384b832 commit c0dc15d

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

apps/sensenet/src/components/dialogs/operations/operations.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
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'
210
import { GenericContent } from '@sensenet/default-content-types'
311
import { useLogger, useRepository } from '@sensenet/hooks-react'
412
import React, { useEffect, useRef, useState } from 'react'
@@ -8,7 +16,6 @@ import { useGlobalStyles } from '../../../globalStyles'
816
import { useLocalization } from '../../../hooks'
917
import { Icon } from '../../Icon'
1018
import { InfluenceField, TInfluenceField } from './influenceField'
11-
1219
export 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

Comments
 (0)