@campxdev/shared 0.5.20 → 0.5.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +34 -0
  3. package/.prettierrc +10 -0
  4. package/antd.customize.less +73 -73
  5. package/exports.ts +16 -15
  6. package/package.json +66 -52
  7. package/publish.sh +2 -0
  8. package/src/assets/fonts/avenir/index.ts +2 -2
  9. package/src/assets/fonts/poppins/index.ts +7 -7
  10. package/src/assets/images/index.ts +17 -17
  11. package/src/assets/images/unauth.svg +92 -92
  12. package/src/components/ActionButton.tsx +28 -28
  13. package/src/components/Attachment.tsx +26 -26
  14. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  15. package/src/components/AutocompleteSearch/index.tsx +1 -1
  16. package/src/components/Breadcrumbs.tsx +73 -73
  17. package/src/components/Card.tsx +97 -97
  18. package/src/components/CardsGrid.tsx +28 -28
  19. package/src/components/ChangePassword.tsx +164 -164
  20. package/src/components/Chips.tsx +77 -77
  21. package/src/components/Detail.tsx +15 -15
  22. package/src/components/DetailsGrid.tsx +52 -52
  23. package/src/components/DividerHeading.tsx +40 -40
  24. package/src/components/DrawerWrapper/DialogWrapper.tsx +63 -63
  25. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  26. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  27. package/src/components/DropDownButton.tsx +194 -190
  28. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  29. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  30. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  31. package/src/components/ErrorBoundary/index.tsx +1 -1
  32. package/src/components/ErrorBox.tsx +42 -42
  33. package/src/components/FloatingContainer.tsx +26 -26
  34. package/src/components/FullCalendar/Actions.tsx +162 -162
  35. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  36. package/src/components/FullScreenLoader.tsx +19 -19
  37. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -143
  38. package/src/components/HookForm/DatePicker.tsx +65 -65
  39. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  40. package/src/components/HookForm/FormLabel.tsx +14 -14
  41. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  42. package/src/components/HookForm/MultiSelect.tsx +100 -100
  43. package/src/components/HookForm/RadioGroup.tsx +113 -113
  44. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  45. package/src/components/HookForm/SingleSelect.tsx +93 -93
  46. package/src/components/HookForm/TextField.tsx +74 -74
  47. package/src/components/HookForm/TimePicker.tsx +82 -82
  48. package/src/components/HookForm/index.ts +23 -23
  49. package/src/components/IconButtons/IconButtons.tsx +137 -137
  50. package/src/components/IconButtons/Icons.tsx +268 -269
  51. package/src/components/IconButtons/assets/edit.svg +4 -4
  52. package/src/components/IconButtons/assets/eye.svg +6 -6
  53. package/src/components/IconButtons/assets/trash.svg +7 -7
  54. package/src/components/IconButtons/index.tsx +8 -8
  55. package/src/components/IconLabel.tsx +37 -37
  56. package/src/components/Image/Image.tsx +43 -43
  57. package/src/components/Image/index.tsx +1 -1
  58. package/src/components/ImageUpload.tsx +98 -98
  59. package/src/components/Input/AutoCompleteSearch.tsx +113 -143
  60. package/src/components/Input/DatePicker.tsx +60 -60
  61. package/src/components/Input/DateRangePicker.tsx +131 -131
  62. package/src/components/Input/DateTimePicker.tsx +70 -70
  63. package/src/components/Input/FormLabel.tsx +14 -14
  64. package/src/components/Input/MultiCheckbox.tsx +79 -79
  65. package/src/components/Input/MultiSelect.tsx +52 -52
  66. package/src/components/Input/RadioGroup.tsx +55 -55
  67. package/src/components/Input/SingleCheckbox.tsx +23 -23
  68. package/src/components/Input/SingleSelect.tsx +124 -139
  69. package/src/components/Input/TextField.tsx +50 -50
  70. package/src/components/Input/TimePicker.tsx +82 -82
  71. package/src/components/Input/index.ts +26 -26
  72. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  73. package/src/components/JsonPreview/index.tsx +1 -1
  74. package/src/components/LabelValue/LabelValue.tsx +21 -21
  75. package/src/components/LabelValue/index.tsx +1 -1
  76. package/src/components/Layout/ChangePassword.tsx +49 -49
  77. package/src/components/Layout/Header/AppHeader.tsx +113 -113
  78. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  79. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  80. package/src/components/Layout/Header/FreshDeskHelpButton.tsx +19 -19
  81. package/src/components/Layout/Header/Notification.tsx +13 -13
  82. package/src/components/Layout/Header/UserBox.tsx +70 -70
  83. package/src/components/Layout/Header/applications.ts +87 -87
  84. package/src/components/Layout/Header/assets/campx.svg +29 -29
  85. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  86. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  87. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  88. package/src/components/Layout/Header/assets/index.ts +23 -23
  89. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  90. package/src/components/Layout/Header/assets/payxHeader.svg +21 -21
  91. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  92. package/src/components/Layout/Header/assets/peoplexHeader.svg +14 -14
  93. package/src/components/Layout/Header/icons.tsx +57 -57
  94. package/src/components/Layout/Header/index.tsx +1 -1
  95. package/src/components/Layout/Header/styles.tsx +98 -98
  96. package/src/components/LayoutWrapper.tsx +25 -25
  97. package/src/components/LinearProgress.tsx +19 -19
  98. package/src/components/ListItemButton.tsx +94 -94
  99. package/src/components/LoginForm.tsx +103 -103
  100. package/src/components/MediaRow/MediaRow.tsx +69 -69
  101. package/src/components/MediaRow/index.tsx +1 -1
  102. package/src/components/MenuButton.tsx +103 -103
  103. package/src/components/ModalButtons/DialogButton.tsx +85 -85
  104. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  105. package/src/components/ModalButtons/index.tsx +4 -4
  106. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  107. package/src/components/NoDataIllustration/index.tsx +1 -1
  108. package/src/components/PageContent.tsx +17 -17
  109. package/src/components/PageHeader.tsx +52 -52
  110. package/src/components/PageNotFound.tsx +26 -26
  111. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  112. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  113. package/src/components/PopupConfirm/index.tsx +1 -1
  114. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  115. package/src/components/Row/Row.tsx +24 -24
  116. package/src/components/Row/index.tsx +1 -1
  117. package/src/components/SearchBar/SearchBar.tsx +53 -53
  118. package/src/components/SearchBar/index.tsx +1 -1
  119. package/src/components/SideMenuHeader.tsx +29 -29
  120. package/src/components/SideNav.tsx +150 -150
  121. package/src/components/Spinner.tsx +18 -18
  122. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  123. package/src/components/StepsHeader/index.tsx +1 -1
  124. package/src/components/Styled/OutlinedIconButton.tsx +7 -7
  125. package/src/components/Styled/index.tsx +1 -1
  126. package/src/components/StyledTableContainer.tsx +33 -33
  127. package/src/components/Swiper/Swiper.tsx +39 -39
  128. package/src/components/Swiper/index.tsx +1 -1
  129. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  130. package/src/components/SwitchButton/index.tsx +1 -1
  131. package/src/components/Table.tsx +42 -42
  132. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  133. package/src/components/TableComponent/Icons/index.tsx +50 -50
  134. package/src/components/TableComponent/ReactTable.tsx +293 -293
  135. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  136. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  137. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  138. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  139. package/src/components/TableComponent/index.tsx +221 -221
  140. package/src/components/TableComponent/react-table-config.d.ts +128 -129
  141. package/src/components/TableComponent/styles.tsx +173 -173
  142. package/src/components/TableComponent/types.ts +57 -57
  143. package/src/components/Tabs/Tabs.tsx +52 -52
  144. package/src/components/Tabs/TabsContainer.tsx +50 -50
  145. package/src/components/Tabs/index.tsx +1 -1
  146. package/src/components/Tabs/styles.tsx +55 -55
  147. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  148. package/src/components/ToastContainer/index.tsx +1 -1
  149. package/src/components/UploadButton/UploadButton.tsx +98 -98
  150. package/src/components/UploadButton/index.tsx +1 -1
  151. package/src/components/UploadButton/types.ts +14 -14
  152. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  153. package/src/components/UploadDocument/index.tsx +1 -1
  154. package/src/components/UploadFileDialog/UploadFileDialog.tsx +240 -240
  155. package/src/components/UploadFileDialog/index.tsx +1 -1
  156. package/src/components/index.ts +82 -82
  157. package/src/config/axios.ts +73 -73
  158. package/src/config/axiosXTenant.ts +57 -0
  159. package/src/constants/UIConstants.ts +97 -97
  160. package/src/constants/formValidations.ts +6 -6
  161. package/src/constants/index.ts +5 -5
  162. package/src/constants/isDevelopment.ts +3 -3
  163. package/src/constants/permissions.ts +67 -67
  164. package/src/constants/validateMessages.ts +12 -12
  165. package/src/contexts/LoginFormProvider.tsx +39 -39
  166. package/src/contexts/Providers.tsx +57 -57
  167. package/src/contexts/QueryClientProvider.tsx +22 -22
  168. package/src/hooks/index.ts +3 -3
  169. package/src/hooks/useAppInit.ts +33 -33
  170. package/src/hooks/useAuth.ts +91 -90
  171. package/src/hooks/useFetch.ts +53 -53
  172. package/src/hooks/useRouter.ts +31 -31
  173. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  174. package/src/layouts/Components/icons/index.tsx +403 -403
  175. package/src/layouts/Components/styles.tsx +60 -60
  176. package/src/layouts/ComponentsLayout.tsx +3 -3
  177. package/src/permissions/PageWithPermission.tsx +18 -18
  178. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  179. package/src/permissions/PermissionsStore.ts +352 -295
  180. package/src/permissions/ValidateAccess.tsx +18 -18
  181. package/src/permissions/index.ts +3 -3
  182. package/src/react-app-env.d.ts +1 -1
  183. package/src/shared-state/AssetsStore.ts +15 -15
  184. package/src/shared-state/UserStore.ts +13 -13
  185. package/src/shared-state/index.ts +3 -3
  186. package/src/theme/App.less +3 -3
  187. package/src/theme/MuiThemeProvider.tsx +13 -13
  188. package/src/theme/customCssBaseline.ts +78 -78
  189. package/src/theme/index.css +75 -75
  190. package/src/theme/muiTheme.ts +516 -516
  191. package/src/theme/theme.d.ts +75 -75
  192. package/src/utils/alphabet.ts +23 -23
  193. package/src/utils/arrayPadEnd.ts +3 -3
  194. package/src/utils/formatCurrency.ts +9 -9
  195. package/src/utils/getUrlParams.ts +5 -5
  196. package/src/utils/index.ts +8 -8
  197. package/src/utils/logout.ts +24 -24
  198. package/src/utils/ordinalSuffixOf.ts +14 -14
  199. package/src/utils/romanize.ts +40 -40
  200. package/src/utils/withLocalization.tsx +11 -11
  201. package/src/utils/withRouteWrapper.tsx +25 -25
  202. package/src/utils/withSuspense.tsx +6 -6
  203. package/styled-components.tsx +60 -60
  204. package/todo.md +8 -8
  205. package/tsconfig.json +21 -21
@@ -1,143 +1,113 @@
1
- import {
2
- Autocomplete,
3
- Box,
4
- CircularProgress,
5
- TextField,
6
- Typography,
7
- } from '@mui/material'
8
- import { Controller } from 'react-hook-form'
9
- import FormLabel from './FormLabel'
10
-
11
- type Option = {
12
- value: string | any
13
- label: string | any
14
- }
15
-
16
- interface MultiSelectProps {
17
- control?: any
18
- label: string
19
- name: string
20
- options: { value: string | any; label: string | any }[]
21
- placeholder?: string
22
- hookForm?: boolean
23
- loading?: boolean
24
- [key: string]: any
25
- multiple?: boolean
26
- }
27
-
28
- export default function FormAutoCompleteSearch({
29
- control,
30
- name,
31
- options,
32
- label,
33
- loading, // pass this variable when options are from an async operation
34
- hookForm = true,
35
- multiple = false,
36
- ...props
37
- }: MultiSelectProps) {
38
- if (!hookForm) {
39
- return (
40
- <Autocomplete
41
- multiple={multiple}
42
- value={props.value}
43
- fullWidth
44
- onChange={(e, value) => {
45
- props.onChange(value)
46
- }}
47
- options={options || []}
48
- getOptionLabel={(option: Option) => option?.label || ''}
49
- renderInput={(params) => (
50
- <TextField
51
- variant="outlined"
52
- label={<FormLabel label={label} required={props.required} />}
53
- {...params}
54
- />
55
- )}
56
- {...props}
57
- />
58
- )
59
- }
60
-
61
- return (
62
- <Controller
63
- control={control}
64
- name={name}
65
- render={({ field, fieldState: { error } }) => (
66
- <Box>
67
- <Autocomplete
68
- multiple={multiple}
69
- loading={loading}
70
- value={field.value}
71
- fullWidth
72
- onChange={(e, value) => {
73
- field.onChange(value)
74
- }}
75
- options={options || []}
76
- getOptionLabel={(option: Option) => option?.label || ''}
77
- renderInput={(params) => (
78
- <TextField
79
- error={Boolean(error)}
80
- variant="outlined"
81
- label={<FormLabel label={label} required={props.required} />}
82
- InputProps={{
83
- ...params.InputProps,
84
- endAdornment: (
85
- <>
86
- {loading ? (
87
- <CircularProgress color="inherit" size={20} />
88
- ) : null}
89
- {params.InputProps.endAdornment}
90
- </>
91
- ),
92
- }}
93
- {...params}
94
- />
95
- )}
96
- />
97
- {error && (
98
- <Typography
99
- fontSize={12}
100
- sx={{
101
- paddingLeft: '2px',
102
- marginTop: '2px',
103
- }}
104
- color="error"
105
- >
106
- {error?.message}
107
- </Typography>
108
- )}
109
- </Box>
110
- )}
111
- />
112
- )
113
- }
114
-
115
- export function MyAutoComplete({
116
- value,
117
- onChange,
118
- options,
119
- label,
120
- loading,
121
- ...props
122
- }) {
123
- return (
124
- <Autocomplete
125
- loading={loading}
126
- value={value}
127
- fullWidth
128
- freeSolo
129
- onChange={(e, value) => {
130
- onChange(value.value)
131
- }}
132
- options={options || []}
133
- getOptionLabel={(option: Option) => option?.label || ''}
134
- renderInput={(params) => (
135
- <TextField
136
- {...params}
137
- variant="outlined"
138
- label={<FormLabel label={label} required={props.required} />}
139
- />
140
- )}
141
- />
142
- )
143
- }
1
+ import {
2
+ Autocomplete,
3
+ Box,
4
+ CircularProgress,
5
+ TextField,
6
+ Typography,
7
+ } from '@mui/material'
8
+ import { Controller } from 'react-hook-form'
9
+ import FormLabel from './FormLabel'
10
+
11
+ type Option = {
12
+ value: string | any
13
+ label: string | any
14
+ }
15
+
16
+ interface MultiSelectProps {
17
+ control?: any
18
+ label: string
19
+ name: string
20
+ options: { value: string | any; label: string | any }[]
21
+ placeholder?: string
22
+ hookForm?: boolean
23
+ loading?: boolean
24
+ [key: string]: any
25
+ multiple?: boolean
26
+ }
27
+
28
+ export default function FormAutoCompleteSearch({
29
+ control,
30
+ name,
31
+ options,
32
+ label,
33
+ loading, // pass this variable when options are from an async operation
34
+ hookForm = true,
35
+ multiple = false,
36
+ ...props
37
+ }: MultiSelectProps) {
38
+ if (!hookForm) {
39
+ return (
40
+ <Autocomplete
41
+ multiple={multiple}
42
+ value={props.value}
43
+ fullWidth
44
+ onChange={(e, value) => {
45
+ props.onChange(value)
46
+ }}
47
+ options={options || []}
48
+ getOptionLabel={(option: Option) => option?.label || ''}
49
+ renderInput={(params) => (
50
+ <TextField
51
+ variant="outlined"
52
+ label={<FormLabel label={label} required={props.required} />}
53
+ {...params}
54
+ />
55
+ )}
56
+ {...props}
57
+ />
58
+ )
59
+ }
60
+
61
+ return (
62
+ <Controller
63
+ control={control}
64
+ name={name}
65
+ render={({ field, fieldState: { error } }) => (
66
+ <Box>
67
+ <Autocomplete
68
+ multiple={multiple}
69
+ loading={loading}
70
+ value={field.value}
71
+ fullWidth
72
+ onChange={(e, value) => {
73
+ field.onChange(value)
74
+ }}
75
+ options={options || []}
76
+ getOptionLabel={(option: Option) => option?.label || ''}
77
+ renderInput={(params) => (
78
+ <TextField
79
+ error={Boolean(error)}
80
+ variant="outlined"
81
+ label={<FormLabel label={label} required={props.required} />}
82
+ InputProps={{
83
+ ...params.InputProps,
84
+ endAdornment: (
85
+ <>
86
+ {loading ? (
87
+ <CircularProgress color="inherit" size={20} />
88
+ ) : null}
89
+ {params.InputProps.endAdornment}
90
+ </>
91
+ ),
92
+ }}
93
+ {...params}
94
+ />
95
+ )}
96
+ />
97
+ {error && (
98
+ <Typography
99
+ fontSize={12}
100
+ sx={{
101
+ paddingLeft: '2px',
102
+ marginTop: '2px',
103
+ }}
104
+ color="error"
105
+ >
106
+ {error?.message}
107
+ </Typography>
108
+ )}
109
+ </Box>
110
+ )}
111
+ />
112
+ )
113
+ }
@@ -1,65 +1,65 @@
1
- import { Box, TextField, Typography } from '@mui/material'
2
- import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'
3
- import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
4
- import { Controller } from 'react-hook-form'
5
- import FormLabel from './FormLabel'
6
- interface Props {
7
- label?: string
8
- name: string
9
- size?: 'small' | 'medium'
10
- control: any
11
- minDate?: any
12
- maxDate?: any
13
- required?: boolean
14
- }
15
- export default function FormDatePicker(props: Props) {
16
- const {
17
- name,
18
- size = 'small',
19
- control,
20
- label = '',
21
- minDate,
22
- maxDate,
23
- required = false,
24
- } = props
25
- return (
26
- <LocalizationProvider dateAdapter={AdapterMoment}>
27
- <Controller
28
- name={name}
29
- control={control}
30
- render={({ field, fieldState: { error } }) => (
31
- <Box>
32
- <DatePicker
33
- label={<FormLabel label={label} required={required} />}
34
- mask="__/__/____"
35
- inputFormat="DD/MM/yyyy"
36
- value={field.value ?? null}
37
- onChange={field.onChange}
38
- minDate={minDate}
39
- maxDate={maxDate}
40
- renderInput={(params) => (
41
- <TextField
42
- fullWidth
43
- size={size}
44
- {...params}
45
- error={Boolean(error)}
46
- onBlur={field.onBlur}
47
- />
48
- )}
49
- />
50
- {error && (
51
- <Typography
52
- variant="caption"
53
- component={'div'}
54
- sx={{ pl: '2px' }}
55
- color="rgb(211, 47, 47)"
56
- >
57
- {error.message}
58
- </Typography>
59
- )}
60
- </Box>
61
- )}
62
- />
63
- </LocalizationProvider>
64
- )
65
- }
1
+ import { Box, TextField, Typography } from '@mui/material'
2
+ import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'
3
+ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
4
+ import { Controller } from 'react-hook-form'
5
+ import FormLabel from './FormLabel'
6
+ interface Props {
7
+ label?: string
8
+ name: string
9
+ size?: 'small' | 'medium'
10
+ control: any
11
+ minDate?: any
12
+ maxDate?: any
13
+ required?: boolean
14
+ }
15
+ export default function FormDatePicker(props: Props) {
16
+ const {
17
+ name,
18
+ size = 'small',
19
+ control,
20
+ label = '',
21
+ minDate,
22
+ maxDate,
23
+ required = false,
24
+ } = props
25
+ return (
26
+ <LocalizationProvider dateAdapter={AdapterMoment}>
27
+ <Controller
28
+ name={name}
29
+ control={control}
30
+ render={({ field, fieldState: { error } }) => (
31
+ <Box>
32
+ <DatePicker
33
+ label={<FormLabel label={label} required={required} />}
34
+ mask="__/__/____"
35
+ inputFormat="DD/MM/yyyy"
36
+ value={field.value ?? null}
37
+ onChange={field.onChange}
38
+ minDate={minDate}
39
+ maxDate={maxDate}
40
+ renderInput={(params) => (
41
+ <TextField
42
+ fullWidth
43
+ size={size}
44
+ {...params}
45
+ error={Boolean(error)}
46
+ onBlur={field.onBlur}
47
+ />
48
+ )}
49
+ />
50
+ {error && (
51
+ <Typography
52
+ variant="caption"
53
+ component={'div'}
54
+ sx={{ pl: '2px' }}
55
+ color="rgb(211, 47, 47)"
56
+ >
57
+ {error.message}
58
+ </Typography>
59
+ )}
60
+ </Box>
61
+ )}
62
+ />
63
+ </LocalizationProvider>
64
+ )
65
+ }
@@ -1,70 +1,70 @@
1
- import { InputAdornment, TextField, Typography } from '@mui/material'
2
- import { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers'
3
- import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
4
- import { Controller } from 'react-hook-form'
5
- import DateRangeIcon from '@mui/icons-material/DateRange'
6
- interface Props {
7
- label?: string
8
- name: string
9
- size?: 'small' | 'medium'
10
- control: any
11
- required?: boolean
12
- minDate?: any
13
- }
14
- export default function FormDateTimePicker(props: Props) {
15
- const { name, size = 'small', control, label = '', required, minDate } = props
16
- return (
17
- <LocalizationProvider dateAdapter={AdapterMoment}>
18
- <Controller
19
- name={name}
20
- control={control}
21
- render={({ field, fieldState: { error } }) => (
22
- <>
23
- <DateTimePicker
24
- label={
25
- <>
26
- {label}
27
- {required && (
28
- <Typography fontSize={14} component={'span'} color="error">
29
- {' *'}
30
- </Typography>
31
- )}
32
- </>
33
- }
34
- minDate={minDate && minDate}
35
- mask="__/__/____ __:__ _M"
36
- inputFormat="DD/MM/yyyy hh:mm a"
37
- value={field.value || null}
38
- onChange={field.onChange}
39
- InputProps={{
40
- endAdornment: (
41
- <InputAdornment position="end">
42
- <DateRangeIcon />
43
- </InputAdornment>
44
- ),
45
- }}
46
- renderInput={(params) => (
47
- <TextField
48
- fullWidth
49
- size={size}
50
- {...params}
51
- error={Boolean(error)}
52
- onBlur={field.onBlur}
53
- />
54
- )}
55
- />
56
- {error && (
57
- <Typography
58
- variant="caption"
59
- sx={{ pl: '2px' }}
60
- color="rgb(211, 47, 47)"
61
- >
62
- {error.message}
63
- </Typography>
64
- )}
65
- </>
66
- )}
67
- />
68
- </LocalizationProvider>
69
- )
70
- }
1
+ import { InputAdornment, TextField, Typography } from '@mui/material'
2
+ import { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers'
3
+ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
4
+ import { Controller } from 'react-hook-form'
5
+ import DateRangeIcon from '@mui/icons-material/DateRange'
6
+ interface Props {
7
+ label?: string
8
+ name: string
9
+ size?: 'small' | 'medium'
10
+ control: any
11
+ required?: boolean
12
+ minDate?: any
13
+ }
14
+ export default function FormDateTimePicker(props: Props) {
15
+ const { name, size = 'small', control, label = '', required, minDate } = props
16
+ return (
17
+ <LocalizationProvider dateAdapter={AdapterMoment}>
18
+ <Controller
19
+ name={name}
20
+ control={control}
21
+ render={({ field, fieldState: { error } }) => (
22
+ <>
23
+ <DateTimePicker
24
+ label={
25
+ <>
26
+ {label}
27
+ {required && (
28
+ <Typography fontSize={14} component={'span'} color="error">
29
+ {' *'}
30
+ </Typography>
31
+ )}
32
+ </>
33
+ }
34
+ minDate={minDate && minDate}
35
+ mask="__/__/____ __:__ _M"
36
+ inputFormat="DD/MM/yyyy hh:mm a"
37
+ value={field.value || null}
38
+ onChange={field.onChange}
39
+ InputProps={{
40
+ endAdornment: (
41
+ <InputAdornment position="end">
42
+ <DateRangeIcon />
43
+ </InputAdornment>
44
+ ),
45
+ }}
46
+ renderInput={(params) => (
47
+ <TextField
48
+ fullWidth
49
+ size={size}
50
+ {...params}
51
+ error={Boolean(error)}
52
+ onBlur={field.onBlur}
53
+ />
54
+ )}
55
+ />
56
+ {error && (
57
+ <Typography
58
+ variant="caption"
59
+ sx={{ pl: '2px' }}
60
+ color="rgb(211, 47, 47)"
61
+ >
62
+ {error.message}
63
+ </Typography>
64
+ )}
65
+ </>
66
+ )}
67
+ />
68
+ </LocalizationProvider>
69
+ )
70
+ }
@@ -1,14 +1,14 @@
1
- import { Typography } from '@mui/material'
2
-
3
- export default function FormLabel({ label, required }) {
4
- return (
5
- <>
6
- {label}
7
- {required && (
8
- <Typography fontSize={14} component={'span'} color="error">
9
- {' *'}
10
- </Typography>
11
- )}
12
- </>
13
- )
14
- }
1
+ import { Typography } from '@mui/material'
2
+
3
+ export default function FormLabel({ label, required }) {
4
+ return (
5
+ <>
6
+ {label}
7
+ {required && (
8
+ <Typography fontSize={14} component={'span'} color="error">
9
+ {' *'}
10
+ </Typography>
11
+ )}
12
+ </>
13
+ )
14
+ }