@campxdev/shared 1.8.13 → 1.8.14

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 (266) hide show
  1. package/package.json +20 -4
  2. package/antd.customize.less +0 -73
  3. package/exports.ts +0 -19
  4. package/src/assets/fonts/avenir/Avenir-Book.ttf +0 -0
  5. package/src/assets/fonts/avenir/Avenir-Heavy.ttf +0 -0
  6. package/src/assets/fonts/avenir/Avenir-HeavyOblique.ttf +0 -0
  7. package/src/assets/fonts/avenir/Avenir-Medium.ttf +0 -0
  8. package/src/assets/fonts/avenir/Avenir-MediumOblique.ttf +0 -0
  9. package/src/assets/fonts/avenir/index.ts +0 -13
  10. package/src/assets/fonts/poppins/Poppins-Bold.ttf +0 -0
  11. package/src/assets/fonts/poppins/Poppins-Italic.ttf +0 -0
  12. package/src/assets/fonts/poppins/Poppins-Light.ttf +0 -0
  13. package/src/assets/fonts/poppins/Poppins-LightItalic.ttf +0 -0
  14. package/src/assets/fonts/poppins/Poppins-Medium.ttf +0 -0
  15. package/src/assets/fonts/poppins/Poppins-MediumItalic.ttf +0 -0
  16. package/src/assets/fonts/poppins/Poppins-Regular.ttf +0 -0
  17. package/src/assets/fonts/poppins/Poppins-SemiBold.ttf +0 -0
  18. package/src/assets/fonts/poppins/Poppins-SemiBoldItalic.ttf +0 -0
  19. package/src/assets/fonts/poppins/index.ts +0 -18
  20. package/src/assets/images/401.png +0 -0
  21. package/src/assets/images/403.png +0 -0
  22. package/src/assets/images/404.png +0 -0
  23. package/src/assets/images/404notfound.svg +0 -1
  24. package/src/assets/images/500.png +0 -0
  25. package/src/assets/images/avatar.png +0 -0
  26. package/src/assets/images/campx_logo__full_primary.png +0 -0
  27. package/src/assets/images/index.ts +0 -17
  28. package/src/assets/images/internalservererror.svg +0 -1
  29. package/src/assets/images/noInternet.svg +0 -1
  30. package/src/assets/images/nointernet.png +0 -0
  31. package/src/assets/images/notfound.png +0 -0
  32. package/src/assets/images/pagenotfound.svg +0 -1
  33. package/src/assets/images/permissiondenied.svg +0 -1
  34. package/src/assets/images/unauth.svg +0 -92
  35. package/src/components/ActionButton.tsx +0 -20
  36. package/src/components/Attachment.tsx +0 -26
  37. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +0 -57
  38. package/src/components/AutocompleteSearch/index.tsx +0 -1
  39. package/src/components/Breadcrumbs.tsx +0 -72
  40. package/src/components/Card.tsx +0 -98
  41. package/src/components/CardsGrid.tsx +0 -28
  42. package/src/components/ChangePassword.tsx +0 -123
  43. package/src/components/Chips.tsx +0 -81
  44. package/src/components/Detail.tsx +0 -15
  45. package/src/components/DetailsGrid.tsx +0 -52
  46. package/src/components/DividerHeading.tsx +0 -41
  47. package/src/components/DrawerWrapper/DialogWrapper.tsx +0 -67
  48. package/src/components/DrawerWrapper/DrawerTemplate.tsx +0 -53
  49. package/src/components/DrawerWrapper/DrawerWrapper.tsx +0 -53
  50. package/src/components/DropDownButton/AnchorElement.tsx +0 -44
  51. package/src/components/DropDownButton/DropDownButton.tsx +0 -184
  52. package/src/components/DropDownButton/DropdownMenuItem.tsx +0 -110
  53. package/src/components/DropDownButton/index.tsx +0 -1
  54. package/src/components/DropDownButton/styles.tsx +0 -59
  55. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -33
  56. package/src/components/ErrorBoundary/ErrorFallback.tsx +0 -241
  57. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +0 -13
  58. package/src/components/ErrorBoundary/index.tsx +0 -1
  59. package/src/components/ErrorBox.tsx +0 -42
  60. package/src/components/ExcelToJsonInput/ExcelJsonUpload.tsx +0 -50
  61. package/src/components/ExcelToJsonInput/ExcelToJsonInput.tsx +0 -57
  62. package/src/components/ExcelToJsonInput/index.tsx +0 -1
  63. package/src/components/FilterComponents/FilterButton.tsx +0 -56
  64. package/src/components/FilterComponents/SearchBar.tsx +0 -45
  65. package/src/components/FloatingContainer.tsx +0 -33
  66. package/src/components/Form/Form.tsx +0 -147
  67. package/src/components/Form/RenderForm.tsx +0 -189
  68. package/src/components/FullScreenLoader.tsx +0 -19
  69. package/src/components/HookForm/AutoCompleteSearch.tsx +0 -113
  70. package/src/components/HookForm/DatePicker.tsx +0 -40
  71. package/src/components/HookForm/DateTimePicker.tsx +0 -47
  72. package/src/components/HookForm/FormLabel.tsx +0 -14
  73. package/src/components/HookForm/MultiCheckbox.tsx +0 -69
  74. package/src/components/HookForm/MultiSelect.tsx +0 -53
  75. package/src/components/HookForm/RadioGroup.tsx +0 -47
  76. package/src/components/HookForm/SingleCheckbox.tsx +0 -34
  77. package/src/components/HookForm/SingleSelect.tsx +0 -46
  78. package/src/components/HookForm/TextField.tsx +0 -40
  79. package/src/components/HookForm/TimePicker.tsx +0 -40
  80. package/src/components/HookForm/index.ts +0 -23
  81. package/src/components/IconButtons/IconButtons.tsx +0 -137
  82. package/src/components/IconButtons/Icons.tsx +0 -268
  83. package/src/components/IconButtons/assets/edit.svg +0 -4
  84. package/src/components/IconButtons/assets/eye.svg +0 -6
  85. package/src/components/IconButtons/assets/trash.svg +0 -7
  86. package/src/components/IconButtons/index.tsx +0 -8
  87. package/src/components/IconLabel.tsx +0 -37
  88. package/src/components/Image/Image.tsx +0 -45
  89. package/src/components/Image/broken-image.png +0 -0
  90. package/src/components/Image/index.tsx +0 -1
  91. package/src/components/ImageUpload.tsx +0 -98
  92. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +0 -216
  93. package/src/components/Input/AsyncSearchSelect/index.tsx +0 -1
  94. package/src/components/Input/AsyncSearchSelect/styles.tsx +0 -105
  95. package/src/components/Input/AutoCompleteSearch.tsx +0 -121
  96. package/src/components/Input/DatePicker.tsx +0 -87
  97. package/src/components/Input/DateRangePicker.tsx +0 -105
  98. package/src/components/Input/DateTimePicker.tsx +0 -84
  99. package/src/components/Input/FormLabel.tsx +0 -21
  100. package/src/components/Input/MultiCheckbox.tsx +0 -64
  101. package/src/components/Input/MultiSelect.tsx +0 -150
  102. package/src/components/Input/RadioGroup.tsx +0 -104
  103. package/src/components/Input/SingleCheckbox.tsx +0 -78
  104. package/src/components/Input/SingleSelect.tsx +0 -104
  105. package/src/components/Input/TextField.tsx +0 -46
  106. package/src/components/Input/TimePicker.tsx +0 -77
  107. package/src/components/Input/index.ts +0 -26
  108. package/src/components/Input/types.ts +0 -3
  109. package/src/components/JsonPreview.tsx +0 -7
  110. package/src/components/LabelValue.tsx +0 -21
  111. package/src/components/Layout/ChangePassword.tsx +0 -49
  112. package/src/components/Layout/Header/AppHeader.tsx +0 -112
  113. package/src/components/Layout/Header/AppsMenu.tsx +0 -105
  114. package/src/components/Layout/Header/HeaderActions/CogWheelMenu.tsx +0 -33
  115. package/src/components/Layout/Header/HeaderActions/FreshDeskHelpButton.tsx +0 -24
  116. package/src/components/Layout/Header/HeaderActions/HeaderActions.tsx +0 -18
  117. package/src/components/Layout/Header/HeaderActions/UserBox.tsx +0 -56
  118. package/src/components/Layout/Header/Notification.tsx +0 -13
  119. package/src/components/Layout/Header/applications.ts +0 -103
  120. package/src/components/Layout/Header/assets/background.png +0 -0
  121. package/src/components/Layout/Header/assets/campx.png +0 -0
  122. package/src/components/Layout/Header/assets/campx_square_small.svg +0 -9
  123. package/src/components/Layout/Header/assets/commuteX.png +0 -0
  124. package/src/components/Layout/Header/assets/commutex.png +0 -0
  125. package/src/components/Layout/Header/assets/commutex.svg +0 -14
  126. package/src/components/Layout/Header/assets/commutexSmall.svg +0 -11
  127. package/src/components/Layout/Header/assets/contactBg.png +0 -0
  128. package/src/components/Layout/Header/assets/enroll.svg +0 -14
  129. package/src/components/Layout/Header/assets/enroll_logo.svg +0 -9
  130. package/src/components/Layout/Header/assets/enrollx.svg +0 -14
  131. package/src/components/Layout/Header/assets/entrollx.png +0 -0
  132. package/src/components/Layout/Header/assets/exams_small.svg +0 -12
  133. package/src/components/Layout/Header/assets/examsx.svg +0 -14
  134. package/src/components/Layout/Header/assets/examx.png +0 -0
  135. package/src/components/Layout/Header/assets/hostel_small.svg +0 -13
  136. package/src/components/Layout/Header/assets/hostelx.png +0 -0
  137. package/src/components/Layout/Header/assets/hostelx.svg +0 -13
  138. package/src/components/Layout/Header/assets/index.ts +0 -35
  139. package/src/components/Layout/Header/assets/libraryx.svg +0 -12
  140. package/src/components/Layout/Header/assets/libreryx.png +0 -0
  141. package/src/components/Layout/Header/assets/pay_small.svg +0 -16
  142. package/src/components/Layout/Header/assets/payx.png +0 -0
  143. package/src/components/Layout/Header/assets/payx.svg +0 -19
  144. package/src/components/Layout/Header/assets/people_small.svg +0 -9
  145. package/src/components/Layout/Header/assets/peoplex.svg +0 -12
  146. package/src/components/Layout/Header/assets/pepolex.png +0 -0
  147. package/src/components/Layout/Header/assets/squarex.svg +0 -12
  148. package/src/components/Layout/Header/icons.tsx +0 -57
  149. package/src/components/Layout/Header/index.tsx +0 -1
  150. package/src/components/Layout/Header/styles.tsx +0 -133
  151. package/src/components/Layout/Helmet.tsx +0 -49
  152. package/src/components/Layout/LayoutWrapper.tsx +0 -28
  153. package/src/components/Layout/SideMenuHeader.tsx +0 -29
  154. package/src/components/Layout/SideNav.tsx +0 -168
  155. package/src/components/Layout/Tickets/HelpWidget/HelpWidget.tsx +0 -273
  156. package/src/components/Layout/Tickets/HelpWidget/styles.tsx +0 -94
  157. package/src/components/Layout/Tickets/MyTickets.tsx +0 -72
  158. package/src/components/Layout/Tickets/TicketDetails.tsx +0 -65
  159. package/src/components/Layout/Tickets/TimeLine.tsx +0 -64
  160. package/src/components/Layout/Tickets/index.tsx +0 -1
  161. package/src/components/Layout/Tickets/services.ts +0 -11
  162. package/src/components/Layout/Tickets/styles.tsx +0 -136
  163. package/src/components/LinearProgress.tsx +0 -19
  164. package/src/components/ListItemButton.tsx +0 -95
  165. package/src/components/LoginForm.tsx +0 -279
  166. package/src/components/MediaRow/MediaRow.tsx +0 -67
  167. package/src/components/MediaRow/index.tsx +0 -1
  168. package/src/components/ModalButtons/DialogButton.tsx +0 -126
  169. package/src/components/ModalButtons/DrawerButton.tsx +0 -115
  170. package/src/components/ModalButtons/index.tsx +0 -4
  171. package/src/components/NoDataIllustration.tsx +0 -32
  172. package/src/components/PageContent.tsx +0 -12
  173. package/src/components/PageHeader.tsx +0 -55
  174. package/src/components/PageNotFound.tsx +0 -26
  175. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +0 -40
  176. package/src/components/PopupConfirm/PopupConfirm.tsx +0 -67
  177. package/src/components/PopupConfirm/animation.gif +0 -0
  178. package/src/components/PopupConfirm/index.tsx +0 -1
  179. package/src/components/PopupConfirm/useConfirm.ts +0 -47
  180. package/src/components/ResetPassword.tsx +0 -107
  181. package/src/components/Row.tsx +0 -24
  182. package/src/components/Spinner.tsx +0 -18
  183. package/src/components/StepsHeader/StepsHeader.tsx +0 -115
  184. package/src/components/StepsHeader/index.tsx +0 -1
  185. package/src/components/StyledTableContainer.tsx +0 -33
  186. package/src/components/SwitchButton.tsx +0 -41
  187. package/src/components/Table.tsx +0 -42
  188. package/src/components/Tables/BasicTable/Table.tsx +0 -198
  189. package/src/components/Tables/BasicTable/TableFooter.tsx +0 -86
  190. package/src/components/Tables/BasicTable/index.tsx +0 -1
  191. package/src/components/Tables/ReactTable/BatchActionsHeader.tsx +0 -58
  192. package/src/components/Tables/ReactTable/ReactTable.tsx +0 -295
  193. package/src/components/Tables/ReactTable/RenderTableBody.tsx +0 -49
  194. package/src/components/Tables/ReactTable/index.tsx +0 -1
  195. package/src/components/Tables/ReactTable/react-table-config.d.ts +0 -128
  196. package/src/components/Tables/common/NoRecordsFound.tsx +0 -27
  197. package/src/components/Tables/common/TableStats.tsx +0 -22
  198. package/src/components/Tables/common/icons.tsx +0 -50
  199. package/src/components/Tables/common/no-data-illu.svg +0 -1
  200. package/src/components/Tables/common/styles.tsx +0 -170
  201. package/src/components/Tables/common/types.ts +0 -57
  202. package/src/components/Tabs/NavigationTabs.tsx +0 -80
  203. package/src/components/Tabs/Tabs.tsx +0 -53
  204. package/src/components/Tabs/TabsContainer.tsx +0 -53
  205. package/src/components/Tabs/index.tsx +0 -1
  206. package/src/components/Tabs/styles.tsx +0 -55
  207. package/src/components/ToastContainer/ToastContainer.tsx +0 -57
  208. package/src/components/ToastContainer/index.tsx +0 -1
  209. package/src/components/UploadButton/UploadButton.tsx +0 -126
  210. package/src/components/UploadButton/index.tsx +0 -1
  211. package/src/components/UploadButton/types.ts +0 -19
  212. package/src/components/UploadDocument.tsx +0 -108
  213. package/src/components/UploadFileDialog/AnimatedUploadFile.gif +0 -0
  214. package/src/components/UploadFileDialog/UploadFileDialog.tsx +0 -238
  215. package/src/components/UploadFileDialog/index.tsx +0 -1
  216. package/src/components/index.ts +0 -106
  217. package/src/config/axios.ts +0 -73
  218. package/src/config/axiosEvaluator.ts +0 -53
  219. package/src/config/axiosXTenant.ts +0 -57
  220. package/src/constants/UIConstants.ts +0 -97
  221. package/src/constants/formValidations.ts +0 -6
  222. package/src/constants/index.ts +0 -5
  223. package/src/constants/isDevelopment.ts +0 -4
  224. package/src/constants/permissions.ts +0 -67
  225. package/src/constants/validateMessages.ts +0 -12
  226. package/src/contexts/LoginFormProvider.tsx +0 -44
  227. package/src/contexts/Providers.tsx +0 -50
  228. package/src/contexts/PublicProviders.tsx +0 -30
  229. package/src/contexts/QueryClientProvider.tsx +0 -22
  230. package/src/hooks/index.ts +0 -4
  231. package/src/hooks/useAuth.ts +0 -96
  232. package/src/hooks/useFetch.ts +0 -53
  233. package/src/hooks/useFilters.ts +0 -83
  234. package/src/hooks/useRouter.ts +0 -31
  235. package/src/layouts/Components/DashBoardMenu.tsx +0 -232
  236. package/src/layouts/Components/icons/index.tsx +0 -403
  237. package/src/layouts/Components/styles.tsx +0 -74
  238. package/src/layouts/ComponentsLayout.tsx +0 -3
  239. package/src/permissions/PageWithPermission.tsx +0 -18
  240. package/src/permissions/PermissionDeniedPage.tsx +0 -16
  241. package/src/permissions/ValidateAccess.tsx +0 -18
  242. package/src/permissions/index.ts +0 -2
  243. package/src/react-app-env.d.ts +0 -1
  244. package/src/shared-state/AssetsStore.ts +0 -15
  245. package/src/shared-state/PermissionsStore.ts +0 -384
  246. package/src/shared-state/UserStore.ts +0 -13
  247. package/src/shared-state/index.ts +0 -4
  248. package/src/theme/App.less +0 -3
  249. package/src/theme/MuiThemeProvider.tsx +0 -18
  250. package/src/theme/customCssBaseline.ts +0 -135
  251. package/src/theme/index.css +0 -28
  252. package/src/theme/muiTheme.ts +0 -595
  253. package/src/theme/theme.d.ts +0 -75
  254. package/src/utils/adminAxios.ts +0 -15
  255. package/src/utils/alphabet.ts +0 -23
  256. package/src/utils/arrayPadEnd.ts +0 -3
  257. package/src/utils/formatCurrency.ts +0 -9
  258. package/src/utils/getUrlParams.ts +0 -5
  259. package/src/utils/index.ts +0 -7
  260. package/src/utils/logout.ts +0 -25
  261. package/src/utils/ordinalSuffixOf.ts +0 -14
  262. package/src/utils/romanize.ts +0 -40
  263. package/src/utils/withRouteWrapper.tsx +0 -25
  264. package/src/utils/withSuspense.tsx +0 -6
  265. package/styled-components.tsx +0 -60
  266. package/tsconfig.json +0 -21
@@ -1,84 +0,0 @@
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 IDateTimePicker {
9
- label?: ReactNode
10
- name?: string
11
- required?: boolean
12
- minDate?: Date | string | number
13
- maxDate?: Date | string | number
14
- minTime?: Date | string | number
15
- maxTime?: Date | string | number
16
- value: Date | null
17
- onChange: (value: Date) => void
18
- placeholder?: string
19
- inputProps?: TextFieldProps
20
- enableTime?: boolean
21
- size?: 'medium' | 'small'
22
- }
23
-
24
- export default function DateTimePicker({
25
- name,
26
- label,
27
- required,
28
- minDate,
29
- maxDate,
30
- minTime,
31
- maxTime,
32
- onChange,
33
- value,
34
- placeholder,
35
- enableTime = true,
36
- size = 'medium',
37
- ...rest
38
- }: IDateTimePicker) {
39
- return (
40
- <Flatpickr
41
- options={{
42
- enableTime,
43
- dateFormat: enableTime ? 'd-m-Y h:i K' : 'd-m-Y',
44
- minDate,
45
- maxDate,
46
- minTime,
47
- maxTime,
48
- allowInput: true,
49
- }}
50
- onChange={(dates: Date[]) => {
51
- if (onChange) onChange(dates[0])
52
- }}
53
- onClose={(dates) => {
54
- if (onChange) onChange(dates[0])
55
- }}
56
- value={value || null}
57
- render={(
58
- props: Omit<DateTimePickerProps, 'options' | 'render'>,
59
- ref: (node: HTMLInputElement | null) => void,
60
- ) => {
61
- return (
62
- <TextField
63
- size={size}
64
- placeholder={placeholder}
65
- label={label}
66
- name={name}
67
- variant="outlined"
68
- autoComplete="off"
69
- required={required}
70
- inputRef={ref}
71
- InputProps={{
72
- endAdornment: (
73
- <InputAdornment position="end">
74
- <EventIcon />
75
- </InputAdornment>
76
- ),
77
- }}
78
- {...rest.inputProps}
79
- />
80
- )
81
- }}
82
- />
83
- )
84
- }
@@ -1,21 +0,0 @@
1
- import { alpha, styled, Typography, TypographyProps } from '@mui/material'
2
-
3
- export default function FormLabel({ label, required, name }) {
4
- if (typeof label !== 'string') return label
5
-
6
- return (
7
- <Typography
8
- htmlFor={name}
9
- component="label"
10
- sx={{
11
- color: alpha('#121212', 0.5),
12
- lineHeight: 2,
13
- '& span': {
14
- color: (theme) => theme.palette.error.main,
15
- },
16
- }}
17
- >
18
- {label} {required && <span>{' *'}</span>}
19
- </Typography>
20
- )
21
- }
@@ -1,64 +0,0 @@
1
- import { Box, BoxProps, FormGroup, FormHelperText } from '@mui/material'
2
- import { ReactNode } from 'react'
3
- import { Controller } from 'react-hook-form'
4
- import FormLabel from './FormLabel'
5
- import SingleCheckbox from './SingleCheckbox'
6
-
7
- interface Props {
8
- label?: ReactNode
9
- name: string
10
- size?: 'small' | 'medium'
11
- options: Array<{ label: ReactNode; value: any }>
12
- required?: boolean
13
- row?: boolean
14
- error?: boolean
15
- helperText?: ReactNode
16
- value: { label: string; value: any }[]
17
- onChange: (value: { label: ReactNode; value: any }[]) => void
18
- containerProps?: BoxProps
19
- }
20
-
21
- export default function MultiCheckbox({
22
- name,
23
- label,
24
- options = [],
25
- required = false,
26
- value = [],
27
- onChange,
28
- error,
29
- helperText,
30
- row = true,
31
- containerProps,
32
- ...rest
33
- }: Props) {
34
- return (
35
- <Box width="100%" {...containerProps}>
36
- <FormLabel label={label} required={required} name={name} />
37
- <FormGroup row={row} sx={{ flexWrap: 'wrap' }}>
38
- {options?.map((item, index) => (
39
- <SingleCheckbox
40
- name={name}
41
- key={index}
42
- label={item.label}
43
- checked={value
44
- ?.map((item: any) => item?.value)
45
- ?.includes(item?.value)}
46
- onChange={(e) => {
47
- if (e.target.checked) {
48
- let newValue = [...value, item]
49
- onChange(newValue)
50
- } else {
51
- let filteredValue = value.filter(
52
- (opt: any) => opt?.value !== item.value,
53
- )
54
- onChange(filteredValue)
55
- }
56
- }}
57
- {...rest}
58
- />
59
- ))}
60
- </FormGroup>
61
- {error && <FormHelperText>{helperText}</FormHelperText>}
62
- </Box>
63
- )
64
- }
@@ -1,150 +0,0 @@
1
- import { Close, KeyboardArrowDown } from '@mui/icons-material'
2
- import {
3
- alpha,
4
- Autocomplete,
5
- Checkbox,
6
- CircularProgress,
7
- Popper,
8
- styled,
9
- } from '@mui/material'
10
- import { ReactNode } from 'react'
11
- import { BpCheckedIcon, BpIcon } from './SingleCheckbox'
12
- import TextField from './TextField'
13
- import { IOption } from './types'
14
-
15
- const StyledAutocomplete = styled(Autocomplete)(({ theme }) => ({
16
- '& .MuiAutocomplete-tag': {
17
- border: '1px solid #D1D1D1',
18
- background: '#F8F8F8',
19
- borderRadius: '5px',
20
- height: '38px',
21
- '& .MuiSvgIcon-root': {
22
- fontSize: '15px',
23
- marginLeft: '5px',
24
- fontWeight: 700,
25
- color: theme.palette.secondary.main,
26
- '&:hover': {
27
- color: alpha(theme.palette.secondary.main, 0.8),
28
- },
29
- },
30
- },
31
- }))
32
-
33
- const StyledPopper = styled(Popper)(({ theme }) => ({
34
- '& .MuiPaper-root': {
35
- borderRadius: '10px',
36
- borderTopRightRadius: 0,
37
- borderTopLeftRadius: 0,
38
- boxShadow: '0px 4px 16px #0000000F',
39
- marginTop: '1px',
40
- '& .MuiAutocomplete-listbox': {
41
- minWidth: '240px',
42
- padding: '10px',
43
- '& .MuiAutocomplete-option': {
44
- padding: '10px',
45
- background: 'none',
46
- '&.Mui-focused': {
47
- background: 'none',
48
- },
49
- },
50
- '& .MuiCheckbox-root': {
51
- padding: 0,
52
- marginRight: '10px',
53
- },
54
- },
55
- '&::-webkit-scrollbar': {
56
- width: '0.5em',
57
- height: '0.5em',
58
- },
59
-
60
- '&::-webkit-scrollbar-thumb': {
61
- backgroundColor: 'rgba(0, 0, 0, 0.15)',
62
- borderRadius: '3px',
63
-
64
- '&:hover': {
65
- background: 'rgba(0, 0, 0, 0.2)',
66
- },
67
- },
68
- },
69
- }))
70
-
71
- interface MultiSelectProps {
72
- label: ReactNode
73
- name?: string
74
- options: IOption[]
75
- placeholder?: string
76
- loading?: boolean
77
- value: IOption[] | IOption
78
- onChange: (value: IOption[] | IOption) => void
79
- required?: boolean
80
- error?: boolean
81
- helperText?: string
82
- multiple?: boolean
83
- }
84
-
85
- export default function MultiSelect({
86
- name,
87
- options,
88
- label,
89
- loading,
90
- value,
91
- onChange,
92
- required,
93
- error,
94
- helperText,
95
- multiple = true,
96
- ...props
97
- }: MultiSelectProps) {
98
- return (
99
- <StyledAutocomplete
100
- multiple={multiple}
101
- value={value}
102
- loading={loading}
103
- fullWidth
104
- getOptionLabel={(option: any) => option?.label || ''}
105
- options={options || []}
106
- onChange={(e, value: any) => {
107
- if (!onChange) return
108
- onChange(value)
109
- }}
110
- isOptionEqualToValue={(option: any, value: any) =>
111
- option?.value === value?.value
112
- }
113
- disableCloseOnSelect
114
- PopperComponent={StyledPopper}
115
- renderOption={(props, option: any, { selected }) => (
116
- <li {...props}>
117
- <Checkbox
118
- icon={<BpIcon />}
119
- checkedIcon={<BpCheckedIcon />}
120
- checked={selected}
121
- />
122
- {option.label}
123
- </li>
124
- )}
125
- popupIcon={<KeyboardArrowDown />}
126
- ChipProps={{ deleteIcon: <Close /> }}
127
- renderInput={(params) => (
128
- <TextField
129
- error={error}
130
- helperText={helperText}
131
- label={label}
132
- required={required}
133
- InputProps={{
134
- ...params.InputProps,
135
- endAdornment: (
136
- <>
137
- {loading ? (
138
- <CircularProgress color="inherit" size={20} />
139
- ) : null}
140
- {params.InputProps.endAdornment}
141
- </>
142
- ),
143
- }}
144
- {...params}
145
- />
146
- )}
147
- {...props}
148
- />
149
- )
150
- }
@@ -1,104 +0,0 @@
1
- import {
2
- Box,
3
- BoxProps,
4
- FormControlLabel,
5
- FormHelperText,
6
- Radio,
7
- RadioGroup as MuiRadioGroup,
8
- RadioGroupProps,
9
- styled,
10
- } from '@mui/material'
11
- import { ReactNode } from 'react'
12
- import FormLabel from './FormLabel'
13
-
14
- const BpIcon = styled('span')(({ theme }) => ({
15
- borderRadius: '50%',
16
- width: 18,
17
- height: 18,
18
- border: '1px solid #CBCBCB',
19
- backgroundColor: '#f8f8f8',
20
- '.Mui-focusVisible &': {
21
- outline: '2px auto rgba(19,124,189,.6)',
22
- outlineOffset: 2,
23
- },
24
- 'input:hover ~ &': {
25
- backgroundColor: '#f8f8f8',
26
- },
27
- 'input:disabled ~ &': {
28
- boxShadow: 'none',
29
- background: 'rgba(206,217,224,.5)',
30
- },
31
- }))
32
-
33
- const BpCheckedIcon = styled(BpIcon)(({ theme }) => ({
34
- border: '1px solid #609D52',
35
- background: '#f8f8f8',
36
- backgroundImage:
37
- 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',
38
- '&:before': {
39
- backgroundColor: '#609D52',
40
- content: '""',
41
- display: 'block',
42
- width: 8,
43
- height: 8,
44
- margin: '4px',
45
- left: '2px',
46
- borderRadius: '50%',
47
- },
48
- 'input:hover ~ &': {
49
- backgroundColor: '#f8f8f8',
50
- },
51
- }))
52
-
53
- interface Props extends RadioGroupProps {
54
- label: string | ReactNode
55
- name?: string
56
- control?: any
57
- sx?: any
58
- row?: boolean
59
- required?: boolean
60
- options: { value: any; label: string | ReactNode }[]
61
- containerProps?: BoxProps
62
- error?: boolean
63
- helperText?: string | null
64
- }
65
-
66
- export default function RadioGroup(props: Props) {
67
- const {
68
- name,
69
- label,
70
- options = [],
71
- row = false,
72
- required = false,
73
- value,
74
- onChange,
75
- containerProps,
76
- error,
77
- helperText,
78
- ...rest
79
- } = props
80
- return (
81
- <Box width="100%" {...containerProps}>
82
- <FormLabel label={label} name={name} required={required} />
83
- <MuiRadioGroup
84
- value={value}
85
- onChange={onChange}
86
- row={row}
87
- name={name}
88
- {...rest}
89
- >
90
- {options.map((item, index) => (
91
- <FormControlLabel
92
- key={index}
93
- value={item.value}
94
- control={
95
- <Radio checkedIcon={<BpCheckedIcon />} icon={<BpIcon />} />
96
- }
97
- label={item.label}
98
- />
99
- ))}
100
- </MuiRadioGroup>
101
- {error && <FormHelperText>{helperText}</FormHelperText>}
102
- </Box>
103
- )
104
- }
@@ -1,78 +0,0 @@
1
- import {
2
- Checkbox,
3
- CheckboxProps,
4
- FormControlLabel,
5
- styled,
6
- } from '@mui/material'
7
- import { ReactNode } from 'react'
8
-
9
- export const BpIcon = styled('span')(({}) => ({
10
- borderRadius: 3,
11
- width: 18,
12
- height: 18,
13
- marginLeft: '2px',
14
- border: '1px solid #CBCBCB',
15
- backgroundColor: '#F8F8F8',
16
- '.Mui-focusVisible &': {
17
- outline: '2px auto rgba(19,124,189,.6)',
18
- outlineOffset: 2,
19
- },
20
- 'input:hover ~ &': {
21
- backgroundColor: '#F8F8F8',
22
- },
23
- 'input:disabled ~ &': {
24
- boxShadow: 'none',
25
- background: 'rgba(206,217,224,.5)',
26
- },
27
- }))
28
-
29
- export const BpCheckedIcon = styled(BpIcon)(({ theme }) => ({
30
- backgroundColor: '#F8F8F8',
31
- border: `1px solid ${theme.palette.primary.main}`,
32
- backgroundImage:
33
- 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',
34
- marginLeft: '2px',
35
- '&:before': {
36
- content: '""',
37
- display: 'block',
38
- width: 8,
39
- height: 8,
40
- margin: '4px',
41
- left: '2px',
42
- background: theme.palette.primary.main,
43
- borderRadius: '2px',
44
- },
45
- 'input:hover ~ &': {
46
- backgroundColor: '#F8F8F8',
47
- },
48
- }))
49
-
50
- interface Props extends CheckboxProps {
51
- disabled?: boolean
52
- label: ReactNode
53
- name?: string
54
- checked: boolean
55
- onChange: (e) => void
56
- }
57
-
58
- export default function SingleCheckbox({
59
- checked,
60
- label,
61
- onChange,
62
- ...props
63
- }: Props) {
64
- return (
65
- <FormControlLabel
66
- control={
67
- <Checkbox
68
- checked={checked}
69
- onChange={onChange}
70
- checkedIcon={<BpCheckedIcon />}
71
- icon={<BpIcon />}
72
- {...props}
73
- />
74
- }
75
- label={label}
76
- />
77
- )
78
- }
@@ -1,104 +0,0 @@
1
- import { ArrowDownward, KeyboardArrowDown } from '@mui/icons-material'
2
- import {
3
- FormControl,
4
- MenuItem,
5
- SelectProps,
6
- styled,
7
- Select,
8
- FormHelperText,
9
- Box,
10
- BoxProps,
11
- } from '@mui/material'
12
- import { ReactNode } from 'react'
13
- import FormLabel from './FormLabel'
14
-
15
- const StyledFormControl = styled(FormControl)(({ theme }) => ({
16
- '& .MuiInputBase-root': {
17
- '& legend': { display: 'none' },
18
- '& .MuiSelect-select': {},
19
- '& .MuiSvgIcon-root': {
20
- right: '14px',
21
- },
22
- },
23
- }))
24
-
25
- const PaperProps = {
26
- elevation: 0,
27
- sx: {
28
- borderRadius: '10px',
29
- borderTopRightRadius: 0,
30
- borderTopLeftRadius: 0,
31
- boxShadow: '0px 4px 16px #0000000F',
32
- maxHeight: 360,
33
- marginTop: '1px',
34
- '& .MuiList-root': {
35
- padding: 0,
36
- '& li': {
37
- height: '60px',
38
- borderBottom: (theme) => theme.borders.grayLight,
39
- ':hover': {
40
- backgroundColor: 'rgba(0, 0, 0, 0.025)',
41
- },
42
- },
43
- '& > :last-child': {
44
- borderBottom: 'none',
45
- },
46
- },
47
- },
48
- }
49
-
50
- type Props = {
51
- options: Array<{ label: ReactNode; value: any }>
52
- onChange?: (value: any) => void
53
- required?: boolean
54
- firstItemEmpty?: boolean
55
- helperText?: string
56
- containerProps?: BoxProps
57
- } & SelectProps
58
-
59
- export default function SingleSelect({
60
- name = 'select',
61
- options = [],
62
- label,
63
- onChange,
64
- required,
65
- value,
66
- helperText,
67
- containerProps,
68
- firstItemEmpty = false,
69
- ...props
70
- }: Props) {
71
- const inputOptions = firstItemEmpty
72
- ? [{ label: 'All', value: '__empty__' }, ...options]
73
- : options
74
-
75
- return (
76
- <Box width="100%" {...containerProps}>
77
- <FormLabel required={required} label={label} name={name} />
78
- <StyledFormControl fullWidth>
79
- <Select
80
- id={name}
81
- multiple={false}
82
- variant="outlined"
83
- value={value}
84
- displayEmpty={firstItemEmpty}
85
- fullWidth
86
- label={label}
87
- MenuProps={{
88
- PaperProps: PaperProps,
89
- }}
90
- IconComponent={KeyboardArrowDown}
91
- onChange={onChange}
92
- {...props}
93
- >
94
- {inputOptions?.map((item, index) => (
95
- <MenuItem key={index} value={item.value}>
96
- {item.label}
97
- </MenuItem>
98
- ))}
99
- </Select>
100
- {helperText && <FormHelperText>{helperText}</FormHelperText>}
101
- </StyledFormControl>
102
- </Box>
103
- )
104
- }
@@ -1,46 +0,0 @@
1
- import {
2
- Box,
3
- BoxProps,
4
- styled,
5
- TextField as MuiTextField,
6
- TextFieldProps as MuiTextFieldProps,
7
- } from '@mui/material'
8
- import FieldLabel from './FormLabel'
9
-
10
- const StyledTextField = styled(MuiTextField)(({ theme }) => ({
11
- '& label': {
12
- display: 'none',
13
- },
14
- '& legend': {
15
- '& span': {
16
- display: 'none',
17
- },
18
- },
19
- }))
20
-
21
- export type ITextFieldProps = {
22
- containerProps?: BoxProps
23
- } & MuiTextFieldProps
24
-
25
- export default function TextField({
26
- name,
27
- label,
28
- value,
29
- onChange,
30
- required = false,
31
- containerProps,
32
- ...rest
33
- }: ITextFieldProps) {
34
- return (
35
- <Box width="100%" {...containerProps}>
36
- <FieldLabel label={label} required={required} name={name} />
37
- <StyledTextField
38
- id={name}
39
- value={value}
40
- name={name}
41
- onChange={onChange}
42
- {...rest}
43
- />
44
- </Box>
45
- )
46
- }