@campxdev/shared 0.6.17 → 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 (220) 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/AnimatedUploadFile.gif +0 -0
  164. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -240
  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 +59 -59
  177. package/src/contexts/QueryClientProvider.tsx +22 -22
  178. package/src/hooks/index.ts +3 -3
  179. package/src/hooks/useAppInit.ts +33 -33
  180. package/src/hooks/useAuth.ts +91 -91
  181. package/src/hooks/useFetch.ts +53 -53
  182. package/src/hooks/useRouter.ts +31 -31
  183. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  184. package/src/layouts/Components/icons/index.tsx +403 -403
  185. package/src/layouts/Components/styles.tsx +60 -60
  186. package/src/layouts/ComponentsLayout.tsx +3 -3
  187. package/src/permissions/PageWithPermission.tsx +18 -18
  188. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  189. package/src/permissions/PermissionsStore.ts +352 -352
  190. package/src/permissions/ValidateAccess.tsx +18 -18
  191. package/src/permissions/index.ts +3 -3
  192. package/src/react-app-env.d.ts +1 -1
  193. package/src/shared-state/AssetsStore.ts +15 -15
  194. package/src/shared-state/UserStore.ts +13 -13
  195. package/src/shared-state/index.ts +3 -3
  196. package/src/theme/App.less +3 -3
  197. package/src/theme/MuiThemeProvider.tsx +13 -13
  198. package/src/theme/customCssBaseline.ts +78 -78
  199. package/src/theme/index.css +75 -75
  200. package/src/theme/muiTheme.ts +490 -490
  201. package/src/theme/theme.d.ts +75 -75
  202. package/src/utils/alphabet.ts +23 -23
  203. package/src/utils/arrayPadEnd.ts +3 -3
  204. package/src/utils/formatCurrency.ts +9 -9
  205. package/src/utils/getUrlParams.ts +5 -5
  206. package/src/utils/index.ts +8 -8
  207. package/src/utils/logout.ts +24 -24
  208. package/src/utils/ordinalSuffixOf.ts +14 -14
  209. package/src/utils/romanize.ts +40 -40
  210. package/src/utils/withLocalization.tsx +11 -11
  211. package/src/utils/withRouteWrapper.tsx +25 -25
  212. package/src/utils/withSuspense.tsx +6 -6
  213. package/styled-components.tsx +60 -60
  214. package/todo.md +20 -8
  215. package/tsconfig.json +21 -21
  216. package/src/components/Layout/Header/assets/newAssets/commuteX.png +0 -0
  217. package/src/components/Styled/OutlinedIconButton.tsx +0 -7
  218. package/src/components/Styled/index.tsx +0 -1
  219. package/src/components/Swiper/Swiper.tsx +0 -39
  220. package/src/components/Swiper/index.tsx +0 -1
@@ -1,79 +1,79 @@
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 MultiCheckbox(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
- <FormLabel label={label} required={required} />
39
- <FormControl size={size} fullWidth>
40
- <FormGroup row={row} sx={{ flexWrap: 'wrap' }}>
41
- {options?.map((item, index) => (
42
- <FormControlLabel
43
- name={name}
44
- key={index}
45
- control={
46
- <Checkbox
47
- size="small"
48
- checked={field?.value
49
- ?.map((item: any) => item?.value)
50
- ?.includes(item?.value)}
51
- onChange={(e) => {
52
- let value = field.value || []
53
- if (e.target.checked) {
54
- let newValue = [...value, item]
55
- field.onChange(newValue)
56
- } else {
57
- let filteredValue = value.filter(
58
- (opt: any) => opt?.value !== item.value,
59
- )
60
- field.onChange(filteredValue)
61
- }
62
- }}
63
- />
64
- }
65
- label={item.label}
66
- />
67
- ))}
68
- </FormGroup>
69
- </FormControl>
70
- {error && (
71
- <Typography variant="caption" color="error" sx={{ pl: '2px' }}>
72
- {error.message}
73
- </Typography>
74
- )}
75
- </>
76
- )}
77
- />
78
- )
79
- }
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 MultiCheckbox(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
+ <FormLabel label={label} required={required} />
39
+ <FormControl size={size} fullWidth>
40
+ <FormGroup row={row} sx={{ flexWrap: 'wrap' }}>
41
+ {options?.map((item, index) => (
42
+ <FormControlLabel
43
+ name={name}
44
+ key={index}
45
+ control={
46
+ <Checkbox
47
+ size="small"
48
+ checked={field?.value
49
+ ?.map((item: any) => item?.value)
50
+ ?.includes(item?.value)}
51
+ onChange={(e) => {
52
+ let value = field.value || []
53
+ if (e.target.checked) {
54
+ let newValue = [...value, item]
55
+ field.onChange(newValue)
56
+ } else {
57
+ let filteredValue = value.filter(
58
+ (opt: any) => opt?.value !== item.value,
59
+ )
60
+ field.onChange(filteredValue)
61
+ }
62
+ }}
63
+ />
64
+ }
65
+ label={item.label}
66
+ />
67
+ ))}
68
+ </FormGroup>
69
+ </FormControl>
70
+ {error && (
71
+ <Typography variant="caption" color="error" sx={{ pl: '2px' }}>
72
+ {error.message}
73
+ </Typography>
74
+ )}
75
+ </>
76
+ )}
77
+ />
78
+ )
79
+ }
@@ -1,52 +1,52 @@
1
- import { Close } from '@mui/icons-material'
2
- import { Autocomplete, TextField } from '@mui/material'
3
- import { ReactNode } from 'react'
4
- import FormLabel from './FormLabel'
5
-
6
- interface MultiSelectProps {
7
- label: string
8
- name?: string
9
- options: { label: string | ReactNode; value: any }[]
10
- placeholder?: string
11
- loading?: boolean
12
- value: { label: string | ReactNode; value: any }[]
13
- onChange: (value: any) => void
14
- required?: boolean
15
- }
16
-
17
- export default function MultiSelect({
18
- name,
19
- options,
20
- label,
21
- loading,
22
- value,
23
- onChange,
24
- required,
25
- ...props
26
- }: MultiSelectProps) {
27
- return (
28
- <Autocomplete
29
- multiple
30
- value={value}
31
- loading={loading}
32
- fullWidth
33
- onChange={(e, value) => {
34
- if (!onChange) return
35
- onChange(value)
36
- }}
37
- options={options || []}
38
- getOptionLabel={(option: any) => option?.value || ''}
39
- renderInput={(params) => (
40
- <TextField
41
- {...params}
42
- variant="outlined"
43
- label={<FormLabel label={label} required={required} />}
44
- />
45
- )}
46
- ChipProps={{
47
- deleteIcon: <Close />,
48
- }}
49
- {...props}
50
- />
51
- )
52
- }
1
+ import { Close } from '@mui/icons-material'
2
+ import { Autocomplete, TextField } from '@mui/material'
3
+ import { ReactNode } from 'react'
4
+ import FormLabel from './FormLabel'
5
+
6
+ interface MultiSelectProps {
7
+ label: string
8
+ name?: string
9
+ options: { label: string | ReactNode; value: any }[]
10
+ placeholder?: string
11
+ loading?: boolean
12
+ value: { label: string | ReactNode; value: any }[]
13
+ onChange: (value: any) => void
14
+ required?: boolean
15
+ }
16
+
17
+ export default function MultiSelect({
18
+ name,
19
+ options,
20
+ label,
21
+ loading,
22
+ value,
23
+ onChange,
24
+ required,
25
+ ...props
26
+ }: MultiSelectProps) {
27
+ return (
28
+ <Autocomplete
29
+ multiple
30
+ value={value}
31
+ loading={loading}
32
+ fullWidth
33
+ onChange={(e, value) => {
34
+ if (!onChange) return
35
+ onChange(value)
36
+ }}
37
+ options={options || []}
38
+ getOptionLabel={(option: any) => option?.value || ''}
39
+ renderInput={(params) => (
40
+ <TextField
41
+ {...params}
42
+ variant="outlined"
43
+ label={<FormLabel label={label} required={required} />}
44
+ />
45
+ )}
46
+ ChipProps={{
47
+ deleteIcon: <Close />,
48
+ }}
49
+ {...props}
50
+ />
51
+ )
52
+ }
@@ -1,61 +1,61 @@
1
- import {
2
- Checkbox,
3
- FormControlLabel,
4
- Radio,
5
- Typography,
6
- RadioGroup as MuiRadioGroup,
7
- Box,
8
- RadioGroupProps,
9
- Stack,
10
- } from '@mui/material'
11
- import { ReactNode } from 'react'
12
-
13
- interface Props extends RadioGroupProps {
14
- label: string | ReactNode
15
- name?: string
16
- control?: any
17
- sx?: any
18
- row?: boolean
19
- required?: boolean
20
- options: { value: any; label: string | ReactNode }[]
21
- }
22
-
23
- export default function RadioGroup(props: Props) {
24
- const {
25
- name,
26
- label,
27
- options = [],
28
- row = false,
29
- required = false,
30
- value,
31
- onChange,
32
- } = props
33
- return (
34
- <Box>
35
- <Box sx={{ display: 'flex' }}>
36
- {typeof label === 'string' ? (
37
- <>
38
- <Typography variant="subtitle2">{label}</Typography>
39
- {required && (
40
- <Typography fontSize={14} component={'span'} color="error">
41
- {' *'}
42
- </Typography>
43
- )}
44
- </>
45
- ) : (
46
- <>{label}</>
47
- )}
48
- </Box>
49
- <MuiRadioGroup value={value} onChange={onChange} row={row} name={name}>
50
- {options.map((item, index) => (
51
- <FormControlLabel
52
- key={index}
53
- value={item.value}
54
- control={<Radio />}
55
- label={item.label}
56
- />
57
- ))}
58
- </MuiRadioGroup>
59
- </Box>
60
- )
61
- }
1
+ import {
2
+ Checkbox,
3
+ FormControlLabel,
4
+ Radio,
5
+ Typography,
6
+ RadioGroup as MuiRadioGroup,
7
+ Box,
8
+ RadioGroupProps,
9
+ Stack,
10
+ } from '@mui/material'
11
+ import { ReactNode } from 'react'
12
+
13
+ interface Props extends RadioGroupProps {
14
+ label: string | ReactNode
15
+ name?: string
16
+ control?: any
17
+ sx?: any
18
+ row?: boolean
19
+ required?: boolean
20
+ options: { value: any; label: string | ReactNode }[]
21
+ }
22
+
23
+ export default function RadioGroup(props: Props) {
24
+ const {
25
+ name,
26
+ label,
27
+ options = [],
28
+ row = false,
29
+ required = false,
30
+ value,
31
+ onChange,
32
+ } = props
33
+ return (
34
+ <Box>
35
+ <Box sx={{ display: 'flex' }}>
36
+ {typeof label === 'string' ? (
37
+ <>
38
+ <Typography variant="subtitle2">{label}</Typography>
39
+ {required && (
40
+ <Typography fontSize={14} component={'span'} color="error">
41
+ {' *'}
42
+ </Typography>
43
+ )}
44
+ </>
45
+ ) : (
46
+ <>{label}</>
47
+ )}
48
+ </Box>
49
+ <MuiRadioGroup value={value} onChange={onChange} row={row} name={name}>
50
+ {options.map((item, index) => (
51
+ <FormControlLabel
52
+ key={index}
53
+ value={item.value}
54
+ control={<Radio />}
55
+ label={item.label}
56
+ />
57
+ ))}
58
+ </MuiRadioGroup>
59
+ </Box>
60
+ )
61
+ }
@@ -1,23 +1,23 @@
1
- import { Checkbox, FormControlLabel, Typography } from '@mui/material'
2
- import { Controller } from 'react-hook-form'
3
-
4
- interface Props {
5
- disabled?: boolean
6
- label: string
7
- name?: string
8
- size?: 'small' | 'medium'
9
- sx?: any
10
- checked: boolean
11
- onChange: (e) => void
12
- }
13
-
14
- export default function SingleCheckbox(props: Props) {
15
- const { name, checked, size = 'medium', label = '', sx, onChange } = props
16
- return (
17
- <FormControlLabel
18
- sx={{ width: '100%', ...sx }}
19
- control={<Checkbox size={size} checked={checked} onChange={onChange} />}
20
- label={label}
21
- />
22
- )
23
- }
1
+ import { Checkbox, FormControlLabel, Typography } from '@mui/material'
2
+ import { Controller } from 'react-hook-form'
3
+
4
+ interface Props {
5
+ disabled?: boolean
6
+ label: string
7
+ name?: string
8
+ size?: 'small' | 'medium'
9
+ sx?: any
10
+ checked: boolean
11
+ onChange: (e) => void
12
+ }
13
+
14
+ export default function SingleCheckbox(props: Props) {
15
+ const { name, checked, size = 'medium', label = '', sx, onChange } = props
16
+ return (
17
+ <FormControlLabel
18
+ sx={{ width: '100%', ...sx }}
19
+ control={<Checkbox size={size} checked={checked} onChange={onChange} />}
20
+ label={label}
21
+ />
22
+ )
23
+ }
@@ -1,124 +1,124 @@
1
- import {
2
- FormControl,
3
- InputLabel,
4
- MenuItem,
5
- Select,
6
- SelectProps,
7
- Typography,
8
- } from '@mui/material'
9
- import { ReactNode } from 'react'
10
- import { Controller } from 'react-hook-form'
11
- import FormLabel from './FormLabel'
12
- interface Props extends SelectProps {
13
- name?: string
14
- control?: any
15
- options: Array<{ label: ReactNode; value: any }>
16
- label?: string
17
- textColor?: string
18
- onChange?: (value: any) => void
19
- required?: boolean
20
- hookForm?: boolean
21
- firstItemEmpty?: boolean
22
- }
23
-
24
- export default function SingleSelect(props: Props) {
25
- const {
26
- name = 'select',
27
- options = [],
28
- control,
29
- label,
30
- textColor,
31
- onChange,
32
- required,
33
- hookForm = true,
34
- firstItemEmpty = false,
35
- } = props
36
-
37
- const inputOptions = firstItemEmpty
38
- ? [{ label: 'All', value: '__empty__' }, ...options]
39
- : options
40
-
41
- if (!hookForm) {
42
- return (
43
- <>
44
- <FormControl fullWidth sx={props.sx}>
45
- <InputLabel id={name}>
46
- <FormLabel required={required} label={label} />
47
- </InputLabel>
48
- <Select
49
- variant="outlined"
50
- id={name}
51
- value={props.value}
52
- displayEmpty={firstItemEmpty}
53
- fullWidth
54
- label={label}
55
- MenuProps={{
56
- PaperProps: {
57
- sx: { maxHeight: 300 },
58
- },
59
- }}
60
- onChange={props.onChange}
61
- >
62
- {inputOptions?.map((item, index) => (
63
- <MenuItem key={index} value={item.value}>
64
- {item.label}
65
- </MenuItem>
66
- ))}
67
- </Select>
68
- </FormControl>
69
- </>
70
- )
71
- }
72
-
73
- return (
74
- <Controller
75
- name={name}
76
- control={control}
77
- render={({ field, fieldState: { error } }) => (
78
- <>
79
- <FormControl fullWidth>
80
- <InputLabel id={name}>
81
- <FormLabel required={required} label={label} />
82
- </InputLabel>
83
- <Select
84
- error={Boolean(error)}
85
- variant="outlined"
86
- sx={{ color: textColor }}
87
- fullWidth
88
- label={label}
89
- displayEmpty={firstItemEmpty}
90
- MenuProps={{
91
- PaperProps: {
92
- sx: { maxHeight: 300 },
93
- },
94
- }}
95
- value={field.value}
96
- onChange={(e) => {
97
- if (onChange) onChange(e.target.value)
98
- field.onChange(e.target.value)
99
- }}
100
- >
101
- {inputOptions?.map((item, index) => (
102
- <MenuItem key={index} value={item.value}>
103
- {item.label}
104
- </MenuItem>
105
- ))}
106
- </Select>
107
- </FormControl>
108
- {error && (
109
- <Typography
110
- fontSize={12}
111
- sx={{
112
- paddingLeft: '2px',
113
- marginTop: '2px',
114
- }}
115
- color="error"
116
- >
117
- {error.message}
118
- </Typography>
119
- )}
120
- </>
121
- )}
122
- />
123
- )
124
- }
1
+ import {
2
+ FormControl,
3
+ InputLabel,
4
+ MenuItem,
5
+ Select,
6
+ SelectProps,
7
+ Typography,
8
+ } from '@mui/material'
9
+ import { ReactNode } from 'react'
10
+ import { Controller } from 'react-hook-form'
11
+ import FormLabel from './FormLabel'
12
+ interface Props extends SelectProps {
13
+ name?: string
14
+ control?: any
15
+ options: Array<{ label: ReactNode; value: any }>
16
+ label?: string
17
+ textColor?: string
18
+ onChange?: (value: any) => void
19
+ required?: boolean
20
+ hookForm?: boolean
21
+ firstItemEmpty?: boolean
22
+ }
23
+
24
+ export default function SingleSelect(props: Props) {
25
+ const {
26
+ name = 'select',
27
+ options = [],
28
+ control,
29
+ label,
30
+ textColor,
31
+ onChange,
32
+ required,
33
+ hookForm = true,
34
+ firstItemEmpty = false,
35
+ } = props
36
+
37
+ const inputOptions = firstItemEmpty
38
+ ? [{ label: 'All', value: '__empty__' }, ...options]
39
+ : options
40
+
41
+ if (!hookForm) {
42
+ return (
43
+ <>
44
+ <FormControl fullWidth sx={props.sx}>
45
+ <InputLabel id={name}>
46
+ <FormLabel required={required} label={label} />
47
+ </InputLabel>
48
+ <Select
49
+ variant="outlined"
50
+ id={name}
51
+ value={props.value}
52
+ displayEmpty={firstItemEmpty}
53
+ fullWidth
54
+ label={label}
55
+ MenuProps={{
56
+ PaperProps: {
57
+ sx: { maxHeight: 300 },
58
+ },
59
+ }}
60
+ onChange={props.onChange}
61
+ >
62
+ {inputOptions?.map((item, index) => (
63
+ <MenuItem key={index} value={item.value}>
64
+ {item.label}
65
+ </MenuItem>
66
+ ))}
67
+ </Select>
68
+ </FormControl>
69
+ </>
70
+ )
71
+ }
72
+
73
+ return (
74
+ <Controller
75
+ name={name}
76
+ control={control}
77
+ render={({ field, fieldState: { error } }) => (
78
+ <>
79
+ <FormControl fullWidth>
80
+ <InputLabel id={name}>
81
+ <FormLabel required={required} label={label} />
82
+ </InputLabel>
83
+ <Select
84
+ error={Boolean(error)}
85
+ variant="outlined"
86
+ sx={{ color: textColor }}
87
+ fullWidth
88
+ label={label}
89
+ displayEmpty={firstItemEmpty}
90
+ MenuProps={{
91
+ PaperProps: {
92
+ sx: { maxHeight: 300 },
93
+ },
94
+ }}
95
+ value={field.value}
96
+ onChange={(e) => {
97
+ if (onChange) onChange(e.target.value)
98
+ field.onChange(e.target.value)
99
+ }}
100
+ >
101
+ {inputOptions?.map((item, index) => (
102
+ <MenuItem key={index} value={item.value}>
103
+ {item.label}
104
+ </MenuItem>
105
+ ))}
106
+ </Select>
107
+ </FormControl>
108
+ {error && (
109
+ <Typography
110
+ fontSize={12}
111
+ sx={{
112
+ paddingLeft: '2px',
113
+ marginTop: '2px',
114
+ }}
115
+ color="error"
116
+ >
117
+ {error.message}
118
+ </Typography>
119
+ )}
120
+ </>
121
+ )}
122
+ />
123
+ )
124
+ }