FormUpload.jsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import {useState} from "react";
  2. import {Button, Grid, TextField} from "@mui/material";
  3. import SendAndArchiveIcon from "@mui/icons-material/SendAndArchive";
  4. import CancelIcon from "@mui/icons-material/Cancel";
  5. import {connect} from "react-redux";
  6. import {actionSetAvatar, actionSetLogin, actionSetNick, actionSetPassword} from "../../actions/ActionUploadFile";
  7. import {actionFullUserFindOne} from "../../actions/ActionUserFind";
  8. import {MyDropzone} from "./MyDropzone";
  9. const FormUpload = ({user, setStatus, setLogin, setNick, setPassword, setImage}) => {
  10. const [loginValue, setLoginValue] = useState(user?.login || '')
  11. const [nickValue, setNickValue] = useState(user?.nick || '')
  12. const [passwordValue, setPasswordValue] = useState('')
  13. const [fileValue, setFileValue] = useState('')
  14. return (
  15. <Grid
  16. container
  17. spacing={2}
  18. justifyContent='center'
  19. textAlign='center'
  20. flexDirection='column'
  21. >
  22. <Grid
  23. item xs={12}
  24. display='flex'
  25. justifyContent='space-between'
  26. alignItems='center'
  27. marginBottom='30px'
  28. >
  29. <TextField
  30. sx={{color: '#000'}}
  31. label={'Login'}
  32. variant="outlined"
  33. placeholder={user?.login || ''}
  34. onChange={e => setLoginValue(e.target.value)}
  35. />
  36. <TextField
  37. sx={{color: '#000'}}
  38. label={'Nick'}
  39. variant="outlined"
  40. placeholder={user?.nick || ''}
  41. onChange={e => setNickValue(e.target.value)}
  42. />
  43. <TextField
  44. sx={{color: '#000'}}
  45. label={'Password'}
  46. type='password'
  47. variant="outlined"
  48. onChange={e => setPasswordValue(e.target.value)}
  49. />
  50. </Grid>
  51. <Grid
  52. item xs={12}
  53. display='flex'
  54. justifyContent='space-between'
  55. alignItems='center'
  56. marginBottom='30px'
  57. >
  58. <MyDropzone onLoad={value => setFileValue(value)}/>
  59. </Grid>
  60. <Grid
  61. item xs={12}
  62. display='flex'
  63. justifyContent='center'
  64. alignItems='center'
  65. >
  66. <Button
  67. style={{ color: '#1976d2'}}
  68. fullWidth
  69. type='submit'
  70. onClick={() => {
  71. if (loginValue !== user?.login) {
  72. setLogin(loginValue)
  73. }
  74. if (nickValue !== user?.nick) {
  75. setNick(nickValue)
  76. }
  77. if (passwordValue){
  78. setPassword(passwordValue)
  79. }
  80. if (Array.isArray(fileValue) && fileValue[0]) {
  81. setImage(fileValue[0]);
  82. }
  83. setStatus(false)
  84. }}
  85. >
  86. <SendAndArchiveIcon style={{marginRight: '5px'}}/>
  87. Save
  88. </Button>
  89. <Button
  90. style={{ color: '#1976d2'}}
  91. fullWidth
  92. onClick={() => setStatus(false)}
  93. >
  94. <CancelIcon style={{marginRight: '5px'}}/>
  95. Cancel
  96. </Button>
  97. </Grid>
  98. </Grid>
  99. )
  100. }
  101. export const CFormUpload = connect(null, {setLogin: actionSetLogin,
  102. setNick: actionSetNick, setPassword: actionSetPassword, setImage: actionSetAvatar,
  103. userUpdate: actionFullUserFindOne})(FormUpload)