Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

StatusChangeDialog.js 3.6 KiB

před 1 dnem
před 1 dnem
před 1 dnem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import {
  2. useEffect,
  3. useState,
  4. useRef
  5. } from "react";
  6. // material-ui
  7. import {
  8. Box,
  9. Button,
  10. // Link,
  11. Stack,
  12. Typography,
  13. Dialog,
  14. DialogActions,
  15. DialogContent,
  16. DialogContentText,
  17. DialogTitle,
  18. CircularProgress,
  19. } from '@mui/material';
  20. import { useFormik,FormikProvider } from 'formik';
  21. import * as yup from 'yup';
  22. import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst";
  23. import {ThemeProvider} from "@emotion/react";
  24. import {FormattedMessage} from "react-intl";
  25. import {useIntl} from "react-intl";
  26. const StatusChangeDialog = (props) => {
  27. const [status, setStatus] = useState("");
  28. const intl = useIntl();
  29. const confirmOnceRef = useRef(false);
  30. useEffect(() => {
  31. // console.log(Object.keys(!props.selectedGazetteGroup).length)
  32. if(props.getStatus === "cancel"){
  33. setStatus(intl.formatMessage({id: 'cancel'}))
  34. }
  35. }, [props.getStatus]);
  36. useEffect(() => {
  37. if (!props.open) {
  38. confirmOnceRef.current = false;
  39. }
  40. }, [props.open]);
  41. const wasConfirmLoadingRef = useRef(false);
  42. useEffect(() => {
  43. if (wasConfirmLoadingRef.current && !props.confirmLoading) {
  44. confirmOnceRef.current = false;
  45. }
  46. wasConfirmLoadingRef.current = props.confirmLoading;
  47. }, [props.confirmLoading]);
  48. const acceptedHandle = () => () =>{
  49. if (props.confirmLoading) return;
  50. if (confirmOnceRef.current) return;
  51. confirmOnceRef.current = true;
  52. props.setStatusWindowAccepted(true)
  53. };
  54. const formik = useFormik({
  55. initialValues:({
  56. username:'',
  57. }),
  58. validationSchema:yup.object().shape({
  59. }),
  60. });
  61. // const handleReset = () => {
  62. // setSelectedGazetteGroupInputType("")
  63. // selectedGazetteGroup({});
  64. // };
  65. return (
  66. <Dialog
  67. open={props.open}
  68. onClose={props.handleClose}
  69. fullWidth={true}
  70. maxWidth={'xs'}
  71. >
  72. <DialogTitle component="div">
  73. <Typography variant="h4" component="h2">
  74. {status} {intl.formatMessage({id: 'publicNotice'})}
  75. </Typography>
  76. </DialogTitle>
  77. <FormikProvider value={formik}>
  78. <form>
  79. <DialogContent>
  80. <DialogContentText component="div">
  81. <Box sx={{ fontSize: '18px', color: '#000000', textAlign: 'center' }}>
  82. <Typography variant="h5" component="p" sx={{ m: 0 }}>
  83. {intl.formatMessage({id: 'confirmTo'})}{status} {intl.formatMessage({id: 'publicNoticeApp'})}?
  84. </Typography>
  85. </Box>
  86. </DialogContentText>
  87. </DialogContent>
  88. </form>
  89. </FormikProvider>
  90. <Stack direction="row" justifyContent="space-around" sx={{mb:2}}>
  91. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  92. <DialogActions>
  93. <Button
  94. variant="contained"
  95. onClick={props.handleClose}
  96. autoFocus
  97. color="cancel"
  98. disabled={props.confirmLoading}
  99. >
  100. <FormattedMessage id="cancel"/>
  101. </Button>
  102. </DialogActions>
  103. <DialogActions>
  104. <Button
  105. variant="contained"
  106. color="save"
  107. onClick={acceptedHandle()}
  108. autoFocus
  109. disabled={props.confirmLoading}
  110. startIcon={props.confirmLoading ? <CircularProgress color="inherit" size={20} /> : null}
  111. >
  112. <FormattedMessage id="confirm"/>
  113. </Button>
  114. </DialogActions>
  115. </ThemeProvider>
  116. </Stack>
  117. </Dialog>
  118. );
  119. };
  120. export default StatusChangeDialog;