@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,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,55 +1,55 @@
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
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
- <Typography variant="subtitle2">{label}</Typography>
37
- {required && (
38
- <Typography fontSize={14} component={'span'} color="error">
39
- {' *'}
40
- </Typography>
41
- )}
42
- </Box>
43
- <MuiRadioGroup value={value} onChange={onChange} row={row} name={name}>
44
- {options.map((item, index) => (
45
- <FormControlLabel
46
- key={index}
47
- value={item.value}
48
- control={<Radio />}
49
- label={item.label}
50
- />
51
- ))}
52
- </MuiRadioGroup>
53
- </Box>
54
- )
55
- }
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
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
+ <Typography variant="subtitle2">{label}</Typography>
37
+ {required && (
38
+ <Typography fontSize={14} component={'span'} color="error">
39
+ {' *'}
40
+ </Typography>
41
+ )}
42
+ </Box>
43
+ <MuiRadioGroup value={value} onChange={onChange} row={row} name={name}>
44
+ {options.map((item, index) => (
45
+ <FormControlLabel
46
+ key={index}
47
+ value={item.value}
48
+ control={<Radio />}
49
+ label={item.label}
50
+ />
51
+ ))}
52
+ </MuiRadioGroup>
53
+ </Box>
54
+ )
55
+ }
@@ -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,139 +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
- }
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
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
+ }