@campxdev/shared 1.5.7 → 1.5.9

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 (222) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +18 -18
  3. package/package.json +86 -86
  4. package/src/assets/fonts/avenir/Avenir-Heavy.ttf +0 -0
  5. package/src/assets/fonts/avenir/Avenir-Medium.ttf +0 -0
  6. package/src/assets/fonts/avenir/Avenir-Regular.ttf +0 -0
  7. package/src/assets/fonts/avenir/index.ts +13 -13
  8. package/src/assets/fonts/poppins/index.ts +18 -18
  9. package/src/assets/images/index.ts +17 -17
  10. package/src/assets/images/unauth.svg +92 -92
  11. package/src/components/ActionButton.tsx +20 -20
  12. package/src/components/Attachment.tsx +26 -26
  13. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  14. package/src/components/AutocompleteSearch/index.tsx +1 -1
  15. package/src/components/Breadcrumbs.tsx +72 -72
  16. package/src/components/Card.tsx +98 -98
  17. package/src/components/CardsGrid.tsx +28 -28
  18. package/src/components/ChangePassword.tsx +123 -123
  19. package/src/components/Chips.tsx +81 -81
  20. package/src/components/Detail.tsx +15 -15
  21. package/src/components/DetailsGrid.tsx +52 -52
  22. package/src/components/DividerHeading.tsx +41 -41
  23. package/src/components/DrawerWrapper/DialogWrapper.tsx +67 -67
  24. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  25. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  26. package/src/components/DropDownButton/AnchorElement.tsx +44 -44
  27. package/src/components/DropDownButton/DropDownButton.tsx +184 -184
  28. package/src/components/DropDownButton/DropdownMenuItem.tsx +110 -110
  29. package/src/components/DropDownButton/index.tsx +1 -1
  30. package/src/components/DropDownButton/styles.tsx +59 -59
  31. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  32. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  33. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  34. package/src/components/ErrorBoundary/index.tsx +1 -1
  35. package/src/components/ErrorBox.tsx +42 -42
  36. package/src/components/FilterComponents/FilterButton.tsx +56 -56
  37. package/src/components/FilterComponents/SearchBar.tsx +45 -45
  38. package/src/components/FloatingContainer.tsx +33 -33
  39. package/src/components/Form/Form.tsx +156 -156
  40. package/src/components/Form/RenderForm.tsx +188 -188
  41. package/src/components/FullCalendar/Actions.tsx +162 -162
  42. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  43. package/src/components/FullScreenLoader.tsx +19 -19
  44. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  45. package/src/components/HookForm/DatePicker.tsx +40 -40
  46. package/src/components/HookForm/DateTimePicker.tsx +47 -47
  47. package/src/components/HookForm/FormLabel.tsx +14 -14
  48. package/src/components/HookForm/MultiCheckbox.tsx +69 -69
  49. package/src/components/HookForm/MultiSelect.tsx +53 -53
  50. package/src/components/HookForm/RadioGroup.tsx +45 -45
  51. package/src/components/HookForm/SingleCheckbox.tsx +34 -34
  52. package/src/components/HookForm/SingleSelect.tsx +46 -46
  53. package/src/components/HookForm/TextField.tsx +40 -40
  54. package/src/components/HookForm/TimePicker.tsx +40 -40
  55. package/src/components/HookForm/index.ts +23 -23
  56. package/src/components/IconButtons/IconButtons.tsx +137 -137
  57. package/src/components/IconButtons/Icons.tsx +268 -268
  58. package/src/components/IconButtons/assets/edit.svg +4 -4
  59. package/src/components/IconButtons/assets/eye.svg +6 -6
  60. package/src/components/IconButtons/assets/trash.svg +7 -7
  61. package/src/components/IconButtons/index.tsx +8 -8
  62. package/src/components/IconLabel.tsx +37 -37
  63. package/src/components/Image/Image.tsx +45 -45
  64. package/src/components/Image/index.tsx +1 -1
  65. package/src/components/ImageUpload.tsx +98 -98
  66. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +216 -216
  67. package/src/components/Input/AsyncSearchSelect/index.tsx +1 -1
  68. package/src/components/Input/AsyncSearchSelect/styles.tsx +105 -105
  69. package/src/components/Input/AutoCompleteSearch.tsx +121 -121
  70. package/src/components/Input/DatePicker.tsx +73 -73
  71. package/src/components/Input/DateRangePicker.tsx +105 -105
  72. package/src/components/Input/DateTimePicker.tsx +81 -81
  73. package/src/components/Input/FormLabel.tsx +21 -21
  74. package/src/components/Input/MultiCheckbox.tsx +64 -64
  75. package/src/components/Input/MultiSelect.tsx +150 -150
  76. package/src/components/Input/RadioGroup.tsx +104 -104
  77. package/src/components/Input/SingleCheckbox.tsx +78 -78
  78. package/src/components/Input/SingleSelect.tsx +104 -104
  79. package/src/components/Input/TextField.tsx +46 -46
  80. package/src/components/Input/TimePicker.tsx +74 -74
  81. package/src/components/Input/index.ts +26 -26
  82. package/src/components/Input/types.ts +3 -3
  83. package/src/components/JsonPreview.tsx +7 -7
  84. package/src/components/LabelValue.tsx +21 -21
  85. package/src/components/Layout/ChangePassword.tsx +49 -49
  86. package/src/components/Layout/Header/AppHeader.tsx +102 -102
  87. package/src/components/Layout/Header/AppsMenu.tsx +98 -98
  88. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  89. package/src/components/Layout/Header/Notification.tsx +13 -13
  90. package/src/components/Layout/Header/UserBox.tsx +70 -70
  91. package/src/components/Layout/Header/applications.ts +91 -91
  92. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  93. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  94. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  95. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  96. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  97. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  98. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  99. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  100. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  101. package/src/components/Layout/Header/assets/index.ts +33 -33
  102. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  103. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  104. package/src/components/Layout/Header/assets/payx.svg +19 -19
  105. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  106. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  107. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  108. package/src/components/Layout/Header/icons.tsx +57 -57
  109. package/src/components/Layout/Header/index.tsx +1 -1
  110. package/src/components/Layout/Header/styles.tsx +124 -124
  111. package/src/components/Layout/Helmet.tsx +49 -49
  112. package/src/components/Layout/LayoutWrapper.tsx +28 -28
  113. package/src/components/Layout/SideMenuHeader.tsx +29 -29
  114. package/src/components/Layout/SideNav.tsx +168 -168
  115. package/src/components/Layout/Tickets/HelpWidget/HelpWidget.tsx +273 -273
  116. package/src/components/Layout/Tickets/HelpWidget/styles.tsx +94 -94
  117. package/src/components/Layout/Tickets/MyTickets.tsx +72 -72
  118. package/src/components/Layout/Tickets/TicketDetails.tsx +65 -65
  119. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  120. package/src/components/Layout/Tickets/index.tsx +1 -1
  121. package/src/components/Layout/Tickets/services.ts +11 -11
  122. package/src/components/Layout/Tickets/styles.tsx +136 -136
  123. package/src/components/LinearProgress.tsx +19 -19
  124. package/src/components/ListItemButton.tsx +95 -95
  125. package/src/components/LoginForm.tsx +80 -80
  126. package/src/components/MediaRow/MediaRow.tsx +69 -69
  127. package/src/components/MediaRow/index.tsx +1 -1
  128. package/src/components/ModalButtons/DialogButton.tsx +121 -121
  129. package/src/components/ModalButtons/DrawerButton.tsx +113 -113
  130. package/src/components/ModalButtons/index.tsx +4 -4
  131. package/src/components/NoDataIllustration.tsx +32 -32
  132. package/src/components/PageContent.tsx +12 -12
  133. package/src/components/PageHeader.tsx +55 -55
  134. package/src/components/PageNotFound.tsx +26 -26
  135. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  136. package/src/components/PopupConfirm/PopupConfirm.tsx +67 -67
  137. package/src/components/PopupConfirm/index.tsx +1 -1
  138. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  139. package/src/components/Row.tsx +24 -24
  140. package/src/components/Spinner.tsx +18 -18
  141. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  142. package/src/components/StepsHeader/index.tsx +1 -1
  143. package/src/components/StyledTableContainer.tsx +33 -33
  144. package/src/components/SwitchButton.tsx +41 -41
  145. package/src/components/Table.tsx +42 -42
  146. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  147. package/src/components/TableComponent/Icons/index.tsx +50 -50
  148. package/src/components/TableComponent/ReactTable.tsx +295 -295
  149. package/src/components/TableComponent/RenderTableBody.tsx +68 -68
  150. package/src/components/TableComponent/Table.tsx +197 -197
  151. package/src/components/TableComponent/TableFooter/TableFooter.tsx +104 -104
  152. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  153. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  154. package/src/components/TableComponent/index.tsx +1 -1
  155. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  156. package/src/components/TableComponent/styles.tsx +170 -170
  157. package/src/components/TableComponent/types.ts +57 -57
  158. package/src/components/Tabs/NavigationTabs.tsx +80 -80
  159. package/src/components/Tabs/Tabs.tsx +53 -53
  160. package/src/components/Tabs/TabsContainer.tsx +50 -50
  161. package/src/components/Tabs/index.tsx +1 -1
  162. package/src/components/Tabs/styles.tsx +55 -55
  163. package/src/components/ToastContainer/ToastContainer.tsx +57 -57
  164. package/src/components/ToastContainer/index.tsx +1 -1
  165. package/src/components/UploadButton/UploadButton.tsx +126 -126
  166. package/src/components/UploadButton/index.tsx +1 -1
  167. package/src/components/UploadButton/types.ts +19 -19
  168. package/src/components/UploadDocument.tsx +108 -108
  169. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  170. package/src/components/UploadFileDialog/index.tsx +1 -1
  171. package/src/components/index.ts +93 -93
  172. package/src/config/axios.ts +73 -73
  173. package/src/config/axiosEvaluator.ts +53 -53
  174. package/src/config/axiosXTenant.ts +57 -57
  175. package/src/constants/UIConstants.ts +97 -97
  176. package/src/constants/formValidations.ts +6 -6
  177. package/src/constants/index.ts +5 -5
  178. package/src/constants/isDevelopment.ts +3 -3
  179. package/src/constants/permissions.ts +67 -67
  180. package/src/constants/validateMessages.ts +12 -12
  181. package/src/contexts/LoginFormProvider.tsx +39 -39
  182. package/src/contexts/Providers.tsx +73 -73
  183. package/src/contexts/PublicProviders.tsx +30 -30
  184. package/src/contexts/QueryClientProvider.tsx +22 -22
  185. package/src/hooks/index.ts +4 -4
  186. package/src/hooks/useAuth.ts +96 -96
  187. package/src/hooks/useFetch.ts +53 -53
  188. package/src/hooks/useFilters.ts +80 -80
  189. package/src/hooks/useRouter.ts +31 -31
  190. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  191. package/src/layouts/Components/icons/index.tsx +403 -403
  192. package/src/layouts/Components/styles.tsx +74 -74
  193. package/src/layouts/ComponentsLayout.tsx +3 -3
  194. package/src/permissions/PageWithPermission.tsx +18 -18
  195. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  196. package/src/permissions/ValidateAccess.tsx +18 -18
  197. package/src/permissions/index.ts +2 -2
  198. package/src/react-app-env.d.ts +1 -1
  199. package/src/shared-state/AssetsStore.ts +15 -15
  200. package/src/shared-state/PermissionsStore.ts +352 -352
  201. package/src/shared-state/UserStore.ts +13 -13
  202. package/src/shared-state/index.ts +4 -4
  203. package/src/theme/App.less +3 -3
  204. package/src/theme/MuiThemeProvider.tsx +13 -13
  205. package/src/theme/customCssBaseline.ts +135 -135
  206. package/src/theme/index.css +28 -28
  207. package/src/theme/muiTheme.ts +592 -592
  208. package/src/theme/theme.d.ts +75 -75
  209. package/src/utils/alphabet.ts +23 -23
  210. package/src/utils/arrayPadEnd.ts +3 -3
  211. package/src/utils/formatCurrency.ts +9 -9
  212. package/src/utils/getUrlParams.ts +5 -5
  213. package/src/utils/index.ts +7 -7
  214. package/src/utils/logout.ts +25 -25
  215. package/src/utils/ordinalSuffixOf.ts +14 -14
  216. package/src/utils/romanize.ts +40 -40
  217. package/src/utils/withRouteWrapper.tsx +25 -25
  218. package/src/utils/withSuspense.tsx +6 -6
  219. package/styled-components.tsx +60 -60
  220. package/tsconfig.json +21 -21
  221. package/yarn-error.log +109 -0
  222. package/src/components/Layout/Header/assets/commuteX.png +0 -0
@@ -1,121 +1,121 @@
1
- import {
2
- Autocomplete,
3
- Box,
4
- CircularProgress,
5
- TextField,
6
- Typography,
7
- } from '@mui/material'
8
- import { Controller } from 'react-hook-form'
9
- import FormLabel from './FormLabel'
10
-
11
- type Option = {
12
- value: string | any
13
- label: string | any
14
- }
15
-
16
- interface MultiSelectProps {
17
- control?: any
18
- label: string
19
- name: string
20
- options: { value: string | any; label: string | any }[]
21
- placeholder?: string
22
- hookForm?: boolean
23
- loading?: boolean
24
- [key: string]: any
25
- multiple?: boolean
26
- }
27
-
28
- export default function AutoCompleteSearch({
29
- control,
30
- name,
31
- options,
32
- label,
33
- loading, // pass this variable when options are from an async operation
34
- hookForm = true,
35
- multiple = false,
36
- ...props
37
- }: MultiSelectProps) {
38
- if (!hookForm) {
39
- return (
40
- <Autocomplete
41
- multiple={multiple}
42
- value={props.value}
43
- fullWidth
44
- onChange={(e, value) => {
45
- props.onChange(value)
46
- }}
47
- options={options || []}
48
- getOptionLabel={(option: Option) => option?.label || ''}
49
- renderInput={(params) => (
50
- <TextField
51
- variant="outlined"
52
- label={
53
- <FormLabel label={label} required={props.required} name={name} />
54
- }
55
- {...params}
56
- />
57
- )}
58
- {...props}
59
- />
60
- )
61
- }
62
-
63
- return (
64
- <Controller
65
- control={control}
66
- name={name}
67
- render={({ field, fieldState: { error } }) => (
68
- <Box>
69
- <Autocomplete
70
- multiple={multiple}
71
- loading={loading}
72
- value={field.value}
73
- fullWidth
74
- onChange={(e, value) => {
75
- field.onChange(value)
76
- }}
77
- options={options || []}
78
- getOptionLabel={(option: Option) => option?.label || ''}
79
- renderInput={(params) => (
80
- <TextField
81
- error={Boolean(error)}
82
- variant="outlined"
83
- label={
84
- <FormLabel
85
- label={label}
86
- required={props.required}
87
- name={name}
88
- />
89
- }
90
- InputProps={{
91
- ...params.InputProps,
92
- endAdornment: (
93
- <>
94
- {loading ? (
95
- <CircularProgress color="inherit" size={20} />
96
- ) : null}
97
- {params.InputProps.endAdornment}
98
- </>
99
- ),
100
- }}
101
- {...params}
102
- />
103
- )}
104
- />
105
- {error && (
106
- <Typography
107
- fontSize={12}
108
- sx={{
109
- paddingLeft: '2px',
110
- marginTop: '2px',
111
- }}
112
- color="error"
113
- >
114
- {error?.message}
115
- </Typography>
116
- )}
117
- </Box>
118
- )}
119
- />
120
- )
121
- }
1
+ import {
2
+ Autocomplete,
3
+ Box,
4
+ CircularProgress,
5
+ TextField,
6
+ Typography,
7
+ } from '@mui/material'
8
+ import { Controller } from 'react-hook-form'
9
+ import FormLabel from './FormLabel'
10
+
11
+ type Option = {
12
+ value: string | any
13
+ label: string | any
14
+ }
15
+
16
+ interface MultiSelectProps {
17
+ control?: any
18
+ label: string
19
+ name: string
20
+ options: { value: string | any; label: string | any }[]
21
+ placeholder?: string
22
+ hookForm?: boolean
23
+ loading?: boolean
24
+ [key: string]: any
25
+ multiple?: boolean
26
+ }
27
+
28
+ export default function AutoCompleteSearch({
29
+ control,
30
+ name,
31
+ options,
32
+ label,
33
+ loading, // pass this variable when options are from an async operation
34
+ hookForm = true,
35
+ multiple = false,
36
+ ...props
37
+ }: MultiSelectProps) {
38
+ if (!hookForm) {
39
+ return (
40
+ <Autocomplete
41
+ multiple={multiple}
42
+ value={props.value}
43
+ fullWidth
44
+ onChange={(e, value) => {
45
+ props.onChange(value)
46
+ }}
47
+ options={options || []}
48
+ getOptionLabel={(option: Option) => option?.label || ''}
49
+ renderInput={(params) => (
50
+ <TextField
51
+ variant="outlined"
52
+ label={
53
+ <FormLabel label={label} required={props.required} name={name} />
54
+ }
55
+ {...params}
56
+ />
57
+ )}
58
+ {...props}
59
+ />
60
+ )
61
+ }
62
+
63
+ return (
64
+ <Controller
65
+ control={control}
66
+ name={name}
67
+ render={({ field, fieldState: { error } }) => (
68
+ <Box>
69
+ <Autocomplete
70
+ multiple={multiple}
71
+ loading={loading}
72
+ value={field.value}
73
+ fullWidth
74
+ onChange={(e, value) => {
75
+ field.onChange(value)
76
+ }}
77
+ options={options || []}
78
+ getOptionLabel={(option: Option) => option?.label || ''}
79
+ renderInput={(params) => (
80
+ <TextField
81
+ error={Boolean(error)}
82
+ variant="outlined"
83
+ label={
84
+ <FormLabel
85
+ label={label}
86
+ required={props.required}
87
+ name={name}
88
+ />
89
+ }
90
+ InputProps={{
91
+ ...params.InputProps,
92
+ endAdornment: (
93
+ <>
94
+ {loading ? (
95
+ <CircularProgress color="inherit" size={20} />
96
+ ) : null}
97
+ {params.InputProps.endAdornment}
98
+ </>
99
+ ),
100
+ }}
101
+ {...params}
102
+ />
103
+ )}
104
+ />
105
+ {error && (
106
+ <Typography
107
+ fontSize={12}
108
+ sx={{
109
+ paddingLeft: '2px',
110
+ marginTop: '2px',
111
+ }}
112
+ color="error"
113
+ >
114
+ {error?.message}
115
+ </Typography>
116
+ )}
117
+ </Box>
118
+ )}
119
+ />
120
+ )
121
+ }
@@ -1,73 +1,73 @@
1
- import EventIcon from '@mui/icons-material/Event'
2
- import { InputAdornment, TextFieldProps } from '@mui/material'
3
- import 'flatpickr/dist/flatpickr.css'
4
- import { ReactNode } from 'react'
5
- import Flatpickr, { DateTimePickerProps } from 'react-flatpickr'
6
- import TextField from './TextField'
7
-
8
- export interface IDatePicker {
9
- label?: ReactNode
10
- name?: string
11
- control?: any
12
- minDate?: Date | string | number
13
- maxDate?: Date | string | number
14
- required?: boolean
15
- value: Date | null
16
- onChange: (value: Date) => void
17
- placeholder?: string
18
- inputProps?: TextFieldProps
19
- size?: 'medium' | 'small'
20
- }
21
-
22
- export default function FormDatePicker({
23
- name,
24
- label,
25
- minDate,
26
- maxDate,
27
- value,
28
- onChange,
29
- placeholder,
30
- size = 'medium',
31
- required = false,
32
- ...rest
33
- }: IDatePicker) {
34
- return (
35
- <Flatpickr
36
- onChange={(dates: Date[]) => {
37
- if (onChange) onChange(dates[0])
38
- }}
39
- options={{
40
- dateFormat: 'd-m-Y',
41
- minDate,
42
- maxDate,
43
- allowInput: true,
44
- }}
45
- value={value || null}
46
- render={(
47
- props: Omit<DateTimePickerProps, 'options' | 'render'>,
48
- ref: (node: HTMLInputElement | null) => void,
49
- ) => {
50
- return (
51
- <TextField
52
- size={size}
53
- placeholder={placeholder}
54
- label={label}
55
- name={name}
56
- variant="outlined"
57
- autoComplete="off"
58
- required={required}
59
- inputRef={ref}
60
- InputProps={{
61
- endAdornment: (
62
- <InputAdornment position="end">
63
- <EventIcon />
64
- </InputAdornment>
65
- ),
66
- }}
67
- {...rest.inputProps}
68
- />
69
- )
70
- }}
71
- />
72
- )
73
- }
1
+ import EventIcon from '@mui/icons-material/Event'
2
+ import { InputAdornment, TextFieldProps } from '@mui/material'
3
+ import 'flatpickr/dist/flatpickr.css'
4
+ import { ReactNode } from 'react'
5
+ import Flatpickr, { DateTimePickerProps } from 'react-flatpickr'
6
+ import TextField from './TextField'
7
+
8
+ export interface IDatePicker {
9
+ label?: ReactNode
10
+ name?: string
11
+ control?: any
12
+ minDate?: Date | string | number
13
+ maxDate?: Date | string | number
14
+ required?: boolean
15
+ value: Date | null
16
+ onChange: (value: Date) => void
17
+ placeholder?: string
18
+ inputProps?: TextFieldProps
19
+ size?: 'medium' | 'small'
20
+ }
21
+
22
+ export default function FormDatePicker({
23
+ name,
24
+ label,
25
+ minDate,
26
+ maxDate,
27
+ value,
28
+ onChange,
29
+ placeholder,
30
+ size = 'medium',
31
+ required = false,
32
+ ...rest
33
+ }: IDatePicker) {
34
+ return (
35
+ <Flatpickr
36
+ onChange={(dates: Date[]) => {
37
+ if (onChange) onChange(dates[0])
38
+ }}
39
+ options={{
40
+ dateFormat: 'd-m-Y',
41
+ minDate,
42
+ maxDate,
43
+ allowInput: true,
44
+ }}
45
+ value={value || null}
46
+ render={(
47
+ props: Omit<DateTimePickerProps, 'options' | 'render'>,
48
+ ref: (node: HTMLInputElement | null) => void,
49
+ ) => {
50
+ return (
51
+ <TextField
52
+ size={size}
53
+ placeholder={placeholder}
54
+ label={label}
55
+ name={name}
56
+ variant="outlined"
57
+ autoComplete="off"
58
+ required={required}
59
+ inputRef={ref}
60
+ InputProps={{
61
+ endAdornment: (
62
+ <InputAdornment position="end">
63
+ <EventIcon />
64
+ </InputAdornment>
65
+ ),
66
+ }}
67
+ {...rest.inputProps}
68
+ />
69
+ )
70
+ }}
71
+ />
72
+ )
73
+ }
@@ -1,105 +1,105 @@
1
- import { Box, BoxProps, FormHelperText, styled, SvgIcon } from '@mui/material'
2
- import { ReactNode, useEffect, useState } from 'react'
3
- import { DateRangeIcon } from '../IconButtons'
4
- import DateTimePicker from './DateTimePicker'
5
- import FormLabel from './FormLabel'
6
-
7
- const StyledDateRangePicker = styled(Box)<{ size: 'small' | 'medium' }>(
8
- ({ theme, size }) => ({
9
- borderRadius: '10px',
10
- height: '50px',
11
- display: 'flex',
12
- justifyContent: 'space-between',
13
- alignItems: 'center',
14
- border: theme.borders.grayLight,
15
- '& .MuiOutlinedInput-notchedOutline': {
16
- display: 'none',
17
- },
18
- '& .MuiSvgIcon-root': {
19
- margin: '0 20px',
20
- marginTop: '8px',
21
- },
22
- ...(size === 'small' && {
23
- borderRadius: '5px',
24
- height: '40px',
25
- '& .MuiSvgIcon-root': {
26
- margin: '0 20px',
27
- marginTop: '8px',
28
- },
29
- }),
30
- }),
31
- )
32
-
33
- interface IDateRangePickerProps {
34
- value: {
35
- start: Date
36
- end: Date
37
- }
38
- onChange: (value: { start: Date; end: Date }) => void
39
- enableTime?: boolean
40
- size?: 'small' | 'medium'
41
- containerProps?: BoxProps
42
- label?: ReactNode
43
- required?: boolean
44
- name?: string
45
- error?: boolean
46
- helperText?: string
47
- }
48
- export default function DateRangePicker({
49
- value,
50
- onChange,
51
- enableTime = false,
52
- size = 'medium',
53
- containerProps,
54
- required,
55
- error,
56
- helperText,
57
- label,
58
- name,
59
- }: IDateRangePickerProps) {
60
- const [state, setState] = useState({
61
- start: null,
62
- end: null,
63
- })
64
-
65
- useEffect(() => {
66
- setState(value)
67
- }, [value])
68
-
69
- return (
70
- <Box width={'100%'} {...containerProps}>
71
- <FormLabel
72
- required={required}
73
- name={name ?? 'date-range-picker'}
74
- label={label}
75
- />
76
- <StyledDateRangePicker size={size}>
77
- <DateTimePicker
78
- placeholder="From Date"
79
- value={state.start}
80
- onChange={(value) => {
81
- setState((prev) => ({ ...prev, start: value }))
82
- onChange({ ...state, start: value })
83
- }}
84
- enableTime={enableTime}
85
- inputProps={{ InputProps: null, size: size }}
86
- />
87
- <SvgIcon>
88
- <DateRangeIcon />
89
- </SvgIcon>
90
- <DateTimePicker
91
- minDate={state[0]}
92
- placeholder="To Date"
93
- enableTime={enableTime}
94
- value={state.end}
95
- onChange={(value) => {
96
- setState((prev) => ({ ...prev, end: value }))
97
- onChange({ ...state, end: value })
98
- }}
99
- inputProps={{ InputProps: null, size: size }}
100
- />
101
- </StyledDateRangePicker>
102
- <>{error && <FormHelperText>{helperText}</FormHelperText>}</>
103
- </Box>
104
- )
105
- }
1
+ import { Box, BoxProps, FormHelperText, styled, SvgIcon } from '@mui/material'
2
+ import { ReactNode, useEffect, useState } from 'react'
3
+ import { DateRangeIcon } from '../IconButtons'
4
+ import DateTimePicker from './DateTimePicker'
5
+ import FormLabel from './FormLabel'
6
+
7
+ const StyledDateRangePicker = styled(Box)<{ size: 'small' | 'medium' }>(
8
+ ({ theme, size }) => ({
9
+ borderRadius: '10px',
10
+ height: '50px',
11
+ display: 'flex',
12
+ justifyContent: 'space-between',
13
+ alignItems: 'center',
14
+ border: theme.borders.grayLight,
15
+ '& .MuiOutlinedInput-notchedOutline': {
16
+ display: 'none',
17
+ },
18
+ '& .MuiSvgIcon-root': {
19
+ margin: '0 20px',
20
+ marginTop: '8px',
21
+ },
22
+ ...(size === 'small' && {
23
+ borderRadius: '5px',
24
+ height: '40px',
25
+ '& .MuiSvgIcon-root': {
26
+ margin: '0 20px',
27
+ marginTop: '8px',
28
+ },
29
+ }),
30
+ }),
31
+ )
32
+
33
+ interface IDateRangePickerProps {
34
+ value: {
35
+ start: Date
36
+ end: Date
37
+ }
38
+ onChange: (value: { start: Date; end: Date }) => void
39
+ enableTime?: boolean
40
+ size?: 'small' | 'medium'
41
+ containerProps?: BoxProps
42
+ label?: ReactNode
43
+ required?: boolean
44
+ name?: string
45
+ error?: boolean
46
+ helperText?: string
47
+ }
48
+ export default function DateRangePicker({
49
+ value,
50
+ onChange,
51
+ enableTime = false,
52
+ size = 'medium',
53
+ containerProps,
54
+ required,
55
+ error,
56
+ helperText,
57
+ label,
58
+ name,
59
+ }: IDateRangePickerProps) {
60
+ const [state, setState] = useState({
61
+ start: null,
62
+ end: null,
63
+ })
64
+
65
+ useEffect(() => {
66
+ setState(value)
67
+ }, [value])
68
+
69
+ return (
70
+ <Box width={'100%'} {...containerProps}>
71
+ <FormLabel
72
+ required={required}
73
+ name={name ?? 'date-range-picker'}
74
+ label={label}
75
+ />
76
+ <StyledDateRangePicker size={size}>
77
+ <DateTimePicker
78
+ placeholder="From Date"
79
+ value={state.start}
80
+ onChange={(value) => {
81
+ setState((prev) => ({ ...prev, start: value }))
82
+ onChange({ ...state, start: value })
83
+ }}
84
+ enableTime={enableTime}
85
+ inputProps={{ InputProps: null, size: size }}
86
+ />
87
+ <SvgIcon>
88
+ <DateRangeIcon />
89
+ </SvgIcon>
90
+ <DateTimePicker
91
+ minDate={state[0]}
92
+ placeholder="To Date"
93
+ enableTime={enableTime}
94
+ value={state.end}
95
+ onChange={(value) => {
96
+ setState((prev) => ({ ...prev, end: value }))
97
+ onChange({ ...state, end: value })
98
+ }}
99
+ inputProps={{ InputProps: null, size: size }}
100
+ />
101
+ </StyledDateRangePicker>
102
+ <>{error && <FormHelperText>{helperText}</FormHelperText>}</>
103
+ </Box>
104
+ )
105
+ }