@campxdev/shared 1.4.9 → 1.4.11

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 (213) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +18 -18
  3. package/package.json +86 -86
  4. package/src/assets/fonts/avenir/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 +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/DropDownButton.tsx +177 -177
  24. package/src/components/DropDownButton/index.tsx +1 -1
  25. package/src/components/DropDownButton/styles.tsx +56 -56
  26. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  27. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  28. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  29. package/src/components/ErrorBoundary/index.tsx +1 -1
  30. package/src/components/ErrorBox.tsx +42 -42
  31. package/src/components/FloatingContainer.tsx +33 -33
  32. package/src/components/Form/Form.tsx +156 -156
  33. package/src/components/Form/RenderForm.tsx +188 -188
  34. package/src/components/FullCalendar/Actions.tsx +162 -162
  35. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  36. package/src/components/FullScreenLoader.tsx +19 -19
  37. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  38. package/src/components/HookForm/DatePicker.tsx +40 -40
  39. package/src/components/HookForm/DateTimePicker.tsx +47 -47
  40. package/src/components/HookForm/FormLabel.tsx +14 -14
  41. package/src/components/HookForm/MultiCheckbox.tsx +69 -69
  42. package/src/components/HookForm/MultiSelect.tsx +50 -50
  43. package/src/components/HookForm/RadioGroup.tsx +45 -45
  44. package/src/components/HookForm/SingleCheckbox.tsx +34 -34
  45. package/src/components/HookForm/SingleSelect.tsx +46 -46
  46. package/src/components/HookForm/TextField.tsx +40 -40
  47. package/src/components/HookForm/TimePicker.tsx +40 -40
  48. package/src/components/HookForm/index.ts +23 -23
  49. package/src/components/IconButtons/IconButtons.tsx +137 -137
  50. package/src/components/IconButtons/Icons.tsx +268 -268
  51. package/src/components/IconButtons/assets/edit.svg +4 -4
  52. package/src/components/IconButtons/assets/eye.svg +6 -6
  53. package/src/components/IconButtons/assets/trash.svg +7 -7
  54. package/src/components/IconButtons/index.tsx +8 -8
  55. package/src/components/IconLabel.tsx +37 -37
  56. package/src/components/Image/Image.tsx +43 -43
  57. package/src/components/Image/index.tsx +1 -1
  58. package/src/components/ImageUpload.tsx +98 -98
  59. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +216 -216
  60. package/src/components/Input/AsyncSearchSelect/index.tsx +1 -1
  61. package/src/components/Input/AsyncSearchSelect/styles.tsx +105 -105
  62. package/src/components/Input/AutoCompleteSearch.tsx +121 -121
  63. package/src/components/Input/DatePicker.tsx +69 -69
  64. package/src/components/Input/DateRangePicker.tsx +131 -131
  65. package/src/components/Input/DateTimePicker.tsx +75 -75
  66. package/src/components/Input/FormLabel.tsx +21 -21
  67. package/src/components/Input/MultiCheckbox.tsx +64 -64
  68. package/src/components/Input/MultiSelect.tsx +148 -148
  69. package/src/components/Input/RadioGroup.tsx +104 -104
  70. package/src/components/Input/SingleCheckbox.tsx +78 -78
  71. package/src/components/Input/SingleSelect.tsx +104 -104
  72. package/src/components/Input/TextField.tsx +46 -46
  73. package/src/components/Input/TimePicker.tsx +70 -70
  74. package/src/components/Input/index.ts +26 -26
  75. package/src/components/Input/types.ts +3 -3
  76. package/src/components/JsonPreview.tsx +7 -7
  77. package/src/components/LabelValue.tsx +21 -21
  78. package/src/components/Layout/ChangePassword.tsx +49 -49
  79. package/src/components/Layout/Header/AppHeader.tsx +102 -102
  80. package/src/components/Layout/Header/AppsMenu.tsx +98 -98
  81. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  82. package/src/components/Layout/Header/Notification.tsx +13 -13
  83. package/src/components/Layout/Header/UserBox.tsx +81 -81
  84. package/src/components/Layout/Header/applications.ts +91 -91
  85. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  86. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  87. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  88. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  89. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  90. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  91. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  92. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  93. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  94. package/src/components/Layout/Header/assets/index.ts +33 -33
  95. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  96. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  97. package/src/components/Layout/Header/assets/payx.svg +19 -19
  98. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  99. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  100. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  101. package/src/components/Layout/Header/icons.tsx +57 -57
  102. package/src/components/Layout/Header/index.tsx +1 -1
  103. package/src/components/Layout/Header/styles.tsx +124 -124
  104. package/src/components/Layout/{Header → Tickets}/HelpWidget/HelpWidget.tsx +273 -273
  105. package/src/components/Layout/{Header → Tickets}/HelpWidget/styles.tsx +94 -94
  106. package/src/components/Layout/Tickets/MyTickets.tsx +72 -72
  107. package/src/components/Layout/Tickets/TicketDetails.tsx +65 -65
  108. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  109. package/src/components/Layout/Tickets/index.tsx +1 -1
  110. package/src/components/Layout/Tickets/services.ts +11 -11
  111. package/src/components/Layout/Tickets/styles.tsx +136 -136
  112. package/src/components/LayoutWrapper.tsx +25 -25
  113. package/src/components/LinearProgress.tsx +19 -19
  114. package/src/components/ListItemButton.tsx +95 -95
  115. package/src/components/LoginForm.tsx +80 -80
  116. package/src/components/MediaRow/MediaRow.tsx +69 -69
  117. package/src/components/MediaRow/index.tsx +1 -1
  118. package/src/components/ModalButtons/DialogButton.tsx +93 -93
  119. package/src/components/ModalButtons/DrawerButton.tsx +85 -85
  120. package/src/components/ModalButtons/index.tsx +4 -4
  121. package/src/components/NoDataIllustration.tsx +32 -32
  122. package/src/components/PageContent.tsx +17 -17
  123. package/src/components/PageHeader.tsx +55 -55
  124. package/src/components/PageNotFound.tsx +26 -26
  125. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  126. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  127. package/src/components/PopupConfirm/index.tsx +1 -1
  128. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  129. package/src/components/Row.tsx +24 -24
  130. package/src/components/SearchBar.tsx +60 -60
  131. package/src/components/SideMenuHeader.tsx +29 -29
  132. package/src/components/SideNav.tsx +168 -168
  133. package/src/components/Spinner.tsx +18 -18
  134. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  135. package/src/components/StepsHeader/index.tsx +1 -1
  136. package/src/components/StyledTableContainer.tsx +33 -33
  137. package/src/components/SwitchButton.tsx +41 -41
  138. package/src/components/Table.tsx +42 -42
  139. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  140. package/src/components/TableComponent/Icons/index.tsx +50 -50
  141. package/src/components/TableComponent/ReactTable.tsx +293 -293
  142. package/src/components/TableComponent/RenderTableBody.tsx +66 -66
  143. package/src/components/TableComponent/Table.tsx +200 -200
  144. package/src/components/TableComponent/TableFooter/TableFooter.tsx +104 -104
  145. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  146. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  147. package/src/components/TableComponent/index.tsx +1 -1
  148. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  149. package/src/components/TableComponent/styles.tsx +170 -170
  150. package/src/components/TableComponent/types.ts +57 -57
  151. package/src/components/Tabs/Tabs.tsx +52 -52
  152. package/src/components/Tabs/TabsContainer.tsx +50 -50
  153. package/src/components/Tabs/index.tsx +1 -1
  154. package/src/components/Tabs/styles.tsx +55 -55
  155. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  156. package/src/components/ToastContainer/index.tsx +1 -1
  157. package/src/components/UploadButton/UploadButton.tsx +126 -126
  158. package/src/components/UploadButton/index.tsx +1 -1
  159. package/src/components/UploadButton/types.ts +19 -19
  160. package/src/components/UploadDocument.tsx +108 -108
  161. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  162. package/src/components/UploadFileDialog/index.tsx +1 -1
  163. package/src/components/index.ts +87 -84
  164. package/src/config/axios.ts +73 -73
  165. package/src/config/axiosEvaluator.ts +53 -53
  166. package/src/config/axiosXTenant.ts +57 -57
  167. package/src/constants/UIConstants.ts +97 -97
  168. package/src/constants/formValidations.ts +6 -6
  169. package/src/constants/index.ts +5 -5
  170. package/src/constants/isDevelopment.ts +3 -3
  171. package/src/constants/permissions.ts +67 -67
  172. package/src/constants/validateMessages.ts +12 -12
  173. package/src/contexts/LoginFormProvider.tsx +39 -39
  174. package/src/contexts/Providers.tsx +71 -71
  175. package/src/contexts/PublicProviders.tsx +30 -30
  176. package/src/contexts/QueryClientProvider.tsx +22 -22
  177. package/src/hooks/index.ts +3 -3
  178. package/src/hooks/useAuth.ts +96 -96
  179. package/src/hooks/useFetch.ts +53 -53
  180. package/src/hooks/useRouter.ts +31 -31
  181. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  182. package/src/layouts/Components/icons/index.tsx +403 -403
  183. package/src/layouts/Components/styles.tsx +60 -60
  184. package/src/layouts/ComponentsLayout.tsx +3 -3
  185. package/src/permissions/PageWithPermission.tsx +18 -18
  186. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  187. package/src/permissions/ValidateAccess.tsx +18 -18
  188. package/src/permissions/index.ts +2 -2
  189. package/src/react-app-env.d.ts +1 -1
  190. package/src/shared-state/AssetsStore.ts +15 -15
  191. package/src/shared-state/PermissionsStore.ts +352 -352
  192. package/src/shared-state/UserStore.ts +13 -13
  193. package/src/shared-state/index.ts +4 -4
  194. package/src/theme/App.less +3 -3
  195. package/src/theme/MuiThemeProvider.tsx +13 -13
  196. package/src/theme/customCssBaseline.ts +78 -78
  197. package/src/theme/index.css +75 -75
  198. package/src/theme/muiTheme.ts +560 -560
  199. package/src/theme/theme.d.ts +75 -75
  200. package/src/utils/alphabet.ts +23 -23
  201. package/src/utils/arrayPadEnd.ts +3 -3
  202. package/src/utils/formatCurrency.ts +9 -9
  203. package/src/utils/getUrlParams.ts +5 -5
  204. package/src/utils/index.ts +8 -8
  205. package/src/utils/logout.ts +24 -24
  206. package/src/utils/ordinalSuffixOf.ts +14 -14
  207. package/src/utils/romanize.ts +40 -40
  208. package/src/utils/withLocalization.tsx +11 -11
  209. package/src/utils/withRouteWrapper.tsx +25 -25
  210. package/src/utils/withSuspense.tsx +6 -6
  211. package/styled-components.tsx +60 -60
  212. package/tsconfig.json +21 -21
  213. package/src/components/Layout/Header/assets/commuteX.png +0 -0
@@ -1,236 +1,236 @@
1
- import { Alert, Box, Button, Divider, styled, Typography } from '@mui/material'
2
- import { useEffect, useState } from 'react'
3
- import {
4
- nointernet,
5
- pagenotfound,
6
- permissiondenied,
7
- unauth,
8
- internalserver,
9
- } from '../../assets/images'
10
- import Cookies from 'js-cookie'
11
- import LoginForm from '../LoginForm'
12
- import { useModal } from '../DrawerWrapper/DrawerWrapper'
13
- import { PermissionsStore } from '../../shared-state'
14
- import axios from '../../config/axios'
15
-
16
- const StyledAlert = styled(Alert)(({ theme }) => ({
17
- border: `1px solid ${theme.palette.error.main}`,
18
- display: 'flex',
19
- alignItems: 'center',
20
- '& .MuiAlert-message': {
21
- padding: 0,
22
- },
23
- '& .MuiTypography-root': {
24
- margin: 0,
25
- },
26
- position: 'relative',
27
- '& .retryBtn': {
28
- color: '#661b2a',
29
- position: 'absolute',
30
- right: 8,
31
- top: 8,
32
- },
33
- }))
34
-
35
- const StyledBox = styled(Box)(({ theme }) => ({
36
- width: '100%',
37
- display: 'flex',
38
- flexDirection: 'column',
39
- alignItems: 'center',
40
- justifyContent: 'center',
41
- }))
42
-
43
- export default function ErrorFallback({ error, resetErrorBoundary }) {
44
- if (error?.response?.status) {
45
- switch (error?.response?.status) {
46
- case 401:
47
- return <UnAuth resetBoundary={resetErrorBoundary} />
48
-
49
- case 500:
50
- return (
51
- <InternalServer resetBoundary={resetErrorBoundary} error={error} />
52
- )
53
-
54
- case 403:
55
- return <PemissionDenied resetBoundary={resetErrorBoundary} />
56
-
57
- default:
58
- return (
59
- <InternalServer resetBoundary={resetErrorBoundary} error={error} />
60
- )
61
- }
62
- }
63
-
64
- if (error?.message === 'Network Error') {
65
- return <NoInternet resetBoundary={resetErrorBoundary} />
66
- }
67
-
68
- return (
69
- <Box sx={{ marginTop: '16px', padding: '16px' }}>
70
- <StyledAlert severity="error">
71
- {error?.response?.data?.message ?? error?.message}
72
- <Button
73
- className="retryBtn"
74
- onClick={() => resetErrorBoundary()}
75
- size="small"
76
- color="error"
77
- variant="outlined"
78
- >
79
- Try Again
80
- </Button>
81
- </StyledAlert>
82
- </Box>
83
- )
84
- }
85
-
86
- export function PageNotFound({ resetBoundary }) {
87
- return (
88
- <>
89
- <StyledBox>
90
- <img
91
- src={pagenotfound}
92
- alt="page not found"
93
- width={470}
94
- style={{ marginTop: '20px' }}
95
- />
96
- <Typography variant="h1">Page Not Found.</Typography>
97
- <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
98
- Try Again
99
- </Button>
100
- </StyledBox>
101
- </>
102
- )
103
- }
104
-
105
- export function NoInternet({ resetBoundary }) {
106
- return (
107
- <>
108
- <StyledBox>
109
- <img src={nointernet} alt="No Internet Found" width={470} />
110
- <Typography variant="h1">No Internet Found.</Typography>
111
- <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
112
- Try Again
113
- </Button>
114
- </StyledBox>
115
- </>
116
- )
117
- }
118
-
119
- export function PemissionDenied({ resetBoundary }) {
120
- return (
121
- <>
122
- <StyledBox>
123
- <img src={permissiondenied} alt="permission denied" width={470} />
124
- <Typography variant="h1">Permission Denied.</Typography>
125
- <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
126
- Try Again
127
- </Button>
128
- </StyledBox>
129
- </>
130
- )
131
- }
132
-
133
- export function InternalServer({ resetBoundary, error }) {
134
- return (
135
- <>
136
- <StyledBox>
137
- <img src={internalserver} alt="internal server error" width={470} />
138
- <Typography variant="h1" marginTop={'20px'}>
139
- Internal Server Error.
140
- </Typography>
141
- <Typography variant="body1">
142
- {error?.response?.data?.message}
143
- </Typography>
144
- <Button
145
- size="small"
146
- variant="outlined"
147
- sx={{ marginTop: '20px' }}
148
- onClick={() => resetBoundary()}
149
- >
150
- Try Again
151
- </Button>
152
- </StyledBox>
153
- </>
154
- )
155
- }
156
-
157
- export function UnAuth({ resetBoundary }) {
158
- const modal = useModal()
159
- const [username, setUsername] = useState('')
160
- const [loading, setLoading] = useState(false)
161
-
162
- const url = window.location.origin
163
- const origin = window?.location?.origin?.split('.')
164
- const isLocalHost =
165
- process.env.NODE_ENV === 'development' ||
166
- origin?.slice(-2).join('.') === 'campx.dev'
167
- const sessionCookie = Cookies.get('campx_session_key')
168
- const appinit = async () => {
169
- setLoading(true)
170
- await axios
171
- .get('/auth/my-permissions')
172
- .then((res) => {
173
- setUsername(res.data.user.fullName)
174
- PermissionsStore.update((s) => {
175
- s.permissions = {
176
- ...res.data?.permissions,
177
- can_settings_view: 1,
178
- can_dashboard_view: 1,
179
- can_individual_pages_view: 1,
180
- } as any
181
- })
182
- setLoading(false)
183
- })
184
- .catch((e) => {
185
- modal({
186
- title: 'Login',
187
- content: () => <LoginForm />,
188
- })
189
- })
190
- }
191
- function LoginPage() {
192
- if (isLocalHost) {
193
- if (!sessionCookie) {
194
- modal({
195
- title: 'Login',
196
- content: () => <LoginForm />,
197
- })
198
- } else {
199
- appinit()
200
- }
201
- } else {
202
- if (!sessionCookie) {
203
- window.location.replace(`https://www.id.campx.in/?redirect_to=${url}`)
204
- } else {
205
- appinit()
206
- }
207
- }
208
- }
209
-
210
- return (
211
- <>
212
- <StyledBox>
213
- <img src={unauth} alt="unauthorized" width={470} />
214
- <Typography variant="h1" marginTop={'20px'}>
215
- UnAuthorized.
216
- </Typography>
217
- <Box
218
- sx={{
219
- display: 'flex',
220
- marginTop: '20px',
221
- }}
222
- >
223
- <Button
224
- variant="outlined"
225
- sx={{ marginRight: '10px' }}
226
- onClick={() => resetBoundary()}
227
- >
228
- Try Again
229
- </Button>
230
-
231
- <Button onClick={() => LoginPage()}>Click here to Login</Button>
232
- </Box>
233
- </StyledBox>
234
- </>
235
- )
236
- }
1
+ import { Alert, Box, Button, Divider, styled, Typography } from '@mui/material'
2
+ import { useEffect, useState } from 'react'
3
+ import {
4
+ nointernet,
5
+ pagenotfound,
6
+ permissiondenied,
7
+ unauth,
8
+ internalserver,
9
+ } from '../../assets/images'
10
+ import Cookies from 'js-cookie'
11
+ import LoginForm from '../LoginForm'
12
+ import { useModal } from '../DrawerWrapper/DrawerWrapper'
13
+ import { PermissionsStore } from '../../shared-state'
14
+ import axios from '../../config/axios'
15
+
16
+ const StyledAlert = styled(Alert)(({ theme }) => ({
17
+ border: `1px solid ${theme.palette.error.main}`,
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ '& .MuiAlert-message': {
21
+ padding: 0,
22
+ },
23
+ '& .MuiTypography-root': {
24
+ margin: 0,
25
+ },
26
+ position: 'relative',
27
+ '& .retryBtn': {
28
+ color: '#661b2a',
29
+ position: 'absolute',
30
+ right: 8,
31
+ top: 8,
32
+ },
33
+ }))
34
+
35
+ const StyledBox = styled(Box)(({ theme }) => ({
36
+ width: '100%',
37
+ display: 'flex',
38
+ flexDirection: 'column',
39
+ alignItems: 'center',
40
+ justifyContent: 'center',
41
+ }))
42
+
43
+ export default function ErrorFallback({ error, resetErrorBoundary }) {
44
+ if (error?.response?.status) {
45
+ switch (error?.response?.status) {
46
+ case 401:
47
+ return <UnAuth resetBoundary={resetErrorBoundary} />
48
+
49
+ case 500:
50
+ return (
51
+ <InternalServer resetBoundary={resetErrorBoundary} error={error} />
52
+ )
53
+
54
+ case 403:
55
+ return <PemissionDenied resetBoundary={resetErrorBoundary} />
56
+
57
+ default:
58
+ return (
59
+ <InternalServer resetBoundary={resetErrorBoundary} error={error} />
60
+ )
61
+ }
62
+ }
63
+
64
+ if (error?.message === 'Network Error') {
65
+ return <NoInternet resetBoundary={resetErrorBoundary} />
66
+ }
67
+
68
+ return (
69
+ <Box sx={{ marginTop: '16px', padding: '16px' }}>
70
+ <StyledAlert severity="error">
71
+ {error?.response?.data?.message ?? error?.message}
72
+ <Button
73
+ className="retryBtn"
74
+ onClick={() => resetErrorBoundary()}
75
+ size="small"
76
+ color="error"
77
+ variant="outlined"
78
+ >
79
+ Try Again
80
+ </Button>
81
+ </StyledAlert>
82
+ </Box>
83
+ )
84
+ }
85
+
86
+ export function PageNotFound({ resetBoundary }) {
87
+ return (
88
+ <>
89
+ <StyledBox>
90
+ <img
91
+ src={pagenotfound}
92
+ alt="page not found"
93
+ width={470}
94
+ style={{ marginTop: '20px' }}
95
+ />
96
+ <Typography variant="h1">Page Not Found.</Typography>
97
+ <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
98
+ Try Again
99
+ </Button>
100
+ </StyledBox>
101
+ </>
102
+ )
103
+ }
104
+
105
+ export function NoInternet({ resetBoundary }) {
106
+ return (
107
+ <>
108
+ <StyledBox>
109
+ <img src={nointernet} alt="No Internet Found" width={470} />
110
+ <Typography variant="h1">No Internet Found.</Typography>
111
+ <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
112
+ Try Again
113
+ </Button>
114
+ </StyledBox>
115
+ </>
116
+ )
117
+ }
118
+
119
+ export function PemissionDenied({ resetBoundary }) {
120
+ return (
121
+ <>
122
+ <StyledBox>
123
+ <img src={permissiondenied} alt="permission denied" width={470} />
124
+ <Typography variant="h1">Permission Denied.</Typography>
125
+ <Button sx={{ marginTop: '20px' }} onClick={() => resetBoundary()}>
126
+ Try Again
127
+ </Button>
128
+ </StyledBox>
129
+ </>
130
+ )
131
+ }
132
+
133
+ export function InternalServer({ resetBoundary, error }) {
134
+ return (
135
+ <>
136
+ <StyledBox>
137
+ <img src={internalserver} alt="internal server error" width={470} />
138
+ <Typography variant="h1" marginTop={'20px'}>
139
+ Internal Server Error.
140
+ </Typography>
141
+ <Typography variant="body1">
142
+ {error?.response?.data?.message}
143
+ </Typography>
144
+ <Button
145
+ size="small"
146
+ variant="outlined"
147
+ sx={{ marginTop: '20px' }}
148
+ onClick={() => resetBoundary()}
149
+ >
150
+ Try Again
151
+ </Button>
152
+ </StyledBox>
153
+ </>
154
+ )
155
+ }
156
+
157
+ export function UnAuth({ resetBoundary }) {
158
+ const modal = useModal()
159
+ const [username, setUsername] = useState('')
160
+ const [loading, setLoading] = useState(false)
161
+
162
+ const url = window.location.origin
163
+ const origin = window?.location?.origin?.split('.')
164
+ const isLocalHost =
165
+ process.env.NODE_ENV === 'development' ||
166
+ origin?.slice(-2).join('.') === 'campx.dev'
167
+ const sessionCookie = Cookies.get('campx_session_key')
168
+ const appinit = async () => {
169
+ setLoading(true)
170
+ await axios
171
+ .get('/auth/my-permissions')
172
+ .then((res) => {
173
+ setUsername(res.data.user.fullName)
174
+ PermissionsStore.update((s) => {
175
+ s.permissions = {
176
+ ...res.data?.permissions,
177
+ can_settings_view: 1,
178
+ can_dashboard_view: 1,
179
+ can_individual_pages_view: 1,
180
+ } as any
181
+ })
182
+ setLoading(false)
183
+ })
184
+ .catch((e) => {
185
+ modal({
186
+ title: 'Login',
187
+ content: () => <LoginForm />,
188
+ })
189
+ })
190
+ }
191
+ function LoginPage() {
192
+ if (isLocalHost) {
193
+ if (!sessionCookie) {
194
+ modal({
195
+ title: 'Login',
196
+ content: () => <LoginForm />,
197
+ })
198
+ } else {
199
+ appinit()
200
+ }
201
+ } else {
202
+ if (!sessionCookie) {
203
+ window.location.replace(`https://www.id.campx.in/?redirect_to=${url}`)
204
+ } else {
205
+ appinit()
206
+ }
207
+ }
208
+ }
209
+
210
+ return (
211
+ <>
212
+ <StyledBox>
213
+ <img src={unauth} alt="unauthorized" width={470} />
214
+ <Typography variant="h1" marginTop={'20px'}>
215
+ UnAuthorized.
216
+ </Typography>
217
+ <Box
218
+ sx={{
219
+ display: 'flex',
220
+ marginTop: '20px',
221
+ }}
222
+ >
223
+ <Button
224
+ variant="outlined"
225
+ sx={{ marginRight: '10px' }}
226
+ onClick={() => resetBoundary()}
227
+ >
228
+ Try Again
229
+ </Button>
230
+
231
+ <Button onClick={() => LoginPage()}>Click here to Login</Button>
232
+ </Box>
233
+ </StyledBox>
234
+ </>
235
+ )
236
+ }
@@ -1,13 +1,13 @@
1
- import { Store } from 'pullstate'
2
- import { LinearProgress } from '../LinearProgress'
3
-
4
- export const NetworkStore = new Store({
5
- loading: false,
6
- })
7
-
8
- export default function GlobalNetworkLoadingIndicator() {
9
- const { loading } = NetworkStore.useState()
10
-
11
- if (loading) return <LinearProgress />
12
- if (loading) return null
13
- }
1
+ import { Store } from 'pullstate'
2
+ import { LinearProgress } from '../LinearProgress'
3
+
4
+ export const NetworkStore = new Store({
5
+ loading: false,
6
+ })
7
+
8
+ export default function GlobalNetworkLoadingIndicator() {
9
+ const { loading } = NetworkStore.useState()
10
+
11
+ if (loading) return <LinearProgress />
12
+ if (loading) return null
13
+ }
@@ -1 +1 @@
1
- export { default } from './ErrorBoundary'
1
+ export { default } from './ErrorBoundary'
@@ -1,42 +1,42 @@
1
- import { Alert as MuiAlert, styled } from '@mui/material'
2
- import _ from 'lodash'
3
- import { ReactNode } from 'react'
4
-
5
- export default function ErrorBox({
6
- err,
7
- extra,
8
- }: {
9
- err: any
10
- extra?: string | ReactNode
11
- }) {
12
- if (!err) {
13
- return null
14
- }
15
-
16
- if (err.response) {
17
- if (err.response.status == 401) {
18
- return (
19
- <Alert severity={'error'}>
20
- {_.get(err, 'response.data.message', 'Server error!')} {extra}
21
- </Alert>
22
- )
23
- }
24
- if (err.response.status == 422) {
25
- return (
26
- <Alert severity={'error'}>
27
- {_.get(err, 'response.data.message', 'Server error!')} {extra}
28
- </Alert>
29
- )
30
- }
31
-
32
- return (
33
- <Alert severity={'error'}>
34
- {'Unknown Error'} {extra}
35
- </Alert>
36
- )
37
- }
38
- }
39
-
40
- const Alert = styled(MuiAlert)(({}) => ({
41
- marginTop: '20px',
42
- }))
1
+ import { Alert as MuiAlert, styled } from '@mui/material'
2
+ import _ from 'lodash'
3
+ import { ReactNode } from 'react'
4
+
5
+ export default function ErrorBox({
6
+ err,
7
+ extra,
8
+ }: {
9
+ err: any
10
+ extra?: string | ReactNode
11
+ }) {
12
+ if (!err) {
13
+ return null
14
+ }
15
+
16
+ if (err.response) {
17
+ if (err.response.status == 401) {
18
+ return (
19
+ <Alert severity={'error'}>
20
+ {_.get(err, 'response.data.message', 'Server error!')} {extra}
21
+ </Alert>
22
+ )
23
+ }
24
+ if (err.response.status == 422) {
25
+ return (
26
+ <Alert severity={'error'}>
27
+ {_.get(err, 'response.data.message', 'Server error!')} {extra}
28
+ </Alert>
29
+ )
30
+ }
31
+
32
+ return (
33
+ <Alert severity={'error'}>
34
+ {'Unknown Error'} {extra}
35
+ </Alert>
36
+ )
37
+ }
38
+ }
39
+
40
+ const Alert = styled(MuiAlert)(({}) => ({
41
+ marginTop: '20px',
42
+ }))
@@ -1,33 +1,33 @@
1
- import { Box, styled } from '@mui/material'
2
- export const StyledFooter = styled(Box)<{
3
- show: boolean
4
- }>`
5
- position: fixed;
6
- background: #fff;
7
- bottom: ${(props) => (props.show ? '0' : '-70px')};
8
- right: 16px;
9
- width: calc(100% - 236px);
10
- height: 64px;
11
- display: flex;
12
- justify-content: center;
13
- align-items: center;
14
- gap: 1.5rem;
15
- padding: 1rem;
16
- transition: bottom 400ms ease-in-out;
17
- box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1);
18
- `
19
-
20
- function FloatingContainer({
21
- children,
22
- show,
23
- }: {
24
- show?: boolean
25
- children: React.ReactNode
26
- }) {
27
- return (
28
- <>
29
- <StyledFooter show={show ? show : true}>{children}</StyledFooter>
30
- </>
31
- )
32
- }
33
- export default FloatingContainer
1
+ import { Box, styled } from '@mui/material'
2
+ export const StyledFooter = styled(Box)<{
3
+ show: boolean
4
+ }>`
5
+ position: fixed;
6
+ background: #fff;
7
+ bottom: ${(props) => (props.show ? '0' : '-70px')};
8
+ right: 16px;
9
+ width: calc(100% - 236px);
10
+ height: 64px;
11
+ display: flex;
12
+ justify-content: center;
13
+ align-items: center;
14
+ gap: 1.5rem;
15
+ padding: 1rem;
16
+ transition: bottom 400ms ease-in-out;
17
+ box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1);
18
+ `
19
+
20
+ function FloatingContainer({
21
+ children,
22
+ show,
23
+ }: {
24
+ show?: boolean
25
+ children: React.ReactNode
26
+ }) {
27
+ return (
28
+ <>
29
+ <StyledFooter show={show ? show : true}>{children}</StyledFooter>
30
+ </>
31
+ )
32
+ }
33
+ export default FloatingContainer