Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

229 строки
7.9 KiB

  1. // material-ui
  2. import {
  3. Button,
  4. CardContent, FormControlLabel,
  5. Grid, TextField,
  6. Typography
  7. } from '@mui/material';
  8. import MainCard from "../../components/MainCard";
  9. import {useForm} from "react-hook-form";
  10. import {useEffect, useState} from "react";
  11. import Autocomplete from '@mui/material/Autocomplete';
  12. import {
  13. subDivision1,
  14. subDivision2,
  15. subDivision3,
  16. subDivision4,
  17. subDivision5,
  18. subDivision6
  19. } from "pages/pnspsUserSearchPage/DummyComboRecord";
  20. import Checkbox from "@mui/material/Checkbox";
  21. import * as React from "react";
  22. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  23. const subDivisionArray =[
  24. ...subDivision1,
  25. ...subDivision2,
  26. ...subDivision3,
  27. ...subDivision4,
  28. ...subDivision5,
  29. ...subDivision6
  30. ];
  31. const UserSearchForm = ({applySearch}) => {
  32. const [type, setType] = useState([]);
  33. const [division, setDivision] = useState(null);
  34. const [subDivision, setSubDivision] = useState(null);
  35. const [isLotusNoteUser, setIsLotusNoteUser] = useState(false);
  36. const [locked, setLocked] = useState(false);
  37. const { reset, register, handleSubmit } = useForm()
  38. const onSubmit = (data) => {
  39. let typeArray = [];
  40. for(let i =0; i < type.length; i++){
  41. typeArray.push(type[i].label);
  42. }
  43. const temp = {
  44. username: data.userName,
  45. fullName: data.fullName,
  46. post: data.post,
  47. subDivision: subDivision,
  48. email: data.email,
  49. phone: data.phone,
  50. isLotusNoteUser: isLotusNoteUser,
  51. locked: locked,
  52. };
  53. applySearch(temp);
  54. };
  55. useEffect(() => {
  56. if(division != null){
  57. setSubDivision(subDivisionArray[division.type-1][0]);
  58. }
  59. }, [division]);
  60. function resetForm(){
  61. setType([]);
  62. setDivision(null);
  63. setSubDivision(null);
  64. setIsLotusNoteUser(false);
  65. setLocked(false);
  66. reset();
  67. }
  68. return (
  69. <MainCard xs={12} md={12} lg={12}
  70. border={false}
  71. content={false}>
  72. <form onSubmit={handleSubmit(onSubmit)}>
  73. {/*row 1*/}
  74. <CardContent sx={{ px: 2.5, pt: 3 }}>
  75. <Grid item justifyContent="space-between" alignItems="center">
  76. Search Form
  77. </Grid>
  78. </CardContent>
  79. {/*row 2*/}
  80. <Grid container alignItems={"center"}>
  81. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  82. <TextField
  83. fullWidth
  84. {...register("userName")}
  85. id='userName'
  86. label="Username"
  87. />
  88. </Grid>
  89. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  90. <TextField
  91. fullWidth
  92. {...register("fullName")}
  93. id="fullName"
  94. label="Full Name"
  95. />
  96. </Grid>
  97. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  98. <TextField
  99. fullWidth
  100. {...register("post")}
  101. id="post"
  102. label="Post"
  103. />
  104. </Grid>
  105. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  106. <Autocomplete
  107. disablePortal
  108. id="sub-division-combo"
  109. value={subDivision === null? null : subDivision}
  110. options={subDivisionArray}
  111. onChange={(event, newValue) => {
  112. setSubDivision(newValue);
  113. }}
  114. renderInput={(params) => <TextField {...params} label="Sub-Division" />}
  115. />
  116. </Grid>
  117. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  118. <TextField
  119. fullWidth
  120. {...register("email")}
  121. id="email"
  122. label="Email"
  123. />
  124. </Grid>
  125. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  126. <TextField
  127. fullWidth
  128. {...register("phone")}
  129. id="phone"
  130. label="Phone"
  131. />
  132. </Grid>
  133. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  134. <FormControlLabel
  135. control={
  136. <Checkbox
  137. checked={isLotusNoteUser}
  138. onChange={(event) => setIsLotusNoteUser(event.target.checked)}
  139. name="checked"
  140. color="primary"
  141. size="small"
  142. />
  143. }
  144. label={<Typography variant="h6">Lotus Notes User</Typography>}
  145. />
  146. </Grid>
  147. <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>
  148. <FormControlLabel
  149. control={
  150. <Checkbox
  151. checked={locked}
  152. onChange={(event) => setLocked(event.target.checked)}
  153. name="checked"
  154. color="primary"
  155. size="small"
  156. />
  157. }
  158. label={<Typography variant="h6">Locked</Typography>}
  159. />
  160. </Grid>
  161. {/*<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}>*/}
  162. {/* <TextField*/}
  163. {/* fullWidth*/}
  164. {/* {...register("subDivisionId")}*/}
  165. {/* id="subDivision"*/}
  166. {/* label="Sub-Division"*/}
  167. {/* />*/}
  168. {/*</Grid>*/}
  169. </Grid>
  170. {/*last row*/}
  171. <Grid container maxWidth justifyContent="flex-end">
  172. <Grid item sx={{ml:3, mr:3, mb:3, mt:3}}>
  173. <Button
  174. size="large"
  175. variant="contained"
  176. onClick={resetForm}
  177. sx={{
  178. textTransform: 'capitalize',
  179. alignItems: 'end'
  180. }}>
  181. Clear
  182. </Button>
  183. </Grid>
  184. <Grid item sx={{ml:3, mr:3, mb:3, mt:3}}>
  185. <Button
  186. size="large"
  187. variant="contained"
  188. type="submit"
  189. sx={{
  190. textTransform: 'capitalize',
  191. alignItems: 'end'
  192. }}>
  193. Submit
  194. </Button>
  195. </Grid>
  196. </Grid>
  197. </form>
  198. </MainCard>
  199. );
  200. };
  201. export default UserSearchForm;