@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,94 +1,94 @@
1
- import { alpha, Box, Card, Dialog, Slide, styled } from '@mui/material'
2
- import { TransitionProps } from '@mui/material/transitions'
3
- import { forwardRef } from 'react'
4
- import { background, contactBg } from '../assets'
5
-
6
- export const StyledDialogHeader = styled(Box)(({ theme }) => ({
7
- height: '180px',
8
- backgroundColor: alpha(theme.palette.text.secondary, 0.1),
9
- backgroundImage: `url(${background})`,
10
- backgroundSize: 'cover',
11
- display: 'flex',
12
- alignItems: 'start',
13
- justifyContent: 'flex-end',
14
- padding: '0.6rem 1rem',
15
- }))
16
-
17
- export const StyledDialog = styled(Dialog)(() => ({
18
- zIndex: 500,
19
- transition: 'max-height 0.3s ease-in-out',
20
- '& .MuiDialog-container': {
21
- justifyContent: 'flex-end',
22
- alignItems: 'end',
23
-
24
- '& .MuiPaper-root': {
25
- maxWidth: '380px',
26
- },
27
- },
28
- }))
29
-
30
- export const StyledCard = styled(Card)(() => ({
31
- display: 'flex',
32
- position: 'absolute',
33
- width: '340px',
34
- justifyContent: 'space-between',
35
- margin: '-30px 20px 0 20px',
36
- padding: '20px 15px',
37
- cursor: 'pointer',
38
- boxShadow: '0px 3px 15px #0000001A',
39
- }))
40
-
41
- export const StyledContactHeader = styled(Box)(({ theme }) => ({
42
- height: '170px',
43
- backgroundColor: alpha(theme.palette.text.secondary, 0.1),
44
- backgroundImage: `url(${contactBg})`,
45
- backgroundSize: 'cover',
46
- display: 'flex',
47
- alignItems: 'start',
48
- justifyContent: 'space-between',
49
- padding: '0.6rem 1rem',
50
- }))
51
-
52
- export const StyledContactCard = styled(Card)(() => ({
53
- minHeight: '50px',
54
- display: 'flex',
55
- justifyContent: 'center',
56
- alignItems: 'center',
57
- padding: '10px',
58
- cursor: 'pointer',
59
- border: '1px solid #0000001A',
60
- backgroundColor: '#cfbdbd1a',
61
- }))
62
-
63
- export const StyledDialogCard = styled(Card)(() => ({
64
- padding: '20px',
65
- boxShadow: '0px 5px 10px #0000001A',
66
- width: '350px',
67
- margin: 'auto',
68
- maxHeight: '550px',
69
- overflowY: 'auto',
70
- '&::-webkit-scrollbar': {
71
- width: '0px',
72
- height: '0px',
73
- },
74
- marginTop: '-90px',
75
- marginLeft: '-4px',
76
- position: 'absolute',
77
- }))
78
-
79
- export const StyledContactBoxHeader = styled(Box)(() => ({
80
- marginTop: '40px',
81
- display: 'flex',
82
- alignItems: 'center',
83
- gap: '5px',
84
- cursor: 'pointer',
85
- }))
86
-
87
- export const Transition = forwardRef(function Transition(
88
- props: TransitionProps & {
89
- children: React.ReactElement
90
- },
91
- ref: React.Ref<unknown>,
92
- ) {
93
- return <Slide direction="up" ref={ref} {...props} />
94
- })
1
+ import { alpha, Box, Card, Dialog, Slide, styled } from '@mui/material'
2
+ import { TransitionProps } from '@mui/material/transitions'
3
+ import { forwardRef } from 'react'
4
+ import { background, contactBg } from '../../Header/assets'
5
+
6
+ export const StyledDialogHeader = styled(Box)(({ theme }) => ({
7
+ height: '180px',
8
+ backgroundColor: alpha(theme.palette.text.secondary, 0.1),
9
+ backgroundImage: `url(${background})`,
10
+ backgroundSize: 'cover',
11
+ display: 'flex',
12
+ alignItems: 'start',
13
+ justifyContent: 'flex-end',
14
+ padding: '0.6rem 1rem',
15
+ }))
16
+
17
+ export const StyledDialog = styled(Dialog)(() => ({
18
+ zIndex: 500,
19
+ transition: 'max-height 0.3s ease-in-out',
20
+ '& .MuiDialog-container': {
21
+ justifyContent: 'flex-end',
22
+ alignItems: 'end',
23
+
24
+ '& .MuiPaper-root': {
25
+ maxWidth: '380px',
26
+ },
27
+ },
28
+ }))
29
+
30
+ export const StyledCard = styled(Card)(() => ({
31
+ display: 'flex',
32
+ position: 'absolute',
33
+ width: '340px',
34
+ justifyContent: 'space-between',
35
+ margin: '-30px 20px 0 20px',
36
+ padding: '20px 15px',
37
+ cursor: 'pointer',
38
+ boxShadow: '0px 3px 15px #0000001A',
39
+ }))
40
+
41
+ export const StyledContactHeader = styled(Box)(({ theme }) => ({
42
+ height: '170px',
43
+ backgroundColor: alpha(theme.palette.text.secondary, 0.1),
44
+ backgroundImage: `url(${contactBg})`,
45
+ backgroundSize: 'cover',
46
+ display: 'flex',
47
+ alignItems: 'start',
48
+ justifyContent: 'space-between',
49
+ padding: '0.6rem 1rem',
50
+ }))
51
+
52
+ export const StyledContactCard = styled(Card)(() => ({
53
+ minHeight: '50px',
54
+ display: 'flex',
55
+ justifyContent: 'center',
56
+ alignItems: 'center',
57
+ padding: '10px',
58
+ cursor: 'pointer',
59
+ border: '1px solid #0000001A',
60
+ backgroundColor: '#cfbdbd1a',
61
+ }))
62
+
63
+ export const StyledDialogCard = styled(Card)(() => ({
64
+ padding: '20px',
65
+ boxShadow: '0px 5px 10px #0000001A',
66
+ width: '350px',
67
+ margin: 'auto',
68
+ maxHeight: '550px',
69
+ overflowY: 'auto',
70
+ '&::-webkit-scrollbar': {
71
+ width: '0px',
72
+ height: '0px',
73
+ },
74
+ marginTop: '-90px',
75
+ marginLeft: '-4px',
76
+ position: 'absolute',
77
+ }))
78
+
79
+ export const StyledContactBoxHeader = styled(Box)(() => ({
80
+ marginTop: '40px',
81
+ display: 'flex',
82
+ alignItems: 'center',
83
+ gap: '5px',
84
+ cursor: 'pointer',
85
+ }))
86
+
87
+ export const Transition = forwardRef(function Transition(
88
+ props: TransitionProps & {
89
+ children: React.ReactElement
90
+ },
91
+ ref: React.Ref<unknown>,
92
+ ) {
93
+ return <Slide direction="up" ref={ref} {...props} />
94
+ })
@@ -1,72 +1,72 @@
1
- import { Box, Typography } from '@mui/material'
2
- import moment from 'moment'
3
- import { useState } from 'react'
4
- import { useQuery } from 'react-query'
5
- import ErrorBoundary from '../../ErrorBoundary'
6
- import Spinner from '../../Spinner'
7
- import { fetchTickets } from './services'
8
- import { StyledCardData, StyledLeftContainer, StyledListItem } from './styles'
9
- import TicketDetails from './TicketDetails'
10
-
11
- function MyTickets({ close }) {
12
- const [currentTicket, setCurrentTicket] = useState(null)
13
-
14
- const { data, isLoading } = useQuery<any>('tickets', fetchTickets)
15
-
16
- if (isLoading) return <Spinner />
17
- return (
18
- <ErrorBoundary>
19
- <Box sx={{ display: 'flex', gap: '20px' }}>
20
- <Box sx={{ margin: '10px', borderRadius: '10px' }}>
21
- <StyledLeftContainer>
22
- {data?.result?.map((item) => (
23
- <TicketListItem
24
- key={item}
25
- data={item}
26
- setCurrentTicket={setCurrentTicket}
27
- currentTicket={currentTicket}
28
- />
29
- ))}
30
- </StyledLeftContainer>
31
- </Box>
32
- {currentTicket?._id && (
33
- <TicketDetails data={currentTicket} id={currentTicket._id} />
34
- )}
35
- </Box>
36
- </ErrorBoundary>
37
- )
38
- }
39
-
40
- export default MyTickets
41
-
42
- const TicketListItem = ({ data, setCurrentTicket, currentTicket }) => {
43
- return (
44
- <StyledListItem
45
- isActive={currentTicket?._id === data?._id ? true : false}
46
- onClick={() => {
47
- setCurrentTicket(data)
48
- }}
49
- >
50
- <Box
51
- sx={{
52
- width: '400px',
53
- display: 'flex',
54
- }}
55
- >
56
- <Box className="left">
57
- <Typography variant="body2">{data?.name}</Typography>
58
- <Typography variant="subtitle2">
59
- {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a')}
60
- </Typography>
61
- </Box>
62
- <Box className="right">
63
- <StyledCardData>
64
- <Typography variant="h5" sx={{ fontSize: '9px' }}>
65
- {data?.status.replace('_', ' ')}
66
- </Typography>
67
- </StyledCardData>
68
- </Box>
69
- </Box>
70
- </StyledListItem>
71
- )
72
- }
1
+ import { Box, Typography } from '@mui/material'
2
+ import moment from 'moment'
3
+ import { useState } from 'react'
4
+ import { useQuery } from 'react-query'
5
+ import ErrorBoundary from '../../ErrorBoundary'
6
+ import Spinner from '../../Spinner'
7
+ import { fetchTickets } from './services'
8
+ import { StyledCardData, StyledLeftContainer, StyledListItem } from './styles'
9
+ import TicketDetails from './TicketDetails'
10
+
11
+ function MyTickets({ close }) {
12
+ const [currentTicket, setCurrentTicket] = useState(null)
13
+
14
+ const { data, isLoading } = useQuery<any>('tickets', fetchTickets)
15
+
16
+ if (isLoading) return <Spinner />
17
+ return (
18
+ <ErrorBoundary>
19
+ <Box sx={{ display: 'flex', gap: '20px' }}>
20
+ <Box sx={{ margin: '10px', borderRadius: '10px' }}>
21
+ <StyledLeftContainer>
22
+ {data?.result?.map((item) => (
23
+ <TicketListItem
24
+ key={item}
25
+ data={item}
26
+ setCurrentTicket={setCurrentTicket}
27
+ currentTicket={currentTicket}
28
+ />
29
+ ))}
30
+ </StyledLeftContainer>
31
+ </Box>
32
+ {currentTicket?._id && (
33
+ <TicketDetails data={currentTicket} id={currentTicket._id} />
34
+ )}
35
+ </Box>
36
+ </ErrorBoundary>
37
+ )
38
+ }
39
+
40
+ export default MyTickets
41
+
42
+ const TicketListItem = ({ data, setCurrentTicket, currentTicket }) => {
43
+ return (
44
+ <StyledListItem
45
+ isActive={currentTicket?._id === data?._id ? true : false}
46
+ onClick={() => {
47
+ setCurrentTicket(data)
48
+ }}
49
+ >
50
+ <Box
51
+ sx={{
52
+ width: '400px',
53
+ display: 'flex',
54
+ }}
55
+ >
56
+ <Box className="left">
57
+ <Typography variant="body2">{data?.name}</Typography>
58
+ <Typography variant="subtitle2">
59
+ {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a')}
60
+ </Typography>
61
+ </Box>
62
+ <Box className="right">
63
+ <StyledCardData>
64
+ <Typography variant="h5" sx={{ fontSize: '9px' }}>
65
+ {data?.status.replace('_', ' ')}
66
+ </Typography>
67
+ </StyledCardData>
68
+ </Box>
69
+ </Box>
70
+ </StyledListItem>
71
+ )
72
+ }
@@ -1,65 +1,65 @@
1
- import { Box, Card, Stack, Typography } from '@mui/material'
2
- import moment from 'moment'
3
- import { useQuery } from 'react-query'
4
- import { getImage } from './services'
5
- import { StyledBoxDetails, StyledCardData } from './styles'
6
- import StyledTimeLine from './TimeLine'
7
-
8
- function TicketDetails({ data, id }) {
9
- const { data: imageData } = useQuery(['imageData', id], () => getImage(id))
10
- return (
11
- <Box>
12
- {data ? (
13
- <Card
14
- sx={{
15
- marginTop: '20px',
16
- }}
17
- >
18
- <StyledBoxDetails>
19
- <Box>
20
- <Typography variant="h5">{data?.name}</Typography>
21
- <Typography variant="subtitle2" sx={{ marginTop: '5px' }}>
22
- {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a') ??
23
- ' '}
24
- </Typography>
25
- <Typography
26
- sx={{ marginTop: '20px', maxWidth: '500px', fontSize: '14px' }}
27
- >
28
- {data?.description}
29
- </Typography>
30
- <Stack direction={'column'} gap="20px" sx={{ marginTop: '10px' }}>
31
- {imageData?.issueFiles?.map((item, index) => (
32
- <img
33
- src={item?.url}
34
- height={'100px'}
35
- width={'200px'}
36
- key={index}
37
- />
38
- ))}
39
- </Stack>
40
- </Box>
41
- <StyledCardData
42
- sx={{
43
- marginRight: '10px',
44
- }}
45
- >
46
- <Typography variant="h5" sx={{ fontSize: '10px' }}>
47
- {data.status.replace('_', ' ')}
48
- </Typography>
49
- </StyledCardData>
50
- </StyledBoxDetails>
51
- </Card>
52
- ) : (
53
- ''
54
- )}
55
- <Box sx={{ marginTop: '30px', marginBottom: '30px' }}>
56
- <Typography variant="h1" sx={{ marginBottom: '10px' }}>
57
- {data?.timelineLogs ? 'Ticket Timeline' : ''}
58
- </Typography>
59
- <StyledTimeLine data={data?.timelineLogs} />
60
- </Box>
61
- </Box>
62
- )
63
- }
64
-
65
- export default TicketDetails
1
+ import { Box, Card, Stack, Typography } from '@mui/material'
2
+ import moment from 'moment'
3
+ import { useQuery } from 'react-query'
4
+ import { getImage } from './services'
5
+ import { StyledBoxDetails, StyledCardData } from './styles'
6
+ import StyledTimeLine from './TimeLine'
7
+
8
+ function TicketDetails({ data, id }) {
9
+ const { data: imageData } = useQuery(['imageData', id], () => getImage(id))
10
+ return (
11
+ <Box>
12
+ {data ? (
13
+ <Card
14
+ sx={{
15
+ marginTop: '20px',
16
+ }}
17
+ >
18
+ <StyledBoxDetails>
19
+ <Box>
20
+ <Typography variant="h5">{data?.name}</Typography>
21
+ <Typography variant="subtitle2" sx={{ marginTop: '5px' }}>
22
+ {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a') ??
23
+ ' '}
24
+ </Typography>
25
+ <Typography
26
+ sx={{ marginTop: '20px', maxWidth: '500px', fontSize: '14px' }}
27
+ >
28
+ {data?.description}
29
+ </Typography>
30
+ <Stack direction={'column'} gap="20px" sx={{ marginTop: '10px' }}>
31
+ {imageData?.issueFiles?.map((item, index) => (
32
+ <img
33
+ src={item?.url}
34
+ height={'100px'}
35
+ width={'200px'}
36
+ key={index}
37
+ />
38
+ ))}
39
+ </Stack>
40
+ </Box>
41
+ <StyledCardData
42
+ sx={{
43
+ marginRight: '10px',
44
+ }}
45
+ >
46
+ <Typography variant="h5" sx={{ fontSize: '10px' }}>
47
+ {data.status.replace('_', ' ')}
48
+ </Typography>
49
+ </StyledCardData>
50
+ </StyledBoxDetails>
51
+ </Card>
52
+ ) : (
53
+ ''
54
+ )}
55
+ <Box sx={{ marginTop: '30px', marginBottom: '30px' }}>
56
+ <Typography variant="h1" sx={{ marginBottom: '10px' }}>
57
+ {data?.timelineLogs ? 'Ticket Timeline' : ''}
58
+ </Typography>
59
+ <StyledTimeLine data={data?.timelineLogs} />
60
+ </Box>
61
+ </Box>
62
+ )
63
+ }
64
+
65
+ export default TicketDetails
@@ -1,64 +1,64 @@
1
- /* eslint-disable react/jsx-key */
2
- import moment from 'moment'
3
- import { Typography } from '@mui/material'
4
- import {
5
- TimelineSeparator,
6
- TimelineConnector,
7
- TimelineDot,
8
- TimelineContent,
9
- } from '@mui/lab'
10
- import { StyledTimelineBox, StyledTimeLineItem } from './styles'
11
-
12
- interface TimelineComponentProps {
13
- data: any
14
- }
15
-
16
- function StyledTimeLine({ data }: TimelineComponentProps) {
17
- return data?.map((item, index) => (
18
- <StyledTimeLineItem key={index}>
19
- <TimelineSeparator>
20
- <TimelineDot
21
- variant="outlined"
22
- sx={{ width: '20px', height: '20px' }}
23
- />
24
- {!(index === data.length - 1) ? <TimelineConnector /> : ''}
25
- </TimelineSeparator>
26
- <TimelineContent>
27
- <Typography variant="h6">{item?.message}</Typography>
28
- <Typography sx={{ marginTop: '10px' }}>
29
- {moment(item?.createdAt).format(' h:mmA Do MMMM YYYY, ')}
30
- </Typography>
31
- <RenderContent timeLog={item} />
32
- </TimelineContent>
33
- </StyledTimeLineItem>
34
- ))
35
- }
36
- export default StyledTimeLine
37
-
38
- const RenderContent = ({ timeLog }) => {
39
- if (timeLog?.files) {
40
- return (
41
- <StyledTimelineBox>
42
- <Typography sx={{ marginBottom: '3px' }}>{timeLog?.notes}</Typography>
43
- {/* {timeLog?.files?.map((item) => (
44
- <img src={item?.url} height={'100px'} width={'200px'} />
45
- ))} */}
46
- </StyledTimelineBox>
47
- )
48
- }
49
-
50
- if (timeLog?.notes) {
51
- return (
52
- <StyledTimelineBox
53
- sx={{
54
- maxWidth: '400px',
55
- }}
56
- >
57
- <Typography sx={{ wordWrap: 'break-word' }}>
58
- {timeLog?.notes}
59
- </Typography>
60
- </StyledTimelineBox>
61
- )
62
- }
63
- return <></>
64
- }
1
+ /* eslint-disable react/jsx-key */
2
+ import moment from 'moment'
3
+ import { Typography } from '@mui/material'
4
+ import {
5
+ TimelineSeparator,
6
+ TimelineConnector,
7
+ TimelineDot,
8
+ TimelineContent,
9
+ } from '@mui/lab'
10
+ import { StyledTimelineBox, StyledTimeLineItem } from './styles'
11
+
12
+ interface TimelineComponentProps {
13
+ data: any
14
+ }
15
+
16
+ function StyledTimeLine({ data }: TimelineComponentProps) {
17
+ return data?.map((item, index) => (
18
+ <StyledTimeLineItem key={index}>
19
+ <TimelineSeparator>
20
+ <TimelineDot
21
+ variant="outlined"
22
+ sx={{ width: '20px', height: '20px' }}
23
+ />
24
+ {!(index === data.length - 1) ? <TimelineConnector /> : ''}
25
+ </TimelineSeparator>
26
+ <TimelineContent>
27
+ <Typography variant="h6">{item?.message}</Typography>
28
+ <Typography sx={{ marginTop: '10px' }}>
29
+ {moment(item?.createdAt).format(' h:mmA Do MMMM YYYY, ')}
30
+ </Typography>
31
+ <RenderContent timeLog={item} />
32
+ </TimelineContent>
33
+ </StyledTimeLineItem>
34
+ ))
35
+ }
36
+ export default StyledTimeLine
37
+
38
+ const RenderContent = ({ timeLog }) => {
39
+ if (timeLog?.files) {
40
+ return (
41
+ <StyledTimelineBox>
42
+ <Typography sx={{ marginBottom: '3px' }}>{timeLog?.notes}</Typography>
43
+ {/* {timeLog?.files?.map((item) => (
44
+ <img src={item?.url} height={'100px'} width={'200px'} />
45
+ ))} */}
46
+ </StyledTimelineBox>
47
+ )
48
+ }
49
+
50
+ if (timeLog?.notes) {
51
+ return (
52
+ <StyledTimelineBox
53
+ sx={{
54
+ maxWidth: '400px',
55
+ }}
56
+ >
57
+ <Typography sx={{ wordWrap: 'break-word' }}>
58
+ {timeLog?.notes}
59
+ </Typography>
60
+ </StyledTimelineBox>
61
+ )
62
+ }
63
+ return <></>
64
+ }
@@ -1 +1 @@
1
- export { default } from './MyTickets'
1
+ export { default } from './MyTickets'
@@ -1,11 +1,11 @@
1
- import axios from '../../../config/axios'
2
-
3
- export const getImage = async (id: string) => {
4
- let imageData = await axios.get(`/square/service-tickets/${id}`)
5
- return imageData?.data
6
- }
7
-
8
- export const fetchTickets = async () => {
9
- let imageData = await axios.get(`/square/service-tickets/my-tickets`)
10
- return imageData?.data
11
- }
1
+ import axios from '../../../config/axios'
2
+
3
+ export const getImage = async (id: string) => {
4
+ let imageData = await axios.get(`/square/service-tickets/${id}`)
5
+ return imageData?.data
6
+ }
7
+
8
+ export const fetchTickets = async () => {
9
+ let imageData = await axios.get(`/square/service-tickets/my-tickets`)
10
+ return imageData?.data
11
+ }