Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

180 wiersze
6.8 KiB

  1. // material-ui
  2. import {
  3. Button,
  4. Grid, TextField,
  5. Autocomplete,
  6. Typography
  7. } from '@mui/material';
  8. import MainCard from "components/MainCard";
  9. import { useForm } from "react-hook-form";
  10. import * as React from "react";
  11. import * as DateUtils from "utils/DateUtils";
  12. import * as ComboData from "utils/ComboData";
  13. import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst";
  14. import {ThemeProvider} from "@emotion/react";
  15. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  16. const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
  17. const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom);
  18. const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo);
  19. const [status, setStatus] = React.useState(ComboData.paymentStatus[0]);
  20. const { reset, register, handleSubmit } = useForm()
  21. const onSubmit = (data) => {
  22. const temp = {
  23. code: data.code,
  24. transNo: data.transNo,
  25. dateFrom: data.dateFrom,
  26. dateTo: data.dateTo,
  27. status : (status?.type && status?.type != 'all') ? status?.type : "",
  28. };
  29. applySearch(temp);
  30. };
  31. function resetForm() {
  32. reset();
  33. }
  34. return (
  35. <MainCard xs={12} md={12} lg={12}
  36. border={false}
  37. content={false}
  38. >
  39. <form onSubmit={handleSubmit(onSubmit)} >
  40. <Grid container sx={{ backgroundColor: '#ffffff', ml: 2, mt: 1}} width="98%">
  41. {/*row 1*/}
  42. <Grid item justifyContent="space-between" alignItems="center" sx={{mt:1,ml:3,mb:2.5}}>
  43. <Typography variant="pnspsFormHeader" >
  44. Search
  45. </Typography>
  46. </Grid>
  47. {/*row 2*/}
  48. <Grid container display="flex" alignItems={"center"}>
  49. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  50. <TextField
  51. fullWidth
  52. {...register("code")}
  53. id='code'
  54. label="App No.:"
  55. defaultValue={searchCriteria.code}
  56. InputLabelProps={{
  57. shrink: true
  58. }}
  59. />
  60. </Grid>
  61. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  62. <TextField
  63. fullWidth
  64. {...register("dateFrom")}
  65. id="dateFrom"
  66. type="date"
  67. label="Trans. Date From"
  68. defaultValue={searchCriteria.dateFrom}
  69. InputProps={{ inputProps: { max: maxDate } }}
  70. onChange={(newValue) => {
  71. setMinDate(DateUtils.dateStr(newValue));
  72. }}
  73. InputLabelProps={{
  74. shrink: true
  75. }}
  76. />
  77. </Grid>
  78. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  79. <TextField
  80. fullWidth
  81. InputLabelProps={{
  82. shrink: true
  83. }}
  84. {...register("dateTo")}
  85. InputProps={{ inputProps: { min: minDate } }}
  86. onChange={(newValue) => {
  87. setMaxDate(DateUtils.dateStr(newValue));
  88. }}
  89. id="dateTo"
  90. type="date"
  91. label="Trans. Date To"
  92. defaultValue={searchCriteria.dateTo}
  93. />
  94. </Grid>
  95. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  96. <TextField
  97. fullWidth
  98. {...register("transNo")}
  99. id='transNo'
  100. label="Trans. No.:"
  101. defaultValue={searchCriteria.transNo}
  102. InputLabelProps={{
  103. shrink: true
  104. }}
  105. />
  106. </Grid>
  107. <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
  108. <Autocomplete
  109. {...register("status")}
  110. disablePortal={false}
  111. size="small"
  112. id="status"
  113. filterOptions={(options) => options}
  114. options={ComboData.paymentStatus}
  115. value={status}
  116. getOptionLabel={(option) => option.label}
  117. inputValue={status?.label ? status?.label : ""}
  118. onChange={(event, newValue) => {
  119. if (newValue !== null) {
  120. setStatus(newValue);
  121. }
  122. }}
  123. renderInput={(params) => (
  124. <TextField {...params}
  125. label="Status"
  126. />
  127. )}
  128. InputLabelProps={{
  129. shrink: true
  130. }}
  131. />
  132. </Grid>
  133. </Grid>
  134. </Grid>
  135. {/*last row*/}
  136. <Grid container maxWidth justifyContent="flex-end">
  137. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  138. <Grid item sx={{ ml: 3, mb: 3}}>
  139. <Button
  140. variant="contained"
  141. color="cancel"
  142. onClick={resetForm}
  143. >
  144. Reset
  145. </Button>
  146. </Grid>
  147. <Grid item sx={{ ml: 3, mr: 3, mb: 3 }}>
  148. <Button
  149. variant="contained"
  150. type="submit"
  151. >
  152. Submit
  153. </Button>
  154. </Grid>
  155. </ThemeProvider>
  156. </Grid>
  157. </form>
  158. </MainCard>
  159. );
  160. };
  161. export default SearchPublicNoticeForm;