@campxdev/shared 1.1.3 → 1.1.5

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/antd.customize.less +73 -73
  2. package/exports.ts +17 -17
  3. package/package.json +82 -82
  4. package/src/assets/fonts/avenir/index.ts +2 -2
  5. package/src/assets/fonts/poppins/index.ts +7 -7
  6. package/src/assets/images/index.ts +17 -17
  7. package/src/assets/images/unauth.svg +92 -92
  8. package/src/components/ActionButton.tsx +28 -28
  9. package/src/components/Attachment.tsx +26 -26
  10. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  11. package/src/components/AutocompleteSearch/index.tsx +1 -1
  12. package/src/components/Breadcrumbs.tsx +72 -72
  13. package/src/components/Card.tsx +98 -98
  14. package/src/components/CardsGrid.tsx +28 -28
  15. package/src/components/ChangePassword.tsx +164 -164
  16. package/src/components/Chips.tsx +81 -81
  17. package/src/components/Detail.tsx +15 -15
  18. package/src/components/DetailsGrid.tsx +52 -52
  19. package/src/components/DividerHeading.tsx +41 -41
  20. package/src/components/DrawerWrapper/DialogWrapper.tsx +67 -67
  21. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  22. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  23. package/src/components/DropDownButton.tsx +194 -194
  24. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  25. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  26. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  27. package/src/components/ErrorBoundary/index.tsx +1 -1
  28. package/src/components/ErrorBox.tsx +42 -42
  29. package/src/components/FloatingContainer.tsx +33 -33
  30. package/src/components/Form/Form.tsx +156 -156
  31. package/src/components/Form/RenderForm.tsx +188 -188
  32. package/src/components/FullCalendar/Actions.tsx +162 -162
  33. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  34. package/src/components/FullScreenLoader.tsx +19 -19
  35. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  36. package/src/components/HookForm/DatePicker.tsx +65 -65
  37. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  38. package/src/components/HookForm/FormLabel.tsx +14 -14
  39. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  40. package/src/components/HookForm/MultiSelect.tsx +100 -100
  41. package/src/components/HookForm/RadioGroup.tsx +106 -106
  42. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  43. package/src/components/HookForm/SingleSelect.tsx +94 -94
  44. package/src/components/HookForm/TextField.tsx +74 -74
  45. package/src/components/HookForm/TimePicker.tsx +82 -82
  46. package/src/components/HookForm/index.ts +23 -23
  47. package/src/components/IconButtons/IconButtons.tsx +137 -137
  48. package/src/components/IconButtons/Icons.tsx +268 -268
  49. package/src/components/IconButtons/assets/edit.svg +4 -4
  50. package/src/components/IconButtons/assets/eye.svg +6 -6
  51. package/src/components/IconButtons/assets/trash.svg +7 -7
  52. package/src/components/IconButtons/index.tsx +8 -8
  53. package/src/components/IconLabel.tsx +37 -37
  54. package/src/components/Image/Image.tsx +43 -43
  55. package/src/components/Image/index.tsx +1 -1
  56. package/src/components/ImageUpload.tsx +98 -98
  57. package/src/components/Input/AutoCompleteSearch.tsx +113 -113
  58. package/src/components/Input/DatePicker.tsx +60 -60
  59. package/src/components/Input/DateRangePicker.tsx +131 -131
  60. package/src/components/Input/DateTimePicker.tsx +70 -70
  61. package/src/components/Input/FormLabel.tsx +14 -14
  62. package/src/components/Input/MultiCheckbox.tsx +79 -79
  63. package/src/components/Input/MultiSelect.tsx +52 -52
  64. package/src/components/Input/RadioGroup.tsx +61 -61
  65. package/src/components/Input/SingleCheckbox.tsx +23 -23
  66. package/src/components/Input/SingleSelect.tsx +126 -126
  67. package/src/components/Input/TextField.tsx +50 -50
  68. package/src/components/Input/TimePicker.tsx +82 -82
  69. package/src/components/Input/index.ts +26 -26
  70. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  71. package/src/components/JsonPreview/index.tsx +1 -1
  72. package/src/components/LabelValue/LabelValue.tsx +21 -21
  73. package/src/components/LabelValue/index.tsx +1 -1
  74. package/src/components/Layout/ChangePassword.tsx +49 -49
  75. package/src/components/Layout/Header/AppHeader.tsx +124 -124
  76. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  77. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  78. package/src/components/Layout/Header/HelpWidget/HelpWidget.tsx +298 -298
  79. package/src/components/Layout/Header/HelpWidget/styles.tsx +94 -94
  80. package/src/components/Layout/Header/Notification.tsx +13 -13
  81. package/src/components/Layout/Header/UserBox.tsx +91 -91
  82. package/src/components/Layout/Header/applications.ts +90 -90
  83. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  84. package/src/components/Layout/Header/assets/commuteX.png +0 -0
  85. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  86. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  87. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  88. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  89. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  90. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  91. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  92. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  93. package/src/components/Layout/Header/assets/index.ts +33 -33
  94. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  95. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  96. package/src/components/Layout/Header/assets/payx.svg +19 -19
  97. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  98. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  99. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  100. package/src/components/Layout/Header/icons.tsx +57 -57
  101. package/src/components/Layout/Header/index.tsx +1 -1
  102. package/src/components/Layout/Header/styles.tsx +98 -98
  103. package/src/components/Layout/Tickets/MyTickets.tsx +74 -74
  104. package/src/components/Layout/Tickets/Services.tsx +6 -6
  105. package/src/components/Layout/Tickets/TicketDetails.tsx +66 -66
  106. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  107. package/src/components/Layout/Tickets/index.tsx +1 -1
  108. package/src/components/Layout/Tickets/styles.tsx +136 -136
  109. package/src/components/LayoutWrapper.tsx +25 -25
  110. package/src/components/LinearProgress.tsx +19 -19
  111. package/src/components/ListItemButton.tsx +95 -95
  112. package/src/components/LoginForm.tsx +105 -105
  113. package/src/components/MediaRow/MediaRow.tsx +69 -69
  114. package/src/components/MediaRow/index.tsx +1 -1
  115. package/src/components/MenuButton.tsx +103 -103
  116. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  117. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  118. package/src/components/ModalButtons/index.tsx +4 -4
  119. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  120. package/src/components/NoDataIllustration/index.tsx +1 -1
  121. package/src/components/PageContent.tsx +17 -17
  122. package/src/components/PageHeader.tsx +52 -52
  123. package/src/components/PageNotFound.tsx +26 -26
  124. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  125. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  126. package/src/components/PopupConfirm/index.tsx +1 -1
  127. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  128. package/src/components/Router.tsx +7 -7
  129. package/src/components/Row/Row.tsx +24 -24
  130. package/src/components/Row/index.tsx +1 -1
  131. package/src/components/SearchBar/SearchBar.tsx +53 -53
  132. package/src/components/SearchBar/index.tsx +1 -1
  133. package/src/components/SideMenuHeader.tsx +29 -29
  134. package/src/components/SideNav.tsx +168 -168
  135. package/src/components/Spinner.tsx +18 -18
  136. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  137. package/src/components/StepsHeader/index.tsx +1 -1
  138. package/src/components/StyledTableContainer.tsx +33 -33
  139. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  140. package/src/components/SwitchButton/index.tsx +1 -1
  141. package/src/components/Table.tsx +42 -42
  142. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  143. package/src/components/TableComponent/Icons/index.tsx +50 -50
  144. package/src/components/TableComponent/ReactTable.tsx +293 -293
  145. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  146. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  147. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  148. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  149. package/src/components/TableComponent/index.tsx +226 -226
  150. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  151. package/src/components/TableComponent/styles.tsx +173 -173
  152. package/src/components/TableComponent/types.ts +57 -57
  153. package/src/components/Tabs/Tabs.tsx +52 -52
  154. package/src/components/Tabs/TabsContainer.tsx +50 -50
  155. package/src/components/Tabs/index.tsx +1 -1
  156. package/src/components/Tabs/styles.tsx +55 -55
  157. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  158. package/src/components/ToastContainer/index.tsx +1 -1
  159. package/src/components/UploadButton/UploadButton.tsx +126 -126
  160. package/src/components/UploadButton/index.tsx +1 -1
  161. package/src/components/UploadButton/types.ts +19 -19
  162. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  163. package/src/components/UploadDocument/index.tsx +1 -1
  164. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  165. package/src/components/UploadFileDialog/index.tsx +1 -1
  166. package/src/components/index.ts +86 -86
  167. package/src/config/axios.ts +74 -74
  168. package/src/config/axiosXTenant.ts +57 -57
  169. package/src/constants/UIConstants.ts +97 -97
  170. package/src/constants/formValidations.ts +6 -6
  171. package/src/constants/index.ts +5 -5
  172. package/src/constants/isDevelopment.ts +3 -3
  173. package/src/constants/permissions.ts +67 -67
  174. package/src/constants/validateMessages.ts +12 -12
  175. package/src/contexts/LoginFormProvider.tsx +39 -39
  176. package/src/contexts/Providers.tsx +60 -60
  177. package/src/contexts/PublicProviders.tsx +30 -30
  178. package/src/contexts/QueryClientProvider.tsx +22 -22
  179. package/src/hooks/index.ts +3 -3
  180. package/src/hooks/useAppInit.ts +33 -33
  181. package/src/hooks/useAuth.ts +96 -96
  182. package/src/hooks/useFetch.ts +53 -53
  183. package/src/hooks/useRouter.ts +31 -31
  184. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  185. package/src/layouts/Components/icons/index.tsx +403 -403
  186. package/src/layouts/Components/styles.tsx +60 -60
  187. package/src/layouts/ComponentsLayout.tsx +3 -3
  188. package/src/permissions/PageWithPermission.tsx +18 -18
  189. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  190. package/src/permissions/ValidateAccess.tsx +18 -18
  191. package/src/permissions/index.ts +2 -2
  192. package/src/react-app-env.d.ts +1 -1
  193. package/src/shared-state/AssetsStore.ts +15 -15
  194. package/src/shared-state/PermissionsStore.ts +352 -352
  195. package/src/shared-state/UserStore.ts +13 -13
  196. package/src/shared-state/index.ts +4 -4
  197. package/src/theme/App.less +3 -3
  198. package/src/theme/MuiThemeProvider.tsx +13 -13
  199. package/src/theme/customCssBaseline.ts +78 -78
  200. package/src/theme/index.css +75 -75
  201. package/src/theme/muiTheme.ts +490 -490
  202. package/src/theme/theme.d.ts +75 -75
  203. package/src/utils/alphabet.ts +23 -23
  204. package/src/utils/arrayPadEnd.ts +3 -3
  205. package/src/utils/formatCurrency.ts +9 -9
  206. package/src/utils/getUrlParams.ts +5 -5
  207. package/src/utils/index.ts +8 -8
  208. package/src/utils/logout.ts +24 -24
  209. package/src/utils/ordinalSuffixOf.ts +14 -14
  210. package/src/utils/romanize.ts +40 -40
  211. package/src/utils/withLocalization.tsx +11 -11
  212. package/src/utils/withRouteWrapper.tsx +25 -25
  213. package/src/utils/withSuspense.tsx +6 -6
  214. package/styled-components.tsx +60 -60
  215. package/tsconfig.json +21 -21
@@ -1,82 +1,82 @@
1
- import {
2
- Checkbox,
3
- FormControl,
4
- FormControlLabel,
5
- FormGroup,
6
- Typography,
7
- } from '@mui/material'
8
- import { Controller } from 'react-hook-form'
9
- import FormLabel from './FormLabel'
10
-
11
- interface Props {
12
- label?: string
13
- name: string
14
- size?: 'small' | 'medium'
15
- control: any
16
- options: Array<{ label: string; value: string }>
17
- required?: boolean
18
- row?: boolean
19
- }
20
-
21
- export default function FormMultiCheckbox(props: Props) {
22
- const {
23
- name,
24
- size = 'small',
25
- control,
26
- label = '',
27
- options = [],
28
- required = false,
29
- row = true,
30
- } = props
31
-
32
- return (
33
- <Controller
34
- name={name}
35
- control={control}
36
- render={({ field, fieldState: { error } }) => (
37
- <>
38
- <Typography variant="subtitle1">
39
- {label}
40
- {required && <span style={{ color: 'red' }}>{' *'}</span>}
41
- </Typography>
42
- <FormControl size={size} fullWidth>
43
- <FormGroup row={row} sx={{ flexWrap: 'wrap' }}>
44
- {options?.map((item, index) => (
45
- <FormControlLabel
46
- name={name}
47
- key={index}
48
- control={
49
- <Checkbox
50
- size="small"
51
- checked={field?.value
52
- ?.map((item: any) => item?.value)
53
- ?.includes(item?.value)}
54
- onChange={(e) => {
55
- let value = field.value || []
56
- if (e.target.checked) {
57
- let newValue = [...value, item]
58
- field.onChange(newValue)
59
- } else {
60
- let filteredValue = value.filter(
61
- (opt: any) => opt?.value !== item.value,
62
- )
63
- field.onChange(filteredValue)
64
- }
65
- }}
66
- />
67
- }
68
- label={item.label}
69
- />
70
- ))}
71
- </FormGroup>
72
- </FormControl>
73
- {error && (
74
- <Typography variant="caption" color="error" sx={{ pl: '2px' }}>
75
- {error.message}
76
- </Typography>
77
- )}
78
- </>
79
- )}
80
- />
81
- )
82
- }
1
+ import {
2
+ Checkbox,
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormGroup,
6
+ Typography,
7
+ } from '@mui/material'
8
+ import { Controller } from 'react-hook-form'
9
+ import FormLabel from './FormLabel'
10
+
11
+ interface Props {
12
+ label?: string
13
+ name: string
14
+ size?: 'small' | 'medium'
15
+ control: any
16
+ options: Array<{ label: string; value: string }>
17
+ required?: boolean
18
+ row?: boolean
19
+ }
20
+
21
+ export default function FormMultiCheckbox(props: Props) {
22
+ const {
23
+ name,
24
+ size = 'small',
25
+ control,
26
+ label = '',
27
+ options = [],
28
+ required = false,
29
+ row = true,
30
+ } = props
31
+
32
+ return (
33
+ <Controller
34
+ name={name}
35
+ control={control}
36
+ render={({ field, fieldState: { error } }) => (
37
+ <>
38
+ <Typography variant="subtitle1">
39
+ {label}
40
+ {required && <span style={{ color: 'red' }}>{' *'}</span>}
41
+ </Typography>
42
+ <FormControl size={size} fullWidth>
43
+ <FormGroup row={row} sx={{ flexWrap: 'wrap' }}>
44
+ {options?.map((item, index) => (
45
+ <FormControlLabel
46
+ name={name}
47
+ key={index}
48
+ control={
49
+ <Checkbox
50
+ size="small"
51
+ checked={field?.value
52
+ ?.map((item: any) => item?.value)
53
+ ?.includes(item?.value)}
54
+ onChange={(e) => {
55
+ let value = field.value || []
56
+ if (e.target.checked) {
57
+ let newValue = [...value, item]
58
+ field.onChange(newValue)
59
+ } else {
60
+ let filteredValue = value.filter(
61
+ (opt: any) => opt?.value !== item.value,
62
+ )
63
+ field.onChange(filteredValue)
64
+ }
65
+ }}
66
+ />
67
+ }
68
+ label={item.label}
69
+ />
70
+ ))}
71
+ </FormGroup>
72
+ </FormControl>
73
+ {error && (
74
+ <Typography variant="caption" color="error" sx={{ pl: '2px' }}>
75
+ {error.message}
76
+ </Typography>
77
+ )}
78
+ </>
79
+ )}
80
+ />
81
+ )
82
+ }
@@ -1,100 +1,100 @@
1
- import { Close } from '@mui/icons-material'
2
- import { Autocomplete, CircularProgress, TextField } from '@mui/material'
3
- import React from 'react'
4
- import { Controller } from 'react-hook-form'
5
- import FormLabel from './FormLabel'
6
-
7
- interface MultiSelectProps {
8
- control?: any
9
- label: string
10
- name?: string
11
- options: { key: string | number; name: any }[]
12
- placeholder?: string
13
- loading?: boolean
14
- [key: string]: any
15
- hookForm?: boolean
16
- value?: any
17
- onChange?: (value: any) => void
18
- }
19
-
20
- export default function FormMultiSelect({
21
- control,
22
- name,
23
- options,
24
- label,
25
- loading,
26
- value,
27
- onChange,
28
- hookForm = true,
29
- ...props
30
- }: MultiSelectProps) {
31
- if (!hookForm) {
32
- return (
33
- <Autocomplete
34
- multiple
35
- value={value}
36
- loading={loading}
37
- fullWidth
38
- isOptionEqualToValue={(option, value) => option.key === value.key}
39
- onChange={(e, value) => {
40
- if (!onChange) return
41
- onChange(value)
42
- }}
43
- options={options || []}
44
- getOptionLabel={(option) => option?.name || ''}
45
- renderInput={(params) => (
46
- <TextField
47
- {...params}
48
- variant="outlined"
49
- label={<FormLabel label={label} required={props.required} />}
50
- />
51
- )}
52
- {...props}
53
- />
54
- )
55
- }
56
- return (
57
- <Controller
58
- control={control}
59
- name={name}
60
- render={({ field, fieldState: { error } }) => (
61
- <Autocomplete
62
- multiple
63
- value={field.value}
64
- loading={loading}
65
- fullWidth
66
- isOptionEqualToValue={(option, value) => option.key === value.key}
67
- onChange={(e, value) => {
68
- field.onChange(value)
69
- }}
70
- options={options || []}
71
- getOptionLabel={(option) => option?.name || ''}
72
- renderInput={(params) => (
73
- <TextField
74
- {...params}
75
- variant="outlined"
76
- InputProps={{
77
- ...params.InputProps,
78
- endAdornment: (
79
- <React.Fragment>
80
- {loading ? (
81
- <CircularProgress color="inherit" size={20} />
82
- ) : null}
83
- {params.InputProps.endAdornment}
84
- </React.Fragment>
85
- ),
86
- }}
87
- label={<FormLabel label={label} required={props.required} />}
88
- error={error ? true : false}
89
- helperText={error ? error.message : null}
90
- />
91
- )}
92
- ChipProps={{
93
- deleteIcon: <Close />,
94
- }}
95
- {...props}
96
- />
97
- )}
98
- />
99
- )
100
- }
1
+ import { Close } from '@mui/icons-material'
2
+ import { Autocomplete, CircularProgress, TextField } from '@mui/material'
3
+ import React from 'react'
4
+ import { Controller } from 'react-hook-form'
5
+ import FormLabel from './FormLabel'
6
+
7
+ interface MultiSelectProps {
8
+ control?: any
9
+ label: string
10
+ name?: string
11
+ options: { key: string | number; name: any }[]
12
+ placeholder?: string
13
+ loading?: boolean
14
+ [key: string]: any
15
+ hookForm?: boolean
16
+ value?: any
17
+ onChange?: (value: any) => void
18
+ }
19
+
20
+ export default function FormMultiSelect({
21
+ control,
22
+ name,
23
+ options,
24
+ label,
25
+ loading,
26
+ value,
27
+ onChange,
28
+ hookForm = true,
29
+ ...props
30
+ }: MultiSelectProps) {
31
+ if (!hookForm) {
32
+ return (
33
+ <Autocomplete
34
+ multiple
35
+ value={value}
36
+ loading={loading}
37
+ fullWidth
38
+ isOptionEqualToValue={(option, value) => option.key === value.key}
39
+ onChange={(e, value) => {
40
+ if (!onChange) return
41
+ onChange(value)
42
+ }}
43
+ options={options || []}
44
+ getOptionLabel={(option) => option?.name || ''}
45
+ renderInput={(params) => (
46
+ <TextField
47
+ {...params}
48
+ variant="outlined"
49
+ label={<FormLabel label={label} required={props.required} />}
50
+ />
51
+ )}
52
+ {...props}
53
+ />
54
+ )
55
+ }
56
+ return (
57
+ <Controller
58
+ control={control}
59
+ name={name}
60
+ render={({ field, fieldState: { error } }) => (
61
+ <Autocomplete
62
+ multiple
63
+ value={field.value}
64
+ loading={loading}
65
+ fullWidth
66
+ isOptionEqualToValue={(option, value) => option.key === value.key}
67
+ onChange={(e, value) => {
68
+ field.onChange(value)
69
+ }}
70
+ options={options || []}
71
+ getOptionLabel={(option) => option?.name || ''}
72
+ renderInput={(params) => (
73
+ <TextField
74
+ {...params}
75
+ variant="outlined"
76
+ InputProps={{
77
+ ...params.InputProps,
78
+ endAdornment: (
79
+ <React.Fragment>
80
+ {loading ? (
81
+ <CircularProgress color="inherit" size={20} />
82
+ ) : null}
83
+ {params.InputProps.endAdornment}
84
+ </React.Fragment>
85
+ ),
86
+ }}
87
+ label={<FormLabel label={label} required={props.required} />}
88
+ error={error ? true : false}
89
+ helperText={error ? error.message : null}
90
+ />
91
+ )}
92
+ ChipProps={{
93
+ deleteIcon: <Close />,
94
+ }}
95
+ {...props}
96
+ />
97
+ )}
98
+ />
99
+ )
100
+ }
@@ -1,106 +1,106 @@
1
- import {
2
- Box,
3
- FormControlLabel,
4
- Radio,
5
- RadioGroup as MuiRadioGroup,
6
- RadioGroupProps,
7
- Stack,
8
- Typography,
9
- } from '@mui/material'
10
- import { ReactNode } from 'react'
11
- import { Controller } from 'react-hook-form'
12
- import FormLabel from './FormLabel'
13
-
14
- interface Props extends RadioGroupProps {
15
- label?: ReactNode
16
- name: string
17
- control: any
18
- sx?: any
19
- row?: boolean
20
- required?: boolean
21
- options: { value: any; label: string | ReactNode }[]
22
- Container?: any
23
- }
24
-
25
- export default function FormRadioGroup(props: Props) {
26
- const {
27
- name,
28
- control,
29
- label,
30
- sx,
31
- options = [],
32
- row = false,
33
- required = false,
34
- Container,
35
- } = props
36
-
37
- return (
38
- <>
39
- <Controller
40
- name={name}
41
- control={control}
42
- render={({ field, fieldState: { error } }) => (
43
- <Stack direction={row ? 'row' : 'column'}>
44
- {Container ? (
45
- <Container style={{ borderColor: error ? 'red' : '' }}>
46
- {
47
- <RadioComponent
48
- field={field}
49
- name={name}
50
- label={label}
51
- row={row}
52
- options={options}
53
- required={required}
54
- />
55
- }
56
- </Container>
57
- ) : (
58
- <RadioComponent
59
- field={field}
60
- name={name}
61
- label={label}
62
- row={row}
63
- options={options}
64
- required={required}
65
- />
66
- )}
67
- {error && (
68
- <Typography
69
- variant="subtitle1"
70
- sx={{ pl: '2px' }}
71
- color="rgb(211, 47, 47)"
72
- >
73
- {error.message}
74
- </Typography>
75
- )}
76
- </Stack>
77
- )}
78
- />
79
- </>
80
- )
81
- }
82
-
83
- const RadioComponent = ({ label, required, row, options, name, field }) => {
84
- return (
85
- <>
86
- <Box>
87
- {label && <FormLabel label={label} required={required} />}
88
- <MuiRadioGroup
89
- value={field.value}
90
- onChange={field.onChange}
91
- row={row}
92
- name={name}
93
- >
94
- {options.map((item, index) => (
95
- <FormControlLabel
96
- key={index}
97
- value={item.value}
98
- control={<Radio />}
99
- label={item.label}
100
- />
101
- ))}
102
- </MuiRadioGroup>
103
- </Box>
104
- </>
105
- )
106
- }
1
+ import {
2
+ Box,
3
+ FormControlLabel,
4
+ Radio,
5
+ RadioGroup as MuiRadioGroup,
6
+ RadioGroupProps,
7
+ Stack,
8
+ Typography,
9
+ } from '@mui/material'
10
+ import { ReactNode } from 'react'
11
+ import { Controller } from 'react-hook-form'
12
+ import FormLabel from './FormLabel'
13
+
14
+ interface Props extends RadioGroupProps {
15
+ label?: ReactNode
16
+ name: string
17
+ control: any
18
+ sx?: any
19
+ row?: boolean
20
+ required?: boolean
21
+ options: { value: any; label: string | ReactNode }[]
22
+ Container?: any
23
+ }
24
+
25
+ export default function FormRadioGroup(props: Props) {
26
+ const {
27
+ name,
28
+ control,
29
+ label,
30
+ sx,
31
+ options = [],
32
+ row = false,
33
+ required = false,
34
+ Container,
35
+ } = props
36
+
37
+ return (
38
+ <>
39
+ <Controller
40
+ name={name}
41
+ control={control}
42
+ render={({ field, fieldState: { error } }) => (
43
+ <Stack direction={row ? 'row' : 'column'}>
44
+ {Container ? (
45
+ <Container style={{ borderColor: error ? 'red' : '' }}>
46
+ {
47
+ <RadioComponent
48
+ field={field}
49
+ name={name}
50
+ label={label}
51
+ row={row}
52
+ options={options}
53
+ required={required}
54
+ />
55
+ }
56
+ </Container>
57
+ ) : (
58
+ <RadioComponent
59
+ field={field}
60
+ name={name}
61
+ label={label}
62
+ row={row}
63
+ options={options}
64
+ required={required}
65
+ />
66
+ )}
67
+ {error && (
68
+ <Typography
69
+ variant="subtitle1"
70
+ sx={{ pl: '2px' }}
71
+ color="rgb(211, 47, 47)"
72
+ >
73
+ {error.message}
74
+ </Typography>
75
+ )}
76
+ </Stack>
77
+ )}
78
+ />
79
+ </>
80
+ )
81
+ }
82
+
83
+ const RadioComponent = ({ label, required, row, options, name, field }) => {
84
+ return (
85
+ <>
86
+ <Box>
87
+ {label && <FormLabel label={label} required={required} />}
88
+ <MuiRadioGroup
89
+ value={field.value}
90
+ onChange={field.onChange}
91
+ row={row}
92
+ name={name}
93
+ >
94
+ {options.map((item, index) => (
95
+ <FormControlLabel
96
+ key={index}
97
+ value={item.value}
98
+ control={<Radio />}
99
+ label={item.label}
100
+ />
101
+ ))}
102
+ </MuiRadioGroup>
103
+ </Box>
104
+ </>
105
+ )
106
+ }
@@ -1,46 +1,46 @@
1
- import { Checkbox, FormControlLabel, Typography } from '@mui/material'
2
- import { Controller } from 'react-hook-form'
3
-
4
- interface Props {
5
- label?: string
6
- name: string
7
- size?: 'small' | 'medium'
8
- control: any
9
- sx?: any
10
- }
11
-
12
- export default function FormSingleCheckbox(props: Props) {
13
- const { name, size = 'medium', control, label = '', sx } = props
14
- return (
15
- <>
16
- <Controller
17
- name={name}
18
- control={control}
19
- render={({ field, fieldState: { error } }) => (
20
- <>
21
- <FormControlLabel
22
- sx={{ width: '100%', ...sx }}
23
- control={
24
- <Checkbox
25
- size={size}
26
- checked={field.value}
27
- onChange={field.onChange}
28
- />
29
- }
30
- label={label}
31
- />
32
- {error && (
33
- <Typography
34
- variant="caption"
35
- sx={{ pl: '2px' }}
36
- color="rgb(211, 47, 47)"
37
- >
38
- {error.message}
39
- </Typography>
40
- )}
41
- </>
42
- )}
43
- />
44
- </>
45
- )
46
- }
1
+ import { Checkbox, FormControlLabel, Typography } from '@mui/material'
2
+ import { Controller } from 'react-hook-form'
3
+
4
+ interface Props {
5
+ label?: string
6
+ name: string
7
+ size?: 'small' | 'medium'
8
+ control: any
9
+ sx?: any
10
+ }
11
+
12
+ export default function FormSingleCheckbox(props: Props) {
13
+ const { name, size = 'medium', control, label = '', sx } = props
14
+ return (
15
+ <>
16
+ <Controller
17
+ name={name}
18
+ control={control}
19
+ render={({ field, fieldState: { error } }) => (
20
+ <>
21
+ <FormControlLabel
22
+ sx={{ width: '100%', ...sx }}
23
+ control={
24
+ <Checkbox
25
+ size={size}
26
+ checked={field.value}
27
+ onChange={field.onChange}
28
+ />
29
+ }
30
+ label={label}
31
+ />
32
+ {error && (
33
+ <Typography
34
+ variant="caption"
35
+ sx={{ pl: '2px' }}
36
+ color="rgb(211, 47, 47)"
37
+ >
38
+ {error.message}
39
+ </Typography>
40
+ )}
41
+ </>
42
+ )}
43
+ />
44
+ </>
45
+ )
46
+ }