@campxdev/shared 1.8.4 → 1.8.6

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 (225) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +19 -19
  3. package/package.json +86 -86
  4. package/src/assets/fonts/avenir/index.ts +13 -13
  5. package/src/assets/fonts/poppins/index.ts +18 -18
  6. package/src/assets/images/index.ts +17 -17
  7. package/src/assets/images/unauth.svg +92 -92
  8. package/src/components/ActionButton.tsx +20 -20
  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 +123 -123
  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/AnchorElement.tsx +44 -44
  24. package/src/components/DropDownButton/DropDownButton.tsx +184 -184
  25. package/src/components/DropDownButton/DropdownMenuItem.tsx +110 -110
  26. package/src/components/DropDownButton/index.tsx +1 -1
  27. package/src/components/DropDownButton/styles.tsx +59 -59
  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/ExcelToJsonInput/ExcelJsonUpload.tsx +50 -50
  34. package/src/components/ExcelToJsonInput/ExcelToJsonInput.tsx +57 -57
  35. package/src/components/ExcelToJsonInput/index.tsx +1 -1
  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 +147 -147
  40. package/src/components/Form/RenderForm.tsx +189 -189
  41. package/src/components/FullScreenLoader.tsx +19 -19
  42. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  43. package/src/components/HookForm/DatePicker.tsx +40 -40
  44. package/src/components/HookForm/DateTimePicker.tsx +47 -47
  45. package/src/components/HookForm/FormLabel.tsx +14 -14
  46. package/src/components/HookForm/MultiCheckbox.tsx +69 -69
  47. package/src/components/HookForm/MultiSelect.tsx +53 -53
  48. package/src/components/HookForm/RadioGroup.tsx +47 -47
  49. package/src/components/HookForm/SingleCheckbox.tsx +34 -34
  50. package/src/components/HookForm/SingleSelect.tsx +46 -46
  51. package/src/components/HookForm/TextField.tsx +40 -40
  52. package/src/components/HookForm/TimePicker.tsx +40 -40
  53. package/src/components/HookForm/index.ts +23 -23
  54. package/src/components/IconButtons/IconButtons.tsx +137 -137
  55. package/src/components/IconButtons/Icons.tsx +268 -268
  56. package/src/components/IconButtons/assets/edit.svg +4 -4
  57. package/src/components/IconButtons/assets/eye.svg +6 -6
  58. package/src/components/IconButtons/assets/trash.svg +7 -7
  59. package/src/components/IconButtons/index.tsx +8 -8
  60. package/src/components/IconLabel.tsx +37 -37
  61. package/src/components/Image/Image.tsx +45 -45
  62. package/src/components/Image/index.tsx +1 -1
  63. package/src/components/ImageUpload.tsx +98 -98
  64. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +216 -216
  65. package/src/components/Input/AsyncSearchSelect/index.tsx +1 -1
  66. package/src/components/Input/AsyncSearchSelect/styles.tsx +105 -105
  67. package/src/components/Input/AutoCompleteSearch.tsx +121 -121
  68. package/src/components/Input/DatePicker.tsx +76 -76
  69. package/src/components/Input/DateRangePicker.tsx +105 -105
  70. package/src/components/Input/DateTimePicker.tsx +84 -84
  71. package/src/components/Input/FormLabel.tsx +21 -21
  72. package/src/components/Input/MultiCheckbox.tsx +64 -64
  73. package/src/components/Input/MultiSelect.tsx +150 -150
  74. package/src/components/Input/RadioGroup.tsx +104 -104
  75. package/src/components/Input/SingleCheckbox.tsx +78 -78
  76. package/src/components/Input/SingleSelect.tsx +104 -104
  77. package/src/components/Input/TextField.tsx +46 -46
  78. package/src/components/Input/TimePicker.tsx +77 -77
  79. package/src/components/Input/index.ts +26 -26
  80. package/src/components/Input/types.ts +3 -3
  81. package/src/components/JsonPreview.tsx +7 -7
  82. package/src/components/LabelValue.tsx +21 -21
  83. package/src/components/Layout/ChangePassword.tsx +49 -49
  84. package/src/components/Layout/Header/AppHeader.tsx +112 -112
  85. package/src/components/Layout/Header/AppsMenu.tsx +105 -105
  86. package/src/components/Layout/Header/HeaderActions/CogWheelMenu.tsx +33 -33
  87. package/src/components/Layout/Header/HeaderActions/FreshDeskHelpButton.tsx +24 -24
  88. package/src/components/Layout/Header/HeaderActions/HeaderActions.tsx +18 -18
  89. package/src/components/Layout/Header/HeaderActions/UserBox.tsx +56 -56
  90. package/src/components/Layout/Header/Notification.tsx +13 -13
  91. package/src/components/Layout/Header/applications.ts +103 -103
  92. package/src/components/Layout/Header/assets/campx_square_small.svg +8 -8
  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 +11 -11
  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 +35 -35
  102. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  103. package/src/components/Layout/Header/assets/pay_small.svg +15 -15
  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 +133 -133
  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 +279 -279
  126. package/src/components/MediaRow/MediaRow.tsx +67 -67
  127. package/src/components/MediaRow/index.tsx +1 -1
  128. package/src/components/ModalButtons/DialogButton.tsx +126 -126
  129. package/src/components/ModalButtons/DrawerButton.tsx +115 -115
  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/ResetPassword.tsx +107 -107
  140. package/src/components/Row.tsx +24 -24
  141. package/src/components/Spinner.tsx +18 -18
  142. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  143. package/src/components/StepsHeader/index.tsx +1 -1
  144. package/src/components/StyledTableContainer.tsx +33 -33
  145. package/src/components/SwitchButton.tsx +41 -41
  146. package/src/components/Table.tsx +42 -42
  147. package/src/components/Tables/BasicTable/Table.tsx +198 -198
  148. package/src/components/Tables/BasicTable/TableFooter.tsx +86 -86
  149. package/src/components/Tables/BasicTable/index.tsx +1 -1
  150. package/src/components/Tables/ReactTable/BatchActionsHeader.tsx +58 -58
  151. package/src/components/Tables/ReactTable/ReactTable.tsx +295 -295
  152. package/src/components/Tables/ReactTable/RenderTableBody.tsx +49 -49
  153. package/src/components/Tables/ReactTable/index.tsx +1 -1
  154. package/src/components/Tables/ReactTable/react-table-config.d.ts +128 -128
  155. package/src/components/Tables/common/NoRecordsFound.tsx +27 -27
  156. package/src/components/Tables/common/TableStats.tsx +22 -22
  157. package/src/components/Tables/common/icons.tsx +50 -50
  158. package/src/components/Tables/common/styles.tsx +170 -170
  159. package/src/components/Tables/common/types.ts +57 -57
  160. package/src/components/Tabs/NavigationTabs.tsx +80 -80
  161. package/src/components/Tabs/Tabs.tsx +53 -53
  162. package/src/components/Tabs/TabsContainer.tsx +50 -50
  163. package/src/components/Tabs/index.tsx +1 -1
  164. package/src/components/Tabs/styles.tsx +55 -55
  165. package/src/components/ToastContainer/ToastContainer.tsx +57 -57
  166. package/src/components/ToastContainer/index.tsx +1 -1
  167. package/src/components/UploadButton/UploadButton.tsx +126 -126
  168. package/src/components/UploadButton/index.tsx +1 -1
  169. package/src/components/UploadButton/types.ts +19 -19
  170. package/src/components/UploadDocument.tsx +108 -108
  171. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  172. package/src/components/UploadFileDialog/index.tsx +1 -1
  173. package/src/components/index.ts +106 -106
  174. package/src/config/axios.ts +73 -73
  175. package/src/config/axiosEvaluator.ts +53 -53
  176. package/src/config/axiosXTenant.ts +57 -57
  177. package/src/constants/UIConstants.ts +97 -97
  178. package/src/constants/formValidations.ts +6 -6
  179. package/src/constants/index.ts +5 -5
  180. package/src/constants/isDevelopment.ts +4 -4
  181. package/src/constants/permissions.ts +67 -67
  182. package/src/constants/validateMessages.ts +12 -12
  183. package/src/contexts/LoginFormProvider.tsx +44 -44
  184. package/src/contexts/Providers.tsx +50 -50
  185. package/src/contexts/PublicProviders.tsx +30 -30
  186. package/src/contexts/QueryClientProvider.tsx +22 -22
  187. package/src/hooks/index.ts +4 -4
  188. package/src/hooks/useAuth.ts +96 -96
  189. package/src/hooks/useFetch.ts +53 -53
  190. package/src/hooks/useFilters.ts +83 -80
  191. package/src/hooks/useRouter.ts +31 -31
  192. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  193. package/src/layouts/Components/icons/index.tsx +403 -403
  194. package/src/layouts/Components/styles.tsx +74 -74
  195. package/src/layouts/ComponentsLayout.tsx +3 -3
  196. package/src/permissions/PageWithPermission.tsx +18 -18
  197. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  198. package/src/permissions/ValidateAccess.tsx +18 -18
  199. package/src/permissions/index.ts +2 -2
  200. package/src/react-app-env.d.ts +1 -1
  201. package/src/shared-state/AssetsStore.ts +15 -15
  202. package/src/shared-state/PermissionsStore.ts +356 -356
  203. package/src/shared-state/UserStore.ts +13 -13
  204. package/src/shared-state/index.ts +4 -4
  205. package/src/theme/App.less +3 -3
  206. package/src/theme/MuiThemeProvider.tsx +18 -18
  207. package/src/theme/customCssBaseline.ts +135 -135
  208. package/src/theme/index.css +28 -28
  209. package/src/theme/muiTheme.ts +595 -595
  210. package/src/theme/theme.d.ts +75 -75
  211. package/src/utils/adminAxios.ts +15 -15
  212. package/src/utils/alphabet.ts +23 -23
  213. package/src/utils/arrayPadEnd.ts +3 -3
  214. package/src/utils/formatCurrency.ts +9 -9
  215. package/src/utils/getUrlParams.ts +5 -5
  216. package/src/utils/index.ts +7 -7
  217. package/src/utils/logout.ts +25 -25
  218. package/src/utils/ordinalSuffixOf.ts +14 -14
  219. package/src/utils/romanize.ts +40 -40
  220. package/src/utils/withRouteWrapper.tsx +25 -25
  221. package/src/utils/withSuspense.tsx +6 -6
  222. package/styled-components.tsx +60 -60
  223. package/tsconfig.json +21 -21
  224. package/yarn-error.log +109 -0
  225. 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,76 +1,76 @@
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
- options={{
37
- dateFormat: 'd-m-Y',
38
- minDate,
39
- maxDate,
40
- allowInput: true,
41
- }}
42
- onChange={(dates: Date[]) => {
43
- if (onChange) onChange(dates[0])
44
- }}
45
- onClose={(dates) => {
46
- if (onChange) onChange(dates[0])
47
- }}
48
- value={value || null}
49
- render={(
50
- props: Omit<DateTimePickerProps, 'options' | 'render'>,
51
- ref: (node: HTMLInputElement | null) => void,
52
- ) => {
53
- return (
54
- <TextField
55
- size={size}
56
- placeholder={placeholder}
57
- label={label}
58
- name={name}
59
- variant="outlined"
60
- autoComplete="off"
61
- required={required}
62
- inputRef={ref}
63
- InputProps={{
64
- endAdornment: (
65
- <InputAdornment position="end">
66
- <EventIcon />
67
- </InputAdornment>
68
- ),
69
- }}
70
- {...rest.inputProps}
71
- />
72
- )
73
- }}
74
- />
75
- )
76
- }
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
+ options={{
37
+ dateFormat: 'd-m-Y',
38
+ minDate,
39
+ maxDate,
40
+ allowInput: true,
41
+ }}
42
+ onChange={(dates: Date[]) => {
43
+ if (onChange) onChange(dates[0])
44
+ }}
45
+ onClose={(dates) => {
46
+ if (onChange) onChange(dates[0])
47
+ }}
48
+ value={value || null}
49
+ render={(
50
+ props: Omit<DateTimePickerProps, 'options' | 'render'>,
51
+ ref: (node: HTMLInputElement | null) => void,
52
+ ) => {
53
+ return (
54
+ <TextField
55
+ size={size}
56
+ placeholder={placeholder}
57
+ label={label}
58
+ name={name}
59
+ variant="outlined"
60
+ autoComplete="off"
61
+ required={required}
62
+ inputRef={ref}
63
+ InputProps={{
64
+ endAdornment: (
65
+ <InputAdornment position="end">
66
+ <EventIcon />
67
+ </InputAdornment>
68
+ ),
69
+ }}
70
+ {...rest.inputProps}
71
+ />
72
+ )
73
+ }}
74
+ />
75
+ )
76
+ }
@@ -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
+ }