@campxdev/shared 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +17 -17
  3. package/package.json +82 -82
  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 +72 -72
  13. package/src/components/Card.tsx +98 -98
  14. package/src/components/CardsGrid.tsx +28 -28
  15. package/src/components/ChangePassword.tsx +164 -164
  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.tsx +194 -194
  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 +33 -33
  30. package/src/components/Form/Form.tsx +156 -156
  31. package/src/components/Form/RenderForm.tsx +188 -188
  32. package/src/components/FullCalendar/Actions.tsx +162 -162
  33. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  34. package/src/components/FullScreenLoader.tsx +19 -19
  35. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  36. package/src/components/HookForm/DatePicker.tsx +65 -65
  37. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  38. package/src/components/HookForm/FormLabel.tsx +14 -14
  39. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  40. package/src/components/HookForm/MultiSelect.tsx +100 -100
  41. package/src/components/HookForm/RadioGroup.tsx +106 -106
  42. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  43. package/src/components/HookForm/SingleSelect.tsx +94 -94
  44. package/src/components/HookForm/TextField.tsx +74 -74
  45. package/src/components/HookForm/TimePicker.tsx +82 -82
  46. package/src/components/HookForm/index.ts +23 -23
  47. package/src/components/IconButtons/IconButtons.tsx +137 -137
  48. package/src/components/IconButtons/Icons.tsx +268 -268
  49. package/src/components/IconButtons/assets/edit.svg +4 -4
  50. package/src/components/IconButtons/assets/eye.svg +6 -6
  51. package/src/components/IconButtons/assets/trash.svg +7 -7
  52. package/src/components/IconButtons/index.tsx +8 -8
  53. package/src/components/IconLabel.tsx +37 -37
  54. package/src/components/Image/Image.tsx +43 -43
  55. package/src/components/Image/index.tsx +1 -1
  56. package/src/components/ImageUpload.tsx +98 -98
  57. package/src/components/Input/AutoCompleteSearch.tsx +113 -113
  58. package/src/components/Input/DatePicker.tsx +60 -60
  59. package/src/components/Input/DateRangePicker.tsx +131 -131
  60. package/src/components/Input/DateTimePicker.tsx +70 -70
  61. package/src/components/Input/FormLabel.tsx +14 -14
  62. package/src/components/Input/MultiCheckbox.tsx +79 -79
  63. package/src/components/Input/MultiSelect.tsx +52 -52
  64. package/src/components/Input/RadioGroup.tsx +61 -61
  65. package/src/components/Input/SingleCheckbox.tsx +23 -23
  66. package/src/components/Input/SingleSelect.tsx +126 -126
  67. package/src/components/Input/TextField.tsx +50 -50
  68. package/src/components/Input/TimePicker.tsx +82 -82
  69. package/src/components/Input/index.ts +26 -26
  70. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  71. package/src/components/JsonPreview/index.tsx +1 -1
  72. package/src/components/LabelValue/LabelValue.tsx +21 -21
  73. package/src/components/LabelValue/index.tsx +1 -1
  74. package/src/components/Layout/ChangePassword.tsx +49 -49
  75. package/src/components/Layout/Header/AppHeader.tsx +124 -124
  76. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  77. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  78. package/src/components/Layout/Header/HelpWidget/HelpWidget.tsx +299 -298
  79. package/src/components/Layout/Header/HelpWidget/styles.tsx +94 -94
  80. package/src/components/Layout/Header/Notification.tsx +13 -13
  81. package/src/components/Layout/Header/UserBox.tsx +91 -91
  82. package/src/components/Layout/Header/applications.ts +90 -90
  83. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  84. package/src/components/Layout/Header/assets/commuteX.png +0 -0
  85. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  86. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  87. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  88. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  89. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  90. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  91. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  92. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  93. package/src/components/Layout/Header/assets/index.ts +33 -33
  94. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  95. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  96. package/src/components/Layout/Header/assets/payx.svg +19 -19
  97. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  98. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  99. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  100. package/src/components/Layout/Header/icons.tsx +57 -57
  101. package/src/components/Layout/Header/index.tsx +1 -1
  102. package/src/components/Layout/Header/styles.tsx +98 -98
  103. package/src/components/Layout/Tickets/MyTickets.tsx +76 -74
  104. package/src/components/Layout/Tickets/Services.tsx +6 -6
  105. package/src/components/Layout/Tickets/TicketDetails.tsx +66 -66
  106. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  107. package/src/components/Layout/Tickets/index.tsx +1 -1
  108. package/src/components/Layout/Tickets/styles.tsx +136 -136
  109. package/src/components/LayoutWrapper.tsx +25 -25
  110. package/src/components/LinearProgress.tsx +19 -19
  111. package/src/components/ListItemButton.tsx +95 -95
  112. package/src/components/LoginForm.tsx +105 -105
  113. package/src/components/MediaRow/MediaRow.tsx +69 -69
  114. package/src/components/MediaRow/index.tsx +1 -1
  115. package/src/components/MenuButton.tsx +103 -103
  116. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  117. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  118. package/src/components/ModalButtons/index.tsx +4 -4
  119. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  120. package/src/components/NoDataIllustration/index.tsx +1 -1
  121. package/src/components/PageContent.tsx +17 -17
  122. package/src/components/PageHeader.tsx +52 -52
  123. package/src/components/PageNotFound.tsx +26 -26
  124. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  125. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  126. package/src/components/PopupConfirm/index.tsx +1 -1
  127. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  128. package/src/components/Router.tsx +7 -7
  129. package/src/components/Row/Row.tsx +24 -24
  130. package/src/components/Row/index.tsx +1 -1
  131. package/src/components/SearchBar/SearchBar.tsx +53 -53
  132. package/src/components/SearchBar/index.tsx +1 -1
  133. package/src/components/SideMenuHeader.tsx +29 -29
  134. package/src/components/SideNav.tsx +168 -168
  135. package/src/components/Spinner.tsx +18 -18
  136. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  137. package/src/components/StepsHeader/index.tsx +1 -1
  138. package/src/components/StyledTableContainer.tsx +33 -33
  139. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  140. package/src/components/SwitchButton/index.tsx +1 -1
  141. package/src/components/Table.tsx +42 -42
  142. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  143. package/src/components/TableComponent/Icons/index.tsx +50 -50
  144. package/src/components/TableComponent/ReactTable.tsx +293 -293
  145. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  146. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  147. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  148. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  149. package/src/components/TableComponent/index.tsx +226 -226
  150. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  151. package/src/components/TableComponent/styles.tsx +173 -173
  152. package/src/components/TableComponent/types.ts +57 -57
  153. package/src/components/Tabs/Tabs.tsx +52 -52
  154. package/src/components/Tabs/TabsContainer.tsx +50 -50
  155. package/src/components/Tabs/index.tsx +1 -1
  156. package/src/components/Tabs/styles.tsx +55 -55
  157. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  158. package/src/components/ToastContainer/index.tsx +1 -1
  159. package/src/components/UploadButton/UploadButton.tsx +126 -126
  160. package/src/components/UploadButton/index.tsx +1 -1
  161. package/src/components/UploadButton/types.ts +19 -19
  162. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  163. package/src/components/UploadDocument/index.tsx +1 -1
  164. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  165. package/src/components/UploadFileDialog/index.tsx +1 -1
  166. package/src/components/index.ts +86 -86
  167. package/src/config/axios.ts +74 -74
  168. package/src/config/axiosXTenant.ts +57 -57
  169. package/src/constants/UIConstants.ts +97 -97
  170. package/src/constants/formValidations.ts +6 -6
  171. package/src/constants/index.ts +5 -5
  172. package/src/constants/isDevelopment.ts +3 -3
  173. package/src/constants/permissions.ts +67 -67
  174. package/src/constants/validateMessages.ts +12 -12
  175. package/src/contexts/LoginFormProvider.tsx +39 -39
  176. package/src/contexts/Providers.tsx +60 -60
  177. package/src/contexts/PublicProviders.tsx +30 -30
  178. package/src/contexts/QueryClientProvider.tsx +22 -22
  179. package/src/hooks/index.ts +3 -3
  180. package/src/hooks/useAppInit.ts +33 -33
  181. package/src/hooks/useAuth.ts +96 -96
  182. package/src/hooks/useFetch.ts +53 -53
  183. package/src/hooks/useRouter.ts +31 -31
  184. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  185. package/src/layouts/Components/icons/index.tsx +403 -403
  186. package/src/layouts/Components/styles.tsx +60 -60
  187. package/src/layouts/ComponentsLayout.tsx +3 -3
  188. package/src/permissions/PageWithPermission.tsx +18 -18
  189. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  190. package/src/permissions/ValidateAccess.tsx +18 -18
  191. package/src/permissions/index.ts +2 -2
  192. package/src/react-app-env.d.ts +1 -1
  193. package/src/shared-state/AssetsStore.ts +15 -15
  194. package/src/shared-state/PermissionsStore.ts +352 -352
  195. package/src/shared-state/UserStore.ts +13 -13
  196. package/src/shared-state/index.ts +4 -4
  197. package/src/theme/App.less +3 -3
  198. package/src/theme/MuiThemeProvider.tsx +13 -13
  199. package/src/theme/customCssBaseline.ts +78 -78
  200. package/src/theme/index.css +75 -75
  201. package/src/theme/muiTheme.ts +490 -490
  202. package/src/theme/theme.d.ts +75 -75
  203. package/src/utils/alphabet.ts +23 -23
  204. package/src/utils/arrayPadEnd.ts +3 -3
  205. package/src/utils/formatCurrency.ts +9 -9
  206. package/src/utils/getUrlParams.ts +5 -5
  207. package/src/utils/index.ts +8 -8
  208. package/src/utils/logout.ts +24 -24
  209. package/src/utils/ordinalSuffixOf.ts +14 -14
  210. package/src/utils/romanize.ts +40 -40
  211. package/src/utils/withLocalization.tsx +11 -11
  212. package/src/utils/withRouteWrapper.tsx +25 -25
  213. package/src/utils/withSuspense.tsx +6 -6
  214. package/styled-components.tsx +60 -60
  215. package/tsconfig.json +21 -21
@@ -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