@campxdev/shared 1.7.15 → 1.8.1

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 -0
  34. package/src/components/ExcelToJsonInput/ExcelToJsonInput.tsx +57 -0
  35. package/src/components/ExcelToJsonInput/index.tsx +1 -0
  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.png +0 -0
  94. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  95. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  96. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  97. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  98. package/src/components/Layout/Header/assets/exams_small.svg +11 -11
  99. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  100. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  101. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  102. package/src/components/Layout/Header/assets/index.ts +35 -35
  103. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  104. package/src/components/Layout/Header/assets/pay_small.svg +15 -15
  105. package/src/components/Layout/Header/assets/payx.svg +19 -19
  106. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  107. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  108. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  109. package/src/components/Layout/Header/icons.tsx +57 -57
  110. package/src/components/Layout/Header/index.tsx +1 -1
  111. package/src/components/Layout/Header/styles.tsx +133 -133
  112. package/src/components/Layout/Helmet.tsx +49 -49
  113. package/src/components/Layout/LayoutWrapper.tsx +28 -28
  114. package/src/components/Layout/SideMenuHeader.tsx +29 -29
  115. package/src/components/Layout/SideNav.tsx +168 -168
  116. package/src/components/Layout/Tickets/HelpWidget/HelpWidget.tsx +273 -273
  117. package/src/components/Layout/Tickets/HelpWidget/styles.tsx +94 -94
  118. package/src/components/Layout/Tickets/MyTickets.tsx +72 -72
  119. package/src/components/Layout/Tickets/TicketDetails.tsx +65 -65
  120. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  121. package/src/components/Layout/Tickets/index.tsx +1 -1
  122. package/src/components/Layout/Tickets/services.ts +11 -11
  123. package/src/components/Layout/Tickets/styles.tsx +136 -136
  124. package/src/components/LinearProgress.tsx +19 -19
  125. package/src/components/ListItemButton.tsx +95 -95
  126. package/src/components/LoginForm.tsx +274 -274
  127. package/src/components/MediaRow/MediaRow.tsx +67 -67
  128. package/src/components/MediaRow/index.tsx +1 -1
  129. package/src/components/ModalButtons/DialogButton.tsx +126 -126
  130. package/src/components/ModalButtons/DrawerButton.tsx +115 -115
  131. package/src/components/ModalButtons/index.tsx +4 -4
  132. package/src/components/NoDataIllustration.tsx +32 -32
  133. package/src/components/PageContent.tsx +12 -12
  134. package/src/components/PageHeader.tsx +55 -55
  135. package/src/components/PageNotFound.tsx +26 -26
  136. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  137. package/src/components/PopupConfirm/PopupConfirm.tsx +67 -67
  138. package/src/components/PopupConfirm/index.tsx +1 -1
  139. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  140. package/src/components/ResetPassword.tsx +107 -107
  141. package/src/components/Row.tsx +24 -24
  142. package/src/components/Spinner.tsx +18 -18
  143. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  144. package/src/components/StepsHeader/index.tsx +1 -1
  145. package/src/components/StyledTableContainer.tsx +33 -33
  146. package/src/components/SwitchButton.tsx +41 -41
  147. package/src/components/Table.tsx +42 -42
  148. package/src/components/Tables/BasicTable/Table.tsx +198 -198
  149. package/src/components/Tables/BasicTable/TableFooter.tsx +86 -86
  150. package/src/components/Tables/BasicTable/index.tsx +1 -1
  151. package/src/components/Tables/ReactTable/BatchActionsHeader.tsx +58 -58
  152. package/src/components/Tables/ReactTable/ReactTable.tsx +295 -295
  153. package/src/components/Tables/ReactTable/RenderTableBody.tsx +49 -49
  154. package/src/components/Tables/ReactTable/index.tsx +1 -1
  155. package/src/components/Tables/ReactTable/react-table-config.d.ts +128 -128
  156. package/src/components/Tables/common/NoRecordsFound.tsx +27 -27
  157. package/src/components/Tables/common/TableStats.tsx +22 -22
  158. package/src/components/Tables/common/icons.tsx +50 -50
  159. package/src/components/Tables/common/styles.tsx +170 -170
  160. package/src/components/Tables/common/types.ts +57 -57
  161. package/src/components/Tabs/NavigationTabs.tsx +80 -80
  162. package/src/components/Tabs/Tabs.tsx +53 -53
  163. package/src/components/Tabs/TabsContainer.tsx +50 -50
  164. package/src/components/Tabs/index.tsx +1 -1
  165. package/src/components/Tabs/styles.tsx +55 -55
  166. package/src/components/ToastContainer/ToastContainer.tsx +57 -57
  167. package/src/components/ToastContainer/index.tsx +1 -1
  168. package/src/components/UploadButton/UploadButton.tsx +126 -126
  169. package/src/components/UploadButton/index.tsx +1 -1
  170. package/src/components/UploadButton/types.ts +19 -19
  171. package/src/components/UploadDocument.tsx +108 -108
  172. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  173. package/src/components/UploadFileDialog/index.tsx +1 -1
  174. package/src/components/index.ts +106 -102
  175. package/src/config/axios.ts +73 -73
  176. package/src/config/axiosEvaluator.ts +53 -53
  177. package/src/config/axiosXTenant.ts +57 -57
  178. package/src/constants/UIConstants.ts +97 -97
  179. package/src/constants/formValidations.ts +6 -6
  180. package/src/constants/index.ts +5 -5
  181. package/src/constants/isDevelopment.ts +4 -4
  182. package/src/constants/permissions.ts +67 -67
  183. package/src/constants/validateMessages.ts +12 -12
  184. package/src/contexts/LoginFormProvider.tsx +44 -44
  185. package/src/contexts/Providers.tsx +50 -50
  186. package/src/contexts/PublicProviders.tsx +30 -30
  187. package/src/contexts/QueryClientProvider.tsx +22 -22
  188. package/src/hooks/index.ts +4 -4
  189. package/src/hooks/useAuth.ts +96 -96
  190. package/src/hooks/useFetch.ts +53 -53
  191. package/src/hooks/useFilters.ts +80 -80
  192. package/src/hooks/useRouter.ts +31 -31
  193. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  194. package/src/layouts/Components/icons/index.tsx +403 -403
  195. package/src/layouts/Components/styles.tsx +74 -74
  196. package/src/layouts/ComponentsLayout.tsx +3 -3
  197. package/src/permissions/PageWithPermission.tsx +18 -18
  198. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  199. package/src/permissions/ValidateAccess.tsx +18 -18
  200. package/src/permissions/index.ts +2 -2
  201. package/src/react-app-env.d.ts +1 -1
  202. package/src/shared-state/AssetsStore.ts +15 -15
  203. package/src/shared-state/PermissionsStore.ts +352 -352
  204. package/src/shared-state/UserStore.ts +13 -13
  205. package/src/shared-state/index.ts +4 -4
  206. package/src/theme/App.less +3 -3
  207. package/src/theme/MuiThemeProvider.tsx +18 -18
  208. package/src/theme/customCssBaseline.ts +135 -135
  209. package/src/theme/index.css +28 -28
  210. package/src/theme/muiTheme.ts +595 -595
  211. package/src/theme/theme.d.ts +75 -75
  212. package/src/utils/adminAxios.ts +15 -15
  213. package/src/utils/alphabet.ts +23 -23
  214. package/src/utils/arrayPadEnd.ts +3 -3
  215. package/src/utils/formatCurrency.ts +9 -9
  216. package/src/utils/getUrlParams.ts +5 -5
  217. package/src/utils/index.ts +7 -7
  218. package/src/utils/logout.ts +25 -25
  219. package/src/utils/ordinalSuffixOf.ts +14 -14
  220. package/src/utils/romanize.ts +40 -40
  221. package/src/utils/withRouteWrapper.tsx +25 -25
  222. package/src/utils/withSuspense.tsx +6 -6
  223. package/styled-components.tsx +60 -60
  224. package/tsconfig.json +21 -21
  225. package/yarn-error.log +0 -109
@@ -1,46 +1,46 @@
1
- import { SelectProps } from '@mui/material'
2
- import { ReactNode } from 'react'
3
- import { Controller } from 'react-hook-form'
4
- import { SingleSelect } from '../Input'
5
-
6
- type Props = {
7
- name: string
8
- control: any
9
- options: Array<{ label: ReactNode; value: any }>
10
- firstItemEmpty?: boolean
11
- } & SelectProps
12
-
13
- export default function FormSingleSelect(props: Props) {
14
- const {
15
- name = 'select',
16
- options = [],
17
- control,
18
- label,
19
- onChange,
20
- value,
21
- firstItemEmpty = false,
22
- } = props
23
-
24
- const inputOptions = firstItemEmpty
25
- ? [{ label: 'All', value: '__empty__' }, ...options]
26
- : options
27
-
28
- return (
29
- <Controller
30
- name={name}
31
- control={control}
32
- render={({ field, fieldState: { error } }) => (
33
- <SingleSelect
34
- label={label}
35
- name={name}
36
- onChange={onChange ?? field.onChange}
37
- value={value ?? field?.value}
38
- options={inputOptions}
39
- error={!!error}
40
- helperText={error?.message}
41
- {...props}
42
- />
43
- )}
44
- />
45
- )
46
- }
1
+ import { SelectProps } from '@mui/material'
2
+ import { ReactNode } from 'react'
3
+ import { Controller } from 'react-hook-form'
4
+ import { SingleSelect } from '../Input'
5
+
6
+ type Props = {
7
+ name: string
8
+ control: any
9
+ options: Array<{ label: ReactNode; value: any }>
10
+ firstItemEmpty?: boolean
11
+ } & SelectProps
12
+
13
+ export default function FormSingleSelect(props: Props) {
14
+ const {
15
+ name = 'select',
16
+ options = [],
17
+ control,
18
+ label,
19
+ onChange,
20
+ value,
21
+ firstItemEmpty = false,
22
+ } = props
23
+
24
+ const inputOptions = firstItemEmpty
25
+ ? [{ label: 'All', value: '__empty__' }, ...options]
26
+ : options
27
+
28
+ return (
29
+ <Controller
30
+ name={name}
31
+ control={control}
32
+ render={({ field, fieldState: { error } }) => (
33
+ <SingleSelect
34
+ label={label}
35
+ name={name}
36
+ onChange={onChange ?? field.onChange}
37
+ value={value ?? field?.value}
38
+ options={inputOptions}
39
+ error={!!error}
40
+ helperText={error?.message}
41
+ {...props}
42
+ />
43
+ )}
44
+ />
45
+ )
46
+ }
@@ -1,40 +1,40 @@
1
- import { TextFieldProps as MuiTextFieldProps } from '@mui/material'
2
- import React from 'react'
3
- import { Controller } from 'react-hook-form'
4
- import { TextField } from '../Input'
5
-
6
- type MyTextFieldProps = MuiTextFieldProps & {
7
- control: any
8
- label?: string
9
- name: string
10
- required?: boolean
11
- }
12
-
13
- export default function FormTextField({
14
- name,
15
- control,
16
- label,
17
- required,
18
- onChange,
19
- value,
20
- ...rest
21
- }: MyTextFieldProps) {
22
- return (
23
- <Controller
24
- control={control}
25
- name={name}
26
- render={({ field, fieldState: { error } }) => (
27
- <TextField
28
- name={name}
29
- label={label}
30
- onChange={onChange ?? field.onChange}
31
- value={value ?? field?.value}
32
- required={required}
33
- error={error ? true : false}
34
- helperText={error ? error.message : null}
35
- {...rest}
36
- />
37
- )}
38
- />
39
- )
40
- }
1
+ import { TextFieldProps as MuiTextFieldProps } from '@mui/material'
2
+ import React from 'react'
3
+ import { Controller } from 'react-hook-form'
4
+ import { TextField } from '../Input'
5
+
6
+ type MyTextFieldProps = MuiTextFieldProps & {
7
+ control: any
8
+ label?: string
9
+ name: string
10
+ required?: boolean
11
+ }
12
+
13
+ export default function FormTextField({
14
+ name,
15
+ control,
16
+ label,
17
+ required,
18
+ onChange,
19
+ value,
20
+ ...rest
21
+ }: MyTextFieldProps) {
22
+ return (
23
+ <Controller
24
+ control={control}
25
+ name={name}
26
+ render={({ field, fieldState: { error } }) => (
27
+ <TextField
28
+ name={name}
29
+ label={label}
30
+ onChange={onChange ?? field.onChange}
31
+ value={value ?? field?.value}
32
+ required={required}
33
+ error={error ? true : false}
34
+ helperText={error ? error.message : null}
35
+ {...rest}
36
+ />
37
+ )}
38
+ />
39
+ )
40
+ }
@@ -1,40 +1,40 @@
1
- import { Controller } from 'react-hook-form'
2
- import TimePicker, { ITimePicker } from '../Input/TimePicker'
3
-
4
- interface Props extends Omit<ITimePicker, 'onChange' | 'value'> {
5
- name: string
6
- control: any
7
- }
8
-
9
- export default function FormTimePicker({
10
- name,
11
- control,
12
- label,
13
- minTime,
14
- maxTime,
15
- required,
16
- ...rest
17
- }: Props) {
18
- return (
19
- <Controller
20
- name={name}
21
- control={control}
22
- render={({ field, fieldState: { error } }) => (
23
- <TimePicker
24
- label={label}
25
- required={required}
26
- onChange={field.onChange}
27
- value={field.value}
28
- minTime={minTime}
29
- maxTime={maxTime}
30
- inputProps={{
31
- ...rest.inputProps,
32
- error: !!error,
33
- helperText: error?.message ?? '',
34
- }}
35
- {...rest}
36
- />
37
- )}
38
- />
39
- )
40
- }
1
+ import { Controller } from 'react-hook-form'
2
+ import TimePicker, { ITimePicker } from '../Input/TimePicker'
3
+
4
+ interface Props extends Omit<ITimePicker, 'onChange' | 'value'> {
5
+ name: string
6
+ control: any
7
+ }
8
+
9
+ export default function FormTimePicker({
10
+ name,
11
+ control,
12
+ label,
13
+ minTime,
14
+ maxTime,
15
+ required,
16
+ ...rest
17
+ }: Props) {
18
+ return (
19
+ <Controller
20
+ name={name}
21
+ control={control}
22
+ render={({ field, fieldState: { error } }) => (
23
+ <TimePicker
24
+ label={label}
25
+ required={required}
26
+ onChange={field.onChange}
27
+ value={field.value}
28
+ minTime={minTime}
29
+ maxTime={maxTime}
30
+ inputProps={{
31
+ ...rest.inputProps,
32
+ error: !!error,
33
+ helperText: error?.message ?? '',
34
+ }}
35
+ {...rest}
36
+ />
37
+ )}
38
+ />
39
+ )
40
+ }
@@ -1,23 +1,23 @@
1
- import SingleSelect from './SingleSelect'
2
- import FormDatePicker from './DatePicker'
3
- import MultiCheckbox from './MultiCheckbox'
4
- import MultiSelect from './MultiSelect'
5
- import RadioGroup from './RadioGroup'
6
- import SingleCheckbox from './SingleCheckbox'
7
- import AutoCompleteSearch from './AutoCompleteSearch'
8
- import FormTextField from './TextField'
9
- import TimePicker from './TimePicker'
10
- import FormDateTimePicker from './DateTimePicker'
11
-
12
- export {
13
- SingleSelect as FormSingleSelect,
14
- FormDatePicker,
15
- FormTextField,
16
- MultiCheckbox as FormMultiCheckbox,
17
- MultiSelect as FormMultiSelect,
18
- RadioGroup as FormRadioGroup,
19
- SingleCheckbox as FormSingleCheckbox,
20
- AutoCompleteSearch as FormAutoCompleteSearch,
21
- TimePicker as FormTimePicker,
22
- FormDateTimePicker,
23
- }
1
+ import SingleSelect from './SingleSelect'
2
+ import FormDatePicker from './DatePicker'
3
+ import MultiCheckbox from './MultiCheckbox'
4
+ import MultiSelect from './MultiSelect'
5
+ import RadioGroup from './RadioGroup'
6
+ import SingleCheckbox from './SingleCheckbox'
7
+ import AutoCompleteSearch from './AutoCompleteSearch'
8
+ import FormTextField from './TextField'
9
+ import TimePicker from './TimePicker'
10
+ import FormDateTimePicker from './DateTimePicker'
11
+
12
+ export {
13
+ SingleSelect as FormSingleSelect,
14
+ FormDatePicker,
15
+ FormTextField,
16
+ MultiCheckbox as FormMultiCheckbox,
17
+ MultiSelect as FormMultiSelect,
18
+ RadioGroup as FormRadioGroup,
19
+ SingleCheckbox as FormSingleCheckbox,
20
+ AutoCompleteSearch as FormAutoCompleteSearch,
21
+ TimePicker as FormTimePicker,
22
+ FormDateTimePicker,
23
+ }
@@ -1,137 +1,137 @@
1
- import { Box, IconButton, IconButtonProps, styled } from '@mui/material'
2
- import { ReactNode } from 'react'
3
- import {
4
- DeleteIcon,
5
- DisabledDeleteIcon,
6
- DisabledEditIcon,
7
- EditIcon,
8
- ViewIcon,
9
- PrintIcon,
10
- } from './Icons'
11
-
12
- interface ButtonProps extends IconButtonProps {
13
- disabledText?: string
14
- actionType?: 'delete' | 'edit' | 'view' | 'print'
15
- }
16
-
17
- function Button({ ...props }: ButtonProps) {
18
- const handleClick = (e) => {
19
- e.stopPropagation()
20
- if (!props.onClick) return
21
- props.onClick(e)
22
- }
23
- return (
24
- <StyledIconButton
25
- {...props}
26
- onClick={handleClick}
27
- actionType={props.actionType ? props.actionType : 'view'}
28
- >
29
- {props.children}
30
- </StyledIconButton>
31
- )
32
- }
33
-
34
- function DisabledButton({
35
- disabledText,
36
- children,
37
- }: {
38
- disabledText?: string
39
- children: ReactNode
40
- }) {
41
- return (
42
- <Box
43
- sx={{
44
- maxHeight: '14px',
45
- }}
46
- title={disabledText ? disabledText : 'disabled'}
47
- >
48
- {children}
49
- </Box>
50
- )
51
- }
52
-
53
- export function ViewButton({ disabled, disabledText, ...props }: ButtonProps) {
54
- if (disabled) {
55
- return (
56
- <DisabledButton {...props} disabledText={disabledText}>
57
- <ViewIcon />
58
- </DisabledButton>
59
- )
60
- }
61
- return (
62
- <Button {...props} actionType="view">
63
- <ViewIcon />
64
- </Button>
65
- )
66
- }
67
-
68
- export function EditButton({ disabled, disabledText, ...props }: ButtonProps) {
69
- if (disabled) {
70
- return (
71
- <DisabledButton
72
- disabledText={disabledText ?? 'Default types can not be edited'}
73
- >
74
- <DisabledEditIcon />
75
- </DisabledButton>
76
- )
77
- }
78
- return (
79
- <Button {...props} actionType="edit">
80
- <EditIcon />
81
- </Button>
82
- )
83
- }
84
-
85
- export function PrintButton({ disabled, disabledText, ...props }: ButtonProps) {
86
- if (disabled) {
87
- return (
88
- <DisabledButton
89
- disabledText={disabledText ?? 'Default types can not be edited'}
90
- >
91
- <DisabledEditIcon />
92
- </DisabledButton>
93
- )
94
- }
95
- return (
96
- <Button {...props} actionType="print">
97
- <PrintIcon />
98
- </Button>
99
- )
100
- }
101
-
102
- export function DeleteButton({
103
- disabled,
104
- disabledText,
105
- ...props
106
- }: ButtonProps) {
107
- if (disabled) {
108
- return (
109
- <DisabledButton
110
- disabledText={disabledText ?? 'Default types can not be deleted'}
111
- >
112
- <DisabledDeleteIcon />
113
- </DisabledButton>
114
- )
115
- }
116
- return (
117
- <Button {...props} actionType="delete">
118
- <DeleteIcon />
119
- </Button>
120
- )
121
- }
122
-
123
- const StyledIconButton = styled(IconButton)<{
124
- actionType: 'delete' | 'edit' | 'view' | 'print'
125
- }>(({ theme, actionType }) => ({
126
- padding: 0,
127
- '&:hover': {
128
- '& path': {
129
- fill:
130
- actionType === 'delete'
131
- ? 'red'
132
- : actionType === 'edit'
133
- ? theme.palette.common.yellow
134
- : theme.palette.error.main,
135
- },
136
- },
137
- }))
1
+ import { Box, IconButton, IconButtonProps, styled } from '@mui/material'
2
+ import { ReactNode } from 'react'
3
+ import {
4
+ DeleteIcon,
5
+ DisabledDeleteIcon,
6
+ DisabledEditIcon,
7
+ EditIcon,
8
+ ViewIcon,
9
+ PrintIcon,
10
+ } from './Icons'
11
+
12
+ interface ButtonProps extends IconButtonProps {
13
+ disabledText?: string
14
+ actionType?: 'delete' | 'edit' | 'view' | 'print'
15
+ }
16
+
17
+ function Button({ ...props }: ButtonProps) {
18
+ const handleClick = (e) => {
19
+ e.stopPropagation()
20
+ if (!props.onClick) return
21
+ props.onClick(e)
22
+ }
23
+ return (
24
+ <StyledIconButton
25
+ {...props}
26
+ onClick={handleClick}
27
+ actionType={props.actionType ? props.actionType : 'view'}
28
+ >
29
+ {props.children}
30
+ </StyledIconButton>
31
+ )
32
+ }
33
+
34
+ function DisabledButton({
35
+ disabledText,
36
+ children,
37
+ }: {
38
+ disabledText?: string
39
+ children: ReactNode
40
+ }) {
41
+ return (
42
+ <Box
43
+ sx={{
44
+ maxHeight: '14px',
45
+ }}
46
+ title={disabledText ? disabledText : 'disabled'}
47
+ >
48
+ {children}
49
+ </Box>
50
+ )
51
+ }
52
+
53
+ export function ViewButton({ disabled, disabledText, ...props }: ButtonProps) {
54
+ if (disabled) {
55
+ return (
56
+ <DisabledButton {...props} disabledText={disabledText}>
57
+ <ViewIcon />
58
+ </DisabledButton>
59
+ )
60
+ }
61
+ return (
62
+ <Button {...props} actionType="view">
63
+ <ViewIcon />
64
+ </Button>
65
+ )
66
+ }
67
+
68
+ export function EditButton({ disabled, disabledText, ...props }: ButtonProps) {
69
+ if (disabled) {
70
+ return (
71
+ <DisabledButton
72
+ disabledText={disabledText ?? 'Default types can not be edited'}
73
+ >
74
+ <DisabledEditIcon />
75
+ </DisabledButton>
76
+ )
77
+ }
78
+ return (
79
+ <Button {...props} actionType="edit">
80
+ <EditIcon />
81
+ </Button>
82
+ )
83
+ }
84
+
85
+ export function PrintButton({ disabled, disabledText, ...props }: ButtonProps) {
86
+ if (disabled) {
87
+ return (
88
+ <DisabledButton
89
+ disabledText={disabledText ?? 'Default types can not be edited'}
90
+ >
91
+ <DisabledEditIcon />
92
+ </DisabledButton>
93
+ )
94
+ }
95
+ return (
96
+ <Button {...props} actionType="print">
97
+ <PrintIcon />
98
+ </Button>
99
+ )
100
+ }
101
+
102
+ export function DeleteButton({
103
+ disabled,
104
+ disabledText,
105
+ ...props
106
+ }: ButtonProps) {
107
+ if (disabled) {
108
+ return (
109
+ <DisabledButton
110
+ disabledText={disabledText ?? 'Default types can not be deleted'}
111
+ >
112
+ <DisabledDeleteIcon />
113
+ </DisabledButton>
114
+ )
115
+ }
116
+ return (
117
+ <Button {...props} actionType="delete">
118
+ <DeleteIcon />
119
+ </Button>
120
+ )
121
+ }
122
+
123
+ const StyledIconButton = styled(IconButton)<{
124
+ actionType: 'delete' | 'edit' | 'view' | 'print'
125
+ }>(({ theme, actionType }) => ({
126
+ padding: 0,
127
+ '&:hover': {
128
+ '& path': {
129
+ fill:
130
+ actionType === 'delete'
131
+ ? 'red'
132
+ : actionType === 'edit'
133
+ ? theme.palette.common.yellow
134
+ : theme.palette.error.main,
135
+ },
136
+ },
137
+ }))