@campxdev/shared 0.6.18 → 0.6.19

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 (215) hide show
  1. package/.eslintignore +3 -3
  2. package/.eslintrc.js +33 -33
  3. package/.prettierrc +10 -10
  4. package/antd.customize.less +73 -73
  5. package/exports.ts +16 -16
  6. package/package.json +93 -93
  7. package/publish.sh +1 -1
  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 +72 -72
  17. package/src/components/Card.tsx +98 -98
  18. package/src/components/CardsGrid.tsx +28 -28
  19. package/src/components/ChangePassword.tsx +164 -164
  20. package/src/components/Chips.tsx +81 -81
  21. package/src/components/Detail.tsx +15 -15
  22. package/src/components/DetailsGrid.tsx +52 -52
  23. package/src/components/DividerHeading.tsx +41 -41
  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 -194
  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 +33 -33
  34. package/src/components/Form/Form.tsx +156 -156
  35. package/src/components/Form/RenderForm.tsx +188 -188
  36. package/src/components/FullCalendar/Actions.tsx +162 -162
  37. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  38. package/src/components/FullScreenLoader.tsx +19 -19
  39. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  40. package/src/components/HookForm/DatePicker.tsx +65 -65
  41. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  42. package/src/components/HookForm/FormLabel.tsx +14 -14
  43. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  44. package/src/components/HookForm/MultiSelect.tsx +100 -100
  45. package/src/components/HookForm/RadioGroup.tsx +106 -106
  46. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  47. package/src/components/HookForm/SingleSelect.tsx +93 -93
  48. package/src/components/HookForm/TextField.tsx +74 -74
  49. package/src/components/HookForm/TimePicker.tsx +82 -82
  50. package/src/components/HookForm/index.ts +23 -23
  51. package/src/components/IconButtons/IconButtons.tsx +137 -137
  52. package/src/components/IconButtons/Icons.tsx +268 -268
  53. package/src/components/IconButtons/assets/edit.svg +4 -4
  54. package/src/components/IconButtons/assets/eye.svg +6 -6
  55. package/src/components/IconButtons/assets/trash.svg +7 -7
  56. package/src/components/IconButtons/index.tsx +8 -8
  57. package/src/components/IconLabel.tsx +37 -37
  58. package/src/components/Image/Image.tsx +43 -43
  59. package/src/components/Image/index.tsx +1 -1
  60. package/src/components/ImageUpload.tsx +98 -98
  61. package/src/components/Input/AutoCompleteSearch.tsx +113 -113
  62. package/src/components/Input/DatePicker.tsx +60 -60
  63. package/src/components/Input/DateRangePicker.tsx +131 -131
  64. package/src/components/Input/DateTimePicker.tsx +70 -70
  65. package/src/components/Input/FormLabel.tsx +14 -14
  66. package/src/components/Input/MultiCheckbox.tsx +79 -79
  67. package/src/components/Input/MultiSelect.tsx +52 -52
  68. package/src/components/Input/RadioGroup.tsx +61 -61
  69. package/src/components/Input/SingleCheckbox.tsx +23 -23
  70. package/src/components/Input/SingleSelect.tsx +124 -124
  71. package/src/components/Input/TextField.tsx +50 -50
  72. package/src/components/Input/TimePicker.tsx +82 -82
  73. package/src/components/Input/index.ts +26 -26
  74. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  75. package/src/components/JsonPreview/index.tsx +1 -1
  76. package/src/components/LabelValue/LabelValue.tsx +21 -21
  77. package/src/components/LabelValue/index.tsx +1 -1
  78. package/src/components/Layout/ChangePassword.tsx +49 -49
  79. package/src/components/Layout/Header/AppHeader.tsx +124 -124
  80. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  81. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  82. package/src/components/Layout/Header/FreshDeskHelpButton.tsx +19 -19
  83. package/src/components/Layout/Header/Notification.tsx +13 -13
  84. package/src/components/Layout/Header/UserBox.tsx +70 -70
  85. package/src/components/Layout/Header/applications.ts +90 -90
  86. package/src/components/Layout/Header/assets/campx.svg +29 -29
  87. package/src/components/Layout/Header/assets/index.ts +29 -32
  88. package/src/components/Layout/Header/assets/newAssets/campx_square_small.svg +9 -9
  89. package/src/components/Layout/Header/assets/newAssets/commutex.svg +14 -14
  90. package/src/components/Layout/Header/assets/newAssets/commutexSmall.svg +11 -11
  91. package/src/components/Layout/Header/assets/newAssets/enroll.svg +14 -14
  92. package/src/components/Layout/Header/assets/newAssets/enrollx.svg +14 -14
  93. package/src/components/Layout/Header/assets/newAssets/exams_small.svg +12 -12
  94. package/src/components/Layout/Header/assets/newAssets/examsx.svg +14 -14
  95. package/src/components/Layout/Header/assets/newAssets/hostel_small.svg +13 -13
  96. package/src/components/Layout/Header/assets/newAssets/hostelx.svg +13 -13
  97. package/src/components/Layout/Header/assets/newAssets/libraryx.svg +12 -12
  98. package/src/components/Layout/Header/assets/newAssets/pay_small.svg +16 -16
  99. package/src/components/Layout/Header/assets/newAssets/payx.svg +19 -19
  100. package/src/components/Layout/Header/assets/newAssets/people_small.svg +9 -9
  101. package/src/components/Layout/Header/assets/newAssets/peoplex.svg +12 -12
  102. package/src/components/Layout/Header/assets/newAssets/squarex.svg +12 -12
  103. package/src/components/Layout/Header/assets/payxHeader.svg +21 -21
  104. package/src/components/Layout/Header/assets/peoplexHeader.svg +14 -14
  105. package/src/components/Layout/Header/icons.tsx +57 -57
  106. package/src/components/Layout/Header/index.tsx +1 -1
  107. package/src/components/Layout/Header/styles.tsx +98 -98
  108. package/src/components/LayoutWrapper.tsx +25 -25
  109. package/src/components/LinearProgress.tsx +19 -19
  110. package/src/components/ListItemButton.tsx +94 -94
  111. package/src/components/LoginForm.tsx +103 -103
  112. package/src/components/MediaRow/MediaRow.tsx +69 -69
  113. package/src/components/MediaRow/index.tsx +1 -1
  114. package/src/components/MenuButton.tsx +103 -103
  115. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  116. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  117. package/src/components/ModalButtons/index.tsx +4 -4
  118. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  119. package/src/components/NoDataIllustration/index.tsx +1 -1
  120. package/src/components/PageContent.tsx +17 -17
  121. package/src/components/PageHeader.tsx +52 -52
  122. package/src/components/PageNotFound.tsx +26 -26
  123. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  124. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  125. package/src/components/PopupConfirm/index.tsx +1 -1
  126. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  127. package/src/components/Router.tsx +7 -7
  128. package/src/components/Row/Row.tsx +24 -24
  129. package/src/components/Row/index.tsx +1 -1
  130. package/src/components/SearchBar/SearchBar.tsx +53 -53
  131. package/src/components/SearchBar/index.tsx +1 -1
  132. package/src/components/SideMenuHeader.tsx +29 -29
  133. package/src/components/SideNav.tsx +168 -168
  134. package/src/components/Spinner.tsx +18 -18
  135. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  136. package/src/components/StepsHeader/index.tsx +1 -1
  137. package/src/components/StyledTableContainer.tsx +33 -33
  138. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  139. package/src/components/SwitchButton/index.tsx +1 -1
  140. package/src/components/Table.tsx +42 -42
  141. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  142. package/src/components/TableComponent/Icons/index.tsx +50 -50
  143. package/src/components/TableComponent/ReactTable.tsx +293 -293
  144. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  145. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  146. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  147. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  148. package/src/components/TableComponent/index.tsx +226 -226
  149. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  150. package/src/components/TableComponent/styles.tsx +173 -173
  151. package/src/components/TableComponent/types.ts +57 -57
  152. package/src/components/Tabs/Tabs.tsx +52 -52
  153. package/src/components/Tabs/TabsContainer.tsx +50 -50
  154. package/src/components/Tabs/index.tsx +1 -1
  155. package/src/components/Tabs/styles.tsx +55 -55
  156. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  157. package/src/components/ToastContainer/index.tsx +1 -1
  158. package/src/components/UploadButton/UploadButton.tsx +126 -126
  159. package/src/components/UploadButton/index.tsx +1 -1
  160. package/src/components/UploadButton/types.ts +19 -19
  161. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  162. package/src/components/UploadDocument/index.tsx +1 -1
  163. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  164. package/src/components/UploadFileDialog/index.tsx +1 -1
  165. package/src/components/index.ts +86 -86
  166. package/src/config/axios.ts +74 -74
  167. package/src/config/axiosXTenant.ts +57 -57
  168. package/src/constants/UIConstants.ts +97 -97
  169. package/src/constants/formValidations.ts +6 -6
  170. package/src/constants/index.ts +5 -5
  171. package/src/constants/isDevelopment.ts +3 -3
  172. package/src/constants/permissions.ts +67 -67
  173. package/src/constants/validateMessages.ts +12 -12
  174. package/src/contexts/LoginFormProvider.tsx +39 -39
  175. package/src/contexts/Providers.tsx +59 -59
  176. package/src/contexts/QueryClientProvider.tsx +22 -22
  177. package/src/hooks/index.ts +3 -3
  178. package/src/hooks/useAppInit.ts +33 -33
  179. package/src/hooks/useAuth.ts +91 -91
  180. package/src/hooks/useFetch.ts +53 -53
  181. package/src/hooks/useRouter.ts +31 -31
  182. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  183. package/src/layouts/Components/icons/index.tsx +403 -403
  184. package/src/layouts/Components/styles.tsx +60 -60
  185. package/src/layouts/ComponentsLayout.tsx +3 -3
  186. package/src/permissions/PageWithPermission.tsx +18 -18
  187. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  188. package/src/permissions/PermissionsStore.ts +352 -352
  189. package/src/permissions/ValidateAccess.tsx +18 -18
  190. package/src/permissions/index.ts +3 -3
  191. package/src/react-app-env.d.ts +1 -1
  192. package/src/shared-state/AssetsStore.ts +15 -15
  193. package/src/shared-state/UserStore.ts +13 -13
  194. package/src/shared-state/index.ts +3 -3
  195. package/src/theme/App.less +3 -3
  196. package/src/theme/MuiThemeProvider.tsx +13 -13
  197. package/src/theme/customCssBaseline.ts +78 -78
  198. package/src/theme/index.css +75 -75
  199. package/src/theme/muiTheme.ts +490 -490
  200. package/src/theme/theme.d.ts +75 -75
  201. package/src/utils/alphabet.ts +23 -23
  202. package/src/utils/arrayPadEnd.ts +3 -3
  203. package/src/utils/formatCurrency.ts +9 -9
  204. package/src/utils/getUrlParams.ts +5 -5
  205. package/src/utils/index.ts +8 -8
  206. package/src/utils/logout.ts +24 -24
  207. package/src/utils/ordinalSuffixOf.ts +14 -14
  208. package/src/utils/romanize.ts +40 -40
  209. package/src/utils/withLocalization.tsx +11 -11
  210. package/src/utils/withRouteWrapper.tsx +25 -25
  211. package/src/utils/withSuspense.tsx +6 -6
  212. package/styled-components.tsx +60 -60
  213. package/todo.md +20 -20
  214. package/tsconfig.json +21 -21
  215. package/src/components/Layout/Header/assets/newAssets/commuteX.png +0 -0
@@ -1,93 +1,93 @@
1
- import {
2
- FormControl,
3
- InputLabel,
4
- MenuItem,
5
- Select,
6
- SelectProps,
7
- styled,
8
- Typography,
9
- } from '@mui/material'
10
- import { ReactNode } from 'react'
11
- import { Controller } from 'react-hook-form'
12
- import FormLabel from './FormLabel'
13
- interface Props extends SelectProps {
14
- name?: string
15
- control?: any
16
- options: Array<{ label: ReactNode; value: any }>
17
- label?: string
18
- textColor?: string
19
- onChange?: (value: any) => void
20
- required?: boolean
21
- firstItemEmpty?: boolean
22
- }
23
-
24
- const StyledFormControl = styled(FormControl)(({ theme }) => ({}))
25
-
26
- export default function FormSingleSelect(props: Props) {
27
- const {
28
- name = 'select',
29
- options = [],
30
- control,
31
- label,
32
- textColor,
33
- onChange,
34
- required,
35
- firstItemEmpty = false,
36
- size = 'medium',
37
- } = props
38
-
39
- const inputOptions = firstItemEmpty
40
- ? [{ label: 'All', value: '__empty__' }, ...options]
41
- : options
42
-
43
- return (
44
- <Controller
45
- name={name}
46
- control={control}
47
- render={({ field, fieldState: { error } }) => (
48
- <StyledFormControl size={size} fullWidth>
49
- <InputLabel id={name}>
50
- <FormLabel required={required} label={label} />
51
- </InputLabel>
52
- <Select
53
- size={size}
54
- error={Boolean(error)}
55
- variant="outlined"
56
- sx={{ color: textColor }}
57
- fullWidth
58
- label={label}
59
- displayEmpty={firstItemEmpty}
60
- MenuProps={{
61
- PaperProps: {
62
- sx: { maxHeight: 300 },
63
- },
64
- }}
65
- value={field.value}
66
- onChange={(e) => {
67
- if (onChange) onChange(e.target.value)
68
- field.onChange(e.target.value)
69
- }}
70
- >
71
- {inputOptions?.map((item, index) => (
72
- <MenuItem key={index} value={item.value}>
73
- {item.label}
74
- </MenuItem>
75
- ))}
76
- </Select>
77
- {error && (
78
- <Typography
79
- fontSize={12}
80
- sx={{
81
- paddingLeft: '2px',
82
- marginTop: '2px',
83
- }}
84
- color="error"
85
- >
86
- {error.message}
87
- </Typography>
88
- )}
89
- </StyledFormControl>
90
- )}
91
- />
92
- )
93
- }
1
+ import {
2
+ FormControl,
3
+ InputLabel,
4
+ MenuItem,
5
+ Select,
6
+ SelectProps,
7
+ styled,
8
+ Typography,
9
+ } from '@mui/material'
10
+ import { ReactNode } from 'react'
11
+ import { Controller } from 'react-hook-form'
12
+ import FormLabel from './FormLabel'
13
+ interface Props extends SelectProps {
14
+ name?: string
15
+ control?: any
16
+ options: Array<{ label: ReactNode; value: any }>
17
+ label?: string
18
+ textColor?: string
19
+ onChange?: (value: any) => void
20
+ required?: boolean
21
+ firstItemEmpty?: boolean
22
+ }
23
+
24
+ const StyledFormControl = styled(FormControl)(({ theme }) => ({}))
25
+
26
+ export default function FormSingleSelect(props: Props) {
27
+ const {
28
+ name = 'select',
29
+ options = [],
30
+ control,
31
+ label,
32
+ textColor,
33
+ onChange,
34
+ required,
35
+ firstItemEmpty = false,
36
+ size = 'medium',
37
+ } = props
38
+
39
+ const inputOptions = firstItemEmpty
40
+ ? [{ label: 'All', value: '__empty__' }, ...options]
41
+ : options
42
+
43
+ return (
44
+ <Controller
45
+ name={name}
46
+ control={control}
47
+ render={({ field, fieldState: { error } }) => (
48
+ <StyledFormControl size={size} fullWidth>
49
+ <InputLabel id={name}>
50
+ <FormLabel required={required} label={label} />
51
+ </InputLabel>
52
+ <Select
53
+ size={size}
54
+ error={Boolean(error)}
55
+ variant="outlined"
56
+ sx={{ color: textColor }}
57
+ fullWidth
58
+ label={label}
59
+ displayEmpty={firstItemEmpty}
60
+ MenuProps={{
61
+ PaperProps: {
62
+ sx: { maxHeight: 300 },
63
+ },
64
+ }}
65
+ value={field.value}
66
+ onChange={(e) => {
67
+ if (onChange) onChange(e.target.value)
68
+ field.onChange(e.target.value)
69
+ }}
70
+ >
71
+ {inputOptions?.map((item, index) => (
72
+ <MenuItem key={index} value={item.value}>
73
+ {item.label}
74
+ </MenuItem>
75
+ ))}
76
+ </Select>
77
+ {error && (
78
+ <Typography
79
+ fontSize={12}
80
+ sx={{
81
+ paddingLeft: '2px',
82
+ marginTop: '2px',
83
+ }}
84
+ color="error"
85
+ >
86
+ {error.message}
87
+ </Typography>
88
+ )}
89
+ </StyledFormControl>
90
+ )}
91
+ />
92
+ )
93
+ }
@@ -1,74 +1,74 @@
1
- import {
2
- TextField as MuiTextField,
3
- TextFieldProps as MuiTextFieldProps,
4
- Typography,
5
- } from '@mui/material'
6
- import React from 'react'
7
- import { Controller } from 'react-hook-form'
8
- import FormLabel from './FormLabel'
9
-
10
- type MyTextFieldProps = MuiTextFieldProps & {
11
- control?: any
12
- label?: string
13
- name?: string
14
- value?: any
15
- hookForm?: boolean
16
- required?: boolean
17
- handleChange?: React.ChangeEventHandler<
18
- HTMLTextAreaElement | HTMLInputElement
19
- >
20
- }
21
-
22
- export default function FormTextField({
23
- name,
24
- control,
25
- label,
26
- value,
27
- handleChange,
28
- required = false,
29
- hookForm = true,
30
- ...rest
31
- }: MyTextFieldProps) {
32
- if (!hookForm)
33
- return (
34
- <MuiTextField
35
- label={
36
- <>
37
- {label}
38
- {required && (
39
- <Typography fontSize={14} component={'span'} color="error">
40
- {' *'}
41
- </Typography>
42
- )}
43
- </>
44
- }
45
- value={value}
46
- name={name}
47
- onChange={handleChange}
48
- {...rest}
49
- />
50
- )
51
- return (
52
- <Controller
53
- control={control}
54
- name={name}
55
- defaultValue=""
56
- render={({ field: { onChange, value }, fieldState: { error } }) => (
57
- <MuiTextField
58
- {...rest}
59
- name={name}
60
- label={<FormLabel required={required} label={label} />}
61
- onChange={(e) => {
62
- onChange(e)
63
- if (handleChange) {
64
- handleChange(e)
65
- }
66
- }}
67
- value={value}
68
- error={error ? true : false}
69
- helperText={error ? error.message : null}
70
- />
71
- )}
72
- />
73
- )
74
- }
1
+ import {
2
+ TextField as MuiTextField,
3
+ TextFieldProps as MuiTextFieldProps,
4
+ Typography,
5
+ } from '@mui/material'
6
+ import React from 'react'
7
+ import { Controller } from 'react-hook-form'
8
+ import FormLabel from './FormLabel'
9
+
10
+ type MyTextFieldProps = MuiTextFieldProps & {
11
+ control?: any
12
+ label?: string
13
+ name?: string
14
+ value?: any
15
+ hookForm?: boolean
16
+ required?: boolean
17
+ handleChange?: React.ChangeEventHandler<
18
+ HTMLTextAreaElement | HTMLInputElement
19
+ >
20
+ }
21
+
22
+ export default function FormTextField({
23
+ name,
24
+ control,
25
+ label,
26
+ value,
27
+ handleChange,
28
+ required = false,
29
+ hookForm = true,
30
+ ...rest
31
+ }: MyTextFieldProps) {
32
+ if (!hookForm)
33
+ return (
34
+ <MuiTextField
35
+ label={
36
+ <>
37
+ {label}
38
+ {required && (
39
+ <Typography fontSize={14} component={'span'} color="error">
40
+ {' *'}
41
+ </Typography>
42
+ )}
43
+ </>
44
+ }
45
+ value={value}
46
+ name={name}
47
+ onChange={handleChange}
48
+ {...rest}
49
+ />
50
+ )
51
+ return (
52
+ <Controller
53
+ control={control}
54
+ name={name}
55
+ defaultValue=""
56
+ render={({ field: { onChange, value }, fieldState: { error } }) => (
57
+ <MuiTextField
58
+ {...rest}
59
+ name={name}
60
+ label={<FormLabel required={required} label={label} />}
61
+ onChange={(e) => {
62
+ onChange(e)
63
+ if (handleChange) {
64
+ handleChange(e)
65
+ }
66
+ }}
67
+ value={value}
68
+ error={error ? true : false}
69
+ helperText={error ? error.message : null}
70
+ />
71
+ )}
72
+ />
73
+ )
74
+ }
@@ -1,82 +1,82 @@
1
- import DateRangeIcon from '@mui/icons-material/DateRange'
2
- import { InputAdornment, TextField, Typography } from '@mui/material'
3
- import {
4
- LocalizationProvider,
5
- TimePicker as MuiTimePicker,
6
- } from '@mui/x-date-pickers'
7
- import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
8
- import { Controller } from 'react-hook-form'
9
-
10
- interface Props {
11
- label?: string
12
- name: string
13
- size?: 'small' | 'medium'
14
- control: any
15
- required?: boolean
16
- hookForm?: boolean
17
- }
18
-
19
- export default function FormTimePicker(props: Props) {
20
- const {
21
- name,
22
- size = 'small',
23
- control,
24
- label = '',
25
- required,
26
- hookForm = true,
27
- } = props
28
-
29
- return (
30
- <LocalizationProvider dateAdapter={AdapterMoment}>
31
- <Controller
32
- name={name}
33
- control={control}
34
- render={({ field, fieldState: { error } }) => (
35
- <>
36
- <MuiTimePicker
37
- label={
38
- <>
39
- {label}
40
- {required && (
41
- <Typography fontSize={14} component={'span'} color="error">
42
- {' *'}
43
- </Typography>
44
- )}
45
- </>
46
- }
47
- mask="__:__ _M"
48
- inputFormat="hh:mm a"
49
- value={field.value || null}
50
- onChange={field.onChange}
51
- InputProps={{
52
- endAdornment: (
53
- <InputAdornment position="end">
54
- <DateRangeIcon />
55
- </InputAdornment>
56
- ),
57
- }}
58
- renderInput={(params) => (
59
- <TextField
60
- fullWidth
61
- size={size}
62
- {...params}
63
- error={Boolean(error)}
64
- onBlur={field.onBlur}
65
- />
66
- )}
67
- />
68
- {error && (
69
- <Typography
70
- variant="caption"
71
- sx={{ pl: '2px' }}
72
- color="rgb(211, 47, 47)"
73
- >
74
- {error.message}
75
- </Typography>
76
- )}
77
- </>
78
- )}
79
- />
80
- </LocalizationProvider>
81
- )
82
- }
1
+ import DateRangeIcon from '@mui/icons-material/DateRange'
2
+ import { InputAdornment, TextField, Typography } from '@mui/material'
3
+ import {
4
+ LocalizationProvider,
5
+ TimePicker as MuiTimePicker,
6
+ } from '@mui/x-date-pickers'
7
+ import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment'
8
+ import { Controller } from 'react-hook-form'
9
+
10
+ interface Props {
11
+ label?: string
12
+ name: string
13
+ size?: 'small' | 'medium'
14
+ control: any
15
+ required?: boolean
16
+ hookForm?: boolean
17
+ }
18
+
19
+ export default function FormTimePicker(props: Props) {
20
+ const {
21
+ name,
22
+ size = 'small',
23
+ control,
24
+ label = '',
25
+ required,
26
+ hookForm = true,
27
+ } = props
28
+
29
+ return (
30
+ <LocalizationProvider dateAdapter={AdapterMoment}>
31
+ <Controller
32
+ name={name}
33
+ control={control}
34
+ render={({ field, fieldState: { error } }) => (
35
+ <>
36
+ <MuiTimePicker
37
+ label={
38
+ <>
39
+ {label}
40
+ {required && (
41
+ <Typography fontSize={14} component={'span'} color="error">
42
+ {' *'}
43
+ </Typography>
44
+ )}
45
+ </>
46
+ }
47
+ mask="__:__ _M"
48
+ inputFormat="hh:mm a"
49
+ value={field.value || null}
50
+ onChange={field.onChange}
51
+ InputProps={{
52
+ endAdornment: (
53
+ <InputAdornment position="end">
54
+ <DateRangeIcon />
55
+ </InputAdornment>
56
+ ),
57
+ }}
58
+ renderInput={(params) => (
59
+ <TextField
60
+ fullWidth
61
+ size={size}
62
+ {...params}
63
+ error={Boolean(error)}
64
+ onBlur={field.onBlur}
65
+ />
66
+ )}
67
+ />
68
+ {error && (
69
+ <Typography
70
+ variant="caption"
71
+ sx={{ pl: '2px' }}
72
+ color="rgb(211, 47, 47)"
73
+ >
74
+ {error.message}
75
+ </Typography>
76
+ )}
77
+ </>
78
+ )}
79
+ />
80
+ </LocalizationProvider>
81
+ )
82
+ }
@@ -1,23 +1,23 @@
1
- import SingleSelect from './SingleSelect'
2
- import FormDatePicker from './DatePicker'
3
- import MultiCheckbox from './MultiCheckbox'
4
- import MultiSelect from './MultiSelect'
5
- import RadioGroup from './RadioGroup'
6
- import SingleCheckbox from './SingleCheckbox'
7
- import AutoCompleteSearch from './AutoCompleteSearch'
8
- import FormTextField from './TextField'
9
- import TimePicker from './TimePicker'
10
- import FormDateTimePicker from './DateTimePicker'
11
-
12
- export {
13
- SingleSelect as FormSingleSelect,
14
- FormDatePicker,
15
- FormTextField,
16
- MultiCheckbox as FormMultiCheckbox,
17
- MultiSelect as FormMultiSelect,
18
- RadioGroup as FormRadioGroup,
19
- SingleCheckbox as FormSingleCheckbox,
20
- AutoCompleteSearch as FormAutoCompleteSearch,
21
- TimePicker as FormTimePicker,
22
- FormDateTimePicker,
23
- }
1
+ import SingleSelect from './SingleSelect'
2
+ import FormDatePicker from './DatePicker'
3
+ import MultiCheckbox from './MultiCheckbox'
4
+ import MultiSelect from './MultiSelect'
5
+ import RadioGroup from './RadioGroup'
6
+ import SingleCheckbox from './SingleCheckbox'
7
+ import AutoCompleteSearch from './AutoCompleteSearch'
8
+ import FormTextField from './TextField'
9
+ import TimePicker from './TimePicker'
10
+ import FormDateTimePicker from './DateTimePicker'
11
+
12
+ export {
13
+ SingleSelect as FormSingleSelect,
14
+ FormDatePicker,
15
+ FormTextField,
16
+ MultiCheckbox as FormMultiCheckbox,
17
+ MultiSelect as FormMultiSelect,
18
+ RadioGroup as FormRadioGroup,
19
+ SingleCheckbox as FormSingleCheckbox,
20
+ AutoCompleteSearch as FormAutoCompleteSearch,
21
+ TimePicker as FormTimePicker,
22
+ FormDateTimePicker,
23
+ }