You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

139 lines
5.5 KiB

  1. // material-ui
  2. import {
  3. Button,
  4. Grid, TextField,
  5. Typography
  6. } from '@mui/material';
  7. import MainCard from "../../components/MainCard";
  8. import { useForm } from "react-hook-form";
  9. import * as React from "react";
  10. import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';
  11. import { useNavigate } from "react-router";
  12. import { PNSPS_BUTTON_THEME } from "../../themes/buttonConst";
  13. import { ThemeProvider } from "@emotion/react";
  14. import { isGrantedAny } from "auth/utils";
  15. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  16. const UserGroupSearchForm = ({ applySearch, onGridReady, searchCriteria }) => {
  17. const navigate = useNavigate();
  18. const { reset, register, handleSubmit } = useForm()
  19. const onSubmit = (data) => {
  20. applySearch(data);
  21. };
  22. function resetForm() {
  23. reset({
  24. name:"",
  25. description:""
  26. });
  27. }
  28. const handleNewGroupClick = (id) => {
  29. // console.log(id)
  30. navigate('/userGroup/' + id);
  31. };
  32. return (
  33. <MainCard xs={12} md={12} lg={12}
  34. border={false}
  35. content={false}
  36. >
  37. <form onSubmit={handleSubmit(onSubmit)}>
  38. <Grid container sx={{ backgroundColor: '#ffffff', ml: 2, mt: 1 }} width="98%">
  39. {/*row 1*/}
  40. <Grid item justifyContent="space-between" alignItems="center" sx={{ mt: 1, ml: 3, mb: 2.5 }}>
  41. <Typography variant="pnspsFormHeader" >
  42. Search
  43. </Typography>
  44. </Grid>
  45. {/*row 2*/}
  46. <Grid container display="flex" alignItems={"center"}>
  47. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  48. <TextField
  49. fullWidth
  50. {...register("name")}
  51. id='userGroupName'
  52. label="User Group Name"
  53. defaultValue={searchCriteria.name}
  54. InputLabelProps={{
  55. shrink: true
  56. }}
  57. />
  58. </Grid>
  59. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  60. <TextField
  61. fullWidth
  62. {...register("description")}
  63. id="userGroupDescription"
  64. label="User Group Description"
  65. defaultValue={searchCriteria.description}
  66. InputLabelProps={{
  67. shrink: true
  68. }}
  69. />
  70. </Grid>
  71. </Grid>
  72. {/*last row*/}
  73. <Grid container direction="row"
  74. justifyContent="space-between"
  75. alignItems="center"
  76. spacing={3}
  77. sx={{ mb: 3 }}
  78. >
  79. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  80. {
  81. isGrantedAny("MAINTAIN_GROUP") ?
  82. <Grid item xs={3} md={3} >
  83. <Button
  84. variant="contained"
  85. onClick={handleNewGroupClick}
  86. startIcon={<AddCircleOutlineIcon sx={{ alignItems: "center" }} />}
  87. >
  88. New Group
  89. </Button>
  90. </Grid>
  91. :
  92. <Grid item xs={3} md={3}></Grid>
  93. }
  94. <Grid item xs={8} md={8}>
  95. <Grid container maxWidth justifyContent="flex-end" spacing={3}>
  96. <Grid item >
  97. <Button
  98. variant="contained"
  99. color="cancel"
  100. onClick={resetForm}
  101. >
  102. Reset
  103. </Button>
  104. </Grid>
  105. <Grid item >
  106. <Button
  107. variant="contained"
  108. type="submit"
  109. disabled={onGridReady}
  110. sx={{
  111. textTransform: 'capitalize',
  112. alignItems: 'end'
  113. }}>
  114. Search
  115. </Button>
  116. </Grid>
  117. </Grid>
  118. </Grid>
  119. </ThemeProvider>
  120. </Grid>
  121. </Grid>
  122. </form>
  123. </MainCard>
  124. );
  125. };
  126. export default UserGroupSearchForm;