@campxdev/shared 0.6.19 → 1.0.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 (242) 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 +16 -16
  6. package/package.json +94 -93
  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 -63
  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 +93 -93
  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 +124 -124
  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 -0
  83. package/src/components/Layout/Header/HelpWidget/styles.tsx +92 -0
  84. package/src/components/Layout/Header/Notification.tsx +13 -13
  85. package/src/components/Layout/Header/UserBox.tsx +90 -70
  86. package/src/components/Layout/Header/applications.ts +90 -90
  87. package/src/components/Layout/Header/assets/background.png +0 -0
  88. package/src/components/Layout/Header/assets/campx.png +0 -0
  89. package/src/components/Layout/Header/assets/{newAssets/campx_square_small.svg → campx_square_small.svg} +9 -9
  90. package/src/components/Layout/Header/assets/{newAssets/commutex.png → commuteX.png} +0 -0
  91. package/src/components/Layout/Header/assets/commutex.png +0 -0
  92. package/src/components/Layout/Header/assets/{newAssets/commutex.svg → commutex.svg} +14 -14
  93. package/src/components/Layout/Header/assets/{newAssets/commutexSmall.svg → commutexSmall.svg} +11 -11
  94. package/src/components/Layout/Header/assets/contactBg.png +0 -0
  95. package/src/components/Layout/Header/assets/{newAssets/enroll.svg → enroll.svg} +14 -14
  96. package/src/components/Layout/Header/assets/{newAssets/enrollx.svg → enrollx.svg} +14 -14
  97. package/src/components/Layout/Header/assets/{newAssets/entrollx.png → entrollx.png} +0 -0
  98. package/src/components/Layout/Header/assets/{newAssets/exams_small.svg → exams_small.svg} +12 -12
  99. package/src/components/Layout/Header/assets/{newAssets/examsx.svg → examsx.svg} +14 -14
  100. package/src/components/Layout/Header/assets/examx.png +0 -0
  101. package/src/components/Layout/Header/assets/{newAssets/hostel_small.svg → hostel_small.svg} +13 -13
  102. package/src/components/Layout/Header/assets/hostelx.png +0 -0
  103. package/src/components/Layout/Header/assets/{newAssets/hostelx.svg → hostelx.svg} +13 -13
  104. package/src/components/Layout/Header/assets/index.ts +33 -29
  105. package/src/components/Layout/Header/assets/{newAssets/libraryx.svg → libraryx.svg} +12 -12
  106. package/src/components/Layout/Header/assets/{newAssets/libreryx.png → libreryx.png} +0 -0
  107. package/src/components/Layout/Header/assets/{newAssets/pay_small.svg → pay_small.svg} +16 -16
  108. package/src/components/Layout/Header/assets/payx.png +0 -0
  109. package/src/components/Layout/Header/assets/{newAssets/payx.svg → payx.svg} +19 -19
  110. package/src/components/Layout/Header/assets/{newAssets/people_small.svg → people_small.svg} +9 -9
  111. package/src/components/Layout/Header/assets/{newAssets/peoplex.svg → peoplex.svg} +12 -12
  112. package/src/components/Layout/Header/assets/{newAssets/pepolex.png → pepolex.png} +0 -0
  113. package/src/components/Layout/Header/assets/{newAssets/squarex.svg → squarex.svg} +12 -12
  114. package/src/components/Layout/Header/icons.tsx +57 -57
  115. package/src/components/Layout/Header/index.tsx +1 -1
  116. package/src/components/Layout/Header/styles.tsx +98 -98
  117. package/src/components/Layout/Tickets/MyTickets.tsx +74 -0
  118. package/src/components/Layout/Tickets/Services.tsx +6 -0
  119. package/src/components/Layout/Tickets/TicketDetails.tsx +66 -0
  120. package/src/components/Layout/Tickets/TimeLine.tsx +64 -0
  121. package/src/components/Layout/Tickets/index.tsx +1 -0
  122. package/src/components/Layout/Tickets/styles.tsx +136 -0
  123. package/src/components/LayoutWrapper.tsx +25 -25
  124. package/src/components/LinearProgress.tsx +19 -19
  125. package/src/components/ListItemButton.tsx +95 -94
  126. package/src/components/LoginForm.tsx +103 -103
  127. package/src/components/MediaRow/MediaRow.tsx +69 -69
  128. package/src/components/MediaRow/index.tsx +1 -1
  129. package/src/components/MenuButton.tsx +103 -103
  130. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  131. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  132. package/src/components/ModalButtons/index.tsx +4 -4
  133. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  134. package/src/components/NoDataIllustration/index.tsx +1 -1
  135. package/src/components/PageContent.tsx +17 -17
  136. package/src/components/PageHeader.tsx +52 -52
  137. package/src/components/PageNotFound.tsx +26 -26
  138. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  139. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  140. package/src/components/PopupConfirm/index.tsx +1 -1
  141. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  142. package/src/components/Router.tsx +7 -7
  143. package/src/components/Row/Row.tsx +24 -24
  144. package/src/components/Row/index.tsx +1 -1
  145. package/src/components/SearchBar/SearchBar.tsx +53 -53
  146. package/src/components/SearchBar/index.tsx +1 -1
  147. package/src/components/SideMenuHeader.tsx +29 -29
  148. package/src/components/SideNav.tsx +168 -168
  149. package/src/components/Spinner.tsx +18 -18
  150. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  151. package/src/components/StepsHeader/index.tsx +1 -1
  152. package/src/components/StyledTableContainer.tsx +33 -33
  153. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  154. package/src/components/SwitchButton/index.tsx +1 -1
  155. package/src/components/Table.tsx +42 -42
  156. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  157. package/src/components/TableComponent/Icons/index.tsx +50 -50
  158. package/src/components/TableComponent/ReactTable.tsx +293 -293
  159. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  160. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  161. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  162. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  163. package/src/components/TableComponent/index.tsx +226 -226
  164. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  165. package/src/components/TableComponent/styles.tsx +173 -173
  166. package/src/components/TableComponent/types.ts +57 -57
  167. package/src/components/Tabs/Tabs.tsx +52 -52
  168. package/src/components/Tabs/TabsContainer.tsx +50 -50
  169. package/src/components/Tabs/index.tsx +1 -1
  170. package/src/components/Tabs/styles.tsx +55 -55
  171. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  172. package/src/components/ToastContainer/index.tsx +1 -1
  173. package/src/components/UploadButton/UploadButton.tsx +126 -126
  174. package/src/components/UploadButton/index.tsx +1 -1
  175. package/src/components/UploadButton/types.ts +19 -19
  176. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  177. package/src/components/UploadDocument/index.tsx +1 -1
  178. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  179. package/src/components/UploadFileDialog/index.tsx +1 -1
  180. package/src/components/index.ts +86 -86
  181. package/src/config/axios.ts +74 -74
  182. package/src/config/axiosXTenant.ts +57 -57
  183. package/src/constants/UIConstants.ts +97 -97
  184. package/src/constants/formValidations.ts +6 -6
  185. package/src/constants/index.ts +5 -5
  186. package/src/constants/isDevelopment.ts +3 -3
  187. package/src/constants/permissions.ts +67 -67
  188. package/src/constants/validateMessages.ts +12 -12
  189. package/src/contexts/LoginFormProvider.tsx +39 -39
  190. package/src/contexts/Providers.tsx +59 -59
  191. package/src/contexts/QueryClientProvider.tsx +22 -22
  192. package/src/hooks/index.ts +3 -3
  193. package/src/hooks/useAppInit.ts +33 -33
  194. package/src/hooks/useAuth.ts +92 -91
  195. package/src/hooks/useFetch.ts +53 -53
  196. package/src/hooks/useRouter.ts +31 -31
  197. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  198. package/src/layouts/Components/icons/index.tsx +403 -403
  199. package/src/layouts/Components/styles.tsx +60 -60
  200. package/src/layouts/ComponentsLayout.tsx +3 -3
  201. package/src/permissions/PageWithPermission.tsx +18 -18
  202. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  203. package/src/permissions/PermissionsStore.ts +352 -352
  204. package/src/permissions/ValidateAccess.tsx +18 -18
  205. package/src/permissions/index.ts +3 -3
  206. package/src/react-app-env.d.ts +1 -1
  207. package/src/shared-state/AssetsStore.ts +15 -15
  208. package/src/shared-state/UserStore.ts +13 -13
  209. package/src/shared-state/index.ts +3 -3
  210. package/src/theme/App.less +3 -3
  211. package/src/theme/MuiThemeProvider.tsx +13 -13
  212. package/src/theme/customCssBaseline.ts +78 -78
  213. package/src/theme/index.css +75 -75
  214. package/src/theme/muiTheme.ts +490 -490
  215. package/src/theme/theme.d.ts +75 -75
  216. package/src/utils/alphabet.ts +23 -23
  217. package/src/utils/arrayPadEnd.ts +3 -3
  218. package/src/utils/formatCurrency.ts +9 -9
  219. package/src/utils/getUrlParams.ts +5 -5
  220. package/src/utils/index.ts +8 -8
  221. package/src/utils/logout.ts +24 -24
  222. package/src/utils/ordinalSuffixOf.ts +14 -14
  223. package/src/utils/romanize.ts +40 -40
  224. package/src/utils/withLocalization.tsx +11 -11
  225. package/src/utils/withRouteWrapper.tsx +25 -25
  226. package/src/utils/withSuspense.tsx +6 -6
  227. package/styled-components.tsx +60 -60
  228. package/todo.md +20 -20
  229. package/tsconfig.json +21 -21
  230. package/src/components/Layout/Header/FreshDeskHelpButton.tsx +0 -19
  231. package/src/components/Layout/Header/assets/campx.svg +0 -29
  232. package/src/components/Layout/Header/assets/collegex.png +0 -0
  233. package/src/components/Layout/Header/assets/enrollx.png +0 -0
  234. package/src/components/Layout/Header/assets/newAssets/campx.png +0 -0
  235. package/src/components/Layout/Header/assets/newAssets/examx.png +0 -0
  236. package/src/components/Layout/Header/assets/newAssets/hostelx.png +0 -0
  237. package/src/components/Layout/Header/assets/newAssets/payx.png +0 -0
  238. package/src/components/Layout/Header/assets/newexamx.png +0 -0
  239. package/src/components/Layout/Header/assets/newpayx.png +0 -0
  240. package/src/components/Layout/Header/assets/payxHeader.svg +0 -21
  241. package/src/components/Layout/Header/assets/peoplex.png +0 -0
  242. package/src/components/Layout/Header/assets/peoplexHeader.svg +0 -14
@@ -0,0 +1,298 @@
1
+ import { yupResolver } from '@hookform/resolvers/yup'
2
+ import {
3
+ ArrowBackIosNew,
4
+ ArrowForwardIos,
5
+ Close,
6
+ HelpOutline,
7
+ NotesSharp,
8
+ } from '@mui/icons-material'
9
+ import {
10
+ Box,
11
+ Button,
12
+ Card,
13
+ DialogContent,
14
+ IconButton,
15
+ Stack,
16
+ Typography,
17
+ } from '@mui/material'
18
+ import { AxiosRequestConfig } from 'axios'
19
+ import { useState } from 'react'
20
+ import { useForm } from 'react-hook-form'
21
+ import { useQuery } from 'react-query'
22
+ import { toast } from 'react-toastify'
23
+ import axios, { axiosErrorToast } from '../../../../config/axios'
24
+ import { queryClient } from '../../../../contexts/QueryClientProvider'
25
+ import { FormSingleSelect, FormTextField } from '../../../HookForm'
26
+ import ImageUpload from '../../../ImageUpload'
27
+ import MediaRow from '../../../MediaRow'
28
+ import * as yup from 'yup'
29
+ import Spinner from '../../../Spinner'
30
+ import { Media } from '../../../UploadButton/types'
31
+ import {
32
+ StyledCard,
33
+ StyledContactBoxHeader,
34
+ StyledContactHeader,
35
+ StyledDialog,
36
+ StyledDialogCard,
37
+ StyledDialogHeader,
38
+ } from './styles'
39
+ const schema = yup.object().shape({
40
+ name: yup.string().required('Name is required'),
41
+ subject: yup.string().required('Subject is required'),
42
+ description: yup.string().required('Description is required'),
43
+ categoryId: yup.string().required('Category is required'),
44
+ serviceId: yup.string().required('Service is required'),
45
+ })
46
+ const HelpWidget = () => {
47
+ const [open, setOpen] = useState(false)
48
+ const { control, handleSubmit, watch, reset } = useForm({
49
+ resolver: yupResolver(schema),
50
+ })
51
+ const [state, setState] = useState(0)
52
+ const { data: ticketCategories, isLoading } = useQuery(
53
+ 'ticketCategories',
54
+ () => axios.get(`/service-tickets/categories`).then((res) => res.data),
55
+ )
56
+ // console.log(ticketCategories)
57
+ const [uploadMedia, setUploadMedia] = useState<Media[]>([])
58
+
59
+ const handleClickOpen = () => {
60
+ setOpen(true)
61
+ setState(0)
62
+ }
63
+ const handleClose = () => {
64
+ setOpen(false)
65
+ reset()
66
+ }
67
+ const handleUploadImageChange = (v) => {
68
+ setUploadMedia([
69
+ ...uploadMedia,
70
+ { type: 'image', url: v.url, key: v.key, id: v.id },
71
+ ])
72
+ }
73
+
74
+ const handleUploadDeleteImage = (key) => {
75
+ setUploadMedia((prev) => prev.filter((m) => m.key !== key))
76
+ }
77
+
78
+ const onSubmit = async (formData) => {
79
+ const config: AxiosRequestConfig = {
80
+ method: 'POST',
81
+ url: '/service-tickets',
82
+ data: {
83
+ issueFiles: [uploadMedia[0]?.key],
84
+ ...formData,
85
+ },
86
+ }
87
+
88
+ try {
89
+ await axios(config)
90
+ queryClient.invalidateQueries('ticketCategories')
91
+ toast.success('Ticket Created Successfully')
92
+ handleClose()
93
+ reset()
94
+ setUploadMedia([])
95
+ } catch (error) {
96
+ axiosErrorToast(error)
97
+ }
98
+ }
99
+ if (isLoading) return <Spinner />
100
+
101
+ return (
102
+ <div>
103
+ <StyledDialog
104
+ fullWidth
105
+ onClose={handleClose}
106
+ open={open}
107
+ PaperProps={{
108
+ sx: {
109
+ borderRadius: '10px',
110
+ },
111
+ }}
112
+ >
113
+ {state == 0 ? (
114
+ <>
115
+ <StyledDialogHeader>
116
+ <IconButton onClick={handleClose}>
117
+ <Close sx={{ position: 'absolute', color: 'white', top: 5 }} />
118
+ </IconButton>
119
+ </StyledDialogHeader>
120
+ <DialogContent sx={{ padding: '0' }}>
121
+ <Box>
122
+ <StyledCard>
123
+ <Box
124
+ sx={{ display: 'flex', gap: '10px', alignItems: 'center' }}
125
+ >
126
+ <NotesSharp />
127
+ <Typography variant="h5" sx={{ fontSize: '14px' }}>
128
+ Knowledge Base
129
+ </Typography>
130
+ </Box>
131
+ <ArrowForwardIos sx={{ width: '15px', color: 'blue' }} />
132
+ </StyledCard>
133
+ </Box>
134
+ <Box
135
+ sx={{
136
+ padding: '15px 20px 20px 20px',
137
+ }}
138
+ >
139
+ <Card
140
+ sx={{
141
+ boxShadow: '0px 3px 15px #0000001A',
142
+ padding: '20px 15px',
143
+ marginTop: '30px',
144
+ }}
145
+ >
146
+ <Stack gap={1}>
147
+ <Typography variant="h3">Want to get in touch?</Typography>
148
+ <Typography variant="subtitle2" sx={{ maxWidth: '290px' }}>
149
+ We’re standing by to answer all of your questions right
150
+ now.
151
+ </Typography>
152
+ </Stack>
153
+ <Button
154
+ fullWidth
155
+ sx={{
156
+ borderRadius: '8px',
157
+ marginTop: '15px',
158
+ height: '50px',
159
+ }}
160
+ onClick={() => setState(1)}
161
+ >
162
+ Contact Us
163
+ </Button>
164
+ </Card>
165
+ </Box>
166
+ </DialogContent>
167
+ </>
168
+ ) : (
169
+ <>
170
+ <Box>
171
+ <StyledContactHeader>
172
+ <StyledContactBoxHeader onClick={() => setState(0)}>
173
+ <ArrowBackIosNew sx={{ fontSize: 'small', color: 'white' }} />
174
+ <Typography sx={{ color: 'white' }} variant="h3">
175
+ Contact Us
176
+ </Typography>
177
+ </StyledContactBoxHeader>
178
+ <IconButton onClick={handleClose}>
179
+ <Close
180
+ sx={{
181
+ position: 'absolute',
182
+ color: 'white',
183
+ top: 5,
184
+ right: 2,
185
+ }}
186
+ />
187
+ </IconButton>
188
+ </StyledContactHeader>
189
+ <DialogContent sx={{ height: '500px' }}>
190
+ <StyledDialogCard>
191
+ <form onSubmit={handleSubmit(onSubmit)}>
192
+ <Stack gap={'20px'}>
193
+ <FormTextField
194
+ label={'Your Name'}
195
+ name={'name'}
196
+ control={control}
197
+ />
198
+ <FormTextField
199
+ label={'Subject'}
200
+ name={'subject'}
201
+ control={control}
202
+ />
203
+ <FormTextField
204
+ label={'Description'}
205
+ name={'description'}
206
+ control={control}
207
+ multiline
208
+ rows={5}
209
+ required
210
+ />
211
+ <FormSingleSelect
212
+ label={'Category'}
213
+ name={'categoryId'}
214
+ control={control}
215
+ options={ticketCategories?.map((item) => {
216
+ return { label: item.name, value: item._id }
217
+ })}
218
+ // onChange={(value) => {
219
+ // mutate({ id: value })
220
+ // }}
221
+ required
222
+ />
223
+ <FormSingleSelect
224
+ label={'Service'}
225
+ name={'serviceId'}
226
+ control={control}
227
+ options={
228
+ ticketCategories
229
+ ?.find((item) => item?._id === watch('categoryId'))
230
+ ?.services?.map((item) => ({
231
+ label: item.name,
232
+ value: item._id,
233
+ })) ?? []
234
+ }
235
+ required
236
+ />
237
+
238
+ {/* <StyledContactCard>
239
+ <Screenshot />
240
+ <Typography sx={{ fontSize: '12px' }} variant="h5">
241
+ Take screenshot
242
+ </Typography>
243
+ </StyledContactCard> */}
244
+ {/* <StyledContactCard
245
+ sx={{
246
+ minHeight: '120px',
247
+ flexDirection: 'column',
248
+ border: '2px dashed #0000001A',
249
+ }}
250
+ > */}
251
+ {/* <Upload />
252
+ <Typography sx={{ fontSize: '12px' }} variant="h5">
253
+ Upload files (max 5)
254
+ </Typography>
255
+ <Typography variant="h4" sx={{ fontSize: '10px' }}>
256
+ Click to add or drag & drop files
257
+ </Typography> */}
258
+ {/* category id , service id and priority is required */}
259
+ {!uploadMedia?.length ? (
260
+ <ImageUpload
261
+ onFileUploaded={handleUploadImageChange}
262
+ postUrl="/tickets/upload-issue-file"
263
+ // postUrl="/"
264
+ />
265
+ ) : (
266
+ <MediaRow
267
+ list={uploadMedia}
268
+ onDelete={handleUploadDeleteImage}
269
+ />
270
+ )}
271
+ {/* </StyledContactCard> */}
272
+ <Button
273
+ type="submit"
274
+ fullWidth
275
+ sx={{
276
+ height: '60px',
277
+ borderRadius: '10px',
278
+ fontSize: '18px',
279
+ }}
280
+ >
281
+ Send
282
+ </Button>
283
+ </Stack>
284
+ </form>
285
+ </StyledDialogCard>
286
+ </DialogContent>
287
+ </Box>
288
+ </>
289
+ )}
290
+ </StyledDialog>
291
+
292
+ <IconButton color="secondary">
293
+ <HelpOutline onClick={handleClickOpen} />
294
+ </IconButton>
295
+ </div>
296
+ )
297
+ }
298
+ export default HelpWidget
@@ -0,0 +1,92 @@
1
+ import { alpha, Box, Card, Dialog, styled } from '@mui/material'
2
+ import { background, contactBg } from '../assets'
3
+ // import background from '../../Header/assets/background.png'
4
+ export const StyledDialogHeader = styled(Box)(({ theme }) => ({
5
+ height: '180px',
6
+ backgroundColor: alpha(theme.palette.text.secondary, 0.1),
7
+ backgroundImage: `url(${background})`,
8
+ backgroundSize: 'cover',
9
+ display: 'flex',
10
+ alignItems: 'start',
11
+ justifyContent: 'flex-end',
12
+ padding: '0.6rem 1rem',
13
+ }))
14
+ export const StyledDialog = styled(Dialog)(() => ({
15
+ zIndex: 500,
16
+ transition: 'max-height 0.3s ease-in-out',
17
+ '& .MuiDialog-container': {
18
+ justifyContent: 'flex-end',
19
+ alignItems: 'end',
20
+
21
+ '& .MuiPaper-root': {
22
+ maxWidth: '380px',
23
+ },
24
+ },
25
+ }))
26
+ export const StyledCard = styled(Card)(() => ({
27
+ display: 'flex',
28
+ position: 'absolute',
29
+ width: '340px',
30
+ justifyContent: 'space-between',
31
+ margin: '-30px 20px 0 20px',
32
+ padding: '20px 15px',
33
+ cursor: 'pointer',
34
+ boxShadow: '0px 3px 15px #0000001A',
35
+ }))
36
+
37
+ export const StyledContactHeader = styled(Box)(({ theme }) => ({
38
+ height: '170px',
39
+ backgroundColor: alpha(theme.palette.text.secondary, 0.1),
40
+ backgroundImage: `url(${contactBg})`,
41
+ backgroundSize: 'cover',
42
+ display: 'flex',
43
+ alignItems: 'start',
44
+ justifyContent: 'space-between',
45
+ padding: '0.6rem 1rem',
46
+ }))
47
+
48
+ // export const StyledContact = styled(Dialog)(() => ({
49
+ // zIndex: 500,
50
+ // height: '950px',
51
+ // '& .MuiDialog-container': {
52
+ // bottom: 0,
53
+ // justifyContent: 'flex-end',
54
+ // alignItems: 'end',
55
+ // '& .MuiPaper-root': {
56
+ // maxWidth: '380px',
57
+ // },
58
+ // },
59
+ // }))
60
+
61
+ export const StyledContactCard = styled(Card)(() => ({
62
+ minHeight: '50px',
63
+ display: 'flex',
64
+ justifyContent: 'center',
65
+ alignItems: 'center',
66
+ padding: '10px',
67
+ cursor: 'pointer',
68
+ border: '1px solid #0000001A',
69
+ backgroundColor: '#cfbdbd1a',
70
+ }))
71
+
72
+ export const StyledDialogCard = styled(Card)(() => ({
73
+ padding: '20px',
74
+ boxShadow: '0px 5px 10px #0000001A',
75
+ maxHeight: '550px',
76
+ overflowY: 'auto',
77
+ '&::-webkit-scrollbar': {
78
+ width: '0px',
79
+ height: '0px',
80
+ },
81
+ marginTop: '-90px',
82
+ marginLeft: '-4px',
83
+ position: 'absolute',
84
+ }))
85
+
86
+ export const StyledContactBoxHeader = styled(Box)(() => ({
87
+ marginTop: '40px',
88
+ display: 'flex',
89
+ alignItems: 'center',
90
+ gap: '5px',
91
+ cursor: 'pointer',
92
+ }))
@@ -1,13 +1,13 @@
1
- import { IconButton } from '@mui/material'
2
- import { NotificationIcon } from './icons'
3
-
4
- function Notification() {
5
- return (
6
- <>
7
- <IconButton>
8
- <NotificationIcon />
9
- </IconButton>
10
- </>
11
- )
12
- }
13
- export default Notification
1
+ import { IconButton } from '@mui/material'
2
+ import { NotificationIcon } from './icons'
3
+
4
+ function Notification() {
5
+ return (
6
+ <>
7
+ <IconButton>
8
+ <NotificationIcon />
9
+ </IconButton>
10
+ </>
11
+ )
12
+ }
13
+ export default Notification
@@ -1,70 +1,90 @@
1
- import { Box, Typography } from '@mui/material'
2
- import { ReactNode, useState } from 'react'
3
- import { avatarImage } from '../../../assets/images'
4
- import MenuButton from '../../MenuButton'
5
- import { StyledUser } from './styles'
6
- import logout from '../../../utils/logout'
7
- import ChangePassword from '../../ChangePassword'
8
- import { ExitToAppOutlined, HttpsOutlined } from '@mui/icons-material'
9
-
10
- export default function UserBox({
11
- username,
12
- profileIcon,
13
- actions,
14
- }: {
15
- username: string
16
- profileIcon: string
17
- actions: { label: ReactNode; icon?: ReactNode; onClick: any }[]
18
- }) {
19
- const [open, setOpen] = useState(false)
20
-
21
- const handleClickOpen = () => {
22
- setOpen(true)
23
- }
24
- const handleClose = (value: string) => {
25
- setOpen(false)
26
- }
27
-
28
- return (
29
- <>
30
- <MenuButton
31
- anchor={
32
- <Box minWidth={'80px'} textAlign="center">
33
- <StyledUser>
34
- <img
35
- src={profileIcon ?? avatarImage}
36
- style={{
37
- height: '32px',
38
- width: '32px',
39
- objectFit: 'contain',
40
- }}
41
- onError={(e: any) => {
42
- e.target.src = avatarImage
43
- }}
44
- />
45
- <Typography variant="h6">{username}</Typography>
46
- </StyledUser>
47
- </Box>
48
- }
49
- menu={[
50
- ...actions,
51
-
52
- {
53
- label: 'Change Password',
54
- icon: <HttpsOutlined />,
55
- onClick: handleClickOpen,
56
- },
57
- {
58
- label: 'Logout',
59
- icon: <ExitToAppOutlined />,
60
- onClick: logout,
61
- },
62
- ]}
63
- menuProps={{
64
- PaperProps: { sx: { top: '64px !important' } },
65
- }}
66
- />
67
- <ChangePassword open={open} onClose={handleClose} />
68
- </>
69
- )
70
- }
1
+ import { Box, Typography } from '@mui/material'
2
+ import { ReactNode, useState } from 'react'
3
+ import { avatarImage } from '../../../assets/images'
4
+ import MenuButton from '../../MenuButton'
5
+ import { StyledUser } from './styles'
6
+ import logout from '../../../utils/logout'
7
+ import ChangePassword from '../../ChangePassword'
8
+ import { ExitToAppOutlined, HttpsOutlined } from '@mui/icons-material'
9
+ import ConfirmationNumberOutlinedIcon from '@mui/icons-material/ConfirmationNumberOutlined'
10
+ import DialogWrapper from '../../DrawerWrapper/DialogWrapper'
11
+ import MyTickets from '../Tickets/MyTickets'
12
+ export default function UserBox({
13
+ username,
14
+ profileIcon,
15
+ actions,
16
+ }: {
17
+ username: string
18
+ profileIcon: string
19
+ actions: { label: ReactNode; icon?: ReactNode; onClick: any }[]
20
+ }) {
21
+ const [open, setOpen] = useState(false)
22
+ const [openTicket, setOpenTicket] = useState(false)
23
+ const handleClickOpen = () => {
24
+ setOpen(true)
25
+ }
26
+ const handleClose = (value: string) => {
27
+ setOpen(false)
28
+ }
29
+ const handleTicketOpen = () => {
30
+ setOpenTicket(true)
31
+ }
32
+ const handleTicketClose = () => {
33
+ setOpenTicket(false)
34
+ }
35
+ return (
36
+ <>
37
+ <MenuButton
38
+ anchor={
39
+ <Box minWidth={'80px'} textAlign="center">
40
+ <StyledUser>
41
+ <img
42
+ src={profileIcon ?? avatarImage}
43
+ style={{
44
+ height: '32px',
45
+ width: '32px',
46
+ objectFit: 'contain',
47
+ }}
48
+ onError={(e: any) => {
49
+ e.target.src = avatarImage
50
+ }}
51
+ />
52
+ <Typography variant="h6">{username}</Typography>
53
+ </StyledUser>
54
+ </Box>
55
+ }
56
+ menu={[
57
+ ...actions,
58
+ {
59
+ label: 'My Tickets',
60
+ icon: <ConfirmationNumberOutlinedIcon />,
61
+ onClick: handleTicketOpen,
62
+ },
63
+
64
+ {
65
+ label: 'Change Password',
66
+ icon: <HttpsOutlined />,
67
+ onClick: handleClickOpen,
68
+ },
69
+ {
70
+ label: 'Logout',
71
+ icon: <ExitToAppOutlined />,
72
+ onClick: logout,
73
+ },
74
+ ]}
75
+ menuProps={{
76
+ PaperProps: { sx: { top: '64px !important' } },
77
+ }}
78
+ />
79
+ <DialogWrapper
80
+ open={openTicket}
81
+ title={'All Tickets'}
82
+ children={<MyTickets />}
83
+ onClose={() => {
84
+ handleTicketClose()
85
+ }}
86
+ />
87
+ <ChangePassword open={open} onClose={handleClose} />
88
+ </>
89
+ )
90
+ }