@campxdev/shared 1.0.4 → 1.1.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 (220) hide show
  1. package/.eslintignore +3 -3
  2. package/.eslintrc.js +33 -33
  3. package/.prettierrc +10 -10
  4. package/antd.customize.less +73 -73
  5. package/exports.ts +17 -17
  6. package/package.json +82 -82
  7. package/publish.sh +1 -1
  8. package/src/assets/fonts/avenir/index.ts +2 -2
  9. package/src/assets/fonts/poppins/index.ts +7 -7
  10. package/src/assets/images/index.ts +17 -17
  11. package/src/assets/images/unauth.svg +92 -92
  12. package/src/components/ActionButton.tsx +28 -28
  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 +164 -164
  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.tsx +194 -194
  28. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  29. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  30. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  31. package/src/components/ErrorBoundary/index.tsx +1 -1
  32. package/src/components/ErrorBox.tsx +42 -42
  33. package/src/components/FloatingContainer.tsx +33 -33
  34. package/src/components/Form/Form.tsx +156 -156
  35. package/src/components/Form/RenderForm.tsx +188 -188
  36. package/src/components/FullCalendar/Actions.tsx +162 -162
  37. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  38. package/src/components/FullScreenLoader.tsx +19 -19
  39. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  40. package/src/components/HookForm/DatePicker.tsx +65 -65
  41. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  42. package/src/components/HookForm/FormLabel.tsx +14 -14
  43. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  44. package/src/components/HookForm/MultiSelect.tsx +100 -100
  45. package/src/components/HookForm/RadioGroup.tsx +106 -106
  46. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  47. package/src/components/HookForm/SingleSelect.tsx +94 -94
  48. package/src/components/HookForm/TextField.tsx +74 -74
  49. package/src/components/HookForm/TimePicker.tsx +82 -82
  50. package/src/components/HookForm/index.ts +23 -23
  51. package/src/components/IconButtons/IconButtons.tsx +137 -137
  52. package/src/components/IconButtons/Icons.tsx +268 -268
  53. package/src/components/IconButtons/assets/edit.svg +4 -4
  54. package/src/components/IconButtons/assets/eye.svg +6 -6
  55. package/src/components/IconButtons/assets/trash.svg +7 -7
  56. package/src/components/IconButtons/index.tsx +8 -8
  57. package/src/components/IconLabel.tsx +37 -37
  58. package/src/components/Image/Image.tsx +43 -43
  59. package/src/components/Image/index.tsx +1 -1
  60. package/src/components/ImageUpload.tsx +98 -98
  61. package/src/components/Input/AutoCompleteSearch.tsx +113 -113
  62. package/src/components/Input/DatePicker.tsx +60 -60
  63. package/src/components/Input/DateRangePicker.tsx +131 -131
  64. package/src/components/Input/DateTimePicker.tsx +70 -70
  65. package/src/components/Input/FormLabel.tsx +14 -14
  66. package/src/components/Input/MultiCheckbox.tsx +79 -79
  67. package/src/components/Input/MultiSelect.tsx +52 -52
  68. package/src/components/Input/RadioGroup.tsx +61 -61
  69. package/src/components/Input/SingleCheckbox.tsx +23 -23
  70. package/src/components/Input/SingleSelect.tsx +126 -126
  71. package/src/components/Input/TextField.tsx +50 -50
  72. package/src/components/Input/TimePicker.tsx +82 -82
  73. package/src/components/Input/index.ts +26 -26
  74. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  75. package/src/components/JsonPreview/index.tsx +1 -1
  76. package/src/components/LabelValue/LabelValue.tsx +21 -21
  77. package/src/components/LabelValue/index.tsx +1 -1
  78. package/src/components/Layout/ChangePassword.tsx +49 -49
  79. package/src/components/Layout/Header/AppHeader.tsx +124 -124
  80. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  81. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  82. package/src/components/Layout/Header/HelpWidget/HelpWidget.tsx +298 -298
  83. package/src/components/Layout/Header/HelpWidget/styles.tsx +94 -92
  84. package/src/components/Layout/Header/Notification.tsx +13 -13
  85. package/src/components/Layout/Header/UserBox.tsx +90 -90
  86. package/src/components/Layout/Header/applications.ts +90 -90
  87. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  88. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  89. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  90. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  91. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  92. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  93. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  94. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  95. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  96. package/src/components/Layout/Header/assets/index.ts +33 -33
  97. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  98. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  99. package/src/components/Layout/Header/assets/payx.svg +19 -19
  100. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  101. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  102. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  103. package/src/components/Layout/Header/icons.tsx +57 -57
  104. package/src/components/Layout/Header/index.tsx +1 -1
  105. package/src/components/Layout/Header/styles.tsx +98 -98
  106. package/src/components/Layout/Tickets/MyTickets.tsx +74 -74
  107. package/src/components/Layout/Tickets/Services.tsx +6 -6
  108. package/src/components/Layout/Tickets/TicketDetails.tsx +66 -66
  109. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  110. package/src/components/Layout/Tickets/index.tsx +1 -1
  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 +105 -103
  116. package/src/components/MediaRow/MediaRow.tsx +69 -69
  117. package/src/components/MediaRow/index.tsx +1 -1
  118. package/src/components/MenuButton.tsx +103 -103
  119. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  120. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  121. package/src/components/ModalButtons/index.tsx +4 -4
  122. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  123. package/src/components/NoDataIllustration/index.tsx +1 -1
  124. package/src/components/PageContent.tsx +17 -17
  125. package/src/components/PageHeader.tsx +52 -52
  126. package/src/components/PageNotFound.tsx +26 -26
  127. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  128. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  129. package/src/components/PopupConfirm/index.tsx +1 -1
  130. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  131. package/src/components/Router.tsx +7 -7
  132. package/src/components/Row/Row.tsx +24 -24
  133. package/src/components/Row/index.tsx +1 -1
  134. package/src/components/SearchBar/SearchBar.tsx +53 -53
  135. package/src/components/SearchBar/index.tsx +1 -1
  136. package/src/components/SideMenuHeader.tsx +29 -29
  137. package/src/components/SideNav.tsx +168 -168
  138. package/src/components/Spinner.tsx +18 -18
  139. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  140. package/src/components/StepsHeader/index.tsx +1 -1
  141. package/src/components/StyledTableContainer.tsx +33 -33
  142. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  143. package/src/components/SwitchButton/index.tsx +1 -1
  144. package/src/components/Table.tsx +42 -42
  145. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  146. package/src/components/TableComponent/Icons/index.tsx +50 -50
  147. package/src/components/TableComponent/ReactTable.tsx +293 -293
  148. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  149. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  150. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  151. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  152. package/src/components/TableComponent/index.tsx +226 -226
  153. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  154. package/src/components/TableComponent/styles.tsx +173 -173
  155. package/src/components/TableComponent/types.ts +57 -57
  156. package/src/components/Tabs/Tabs.tsx +52 -52
  157. package/src/components/Tabs/TabsContainer.tsx +50 -50
  158. package/src/components/Tabs/index.tsx +1 -1
  159. package/src/components/Tabs/styles.tsx +55 -55
  160. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  161. package/src/components/ToastContainer/index.tsx +1 -1
  162. package/src/components/UploadButton/UploadButton.tsx +126 -126
  163. package/src/components/UploadButton/index.tsx +1 -1
  164. package/src/components/UploadButton/types.ts +19 -19
  165. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  166. package/src/components/UploadDocument/index.tsx +1 -1
  167. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  168. package/src/components/UploadFileDialog/index.tsx +1 -1
  169. package/src/components/index.ts +86 -86
  170. package/src/config/axios.ts +74 -74
  171. package/src/config/axiosXTenant.ts +57 -57
  172. package/src/constants/UIConstants.ts +97 -97
  173. package/src/constants/formValidations.ts +6 -6
  174. package/src/constants/index.ts +5 -5
  175. package/src/constants/isDevelopment.ts +3 -3
  176. package/src/constants/permissions.ts +67 -67
  177. package/src/constants/validateMessages.ts +12 -12
  178. package/src/contexts/LoginFormProvider.tsx +39 -39
  179. package/src/contexts/Providers.tsx +60 -59
  180. package/src/contexts/PublicProviders.tsx +30 -30
  181. package/src/contexts/QueryClientProvider.tsx +22 -22
  182. package/src/hooks/index.ts +3 -3
  183. package/src/hooks/useAppInit.ts +33 -33
  184. package/src/hooks/useAuth.ts +96 -92
  185. package/src/hooks/useFetch.ts +53 -53
  186. package/src/hooks/useRouter.ts +31 -31
  187. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  188. package/src/layouts/Components/icons/index.tsx +403 -403
  189. package/src/layouts/Components/styles.tsx +60 -60
  190. package/src/layouts/ComponentsLayout.tsx +3 -3
  191. package/src/permissions/PageWithPermission.tsx +18 -18
  192. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  193. package/src/permissions/ValidateAccess.tsx +18 -18
  194. package/src/permissions/index.ts +2 -3
  195. package/src/react-app-env.d.ts +1 -1
  196. package/src/shared-state/AssetsStore.ts +15 -15
  197. package/src/{permissions → shared-state}/PermissionsStore.ts +352 -352
  198. package/src/shared-state/UserStore.ts +13 -13
  199. package/src/shared-state/index.ts +4 -3
  200. package/src/theme/App.less +3 -3
  201. package/src/theme/MuiThemeProvider.tsx +13 -13
  202. package/src/theme/customCssBaseline.ts +78 -78
  203. package/src/theme/index.css +75 -75
  204. package/src/theme/muiTheme.ts +490 -490
  205. package/src/theme/theme.d.ts +75 -75
  206. package/src/utils/alphabet.ts +23 -23
  207. package/src/utils/arrayPadEnd.ts +3 -3
  208. package/src/utils/formatCurrency.ts +9 -9
  209. package/src/utils/getUrlParams.ts +5 -5
  210. package/src/utils/index.ts +8 -8
  211. package/src/utils/logout.ts +24 -24
  212. package/src/utils/ordinalSuffixOf.ts +14 -14
  213. package/src/utils/romanize.ts +40 -40
  214. package/src/utils/withLocalization.tsx +11 -11
  215. package/src/utils/withRouteWrapper.tsx +25 -25
  216. package/src/utils/withSuspense.tsx +6 -6
  217. package/styled-components.tsx +60 -60
  218. package/todo.md +20 -20
  219. package/tsconfig.json +21 -21
  220. package/src/components/Layout/Header/assets/commuteX.png +0 -0
@@ -1,98 +1,98 @@
1
- import {
2
- alpha,
3
- AppBar,
4
- Box,
5
- IconButton,
6
- ListItemText,
7
- styled,
8
- Typography,
9
- Link,
10
- } from '@mui/material'
11
-
12
- export const StyledImageWrapper = styled('div')`
13
- width: auto;
14
- height: 24px;
15
- & img {
16
- width: 100%;
17
- height: 100%;
18
- object-fit: contain;
19
- }
20
- `
21
-
22
- export const StyledItemText = styled(ListItemText)(({ theme }) => ({
23
- color: theme.palette.text.primary,
24
- transition: '0.2s ease',
25
- }))
26
-
27
- export const StyledAppBar = styled(AppBar)(({ theme }) => ({
28
- backgroundColor: 'white',
29
- boxShadow: '0px 8px 28px rgb(136,136,136, 0.3)',
30
- }))
31
-
32
- export const StyledHeader = styled(Box)(({ theme }) => ({
33
- boxShadow: '0px 2px 10px #0000001a',
34
- backgroundColor: 'white',
35
- display: 'flex',
36
- alignItems: 'center',
37
- justifyContent: 'space-between',
38
- '& .actions': {
39
- marginRight: '10px',
40
- display: 'flex',
41
- alignItems: 'center',
42
- gap: '14px',
43
- },
44
- }))
45
-
46
- export const StyledUser = styled(Box)(({ theme }) => ({
47
- cursor: 'pointer',
48
- borderRadius: '5px',
49
- transition: 'background 0.2s ease',
50
- padding: '5px 16px',
51
- display: 'flex',
52
- alignItems: 'center',
53
- gap: '8px',
54
- '&:hover': {
55
- background: theme.palette.secondary.light,
56
- },
57
- }))
58
-
59
- export const StyledIconButton = styled(IconButton)({
60
- padding: '20px',
61
- backgroundColor: 'black',
62
- display: 'flex',
63
- alignItems: 'center',
64
- justifyContent: 'center',
65
- borderRadius: '0px',
66
- })
67
-
68
- export const StyledLink = styled(Link)({
69
- textDecoration: 'none',
70
- })
71
-
72
- export const StyledDescription = styled(Typography)(({ theme }) => ({
73
- fontSize: '12px',
74
- fontWeight: 600,
75
- color: alpha(theme?.palette?.secondary?.lighter, 0.5),
76
- }))
77
-
78
- export const StyledMenuItem = styled(Box)({
79
- height: '64px',
80
- width: '380px',
81
- padding: '40px 20px',
82
- transition: 'background ease 0.3s',
83
- '&:hover': {
84
- background: 'rgba(0, 0, 0, 0.03)',
85
- },
86
- display: 'flex',
87
- alignItems: 'center',
88
- gap: '20px',
89
- })
90
-
91
- export const StyledMenuItemContainer = styled(Box)(({ theme }) => ({
92
- cursor: 'pointer',
93
- borderBottom: `1px solid ${theme?.palette?.secondary?.lighter}`,
94
- '&:last-of-type': {
95
- border: 'none',
96
- },
97
- padding: '8px 0px',
98
- }))
1
+ import {
2
+ alpha,
3
+ AppBar,
4
+ Box,
5
+ IconButton,
6
+ ListItemText,
7
+ styled,
8
+ Typography,
9
+ Link,
10
+ } from '@mui/material'
11
+
12
+ export const StyledImageWrapper = styled('div')`
13
+ width: auto;
14
+ height: 24px;
15
+ & img {
16
+ width: 100%;
17
+ height: 100%;
18
+ object-fit: contain;
19
+ }
20
+ `
21
+
22
+ export const StyledItemText = styled(ListItemText)(({ theme }) => ({
23
+ color: theme.palette.text.primary,
24
+ transition: '0.2s ease',
25
+ }))
26
+
27
+ export const StyledAppBar = styled(AppBar)(({ theme }) => ({
28
+ backgroundColor: 'white',
29
+ boxShadow: '0px 8px 28px rgb(136,136,136, 0.3)',
30
+ }))
31
+
32
+ export const StyledHeader = styled(Box)(({ theme }) => ({
33
+ boxShadow: '0px 2px 10px #0000001a',
34
+ backgroundColor: 'white',
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ justifyContent: 'space-between',
38
+ '& .actions': {
39
+ marginRight: '10px',
40
+ display: 'flex',
41
+ alignItems: 'center',
42
+ gap: '14px',
43
+ },
44
+ }))
45
+
46
+ export const StyledUser = styled(Box)(({ theme }) => ({
47
+ cursor: 'pointer',
48
+ borderRadius: '5px',
49
+ transition: 'background 0.2s ease',
50
+ padding: '5px 16px',
51
+ display: 'flex',
52
+ alignItems: 'center',
53
+ gap: '8px',
54
+ '&:hover': {
55
+ background: theme.palette.secondary.light,
56
+ },
57
+ }))
58
+
59
+ export const StyledIconButton = styled(IconButton)({
60
+ padding: '20px',
61
+ backgroundColor: 'black',
62
+ display: 'flex',
63
+ alignItems: 'center',
64
+ justifyContent: 'center',
65
+ borderRadius: '0px',
66
+ })
67
+
68
+ export const StyledLink = styled(Link)({
69
+ textDecoration: 'none',
70
+ })
71
+
72
+ export const StyledDescription = styled(Typography)(({ theme }) => ({
73
+ fontSize: '12px',
74
+ fontWeight: 600,
75
+ color: alpha(theme?.palette?.secondary?.lighter, 0.5),
76
+ }))
77
+
78
+ export const StyledMenuItem = styled(Box)({
79
+ height: '64px',
80
+ width: '380px',
81
+ padding: '40px 20px',
82
+ transition: 'background ease 0.3s',
83
+ '&:hover': {
84
+ background: 'rgba(0, 0, 0, 0.03)',
85
+ },
86
+ display: 'flex',
87
+ alignItems: 'center',
88
+ gap: '20px',
89
+ })
90
+
91
+ export const StyledMenuItemContainer = styled(Box)(({ theme }) => ({
92
+ cursor: 'pointer',
93
+ borderBottom: `1px solid ${theme?.palette?.secondary?.lighter}`,
94
+ '&:last-of-type': {
95
+ border: 'none',
96
+ },
97
+ padding: '8px 0px',
98
+ }))
@@ -1,74 +1,74 @@
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 axios from '../../../config/axios'
6
- import Spinner from '../../Spinner'
7
- // import { getImage } from './Services'
8
- import { StyledCardData, StyledLeftContainer, StyledListItem } from './styles'
9
- import TicketDetails from './TicketDetails'
10
-
11
- function MyTickets() {
12
- const [currentTicket, setCurrentTicket] = useState(null)
13
- const { data, isLoading } = useQuery<any>('tickets', () =>
14
- axios.get('/service-tickets/my-tickets').then((res) => res.data.result),
15
- )
16
- // const { data: imageData } = useQuery('imageData', () => getImage(data))
17
- if (isLoading) return <Spinner />
18
- return (
19
- <Box sx={{ display: 'flex', gap: '20px' }}>
20
- <Box sx={{ margin: '10px', borderRadius: '10px' }}>
21
- <StyledLeftContainer>
22
- {data?.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
- ''
36
- )}
37
- </Box>
38
- )
39
- }
40
-
41
- export default MyTickets
42
-
43
- const TicketListItem = ({ data, setCurrentTicket, currentTicket }) => {
44
- return (
45
- <StyledListItem
46
- isActive={currentTicket?._id === data?._id ? true : false}
47
- onClick={() => {
48
- // set selected ticket data
49
- setCurrentTicket(data)
50
- }}
51
- >
52
- <Box
53
- sx={{
54
- width: '400px',
55
- display: 'flex',
56
- }}
57
- >
58
- <Box className="left">
59
- <Typography variant="body2">{data?.name}</Typography>
60
- <Typography variant="subtitle2">
61
- {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a')}
62
- </Typography>
63
- </Box>
64
- <Box className="right">
65
- <StyledCardData>
66
- <Typography variant="h5" sx={{ fontSize: '9px' }}>
67
- {data?.status.replace('_', ' ')}
68
- </Typography>
69
- </StyledCardData>
70
- </Box>
71
- </Box>
72
- </StyledListItem>
73
- )
74
- }
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 axios from '../../../config/axios'
6
+ import Spinner from '../../Spinner'
7
+ // import { getImage } from './Services'
8
+ import { StyledCardData, StyledLeftContainer, StyledListItem } from './styles'
9
+ import TicketDetails from './TicketDetails'
10
+
11
+ function MyTickets() {
12
+ const [currentTicket, setCurrentTicket] = useState(null)
13
+ const { data, isLoading } = useQuery<any>('tickets', () =>
14
+ axios.get('/service-tickets/my-tickets').then((res) => res.data.result),
15
+ )
16
+ // const { data: imageData } = useQuery('imageData', () => getImage(data))
17
+ if (isLoading) return <Spinner />
18
+ return (
19
+ <Box sx={{ display: 'flex', gap: '20px' }}>
20
+ <Box sx={{ margin: '10px', borderRadius: '10px' }}>
21
+ <StyledLeftContainer>
22
+ {data?.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
+ ''
36
+ )}
37
+ </Box>
38
+ )
39
+ }
40
+
41
+ export default MyTickets
42
+
43
+ const TicketListItem = ({ data, setCurrentTicket, currentTicket }) => {
44
+ return (
45
+ <StyledListItem
46
+ isActive={currentTicket?._id === data?._id ? true : false}
47
+ onClick={() => {
48
+ // set selected ticket data
49
+ setCurrentTicket(data)
50
+ }}
51
+ >
52
+ <Box
53
+ sx={{
54
+ width: '400px',
55
+ display: 'flex',
56
+ }}
57
+ >
58
+ <Box className="left">
59
+ <Typography variant="body2">{data?.name}</Typography>
60
+ <Typography variant="subtitle2">
61
+ {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a')}
62
+ </Typography>
63
+ </Box>
64
+ <Box className="right">
65
+ <StyledCardData>
66
+ <Typography variant="h5" sx={{ fontSize: '9px' }}>
67
+ {data?.status.replace('_', ' ')}
68
+ </Typography>
69
+ </StyledCardData>
70
+ </Box>
71
+ </Box>
72
+ </StyledListItem>
73
+ )
74
+ }
@@ -1,6 +1,6 @@
1
- import axios from '../../../config/axios'
2
-
3
- export const getImage = async (id: string) => {
4
- let imageData = await axios.get(`/service-tickets/${id}`)
5
- return imageData?.data
6
- }
1
+ import axios from '../../../config/axios'
2
+
3
+ export const getImage = async (id: string) => {
4
+ let imageData = await axios.get(`/service-tickets/${id}`)
5
+ return imageData?.data
6
+ }
@@ -1,66 +1,66 @@
1
- /* eslint-disable react/jsx-key */
2
- import { Box, Card, Stack, Typography } from '@mui/material'
3
- import axios from 'axios'
4
- import moment from 'moment'
5
- import { useQuery } from 'react-query'
6
- import { getImage } from './Services'
7
- import { StyledBoxDetails, StyledCardData } from './styles'
8
- import StyledTimeLine from './TimeLine'
9
- // export const getImage = async (id: string) => {
10
- // let imgData = await axios.get(`/service-tickets/${id}`)
11
- // return imgData?.data
12
- // }
13
- function TicketDetails({ data, id }) {
14
- const { data: imageData } = useQuery(['imageData', id], () => getImage(id))
15
- console.log(imageData, 'imagedata')
16
- return (
17
- <Box>
18
- {data ? (
19
- <Card
20
- sx={{
21
- marginTop: '20px',
22
- }}
23
- >
24
- <StyledBoxDetails>
25
- <Box>
26
- <Typography variant="h5">{data?.name}</Typography>
27
- <Typography variant="subtitle2" sx={{ marginTop: '5px' }}>
28
- {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a') ??
29
- ' '}
30
- </Typography>
31
- <Typography
32
- sx={{ marginTop: '20px', maxWidth: '500px', fontSize: '14px' }}
33
- >
34
- {data?.description}
35
- </Typography>
36
- <Stack direction={'column'} gap="20px" sx={{ marginTop: '10px' }}>
37
- {imageData?.issueFiles?.map((item) => (
38
- <img src={item?.url} height={'100px'} width={'200px'} />
39
- ))}
40
- </Stack>
41
- </Box>
42
- <StyledCardData
43
- sx={{
44
- marginRight: '10px',
45
- }}
46
- >
47
- <Typography variant="h5" sx={{ fontSize: '10px' }}>
48
- {data.status.replace('_', ' ')}
49
- </Typography>
50
- </StyledCardData>
51
- </StyledBoxDetails>
52
- </Card>
53
- ) : (
54
- ''
55
- )}
56
- <Box sx={{ marginTop: '30px', marginBottom: '30px' }}>
57
- <Typography variant="h1" sx={{ marginBottom: '10px' }}>
58
- {data?.timelineLogs ? 'Ticket Timeline' : ''}
59
- </Typography>
60
- <StyledTimeLine data={data?.timelineLogs} />
61
- </Box>
62
- </Box>
63
- )
64
- }
65
-
66
- export default TicketDetails
1
+ /* eslint-disable react/jsx-key */
2
+ import { Box, Card, Stack, Typography } from '@mui/material'
3
+ import axios from 'axios'
4
+ import moment from 'moment'
5
+ import { useQuery } from 'react-query'
6
+ import { getImage } from './Services'
7
+ import { StyledBoxDetails, StyledCardData } from './styles'
8
+ import StyledTimeLine from './TimeLine'
9
+ // export const getImage = async (id: string) => {
10
+ // let imgData = await axios.get(`/service-tickets/${id}`)
11
+ // return imgData?.data
12
+ // }
13
+ function TicketDetails({ data, id }) {
14
+ const { data: imageData } = useQuery(['imageData', id], () => getImage(id))
15
+ console.log(imageData, 'imagedata')
16
+ return (
17
+ <Box>
18
+ {data ? (
19
+ <Card
20
+ sx={{
21
+ marginTop: '20px',
22
+ }}
23
+ >
24
+ <StyledBoxDetails>
25
+ <Box>
26
+ <Typography variant="h5">{data?.name}</Typography>
27
+ <Typography variant="subtitle2" sx={{ marginTop: '5px' }}>
28
+ {moment(data?.createdAt).format('DD MMMM, YYYY hh:mm: a') ??
29
+ ' '}
30
+ </Typography>
31
+ <Typography
32
+ sx={{ marginTop: '20px', maxWidth: '500px', fontSize: '14px' }}
33
+ >
34
+ {data?.description}
35
+ </Typography>
36
+ <Stack direction={'column'} gap="20px" sx={{ marginTop: '10px' }}>
37
+ {imageData?.issueFiles?.map((item) => (
38
+ <img src={item?.url} height={'100px'} width={'200px'} />
39
+ ))}
40
+ </Stack>
41
+ </Box>
42
+ <StyledCardData
43
+ sx={{
44
+ marginRight: '10px',
45
+ }}
46
+ >
47
+ <Typography variant="h5" sx={{ fontSize: '10px' }}>
48
+ {data.status.replace('_', ' ')}
49
+ </Typography>
50
+ </StyledCardData>
51
+ </StyledBoxDetails>
52
+ </Card>
53
+ ) : (
54
+ ''
55
+ )}
56
+ <Box sx={{ marginTop: '30px', marginBottom: '30px' }}>
57
+ <Typography variant="h1" sx={{ marginBottom: '10px' }}>
58
+ {data?.timelineLogs ? 'Ticket Timeline' : ''}
59
+ </Typography>
60
+ <StyledTimeLine data={data?.timelineLogs} />
61
+ </Box>
62
+ </Box>
63
+ )
64
+ }
65
+
66
+ 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'