@campxdev/shared 0.5.19 → 0.5.21

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 (200) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +15 -15
  3. package/package.json +52 -52
  4. package/src/assets/fonts/avenir/index.ts +2 -2
  5. package/src/assets/fonts/poppins/index.ts +7 -7
  6. package/src/assets/images/index.ts +17 -17
  7. package/src/assets/images/unauth.svg +92 -92
  8. package/src/components/ActionButton.tsx +28 -28
  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 +73 -73
  13. package/src/components/Card.tsx +97 -97
  14. package/src/components/CardsGrid.tsx +28 -28
  15. package/src/components/ChangePassword.tsx +164 -164
  16. package/src/components/Chips.tsx +77 -77
  17. package/src/components/Detail.tsx +15 -15
  18. package/src/components/DetailsGrid.tsx +52 -52
  19. package/src/components/DividerHeading.tsx +40 -40
  20. package/src/components/DrawerWrapper/DialogWrapper.tsx +63 -63
  21. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  22. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  23. package/src/components/DropDownButton.tsx +190 -190
  24. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  25. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  26. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  27. package/src/components/ErrorBoundary/index.tsx +1 -1
  28. package/src/components/ErrorBox.tsx +42 -42
  29. package/src/components/FloatingContainer.tsx +26 -26
  30. package/src/components/FullCalendar/Actions.tsx +162 -162
  31. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  32. package/src/components/FullScreenLoader.tsx +19 -19
  33. package/src/components/HookForm/AutoCompleteSearch.tsx +143 -143
  34. package/src/components/HookForm/DatePicker.tsx +65 -65
  35. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  36. package/src/components/HookForm/FormLabel.tsx +14 -14
  37. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  38. package/src/components/HookForm/MultiSelect.tsx +100 -100
  39. package/src/components/HookForm/RadioGroup.tsx +112 -112
  40. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  41. package/src/components/HookForm/SingleSelect.tsx +93 -93
  42. package/src/components/HookForm/TextField.tsx +74 -74
  43. package/src/components/HookForm/TimePicker.tsx +82 -82
  44. package/src/components/HookForm/index.ts +23 -23
  45. package/src/components/IconButtons/IconButtons.tsx +137 -137
  46. package/src/components/IconButtons/Icons.tsx +268 -268
  47. package/src/components/IconButtons/assets/edit.svg +4 -4
  48. package/src/components/IconButtons/assets/eye.svg +6 -6
  49. package/src/components/IconButtons/assets/trash.svg +7 -7
  50. package/src/components/IconButtons/index.tsx +8 -8
  51. package/src/components/IconLabel.tsx +37 -37
  52. package/src/components/Image/Image.tsx +43 -43
  53. package/src/components/Image/index.tsx +1 -1
  54. package/src/components/ImageUpload.tsx +98 -98
  55. package/src/components/Input/AutoCompleteSearch.tsx +143 -143
  56. package/src/components/Input/DatePicker.tsx +60 -60
  57. package/src/components/Input/DateRangePicker.tsx +131 -131
  58. package/src/components/Input/DateTimePicker.tsx +70 -70
  59. package/src/components/Input/FormLabel.tsx +14 -14
  60. package/src/components/Input/MultiCheckbox.tsx +79 -79
  61. package/src/components/Input/MultiSelect.tsx +52 -52
  62. package/src/components/Input/RadioGroup.tsx +55 -55
  63. package/src/components/Input/SingleCheckbox.tsx +23 -23
  64. package/src/components/Input/SingleSelect.tsx +139 -139
  65. package/src/components/Input/TextField.tsx +50 -50
  66. package/src/components/Input/TimePicker.tsx +82 -82
  67. package/src/components/Input/index.ts +26 -26
  68. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  69. package/src/components/JsonPreview/index.tsx +1 -1
  70. package/src/components/LabelValue/LabelValue.tsx +21 -21
  71. package/src/components/LabelValue/index.tsx +1 -1
  72. package/src/components/Layout/ChangePassword.tsx +49 -49
  73. package/src/components/Layout/Header/AppHeader.tsx +113 -113
  74. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  75. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  76. package/src/components/Layout/Header/FreshDeskHelpButton.tsx +19 -19
  77. package/src/components/Layout/Header/Notification.tsx +13 -13
  78. package/src/components/Layout/Header/UserBox.tsx +70 -70
  79. package/src/components/Layout/Header/applications.ts +87 -87
  80. package/src/components/Layout/Header/assets/campx.svg +29 -29
  81. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  82. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  83. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  84. package/src/components/Layout/Header/assets/index.ts +23 -23
  85. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  86. package/src/components/Layout/Header/assets/payxHeader.svg +21 -21
  87. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  88. package/src/components/Layout/Header/assets/peoplexHeader.svg +14 -14
  89. package/src/components/Layout/Header/icons.tsx +57 -57
  90. package/src/components/Layout/Header/index.tsx +1 -1
  91. package/src/components/Layout/Header/styles.tsx +98 -98
  92. package/src/components/LayoutWrapper.tsx +25 -25
  93. package/src/components/LinearProgress.tsx +19 -19
  94. package/src/components/ListItemButton.tsx +94 -94
  95. package/src/components/LoginForm.tsx +103 -103
  96. package/src/components/MediaRow/MediaRow.tsx +69 -69
  97. package/src/components/MediaRow/index.tsx +1 -1
  98. package/src/components/MenuButton.tsx +103 -103
  99. package/src/components/ModalButtons/DialogButton.tsx +85 -85
  100. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  101. package/src/components/ModalButtons/index.tsx +4 -4
  102. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  103. package/src/components/NoDataIllustration/index.tsx +1 -1
  104. package/src/components/PageContent.tsx +17 -17
  105. package/src/components/PageHeader.tsx +52 -52
  106. package/src/components/PageNotFound.tsx +26 -26
  107. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  108. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  109. package/src/components/PopupConfirm/index.tsx +1 -1
  110. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  111. package/src/components/Row/Row.tsx +24 -24
  112. package/src/components/Row/index.tsx +1 -1
  113. package/src/components/SearchBar/SearchBar.tsx +53 -53
  114. package/src/components/SearchBar/index.tsx +1 -1
  115. package/src/components/SideMenuHeader.tsx +29 -29
  116. package/src/components/SideNav.tsx +150 -150
  117. package/src/components/Spinner.tsx +18 -18
  118. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  119. package/src/components/StepsHeader/index.tsx +1 -1
  120. package/src/components/Styled/OutlinedIconButton.tsx +7 -7
  121. package/src/components/Styled/index.tsx +1 -1
  122. package/src/components/StyledTableContainer.tsx +33 -33
  123. package/src/components/Swiper/Swiper.tsx +39 -39
  124. package/src/components/Swiper/index.tsx +1 -1
  125. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  126. package/src/components/SwitchButton/index.tsx +1 -1
  127. package/src/components/Table.tsx +42 -42
  128. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  129. package/src/components/TableComponent/Icons/index.tsx +50 -50
  130. package/src/components/TableComponent/ReactTable.tsx +293 -293
  131. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  132. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  133. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  134. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  135. package/src/components/TableComponent/index.tsx +221 -221
  136. package/src/components/TableComponent/react-table-config.d.ts +129 -129
  137. package/src/components/TableComponent/styles.tsx +173 -173
  138. package/src/components/TableComponent/types.ts +57 -57
  139. package/src/components/Tabs/Tabs.tsx +52 -52
  140. package/src/components/Tabs/TabsContainer.tsx +50 -50
  141. package/src/components/Tabs/index.tsx +1 -1
  142. package/src/components/Tabs/styles.tsx +55 -55
  143. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  144. package/src/components/ToastContainer/index.tsx +1 -1
  145. package/src/components/UploadButton/UploadButton.tsx +98 -98
  146. package/src/components/UploadButton/index.tsx +1 -1
  147. package/src/components/UploadButton/types.ts +14 -14
  148. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  149. package/src/components/UploadDocument/index.tsx +1 -1
  150. package/src/components/UploadFileDialog/UploadFileDialog.tsx +240 -240
  151. package/src/components/UploadFileDialog/index.tsx +1 -1
  152. package/src/components/index.ts +82 -82
  153. package/src/config/axios.ts +73 -73
  154. package/src/constants/UIConstants.ts +97 -97
  155. package/src/constants/formValidations.ts +6 -6
  156. package/src/constants/index.ts +5 -5
  157. package/src/constants/isDevelopment.ts +3 -3
  158. package/src/constants/permissions.ts +67 -67
  159. package/src/constants/validateMessages.ts +12 -12
  160. package/src/contexts/LoginFormProvider.tsx +39 -39
  161. package/src/contexts/Providers.tsx +57 -58
  162. package/src/contexts/QueryClientProvider.tsx +22 -22
  163. package/src/hooks/index.ts +3 -3
  164. package/src/hooks/useAppInit.ts +33 -27
  165. package/src/hooks/useAuth.ts +90 -90
  166. package/src/hooks/useFetch.ts +53 -53
  167. package/src/hooks/useRouter.ts +31 -31
  168. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  169. package/src/layouts/Components/icons/index.tsx +403 -403
  170. package/src/layouts/Components/styles.tsx +60 -60
  171. package/src/layouts/ComponentsLayout.tsx +3 -3
  172. package/src/permissions/PageWithPermission.tsx +18 -18
  173. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  174. package/src/permissions/PermissionsStore.ts +352 -295
  175. package/src/permissions/ValidateAccess.tsx +18 -18
  176. package/src/permissions/index.ts +3 -3
  177. package/src/react-app-env.d.ts +1 -1
  178. package/src/shared-state/AssetsStore.ts +15 -15
  179. package/src/shared-state/UserStore.ts +13 -13
  180. package/src/shared-state/index.ts +3 -3
  181. package/src/theme/App.less +3 -3
  182. package/src/theme/MuiThemeProvider.tsx +13 -13
  183. package/src/theme/customCssBaseline.ts +78 -78
  184. package/src/theme/index.css +75 -75
  185. package/src/theme/muiTheme.ts +516 -516
  186. package/src/theme/theme.d.ts +75 -75
  187. package/src/utils/alphabet.ts +23 -23
  188. package/src/utils/arrayPadEnd.ts +3 -3
  189. package/src/utils/formatCurrency.ts +9 -9
  190. package/src/utils/getUrlParams.ts +5 -5
  191. package/src/utils/index.ts +8 -8
  192. package/src/utils/logout.ts +24 -24
  193. package/src/utils/ordinalSuffixOf.ts +14 -14
  194. package/src/utils/romanize.ts +40 -40
  195. package/src/utils/withLocalization.tsx +11 -11
  196. package/src/utils/withRouteWrapper.tsx +25 -25
  197. package/src/utils/withSuspense.tsx +6 -6
  198. package/styled-components.tsx +60 -60
  199. package/todo.md +8 -8
  200. package/tsconfig.json +21 -21
@@ -1,49 +1,49 @@
1
- import { Button, Stack } from '@mui/material'
2
- import { useForm } from 'react-hook-form'
3
- import { toast } from 'react-toastify'
4
- import { FormTextField } from '..'
5
- import axios, { axiosErrorToast } from '../../config/axios'
6
-
7
- export default function ChangePassword({ close }) {
8
- const { handleSubmit, control } = useForm()
9
-
10
- const onSubmit = async (formData) => {
11
- try {
12
- await axios.post('/auth/change-password', formData)
13
- toast.success('Password Changed Successfully')
14
- } catch (error) {
15
- axiosErrorToast(error)
16
- }
17
- }
18
-
19
- return (
20
- <form onSubmit={handleSubmit(onSubmit)}>
21
- <Stack gap={2}>
22
- <FormTextField
23
- label="Old Password"
24
- control={control}
25
- name="oldPassword"
26
- required
27
- />
28
- <FormTextField
29
- label="New Password"
30
- control={control}
31
- name="newPassword"
32
- required
33
- />
34
- <FormTextField
35
- label="Confirm Password"
36
- control={control}
37
- name="password"
38
- required
39
- />
40
- <Stack>
41
- <Button variant="outlined" onClick={close}>
42
- Cancel
43
- </Button>
44
- <Button type="submit">Submit</Button>
45
- </Stack>
46
- </Stack>
47
- </form>
48
- )
49
- }
1
+ import { Button, Stack } from '@mui/material'
2
+ import { useForm } from 'react-hook-form'
3
+ import { toast } from 'react-toastify'
4
+ import { FormTextField } from '..'
5
+ import axios, { axiosErrorToast } from '../../config/axios'
6
+
7
+ export default function ChangePassword({ close }) {
8
+ const { handleSubmit, control } = useForm()
9
+
10
+ const onSubmit = async (formData) => {
11
+ try {
12
+ await axios.post('/auth/change-password', formData)
13
+ toast.success('Password Changed Successfully')
14
+ } catch (error) {
15
+ axiosErrorToast(error)
16
+ }
17
+ }
18
+
19
+ return (
20
+ <form onSubmit={handleSubmit(onSubmit)}>
21
+ <Stack gap={2}>
22
+ <FormTextField
23
+ label="Old Password"
24
+ control={control}
25
+ name="oldPassword"
26
+ required
27
+ />
28
+ <FormTextField
29
+ label="New Password"
30
+ control={control}
31
+ name="newPassword"
32
+ required
33
+ />
34
+ <FormTextField
35
+ label="Confirm Password"
36
+ control={control}
37
+ name="password"
38
+ required
39
+ />
40
+ <Stack>
41
+ <Button variant="outlined" onClick={close}>
42
+ Cancel
43
+ </Button>
44
+ <Button type="submit">Submit</Button>
45
+ </Stack>
46
+ </Stack>
47
+ </form>
48
+ )
49
+ }
@@ -1,113 +1,113 @@
1
- import {Box, styled, Typography} from '@mui/material'
2
- import {ReactNode} from 'react'
3
- import {Link} from 'react-router-dom'
4
- import {isDevelopment} from '../../../constants/isDevelopment'
5
- import {applications} from './applications'
6
- import AppsMenu from './AppsMenu'
7
- import {collegex, enrollx, examx, payx, peoplex} from './assets'
8
- import CogWheelMenu from './CogWheelMenu'
9
- import FreshDeskHelpButton from './FreshDeskHelpButton'
10
- import Notification from './Notification'
11
- import {StyledHeader, StyledImageWrapper} from './styles'
12
- import UserBox from './UserBox'
13
-
14
- const StyledLogosWrapper = styled(Box)(() => ({
15
- display: 'flex',
16
- alignItems: 'center',
17
- gap: '10px',
18
- padding: '10px',
19
- transition: 'background ease 0.3s',
20
- borderRadius: '5px',
21
- '&:hover': {
22
- background: 'rgba(0, 0, 0, 0.05)',
23
- },
24
- }))
25
-
26
- const StyledLink = styled(Link)(() => ({
27
- textDecoration: 'none',
28
- }))
29
-
30
- const imageMap = {
31
- ums: collegex,
32
- enroll: enrollx,
33
- exams: examx,
34
- payments: payx,
35
- peoplex: peoplex,
36
- campx: collegex,
37
- }
38
-
39
- interface AppHeaderProps {
40
- clientLogo: string
41
- username: string
42
- profileIcon: string
43
- permissions?: any
44
- userBoxActions: {
45
- label: ReactNode
46
- icon?: ReactNode
47
- onClick: any
48
- }[]
49
- cogWheelMenu?: {label: string; path: string}[]
50
- }
51
-
52
- export default function AppHeader({
53
- clientLogo = imageMap.campx,
54
- username,
55
- profileIcon,
56
- permissions,
57
- userBoxActions = [],
58
- cogWheelMenu = [],
59
- }: AppHeaderProps) {
60
- return (
61
- <StyledHeader>
62
- <Box sx={{display: 'flex', alignItems: 'center', gap: '10px'}}>
63
- <AppsMenu />
64
- <AppLogo clientLogo={clientLogo} />
65
- </Box>
66
- <Box className='actions'>
67
- <FreshDeskHelpButton />
68
- {/* <Notification /> */}
69
- {cogWheelMenu?.length ? <CogWheelMenu menu={cogWheelMenu} /> : null}
70
- <UserBox
71
- username={username}
72
- profileIcon={profileIcon}
73
- actions={userBoxActions}
74
- />
75
- </Box>
76
- </StyledHeader>
77
- )
78
- }
79
-
80
- const AppLogo = ({clientLogo}) => {
81
- const originSubdomain = window.location.host.split('.')?.slice(-3)[0] ?? 'ums'
82
- const currentApp =
83
- applications.find((item) => item.key === originSubdomain)?.key ?? 'campx'
84
-
85
- return (
86
- <StyledLink to={'/'}>
87
- <StyledLogosWrapper>
88
- <StyledImageWrapper>
89
- <img src={imageMap[currentApp]} />
90
- </StyledImageWrapper>
91
- <Box
92
- sx={{
93
- height: '26px',
94
- width: '2px',
95
- background: 'gray',
96
- }}
97
- ></Box>
98
- <StyledImageWrapper>
99
- {isDevelopment ? (
100
- <Typography variant='h1'>Developer</Typography>
101
- ) : (
102
- <img
103
- src={clientLogo}
104
- onError={(e: any) => {
105
- e.target.src = imageMap.campx
106
- }}
107
- />
108
- )}
109
- </StyledImageWrapper>
110
- </StyledLogosWrapper>
111
- </StyledLink>
112
- )
113
- }
1
+ import {Box, styled, Typography} from '@mui/material'
2
+ import {ReactNode} from 'react'
3
+ import {Link} from 'react-router-dom'
4
+ import {isDevelopment} from '../../../constants/isDevelopment'
5
+ import {applications} from './applications'
6
+ import AppsMenu from './AppsMenu'
7
+ import {collegex, enrollx, examx, payx, peoplex} from './assets'
8
+ import CogWheelMenu from './CogWheelMenu'
9
+ import FreshDeskHelpButton from './FreshDeskHelpButton'
10
+ import Notification from './Notification'
11
+ import {StyledHeader, StyledImageWrapper} from './styles'
12
+ import UserBox from './UserBox'
13
+
14
+ const StyledLogosWrapper = styled(Box)(() => ({
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ gap: '10px',
18
+ padding: '10px',
19
+ transition: 'background ease 0.3s',
20
+ borderRadius: '5px',
21
+ '&:hover': {
22
+ background: 'rgba(0, 0, 0, 0.05)',
23
+ },
24
+ }))
25
+
26
+ const StyledLink = styled(Link)(() => ({
27
+ textDecoration: 'none',
28
+ }))
29
+
30
+ const imageMap = {
31
+ ums: collegex,
32
+ enroll: enrollx,
33
+ exams: examx,
34
+ payments: payx,
35
+ peoplex: peoplex,
36
+ campx: collegex,
37
+ }
38
+
39
+ interface AppHeaderProps {
40
+ clientLogo: string
41
+ username: string
42
+ profileIcon: string
43
+ permissions?: any
44
+ userBoxActions: {
45
+ label: ReactNode
46
+ icon?: ReactNode
47
+ onClick: any
48
+ }[]
49
+ cogWheelMenu?: {label: string; path: string}[]
50
+ }
51
+
52
+ export default function AppHeader({
53
+ clientLogo = imageMap.campx,
54
+ username,
55
+ profileIcon,
56
+ permissions,
57
+ userBoxActions = [],
58
+ cogWheelMenu = [],
59
+ }: AppHeaderProps) {
60
+ return (
61
+ <StyledHeader>
62
+ <Box sx={{display: 'flex', alignItems: 'center', gap: '10px'}}>
63
+ <AppsMenu />
64
+ <AppLogo clientLogo={clientLogo} />
65
+ </Box>
66
+ <Box className='actions'>
67
+ <FreshDeskHelpButton />
68
+ {/* <Notification /> */}
69
+ {cogWheelMenu?.length ? <CogWheelMenu menu={cogWheelMenu} /> : null}
70
+ <UserBox
71
+ username={username}
72
+ profileIcon={profileIcon}
73
+ actions={userBoxActions}
74
+ />
75
+ </Box>
76
+ </StyledHeader>
77
+ )
78
+ }
79
+
80
+ const AppLogo = ({clientLogo}) => {
81
+ const originSubdomain = window.location.host.split('.')?.slice(-3)[0] ?? 'ums'
82
+ const currentApp =
83
+ applications.find((item) => item.key === originSubdomain)?.key ?? 'campx'
84
+
85
+ return (
86
+ <StyledLink to={'/'}>
87
+ <StyledLogosWrapper>
88
+ <StyledImageWrapper>
89
+ <img src={imageMap[currentApp]} />
90
+ </StyledImageWrapper>
91
+ <Box
92
+ sx={{
93
+ height: '26px',
94
+ width: '2px',
95
+ background: 'gray',
96
+ }}
97
+ ></Box>
98
+ <StyledImageWrapper>
99
+ {isDevelopment ? (
100
+ <Typography variant='h1'>Developer</Typography>
101
+ ) : (
102
+ <img
103
+ src={clientLogo}
104
+ onError={(e: any) => {
105
+ e.target.src = imageMap.campx
106
+ }}
107
+ />
108
+ )}
109
+ </StyledImageWrapper>
110
+ </StyledLogosWrapper>
111
+ </StyledLink>
112
+ )
113
+ }
@@ -1,92 +1,92 @@
1
- import {Box, Menu, Typography} from '@mui/material'
2
- import {useState} from 'react'
3
- import {applications} from './applications'
4
- import {AppsIcon} from './icons'
5
- import {
6
- StyledDescription,
7
- StyledIconButton,
8
- StyledMenuItem,
9
- StyledMenuItemContainer,
10
- StyledLink,
11
- } from './styles'
12
-
13
- const AppsMenu = () => {
14
- const [anchorEl, setAnchorEl] = useState<any>(null)
15
- const open = Boolean(anchorEl)
16
-
17
- const handleClick = (event) => {
18
- setAnchorEl(event.currentTarget)
19
- }
20
-
21
- const handleClose = () => {
22
- setAnchorEl(null)
23
- }
24
-
25
- return (
26
- <>
27
- <StyledIconButton onClick={handleClick}>
28
- <AppsIcon />
29
- </StyledIconButton>
30
-
31
- <Menu
32
- transitionDuration={150}
33
- elevation={3}
34
- id='basic-menu'
35
- anchorEl={anchorEl}
36
- open={open}
37
- onClose={handleClose}
38
- anchorOrigin={{
39
- vertical: 'bottom',
40
- horizontal: 'left',
41
- }}
42
- transformOrigin={{
43
- vertical: 'top',
44
- horizontal: 'left',
45
- }}
46
- sx={{
47
- '& .MuiPaper-root': {
48
- left: '0 !important',
49
- top: '64px !important',
50
- },
51
- }}
52
- >
53
- <Box sx={{padding: '0.3rem 1rem'}}>
54
- <Typography variant='body2'>Switch to</Typography>
55
- </Box>
56
- <Box>
57
- {applications.map((item, index) => (
58
- <StyledLink href={item.path}>
59
- <StyledMenuItemContainer
60
- key={index}
61
- onClick={() => {
62
- window.location.href = item.path
63
- handleClose()
64
- }}
65
- >
66
- <MenuItem data={item} />
67
- </StyledMenuItemContainer>
68
- </StyledLink>
69
- ))}
70
- </Box>
71
- </Menu>
72
- </>
73
- )
74
- }
75
-
76
- export default AppsMenu
77
-
78
- const MenuItem = ({data}) => {
79
- return (
80
- <StyledMenuItem>
81
- <Box>
82
- <img src={data.icon} style={{width: '32px', height: '32px'}} />
83
- </Box>
84
- <Box>
85
- <Typography variant='h1' sx={{marginBottom: '7px'}}>
86
- {data?.title}
87
- </Typography>
88
- <StyledDescription>{data?.description}</StyledDescription>
89
- </Box>
90
- </StyledMenuItem>
91
- )
92
- }
1
+ import {Box, Menu, Typography} from '@mui/material'
2
+ import {useState} from 'react'
3
+ import {applications} from './applications'
4
+ import {AppsIcon} from './icons'
5
+ import {
6
+ StyledDescription,
7
+ StyledIconButton,
8
+ StyledMenuItem,
9
+ StyledMenuItemContainer,
10
+ StyledLink,
11
+ } from './styles'
12
+
13
+ const AppsMenu = () => {
14
+ const [anchorEl, setAnchorEl] = useState<any>(null)
15
+ const open = Boolean(anchorEl)
16
+
17
+ const handleClick = (event) => {
18
+ setAnchorEl(event.currentTarget)
19
+ }
20
+
21
+ const handleClose = () => {
22
+ setAnchorEl(null)
23
+ }
24
+
25
+ return (
26
+ <>
27
+ <StyledIconButton onClick={handleClick}>
28
+ <AppsIcon />
29
+ </StyledIconButton>
30
+
31
+ <Menu
32
+ transitionDuration={150}
33
+ elevation={3}
34
+ id='basic-menu'
35
+ anchorEl={anchorEl}
36
+ open={open}
37
+ onClose={handleClose}
38
+ anchorOrigin={{
39
+ vertical: 'bottom',
40
+ horizontal: 'left',
41
+ }}
42
+ transformOrigin={{
43
+ vertical: 'top',
44
+ horizontal: 'left',
45
+ }}
46
+ sx={{
47
+ '& .MuiPaper-root': {
48
+ left: '0 !important',
49
+ top: '64px !important',
50
+ },
51
+ }}
52
+ >
53
+ <Box sx={{padding: '0.3rem 1rem'}}>
54
+ <Typography variant='body2'>Switch to</Typography>
55
+ </Box>
56
+ <Box>
57
+ {applications.map((item, index) => (
58
+ <StyledLink href={item.path}>
59
+ <StyledMenuItemContainer
60
+ key={index}
61
+ onClick={() => {
62
+ window.location.href = item.path
63
+ handleClose()
64
+ }}
65
+ >
66
+ <MenuItem data={item} />
67
+ </StyledMenuItemContainer>
68
+ </StyledLink>
69
+ ))}
70
+ </Box>
71
+ </Menu>
72
+ </>
73
+ )
74
+ }
75
+
76
+ export default AppsMenu
77
+
78
+ const MenuItem = ({data}) => {
79
+ return (
80
+ <StyledMenuItem>
81
+ <Box>
82
+ <img src={data.icon} style={{width: '32px', height: '32px'}} />
83
+ </Box>
84
+ <Box>
85
+ <Typography variant='h1' sx={{marginBottom: '7px'}}>
86
+ {data?.title}
87
+ </Typography>
88
+ <StyledDescription>{data?.description}</StyledDescription>
89
+ </Box>
90
+ </StyledMenuItem>
91
+ )
92
+ }
@@ -1,33 +1,33 @@
1
- import {SettingsOutlined} from '@mui/icons-material'
2
- import {IconButton} from '@mui/material'
3
- import {useHistory} from '../../../hooks/useRouter'
4
- import MenuButton from '../../MenuButton'
5
-
6
- const CogWheelMenu = ({menu}) => {
7
- const history = useHistory()
8
-
9
- return (
10
- <MenuButton
11
- anchor={
12
- <IconButton color='secondary'>
13
- <SettingsOutlined />
14
- </IconButton>
15
- }
16
- menu={menu?.map((item) => ({
17
- label: item?.label,
18
- onClick: () => {
19
- history.push(item?.path)
20
- },
21
- }))}
22
- menuProps={{
23
- PaperProps: {sx: {top: '64px !important'}},
24
- transformOrigin: {
25
- horizontal: 'center',
26
- vertical: 'bottom',
27
- },
28
- }}
29
- />
30
- )
31
- }
32
-
33
- export default CogWheelMenu
1
+ import {SettingsOutlined} from '@mui/icons-material'
2
+ import {IconButton} from '@mui/material'
3
+ import {useHistory} from '../../../hooks/useRouter'
4
+ import MenuButton from '../../MenuButton'
5
+
6
+ const CogWheelMenu = ({menu}) => {
7
+ const history = useHistory()
8
+
9
+ return (
10
+ <MenuButton
11
+ anchor={
12
+ <IconButton color='secondary'>
13
+ <SettingsOutlined />
14
+ </IconButton>
15
+ }
16
+ menu={menu?.map((item) => ({
17
+ label: item?.label,
18
+ onClick: () => {
19
+ history.push(item?.path)
20
+ },
21
+ }))}
22
+ menuProps={{
23
+ PaperProps: {sx: {top: '64px !important'}},
24
+ transformOrigin: {
25
+ horizontal: 'center',
26
+ vertical: 'bottom',
27
+ },
28
+ }}
29
+ />
30
+ )
31
+ }
32
+
33
+ export default CogWheelMenu
@@ -1,19 +1,19 @@
1
- import { HelpOutline } from '@mui/icons-material'
2
- import { Button, IconButton } from '@mui/material'
3
-
4
- export default function FreshDeskHelpButton() {
5
- const handleOpenFreshDeskWidget = () => {
6
- try {
7
- ;(window as any)?.openFreshDeskWidget()
8
- } catch (error) {
9
- // eslint-disable-next-line no-console
10
- console.error('Error launching Freshdesk')
11
- }
12
- }
13
-
14
- return (
15
- <IconButton color="secondary" onClick={handleOpenFreshDeskWidget}>
16
- <HelpOutline />
17
- </IconButton>
18
- )
19
- }
1
+ import { HelpOutline } from '@mui/icons-material'
2
+ import { Button, IconButton } from '@mui/material'
3
+
4
+ export default function FreshDeskHelpButton() {
5
+ const handleOpenFreshDeskWidget = () => {
6
+ try {
7
+ ;(window as any)?.openFreshDeskWidget()
8
+ } catch (error) {
9
+ // eslint-disable-next-line no-console
10
+ console.error('Error launching Freshdesk')
11
+ }
12
+ }
13
+
14
+ return (
15
+ <IconButton color="secondary" onClick={handleOpenFreshDeskWidget}>
16
+ <HelpOutline />
17
+ </IconButton>
18
+ )
19
+ }
@@ -1,13 +1,13 @@
1
- import { IconButton } from '@mui/material'
2
- import { NotificationIcon } from './icons'
3
-
4
- function Notification() {
5
- return (
6
- <>
7
- <IconButton>
8
- <NotificationIcon />
9
- </IconButton>
10
- </>
11
- )
12
- }
13
- export default Notification
1
+ import { IconButton } from '@mui/material'
2
+ import { NotificationIcon } from './icons'
3
+
4
+ function Notification() {
5
+ return (
6
+ <>
7
+ <IconButton>
8
+ <NotificationIcon />
9
+ </IconButton>
10
+ </>
11
+ )
12
+ }
13
+ export default Notification