No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

199 líneas
6.6 KiB

  1. import {
  2. Grid, TextField, Stack, Typography
  3. } from '@mui/material';
  4. import Combo from "./Combo";
  5. export const notNullFieldLabel = (label) => {
  6. return (<>{label}<span style={{ "color": "red" }}>*</span></>)
  7. }
  8. export const getDateField = ({ label, valueName, form, disabled }) => {
  9. return <Grid container alignItems={"center"}>
  10. <Grid item xs={12} md={3} lg={3} sx={{ display: 'flex', alignItems: 'center' }}>
  11. <Typography variant="h5">{label}</Typography>
  12. </Grid>
  13. <Grid item xs={12} md={6} lg={6}>
  14. {initField({
  15. type: "date",
  16. valueName: valueName,
  17. form: form,
  18. disabled: disabled
  19. })}
  20. </Grid>
  21. </Grid>;
  22. }
  23. export const getTextField = ({ label, valueName, form, disabled }) => {
  24. return <Grid container alignItems={"center"}>
  25. <Grid item xs={12} md={3} lg={3}
  26. sx={{ display: 'flex', alignItems: 'center' }}>
  27. <Typography variant="h5">{label}</Typography>
  28. </Grid>
  29. <Grid item xs={12} md={6} lg={6}>
  30. {initField({
  31. type: "text",
  32. valueName: valueName,
  33. form: form,
  34. disabled: disabled
  35. })}
  36. </Grid>
  37. </Grid>;
  38. }
  39. export const getTextArea = ({ label, valueName, form, disabled, inputProps, ...props }) => {
  40. return <Grid container alignItems={"center"}>
  41. <Grid item xs={12} md={3} lg={3}
  42. sx={{ display: 'flex', alignItems: 'center' }}>
  43. <Typography variant="h5">{label}</Typography>
  44. </Grid>
  45. <Grid item xs={12} md={6} lg={6}>
  46. {initField({
  47. type: "text",
  48. valueName: valueName,
  49. form: form,
  50. disabled: disabled,
  51. multiline: true,
  52. row: 10,
  53. minRows: 4,
  54. maxRows: 4,
  55. inputProps: inputProps,
  56. props
  57. })}
  58. </Grid>
  59. </Grid>;
  60. }
  61. export const getPhoneField = ({ label, valueName, form, disabled }) => {
  62. return <Grid container alignItems={"center"}>
  63. <Grid item xs={12} md={3} lg={3}
  64. sx={{ display: 'flex', alignItems: 'center' }}>
  65. <Typography variant="h5">{label}</Typography>
  66. </Grid>
  67. <Grid item xs={12} md={6} lg={6}>
  68. <Stack direction="row">
  69. {initField({
  70. type: "tel",
  71. valueName: valueName.code,
  72. form: form,
  73. disabled: disabled,
  74. width: '35%',
  75. handleChange: (event) => {
  76. const value = event.target.value;
  77. const name = event.target.name;
  78. if (value.match(/[^0-9]/)) {
  79. return event.preventDefault();
  80. }
  81. if (valueName.code === name) form.setFieldValue(valueName.code, value)
  82. if (valueName.num === name) form.setFieldValue(valueName.num, value)
  83. }
  84. })}
  85. {initField({
  86. type: "tel",
  87. valueName: valueName.num,
  88. form: form,
  89. disabled: disabled,
  90. handleChange: (event) => {
  91. const value = event.target.value;
  92. const name = event.target.name;
  93. if (value.match(/[^0-9]/)) {
  94. return event.preventDefault();
  95. }
  96. if (valueName.code === name) form.setFieldValue(valueName.code, value)
  97. if (valueName.num === name) form.setFieldValue(valueName.num, value)
  98. }
  99. })}
  100. </Stack>
  101. </Grid>
  102. </Grid>;
  103. }
  104. export const getAddressField = ({ label, valueName, form, disabled }) => {
  105. return <Grid container alignItems={"top"}>
  106. <Grid item xs={12} md={3} lg={3} sx={{ display: 'flex', alignItems: 'top' }}>
  107. <Grid item lg={12} sx={{ alignItems: 'center' }}>
  108. <Typography variant="h5">{label}</Typography>
  109. </Grid>
  110. </Grid>
  111. <Grid item xs={12} md={6} lg={6}>
  112. <Grid item lg={12}>
  113. {initField({
  114. type: "text",
  115. valueName: valueName[0],
  116. form: form,
  117. disabled: disabled
  118. })}
  119. </Grid>
  120. <Grid item lg={12}>
  121. {initField({
  122. type: "text",
  123. valueName: valueName[1],
  124. form: form,
  125. disabled: disabled
  126. })}
  127. </Grid>
  128. <Grid item lg={12}>
  129. {initField({
  130. type: "text",
  131. valueName: valueName[2],
  132. form: form,
  133. disabled: disabled
  134. })}
  135. </Grid>
  136. </Grid>
  137. </Grid>;
  138. }
  139. export const getComboField = ({ label, dataList, valueName, form, disabled, getOptionLabel, onInputChange, onChange, filterOptions, ...props }) => {
  140. return <Grid container alignItems={"center"}>
  141. <Grid item xs={12} md={3} lg={3} sx={{ display: 'flex', alignItems: 'center' }}>
  142. <Typography variant="h5">{label}</Typography>
  143. </Grid>
  144. <Grid item xs={12} md={6} lg={6}>
  145. <Combo
  146. valueName={valueName}
  147. disabled={disabled}
  148. dataList={dataList}
  149. form={form}
  150. filterOptions={filterOptions}
  151. getOptionLabel={getOptionLabel}
  152. onInputChange={onInputChange}
  153. onChange={onChange}
  154. {...props}
  155. />
  156. </Grid>
  157. </Grid>;
  158. }
  159. export const initField = ({ type, valueName, form, disabled, multiline, handleChange, placeholder, inputProps, width, ...props }) => {
  160. let err = Boolean(form.errors[valueName]);
  161. return <TextField
  162. fullWidth
  163. multiline={multiline}
  164. id={valueName}
  165. name={valueName}
  166. type={type}
  167. placeholder={placeholder}
  168. inputProps={inputProps}
  169. error={err}
  170. helperText={form.errors[valueName] ? form.errors[valueName] : ''}
  171. onChange={handleChange ? handleChange : form.handleChange}
  172. value={form.values[valueName]}
  173. disabled={disabled}
  174. sx={{
  175. "& .MuiInputBase-input.Mui-disabled": {
  176. WebkitTextFillColor: "#000000",
  177. background: "#f8f8f8",
  178. },
  179. width: width ? width : '100%'
  180. }}
  181. {...props}
  182. />
  183. }