@campxdev/shared 1.8.50 → 1.9.0

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 (240) 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/ApplicationProfile/ApplicationProfile.tsx +344 -342
  10. package/src/components/ApplicationProfile/UserProfileRelation.tsx +130 -174
  11. package/src/components/ApplicationProfile/index.tsx +1 -1
  12. package/src/components/ApplicationProfile/{Service.ts → services.ts} +68 -68
  13. package/src/components/Attachment.tsx +26 -26
  14. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  15. package/src/components/AutocompleteSearch/index.tsx +1 -1
  16. package/src/components/Breadcrumbs.tsx +72 -72
  17. package/src/components/Card.tsx +98 -98
  18. package/src/components/CardsGrid.tsx +28 -28
  19. package/src/components/ChangePassword.tsx +123 -123
  20. package/src/components/Chips.tsx +81 -81
  21. package/src/components/Detail.tsx +15 -15
  22. package/src/components/DetailsGrid.tsx +52 -52
  23. package/src/components/DividerHeading.tsx +41 -41
  24. package/src/components/DrawerWrapper/DialogWrapper.tsx +67 -67
  25. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  26. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  27. package/src/components/DropDownButton/AnchorElement.tsx +44 -44
  28. package/src/components/DropDownButton/DropDownButton.tsx +184 -184
  29. package/src/components/DropDownButton/DropdownMenuItem.tsx +122 -122
  30. package/src/components/DropDownButton/index.tsx +1 -1
  31. package/src/components/DropDownButton/styles.tsx +59 -59
  32. package/src/components/ErrorBoundary/ErrorBoundary.tsx +33 -33
  33. package/src/components/ErrorBoundary/ErrorFallback.tsx +240 -241
  34. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  35. package/src/components/ErrorBoundary/index.tsx +1 -1
  36. package/src/components/ErrorBox.tsx +42 -42
  37. package/src/components/ExcelToJsonInput/ExcelJsonUpload.tsx +50 -50
  38. package/src/components/ExcelToJsonInput/ExcelToJsonInput.tsx +57 -57
  39. package/src/components/ExcelToJsonInput/index.tsx +1 -1
  40. package/src/components/FilterComponents/FilterButton.tsx +56 -56
  41. package/src/components/FilterComponents/SearchBar.tsx +45 -45
  42. package/src/components/FloatingContainer.tsx +33 -33
  43. package/src/components/Form/Form.tsx +147 -147
  44. package/src/components/Form/RenderForm.tsx +189 -189
  45. package/src/components/FullScreenLoader.tsx +19 -19
  46. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  47. package/src/components/HookForm/DatePicker.tsx +40 -40
  48. package/src/components/HookForm/DateTimePicker.tsx +47 -47
  49. package/src/components/HookForm/FormLabel.tsx +14 -14
  50. package/src/components/HookForm/MultiCheckbox.tsx +69 -69
  51. package/src/components/HookForm/MultiSelect.tsx +61 -61
  52. package/src/components/HookForm/RadioGroup.tsx +47 -47
  53. package/src/components/HookForm/SingleCheckbox.tsx +34 -34
  54. package/src/components/HookForm/SingleSelect.tsx +46 -46
  55. package/src/components/HookForm/TextField.tsx +40 -40
  56. package/src/components/HookForm/TimePicker.tsx +40 -40
  57. package/src/components/HookForm/index.ts +23 -23
  58. package/src/components/IconButtons/IconButtons.tsx +137 -137
  59. package/src/components/IconButtons/Icons.tsx +268 -268
  60. package/src/components/IconButtons/assets/edit.svg +4 -4
  61. package/src/components/IconButtons/assets/eye.svg +6 -6
  62. package/src/components/IconButtons/assets/trash.svg +7 -7
  63. package/src/components/IconButtons/index.tsx +8 -8
  64. package/src/components/IconLabel.tsx +37 -37
  65. package/src/components/Image/Image.tsx +45 -45
  66. package/src/components/Image/index.tsx +1 -1
  67. package/src/components/ImageUpload.tsx +98 -98
  68. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +216 -216
  69. package/src/components/Input/AsyncSearchSelect/index.tsx +1 -1
  70. package/src/components/Input/AsyncSearchSelect/styles.tsx +105 -105
  71. package/src/components/Input/AutoCompleteSearch.tsx +121 -121
  72. package/src/components/Input/DatePicker.tsx +87 -87
  73. package/src/components/Input/DateRangePicker.tsx +105 -105
  74. package/src/components/Input/DateTimePicker.tsx +84 -84
  75. package/src/components/Input/FormLabel.tsx +21 -21
  76. package/src/components/Input/MultiCheckbox.tsx +64 -64
  77. package/src/components/Input/MultiSelect.tsx +161 -161
  78. package/src/components/Input/RadioGroup.tsx +104 -104
  79. package/src/components/Input/SingleCheckbox.tsx +78 -78
  80. package/src/components/Input/SingleSelect.tsx +104 -104
  81. package/src/components/Input/TextField.tsx +46 -46
  82. package/src/components/Input/TimePicker.tsx +77 -77
  83. package/src/components/Input/index.ts +26 -26
  84. package/src/components/Input/types.ts +3 -3
  85. package/src/components/Institutions/InsititutionsDialog.tsx +70 -0
  86. package/src/components/Institutions/InsititutionsNotAssignedDialog .tsx +12 -0
  87. package/src/components/Institutions/InstitutionsDropdown.tsx +33 -0
  88. package/src/components/Institutions/index.tsx +1 -0
  89. package/src/components/Institutions/services.ts +12 -0
  90. package/src/components/JsonPreview.tsx +7 -7
  91. package/src/components/LabelValue.tsx +21 -21
  92. package/src/components/Layout/ChangePassword.tsx +49 -49
  93. package/src/components/Layout/Header/AppHeader.tsx +109 -113
  94. package/src/components/Layout/Header/AppsMenu.tsx +132 -133
  95. package/src/components/Layout/Header/HeaderActions/CogWheelMenu.tsx +33 -33
  96. package/src/components/Layout/Header/HeaderActions/FreshChatButton.tsx +61 -61
  97. package/src/components/Layout/Header/HeaderActions/FreshDeskHelpButton.tsx +53 -53
  98. package/src/components/Layout/Header/HeaderActions/HeaderActions.tsx +20 -20
  99. package/src/components/Layout/Header/HeaderActions/UserBox.tsx +56 -56
  100. package/src/components/Layout/Header/Notification.tsx +13 -13
  101. package/src/components/Layout/Header/applications.ts +102 -102
  102. package/src/components/Layout/Header/assets/campx_square_small.svg +8 -8
  103. package/src/components/Layout/Header/assets/commuteX.png +0 -0
  104. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  105. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  106. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  107. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  108. package/src/components/Layout/Header/assets/exams_small.svg +11 -11
  109. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  110. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  111. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  112. package/src/components/Layout/Header/assets/index.ts +37 -37
  113. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  114. package/src/components/Layout/Header/assets/pay_small.svg +15 -15
  115. package/src/components/Layout/Header/assets/payx.svg +19 -19
  116. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  117. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  118. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  119. package/src/components/Layout/Header/icons.tsx +57 -57
  120. package/src/components/Layout/Header/index.tsx +1 -1
  121. package/src/components/Layout/Header/styles.tsx +133 -133
  122. package/src/components/Layout/Helmet.tsx +108 -108
  123. package/src/components/Layout/LayoutWrapper.tsx +28 -28
  124. package/src/components/Layout/SideMenuHeader.tsx +29 -29
  125. package/src/components/Layout/SideNav.tsx +168 -168
  126. package/src/components/Layout/Tickets/HelpWidget/HelpWidget.tsx +273 -273
  127. package/src/components/Layout/Tickets/HelpWidget/styles.tsx +94 -94
  128. package/src/components/Layout/Tickets/MyTickets.tsx +72 -72
  129. package/src/components/Layout/Tickets/TicketDetails.tsx +65 -65
  130. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  131. package/src/components/Layout/Tickets/index.tsx +1 -1
  132. package/src/components/Layout/Tickets/services.ts +11 -11
  133. package/src/components/Layout/Tickets/styles.tsx +136 -136
  134. package/src/components/LinearProgress.tsx +19 -19
  135. package/src/components/ListItemButton.tsx +95 -95
  136. package/src/components/LoginForm.tsx +274 -279
  137. package/src/components/MediaRow/MediaRow.tsx +67 -67
  138. package/src/components/MediaRow/index.tsx +1 -1
  139. package/src/components/ModalButtons/DialogButton.tsx +130 -126
  140. package/src/components/ModalButtons/DrawerButton.tsx +115 -115
  141. package/src/components/ModalButtons/PopoverButton.tsx +99 -99
  142. package/src/components/ModalButtons/index.tsx +4 -4
  143. package/src/components/NoDataIllustration.tsx +35 -32
  144. package/src/components/PageContent.tsx +12 -12
  145. package/src/components/PageHeader.tsx +55 -55
  146. package/src/components/PageNotFound.tsx +26 -26
  147. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  148. package/src/components/PopupConfirm/PopupConfirm.tsx +67 -67
  149. package/src/components/PopupConfirm/index.tsx +1 -1
  150. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  151. package/src/components/ResetPassword.tsx +107 -107
  152. package/src/components/Row.tsx +24 -24
  153. package/src/components/Spinner.tsx +18 -18
  154. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  155. package/src/components/StepsHeader/index.tsx +1 -1
  156. package/src/components/StyledTableContainer.tsx +33 -33
  157. package/src/components/SwitchButton.tsx +41 -41
  158. package/src/components/Table.tsx +42 -42
  159. package/src/components/Tables/BasicTable/Table.tsx +198 -198
  160. package/src/components/Tables/BasicTable/TableFooter.tsx +86 -86
  161. package/src/components/Tables/BasicTable/index.tsx +1 -1
  162. package/src/components/Tables/ReactTable/BatchActionsHeader.tsx +58 -58
  163. package/src/components/Tables/ReactTable/ReactTable.tsx +295 -295
  164. package/src/components/Tables/ReactTable/RenderTableBody.tsx +49 -49
  165. package/src/components/Tables/ReactTable/index.tsx +1 -1
  166. package/src/components/Tables/ReactTable/react-table-config.d.ts +128 -128
  167. package/src/components/Tables/common/NoRecordsFound.tsx +31 -27
  168. package/src/components/Tables/common/TableStats.tsx +22 -22
  169. package/src/components/Tables/common/icons.tsx +50 -50
  170. package/src/components/Tables/common/no-data-illu.svg +24 -1
  171. package/src/components/Tables/common/styles.tsx +170 -170
  172. package/src/components/Tables/common/types.ts +57 -57
  173. package/src/components/Tabs/NavigationTabs.tsx +80 -80
  174. package/src/components/Tabs/Tabs.tsx +53 -53
  175. package/src/components/Tabs/TabsContainer.tsx +53 -53
  176. package/src/components/Tabs/index.tsx +1 -1
  177. package/src/components/Tabs/styles.tsx +55 -55
  178. package/src/components/ToastContainer/ToastContainer.tsx +57 -57
  179. package/src/components/ToastContainer/index.tsx +1 -1
  180. package/src/components/UploadButton/UploadButton.tsx +126 -126
  181. package/src/components/UploadButton/index.tsx +1 -1
  182. package/src/components/UploadButton/types.ts +19 -19
  183. package/src/components/UploadDocument.tsx +108 -108
  184. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  185. package/src/components/UploadFileDialog/index.tsx +1 -1
  186. package/src/components/index.ts +110 -110
  187. package/src/config/axios.ts +80 -79
  188. package/src/config/axiosEvaluator.ts +53 -53
  189. package/src/config/axiosXTenant.ts +57 -57
  190. package/src/constants/UIConstants.ts +124 -124
  191. package/src/constants/formValidations.ts +6 -6
  192. package/src/constants/index.ts +5 -5
  193. package/src/constants/isDevelopment.ts +4 -4
  194. package/src/constants/permissions.ts +67 -67
  195. package/src/constants/validateMessages.ts +12 -12
  196. package/src/contexts/LoginFormProvider.tsx +37 -39
  197. package/src/contexts/Providers.tsx +74 -52
  198. package/src/contexts/PublicProviders.tsx +30 -30
  199. package/src/contexts/QueryClientProvider.tsx +22 -22
  200. package/src/contexts/RootModal.tsx +76 -0
  201. package/src/hooks/index.ts +5 -5
  202. package/src/hooks/useAuth.ts +248 -153
  203. package/src/hooks/useExternalScript.ts +38 -38
  204. package/src/hooks/useFetch.ts +53 -53
  205. package/src/hooks/useFilters.ts +83 -83
  206. package/src/hooks/useRouter.ts +31 -31
  207. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  208. package/src/layouts/Components/icons/index.tsx +403 -403
  209. package/src/layouts/Components/styles.tsx +74 -74
  210. package/src/layouts/ComponentsLayout.tsx +3 -3
  211. package/src/permissions/PageWithPermission.tsx +18 -18
  212. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  213. package/src/permissions/ValidateAccess.tsx +18 -18
  214. package/src/permissions/index.ts +2 -2
  215. package/src/react-app-env.d.ts +1 -1
  216. package/src/shared-state/AssetsStore.ts +15 -15
  217. package/src/shared-state/InstitutionsStore.ts +8 -0
  218. package/src/shared-state/PermissionsStore.ts +1155 -1155
  219. package/src/shared-state/UserStore.ts +13 -13
  220. package/src/shared-state/index.ts +4 -4
  221. package/src/theme/App.less +3 -3
  222. package/src/theme/MuiThemeProvider.tsx +18 -18
  223. package/src/theme/customCssBaseline.ts +135 -135
  224. package/src/theme/index.css +28 -28
  225. package/src/theme/muiTheme.ts +597 -597
  226. package/src/theme/theme.d.ts +77 -77
  227. package/src/utils/adminAxios.ts +15 -15
  228. package/src/utils/alphabet.ts +23 -23
  229. package/src/utils/arrayPadEnd.ts +3 -3
  230. package/src/utils/formatCurrency.ts +9 -9
  231. package/src/utils/getUrlParams.ts +5 -5
  232. package/src/utils/index.ts +7 -7
  233. package/src/utils/logout.ts +25 -25
  234. package/src/utils/ordinalSuffixOf.ts +14 -14
  235. package/src/utils/romanize.ts +40 -40
  236. package/src/utils/withRouteWrapper.tsx +25 -25
  237. package/src/utils/withSuspense.tsx +6 -6
  238. package/styled-components.tsx +60 -60
  239. package/tsconfig.json +21 -21
  240. package/src/components/Layout/Header/SchoolSwitch/SchoolSwitch.tsx +0 -33
@@ -1,67 +1,67 @@
1
- import { Box, Button, Dialog, styled, Typography } from '@mui/material'
2
- import useConfirm from './useConfirm'
3
- const animatedImage = require('./animation.gif')
4
-
5
- const StyledImage = styled((props: any) => (
6
- <Box>
7
- <img {...props} />
8
- </Box>
9
- ))(({ theme }) => ({
10
- width: '154px',
11
- '> img': {
12
- width: '100%',
13
- height: '100%',
14
- objectFit: 'contain',
15
- },
16
- }))
17
-
18
- const StyledDialogContent = styled(Box)(({ theme }) => ({
19
- height: '360px',
20
- width: '570px',
21
- display: 'flex',
22
- alignItems: 'center',
23
- justifyContent: 'center',
24
- flexDirection: 'column',
25
- }))
26
-
27
- const PopupConfirm = () => {
28
- const { prompt = '', isOpen = false, proceed, cancel } = useConfirm()
29
- return (
30
- <Dialog
31
- PaperProps={{
32
- elevation: 2,
33
- sx: {
34
- borderRadius: '10px',
35
- },
36
- }}
37
- sx={{
38
- '& .MuiBackdrop-root': { backgroundColor: 'rgba(0, 0, 0, 0.4)' },
39
- zIndex: 1600,
40
- }}
41
- keepMounted
42
- maxWidth="sm"
43
- fullWidth
44
- open={isOpen}
45
- transitionDuration={150}
46
- >
47
- <StyledDialogContent>
48
- <Box sx={{ marginBottom: '20px' }}>
49
- <StyledImage src={animatedImage} alt="Upload Image" />
50
- </Box>
51
-
52
- <Typography variant="h6" sx={{ minHeight: '30px' }}>
53
- {prompt}
54
- </Typography>
55
- <Box sx={{ display: 'flex', gap: '20px', marginTop: '30px' }}>
56
- <Button color="secondary" variant="outlined" onClick={cancel}>
57
- No, Cancel
58
- </Button>
59
- <Button variant="outlined" onClick={proceed} sx={{ height: '40px' }}>
60
- Yes, I'm. Sure
61
- </Button>
62
- </Box>
63
- </StyledDialogContent>
64
- </Dialog>
65
- )
66
- }
67
- export default PopupConfirm
1
+ import { Box, Button, Dialog, styled, Typography } from '@mui/material'
2
+ import useConfirm from './useConfirm'
3
+ const animatedImage = require('./animation.gif')
4
+
5
+ const StyledImage = styled((props: any) => (
6
+ <Box>
7
+ <img {...props} />
8
+ </Box>
9
+ ))(({ theme }) => ({
10
+ width: '154px',
11
+ '> img': {
12
+ width: '100%',
13
+ height: '100%',
14
+ objectFit: 'contain',
15
+ },
16
+ }))
17
+
18
+ const StyledDialogContent = styled(Box)(({ theme }) => ({
19
+ height: '360px',
20
+ width: '570px',
21
+ display: 'flex',
22
+ alignItems: 'center',
23
+ justifyContent: 'center',
24
+ flexDirection: 'column',
25
+ }))
26
+
27
+ const PopupConfirm = () => {
28
+ const { prompt = '', isOpen = false, proceed, cancel } = useConfirm()
29
+ return (
30
+ <Dialog
31
+ PaperProps={{
32
+ elevation: 2,
33
+ sx: {
34
+ borderRadius: '10px',
35
+ },
36
+ }}
37
+ sx={{
38
+ '& .MuiBackdrop-root': { backgroundColor: 'rgba(0, 0, 0, 0.4)' },
39
+ zIndex: 1600,
40
+ }}
41
+ keepMounted
42
+ maxWidth="sm"
43
+ fullWidth
44
+ open={isOpen}
45
+ transitionDuration={150}
46
+ >
47
+ <StyledDialogContent>
48
+ <Box sx={{ marginBottom: '20px' }}>
49
+ <StyledImage src={animatedImage} alt="Upload Image" />
50
+ </Box>
51
+
52
+ <Typography variant="h6" sx={{ minHeight: '30px' }}>
53
+ {prompt}
54
+ </Typography>
55
+ <Box sx={{ display: 'flex', gap: '20px', marginTop: '30px' }}>
56
+ <Button color="secondary" variant="outlined" onClick={cancel}>
57
+ No, Cancel
58
+ </Button>
59
+ <Button variant="outlined" onClick={proceed} sx={{ height: '40px' }}>
60
+ Yes, I'm. Sure
61
+ </Button>
62
+ </Box>
63
+ </StyledDialogContent>
64
+ </Dialog>
65
+ )
66
+ }
67
+ export default PopupConfirm
@@ -1 +1 @@
1
- export { default } from './PopupConfirm'
1
+ export { default } from './PopupConfirm'
@@ -1,47 +1,47 @@
1
- import { ReactNode, useContext, useEffect, useState } from 'react'
2
- import { ConfirmContext } from './ConfirmContextProvider'
3
-
4
- export default function useConfirm(): {
5
- isConfirmed: (prompt?: string) => Promise<boolean>
6
- prompt?: ReactNode
7
- isOpen?: boolean
8
- proceed?: () => void
9
- cancel?: () => void
10
- } {
11
- const { confirm, setConfirm } = useContext(ConfirmContext)
12
- const [needsCleanup, setNeedsCleanup] = useState(false)
13
-
14
- const isConfirmed = (prompt) => {
15
- setNeedsCleanup(true)
16
- const promise = new Promise((resolve, reject) => {
17
- setConfirm({
18
- prompt,
19
- isOpen: true,
20
- proceed: resolve,
21
- cancel: reject,
22
- })
23
- })
24
- return promise.then(
25
- () => {
26
- setConfirm({ ...confirm, isOpen: false })
27
- return true
28
- },
29
- () => {
30
- setConfirm({ ...confirm, isOpen: false })
31
- return false
32
- },
33
- )
34
- }
35
-
36
- useEffect(() => {
37
- return () => {
38
- if (confirm.cancel && needsCleanup) {
39
- confirm.cancel()
40
- }
41
- }
42
- }, [confirm, needsCleanup])
43
- return {
44
- ...confirm,
45
- isConfirmed,
46
- }
47
- }
1
+ import { ReactNode, useContext, useEffect, useState } from 'react'
2
+ import { ConfirmContext } from './ConfirmContextProvider'
3
+
4
+ export default function useConfirm(): {
5
+ isConfirmed: (prompt?: string) => Promise<boolean>
6
+ prompt?: ReactNode
7
+ isOpen?: boolean
8
+ proceed?: () => void
9
+ cancel?: () => void
10
+ } {
11
+ const { confirm, setConfirm } = useContext(ConfirmContext)
12
+ const [needsCleanup, setNeedsCleanup] = useState(false)
13
+
14
+ const isConfirmed = (prompt) => {
15
+ setNeedsCleanup(true)
16
+ const promise = new Promise((resolve, reject) => {
17
+ setConfirm({
18
+ prompt,
19
+ isOpen: true,
20
+ proceed: resolve,
21
+ cancel: reject,
22
+ })
23
+ })
24
+ return promise.then(
25
+ () => {
26
+ setConfirm({ ...confirm, isOpen: false })
27
+ return true
28
+ },
29
+ () => {
30
+ setConfirm({ ...confirm, isOpen: false })
31
+ return false
32
+ },
33
+ )
34
+ }
35
+
36
+ useEffect(() => {
37
+ return () => {
38
+ if (confirm.cancel && needsCleanup) {
39
+ confirm.cancel()
40
+ }
41
+ }
42
+ }, [confirm, needsCleanup])
43
+ return {
44
+ ...confirm,
45
+ isConfirmed,
46
+ }
47
+ }
@@ -1,107 +1,107 @@
1
- import { VisibilityOff, Visibility } from '@mui/icons-material'
2
- import { Stack, InputAdornment, IconButton, Button, Alert } from '@mui/material'
3
- import React, { useState } from 'react'
4
- import { FormTextField } from './HookForm'
5
- import axios from '../config/axios'
6
- import { useForm } from 'react-hook-form'
7
- import { useNavigate } from 'react-router-dom'
8
- import { toast } from 'react-toastify'
9
-
10
- function ResetPassword() {
11
- const searchParams = new URLSearchParams(document.location.search)
12
- const { handleSubmit, control } = useForm()
13
- const navigate = useNavigate()
14
- const [error, setError] = useState('')
15
- const [showPassword, setShowPassword] = useState(false)
16
- const [showConfirmPassword, setShowConfirmPassword] = useState(false)
17
-
18
- async function handleResetPassword(values) {
19
- const token = searchParams.get('token')
20
- values.token = token
21
-
22
- if (values.newPassword == values.confirmNewPassword) {
23
- try {
24
- await axios
25
- .post(`https://api.campx.dev/auth-server/auth/reset-password`, values)
26
- .then((res) => {
27
- navigate('/login')
28
- toast.success('Password Changed Successfully')
29
- })
30
- } catch (err) {
31
- if (
32
- values.newPassword.length == 0 &&
33
- values.confirmNewPassword.length == 0
34
- ) {
35
- setError('Please enter valid password')
36
- } else if (token == null) {
37
- setError('Invalid token')
38
- } else {
39
- setError(err.response.data.message ?? 'Server Error')
40
- }
41
- }
42
- } else {
43
- setError("New Password and Confirm New password doesn't match")
44
- }
45
- }
46
-
47
- return (
48
- <>
49
- <form onSubmit={handleSubmit(handleResetPassword)}>
50
- <Stack gap={'30px'}>
51
- <FormTextField
52
- control={control}
53
- name="newPassword"
54
- label="New Password"
55
- type={showPassword ? 'text' : 'password'}
56
- required
57
- InputProps={{
58
- endAdornment: (
59
- <InputAdornment position="end">
60
- <IconButton
61
- size="small"
62
- aria-label="toggle password visibility"
63
- onClick={() => setShowPassword((prev) => !prev)}
64
- edge="end"
65
- >
66
- {showPassword ? <VisibilityOff /> : <Visibility />}
67
- </IconButton>
68
- </InputAdornment>
69
- ),
70
- }}
71
- />
72
-
73
- <FormTextField
74
- control={control}
75
- name="confirmNewPassword"
76
- label="Confirm Password"
77
- type={showConfirmPassword ? 'text' : 'password'}
78
- required
79
- InputProps={{
80
- endAdornment: (
81
- <InputAdornment position="end">
82
- <IconButton
83
- size="small"
84
- aria-label="toggle password visibility"
85
- onClick={() => setShowConfirmPassword((prev) => !prev)}
86
- edge="end"
87
- >
88
- {showPassword ? <VisibilityOff /> : <Visibility />}
89
- </IconButton>
90
- </InputAdornment>
91
- ),
92
- }}
93
- />
94
-
95
- <Button type="submit">Reset Password</Button>
96
- </Stack>
97
- </form>
98
- {error && (
99
- <Alert severity="error" sx={{ marginTop: '20px' }}>
100
- {error}
101
- </Alert>
102
- )}
103
- </>
104
- )
105
- }
106
-
107
- export default ResetPassword
1
+ import { VisibilityOff, Visibility } from '@mui/icons-material'
2
+ import { Stack, InputAdornment, IconButton, Button, Alert } from '@mui/material'
3
+ import React, { useState } from 'react'
4
+ import { FormTextField } from './HookForm'
5
+ import axios from '../config/axios'
6
+ import { useForm } from 'react-hook-form'
7
+ import { useNavigate } from 'react-router-dom'
8
+ import { toast } from 'react-toastify'
9
+
10
+ function ResetPassword() {
11
+ const searchParams = new URLSearchParams(document.location.search)
12
+ const { handleSubmit, control } = useForm()
13
+ const navigate = useNavigate()
14
+ const [error, setError] = useState('')
15
+ const [showPassword, setShowPassword] = useState(false)
16
+ const [showConfirmPassword, setShowConfirmPassword] = useState(false)
17
+
18
+ async function handleResetPassword(values) {
19
+ const token = searchParams.get('token')
20
+ values.token = token
21
+
22
+ if (values.newPassword == values.confirmNewPassword) {
23
+ try {
24
+ await axios
25
+ .post(`https://api.campx.dev/auth-server/auth/reset-password`, values)
26
+ .then((res) => {
27
+ navigate('/login')
28
+ toast.success('Password Changed Successfully')
29
+ })
30
+ } catch (err) {
31
+ if (
32
+ values.newPassword.length == 0 &&
33
+ values.confirmNewPassword.length == 0
34
+ ) {
35
+ setError('Please enter valid password')
36
+ } else if (token == null) {
37
+ setError('Invalid token')
38
+ } else {
39
+ setError(err.response.data.message ?? 'Server Error')
40
+ }
41
+ }
42
+ } else {
43
+ setError("New Password and Confirm New password doesn't match")
44
+ }
45
+ }
46
+
47
+ return (
48
+ <>
49
+ <form onSubmit={handleSubmit(handleResetPassword)}>
50
+ <Stack gap={'30px'}>
51
+ <FormTextField
52
+ control={control}
53
+ name="newPassword"
54
+ label="New Password"
55
+ type={showPassword ? 'text' : 'password'}
56
+ required
57
+ InputProps={{
58
+ endAdornment: (
59
+ <InputAdornment position="end">
60
+ <IconButton
61
+ size="small"
62
+ aria-label="toggle password visibility"
63
+ onClick={() => setShowPassword((prev) => !prev)}
64
+ edge="end"
65
+ >
66
+ {showPassword ? <VisibilityOff /> : <Visibility />}
67
+ </IconButton>
68
+ </InputAdornment>
69
+ ),
70
+ }}
71
+ />
72
+
73
+ <FormTextField
74
+ control={control}
75
+ name="confirmNewPassword"
76
+ label="Confirm Password"
77
+ type={showConfirmPassword ? 'text' : 'password'}
78
+ required
79
+ InputProps={{
80
+ endAdornment: (
81
+ <InputAdornment position="end">
82
+ <IconButton
83
+ size="small"
84
+ aria-label="toggle password visibility"
85
+ onClick={() => setShowConfirmPassword((prev) => !prev)}
86
+ edge="end"
87
+ >
88
+ {showPassword ? <VisibilityOff /> : <Visibility />}
89
+ </IconButton>
90
+ </InputAdornment>
91
+ ),
92
+ }}
93
+ />
94
+
95
+ <Button type="submit">Reset Password</Button>
96
+ </Stack>
97
+ </form>
98
+ {error && (
99
+ <Alert severity="error" sx={{ marginTop: '20px' }}>
100
+ {error}
101
+ </Alert>
102
+ )}
103
+ </>
104
+ )
105
+ }
106
+
107
+ export default ResetPassword
@@ -1,24 +1,24 @@
1
- import { Box, SxProps } from '@mui/material'
2
- import { ReactNode } from 'react'
3
-
4
- export default function Row({
5
- gap,
6
- children,
7
- sx,
8
- }: {
9
- gap: number
10
- children: ReactNode
11
- sx?: SxProps
12
- }) {
13
- return (
14
- <Box
15
- sx={{
16
- display: 'flex',
17
- gap: `${gap}px`,
18
- ...sx,
19
- }}
20
- >
21
- {children}
22
- </Box>
23
- )
24
- }
1
+ import { Box, SxProps } from '@mui/material'
2
+ import { ReactNode } from 'react'
3
+
4
+ export default function Row({
5
+ gap,
6
+ children,
7
+ sx,
8
+ }: {
9
+ gap: number
10
+ children: ReactNode
11
+ sx?: SxProps
12
+ }) {
13
+ return (
14
+ <Box
15
+ sx={{
16
+ display: 'flex',
17
+ gap: `${gap}px`,
18
+ ...sx,
19
+ }}
20
+ >
21
+ {children}
22
+ </Box>
23
+ )
24
+ }
@@ -1,18 +1,18 @@
1
- import { CircularProgress } from '@mui/material'
2
-
3
- function Spinner({ height = '200px' }: { height?: string | number }) {
4
- return (
5
- <div
6
- style={{
7
- justifyContent: 'center',
8
- alignItems: 'center',
9
- height,
10
- display: 'flex',
11
- }}
12
- >
13
- <CircularProgress />
14
- </div>
15
- )
16
- }
17
-
18
- export default Spinner
1
+ import { CircularProgress } from '@mui/material'
2
+
3
+ function Spinner({ height = '200px' }: { height?: string | number }) {
4
+ return (
5
+ <div
6
+ style={{
7
+ justifyContent: 'center',
8
+ alignItems: 'center',
9
+ height,
10
+ display: 'flex',
11
+ }}
12
+ >
13
+ <CircularProgress />
14
+ </div>
15
+ )
16
+ }
17
+
18
+ export default Spinner