@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,80 +1,80 @@
1
- import { Visibility, VisibilityOff } from '@mui/icons-material'
2
- import { Alert, Box, IconButton, InputAdornment, Stack } from '@mui/material'
3
- import axiosBase from 'axios'
4
- import Cookies from 'js-cookie'
5
- import { useState } from 'react'
6
- import { useForm } from 'react-hook-form'
7
- import ActionButton from './ActionButton'
8
- import { FormTextField } from './HookForm'
9
-
10
- export function LoginForm({ loginUrl }: { loginUrl?: string }) {
11
- const [showPassword, setShowPassword] = useState(false)
12
- const { handleSubmit, control } = useForm()
13
- const [error, setError] = useState('')
14
-
15
- const onSubmit = async (values) => {
16
- try {
17
- const res = await axiosBase({
18
- method: 'POST',
19
- baseURL: process.env.REACT_APP_API_HOST,
20
- url: loginUrl ? loginUrl : `/auth-server/auth/login`,
21
- data: values,
22
- })
23
- Cookies.set('campx_tenant', res?.data?.subDomain)
24
- Cookies.set('campx_session_key', res.data?.token)
25
- window.location.reload()
26
- } catch (err) {
27
- // eslint-disable-next-line no-console
28
- console.log(err)
29
- setError(err?.response?.data?.message ?? 'Server Error')
30
- }
31
- }
32
-
33
- return (
34
- <>
35
- <form onSubmit={handleSubmit(onSubmit)}>
36
- <Stack gap={'30px'}>
37
- <Box>
38
- <FormTextField
39
- control={control}
40
- name="username"
41
- label="User ID"
42
- required
43
- />
44
- </Box>
45
- <Box>
46
- <FormTextField
47
- control={control}
48
- name="password"
49
- label="Password"
50
- type={showPassword ? 'text' : 'password'}
51
- required
52
- InputProps={{
53
- endAdornment: (
54
- <InputAdornment position="end">
55
- <IconButton
56
- size="small"
57
- aria-label="toggle password visibility"
58
- onClick={() => setShowPassword((prev) => !prev)}
59
- edge="end"
60
- >
61
- {showPassword ? <VisibilityOff /> : <Visibility />}
62
- </IconButton>
63
- </InputAdornment>
64
- ),
65
- }}
66
- />
67
- </Box>
68
- <ActionButton type="submit">Login</ActionButton>
69
- </Stack>
70
- </form>
71
- {error && (
72
- <Alert severity="error" sx={{ marginTop: '20px' }}>
73
- {error}
74
- </Alert>
75
- )}
76
- </>
77
- )
78
- }
79
-
80
- export default LoginForm
1
+ import { Visibility, VisibilityOff } from '@mui/icons-material'
2
+ import { Alert, Box, IconButton, InputAdornment, Stack } from '@mui/material'
3
+ import axiosBase from 'axios'
4
+ import Cookies from 'js-cookie'
5
+ import { useState } from 'react'
6
+ import { useForm } from 'react-hook-form'
7
+ import ActionButton from './ActionButton'
8
+ import { FormTextField } from './HookForm'
9
+
10
+ export function LoginForm({ loginUrl }: { loginUrl?: string }) {
11
+ const [showPassword, setShowPassword] = useState(false)
12
+ const { handleSubmit, control } = useForm()
13
+ const [error, setError] = useState('')
14
+
15
+ const onSubmit = async (values) => {
16
+ try {
17
+ const res = await axiosBase({
18
+ method: 'POST',
19
+ baseURL: process.env.REACT_APP_API_HOST,
20
+ url: loginUrl ? loginUrl : `/auth-server/auth/login`,
21
+ data: values,
22
+ })
23
+ Cookies.set('campx_tenant', res?.data?.subDomain)
24
+ Cookies.set('campx_session_key', res.data?.token)
25
+ window.location.reload()
26
+ } catch (err) {
27
+ // eslint-disable-next-line no-console
28
+ console.log(err)
29
+ setError(err?.response?.data?.message ?? 'Server Error')
30
+ }
31
+ }
32
+
33
+ return (
34
+ <>
35
+ <form onSubmit={handleSubmit(onSubmit)}>
36
+ <Stack gap={'30px'}>
37
+ <Box>
38
+ <FormTextField
39
+ control={control}
40
+ name="username"
41
+ label="User ID"
42
+ required
43
+ />
44
+ </Box>
45
+ <Box>
46
+ <FormTextField
47
+ control={control}
48
+ name="password"
49
+ label="Password"
50
+ type={showPassword ? 'text' : 'password'}
51
+ required
52
+ InputProps={{
53
+ endAdornment: (
54
+ <InputAdornment position="end">
55
+ <IconButton
56
+ size="small"
57
+ aria-label="toggle password visibility"
58
+ onClick={() => setShowPassword((prev) => !prev)}
59
+ edge="end"
60
+ >
61
+ {showPassword ? <VisibilityOff /> : <Visibility />}
62
+ </IconButton>
63
+ </InputAdornment>
64
+ ),
65
+ }}
66
+ />
67
+ </Box>
68
+ <ActionButton type="submit">Login</ActionButton>
69
+ </Stack>
70
+ </form>
71
+ {error && (
72
+ <Alert severity="error" sx={{ marginTop: '20px' }}>
73
+ {error}
74
+ </Alert>
75
+ )}
76
+ </>
77
+ )
78
+ }
79
+
80
+ export default LoginForm
@@ -1,69 +1,69 @@
1
- import { Delete } from '@mui/icons-material'
2
- import { Box, IconButton, styled, Typography, Stack } from '@mui/material'
3
- import Image from '../Image'
4
- // import { Media } from 'components/UploadButton/UploadButton'
5
-
6
- interface MediaRowProps {
7
- list: any[]
8
- onDelete?: (mediaKey: string) => void
9
- }
10
-
11
- export default function MediaRow({ list, onDelete }: MediaRowProps) {
12
- console.log(list, 'list')
13
- return (
14
- <Box sx={{ display: 'flex', gap: '1rem', width: '100%', flexWrap: 'wrap' }}>
15
- {list.map((item, index) => (
16
- <>{rednerMediaCard(item, onDelete)}</>
17
- ))}
18
- </Box>
19
- )
20
- }
21
-
22
- const rednerMediaCard = (item: any, onDelete?: (mediaKey: string) => void) => {
23
- switch (item?.type) {
24
- case 'image':
25
- return (
26
- <StyledImageContainer>
27
- <IconButton
28
- size="small"
29
- color="error"
30
- onClick={() => {
31
- onDelete(item?.key)
32
- }}
33
- >
34
- <Delete fontSize="small" />
35
- </IconButton>
36
- <Image src={item?.url} height={120} width={150} alt={''} />
37
- </StyledImageContainer>
38
- )
39
- case 'file':
40
- return (
41
- <Stack
42
- direction={'row'}
43
- alignItems="center"
44
- justifyContent={'space-between'}
45
- gap={'10px'}
46
- >
47
- <Typography>{item?.fileName}</Typography>
48
- <IconButton color="error">
49
- <Delete fontSize="small" />
50
- </IconButton>
51
- </Stack>
52
- )
53
-
54
- default:
55
- break
56
- }
57
- }
58
-
59
- const StyledImageContainer = styled(Box)(({ theme }) => ({
60
- border: theme.borders.grayLight,
61
- borderRadius: '10px',
62
- padding: '0.7rem',
63
- position: 'relative',
64
- '& > button': {
65
- position: 'absolute',
66
- right: 0,
67
- top: 0,
68
- },
69
- }))
1
+ import { Delete } from '@mui/icons-material'
2
+ import { Box, IconButton, styled, Typography, Stack } from '@mui/material'
3
+ import Image from '../Image'
4
+ // import { Media } from 'components/UploadButton/UploadButton'
5
+
6
+ interface MediaRowProps {
7
+ list: any[]
8
+ onDelete?: (mediaKey: string) => void
9
+ }
10
+
11
+ export default function MediaRow({ list, onDelete }: MediaRowProps) {
12
+ console.log(list, 'list')
13
+ return (
14
+ <Box sx={{ display: 'flex', gap: '1rem', width: '100%', flexWrap: 'wrap' }}>
15
+ {list.map((item, index) => (
16
+ <>{rednerMediaCard(item, onDelete)}</>
17
+ ))}
18
+ </Box>
19
+ )
20
+ }
21
+
22
+ const rednerMediaCard = (item: any, onDelete?: (mediaKey: string) => void) => {
23
+ switch (item?.type) {
24
+ case 'image':
25
+ return (
26
+ <StyledImageContainer>
27
+ <IconButton
28
+ size="small"
29
+ color="error"
30
+ onClick={() => {
31
+ onDelete(item?.key)
32
+ }}
33
+ >
34
+ <Delete fontSize="small" />
35
+ </IconButton>
36
+ <Image src={item?.url} height={120} width={150} alt={''} />
37
+ </StyledImageContainer>
38
+ )
39
+ case 'file':
40
+ return (
41
+ <Stack
42
+ direction={'row'}
43
+ alignItems="center"
44
+ justifyContent={'space-between'}
45
+ gap={'10px'}
46
+ >
47
+ <Typography>{item?.fileName}</Typography>
48
+ <IconButton color="error">
49
+ <Delete fontSize="small" />
50
+ </IconButton>
51
+ </Stack>
52
+ )
53
+
54
+ default:
55
+ break
56
+ }
57
+ }
58
+
59
+ const StyledImageContainer = styled(Box)(({ theme }) => ({
60
+ border: theme.borders.grayLight,
61
+ borderRadius: '10px',
62
+ padding: '0.7rem',
63
+ position: 'relative',
64
+ '& > button': {
65
+ position: 'absolute',
66
+ right: 0,
67
+ top: 0,
68
+ },
69
+ }))
@@ -1 +1 @@
1
- export { default } from './MediaRow'
1
+ export { default } from './MediaRow'
@@ -1,93 +1,93 @@
1
- import { Close } from '@mui/icons-material'
2
- import {
3
- Box,
4
- Dialog,
5
- DialogProps,
6
- DialogTitle,
7
- Grow,
8
- IconButton,
9
- styled,
10
- } from '@mui/material'
11
- import { TransitionProps } from '@mui/material/transitions'
12
- import { forwardRef, ReactNode, useState } from 'react'
13
-
14
- const StyledDialogHeader = styled(Box)(() => ({
15
- height: '64px',
16
- backgroundColor: '#f7f7f7',
17
- display: 'flex',
18
- justifyContent: 'space-between',
19
- alignItems: 'end',
20
- padding: '0.6rem 1rem',
21
- paddingBottom: '10px',
22
- }))
23
-
24
- const StyledDialogContent = styled(Box)(() => ({
25
- width: '100%',
26
- padding: '1rem',
27
- }))
28
-
29
- export const Transition = forwardRef(function Transition(
30
- props: TransitionProps & {
31
- children: React.ReactElement
32
- },
33
- ref: React.Ref<unknown>,
34
- ) {
35
- return <Grow timeout={1000} ref={ref} {...props} />
36
- })
37
-
38
- interface DrawerButtonProps {
39
- anchor: (props: { open: () => void }) => ReactNode
40
- content: (props: { close: () => void }) => ReactNode
41
- title: string | ReactNode
42
- dialogProps?: Omit<DialogProps, 'open'>
43
- onDialogClose?: () => void
44
- }
45
-
46
- export default function DialogButton({
47
- content,
48
- title,
49
- dialogProps,
50
- onDialogClose,
51
- anchor,
52
- }: DrawerButtonProps) {
53
- const [open, setOpen] = useState(false)
54
-
55
- const onClose = () => {
56
- onDialogClose && onDialogClose()
57
- setOpen(false)
58
- }
59
-
60
- const onOpen = () => {
61
- setOpen(true)
62
- }
63
-
64
- return (
65
- <>
66
- {anchor({
67
- open: onOpen,
68
- })}
69
- <Dialog
70
- PaperProps={{ elevation: 2, sx: { borderRadius: '10px' } }}
71
- fullWidth
72
- onClose={onClose}
73
- open={open}
74
- transitionDuration={100}
75
- TransitionComponent={Transition}
76
- sx={{
77
- '& .MuiBackdrop-root': {
78
- backgroundColor: 'rgba(0, 0, 0, 0.4)',
79
- },
80
- }}
81
- {...dialogProps}
82
- >
83
- <StyledDialogHeader>
84
- <DialogTitle>{title}</DialogTitle>
85
- <IconButton onClick={onClose} sx={{ color: 'black' }}>
86
- <Close />
87
- </IconButton>
88
- </StyledDialogHeader>
89
- <StyledDialogContent>{content({ close: onClose })}</StyledDialogContent>
90
- </Dialog>
91
- </>
92
- )
93
- }
1
+ import { Close } from '@mui/icons-material'
2
+ import {
3
+ Box,
4
+ Dialog,
5
+ DialogProps,
6
+ DialogTitle,
7
+ Grow,
8
+ IconButton,
9
+ styled,
10
+ } from '@mui/material'
11
+ import { TransitionProps } from '@mui/material/transitions'
12
+ import { forwardRef, ReactNode, useState } from 'react'
13
+
14
+ const StyledDialogHeader = styled(Box)(() => ({
15
+ height: '64px',
16
+ backgroundColor: '#f7f7f7',
17
+ display: 'flex',
18
+ justifyContent: 'space-between',
19
+ alignItems: 'end',
20
+ padding: '0.6rem 1rem',
21
+ paddingBottom: '10px',
22
+ }))
23
+
24
+ const StyledDialogContent = styled(Box)(() => ({
25
+ width: '100%',
26
+ padding: '1rem',
27
+ }))
28
+
29
+ export const Transition = forwardRef(function Transition(
30
+ props: TransitionProps & {
31
+ children: React.ReactElement
32
+ },
33
+ ref: React.Ref<unknown>,
34
+ ) {
35
+ return <Grow timeout={1000} ref={ref} {...props} />
36
+ })
37
+
38
+ interface DrawerButtonProps {
39
+ anchor: (props: { open: () => void }) => ReactNode
40
+ content: (props: { close: () => void }) => ReactNode
41
+ title: string | ReactNode
42
+ dialogProps?: Omit<DialogProps, 'open'>
43
+ onDialogClose?: () => void
44
+ }
45
+
46
+ export default function DialogButton({
47
+ content,
48
+ title,
49
+ dialogProps,
50
+ onDialogClose,
51
+ anchor,
52
+ }: DrawerButtonProps) {
53
+ const [open, setOpen] = useState(false)
54
+
55
+ const onClose = () => {
56
+ onDialogClose && onDialogClose()
57
+ setOpen(false)
58
+ }
59
+
60
+ const onOpen = () => {
61
+ setOpen(true)
62
+ }
63
+
64
+ return (
65
+ <>
66
+ {anchor({
67
+ open: onOpen,
68
+ })}
69
+ <Dialog
70
+ PaperProps={{ elevation: 2, sx: { borderRadius: '10px' } }}
71
+ fullWidth
72
+ onClose={onClose}
73
+ open={open}
74
+ transitionDuration={100}
75
+ TransitionComponent={Transition}
76
+ sx={{
77
+ '& .MuiBackdrop-root': {
78
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
79
+ },
80
+ }}
81
+ {...dialogProps}
82
+ >
83
+ <StyledDialogHeader>
84
+ <DialogTitle>{title}</DialogTitle>
85
+ <IconButton onClick={onClose} sx={{ color: 'black' }}>
86
+ <Close />
87
+ </IconButton>
88
+ </StyledDialogHeader>
89
+ <StyledDialogContent>{content({ close: onClose })}</StyledDialogContent>
90
+ </Dialog>
91
+ </>
92
+ )
93
+ }
@@ -1,85 +1,85 @@
1
- import { Close } from '@mui/icons-material'
2
- import {
3
- alpha,
4
- Box,
5
- ButtonProps,
6
- DialogTitle,
7
- Drawer,
8
- IconButton,
9
- styled,
10
- } from '@mui/material'
11
- import { ReactNode, useState } from 'react'
12
-
13
- const StyledDrawerHeader = styled(Box)(({ theme }) => ({
14
- height: '64px',
15
- backgroundColor: '#f7f7f7',
16
- display: 'flex',
17
- justifyContent: 'space-between',
18
- alignItems: 'end',
19
- padding: '0.6rem 1rem',
20
- paddingBottom: '10px',
21
- }))
22
-
23
- const StyledDrawerContent = styled(Box)(({ theme }) => ({
24
- padding: '1rem',
25
- height: 'calc(100vh - 64px)',
26
- overflowY: 'auto',
27
- paddingBottom: '4rem',
28
- }))
29
-
30
- interface DrawerButtonProps {
31
- anchor: (props: { open: () => void }) => ReactNode
32
- content: (props: { close: () => void }) => ReactNode
33
- title: string | ReactNode
34
- btnTxt?: string | ReactNode
35
- btnProps?: ButtonProps
36
- }
37
-
38
- export default function DrawerButton({
39
- content,
40
- title,
41
- anchor,
42
- }: DrawerButtonProps) {
43
- const [open, setOpen] = useState(false)
44
-
45
- const onOpen = () => {
46
- setOpen(true)
47
- }
48
-
49
- const onClose = () => {
50
- setOpen(false)
51
- }
52
- return (
53
- <>
54
- {anchor({ open: onOpen })}
55
- <Drawer
56
- anchor="right"
57
- elevation={10}
58
- onClose={onClose}
59
- open={open}
60
- PaperProps={{
61
- elevation: 2,
62
- }}
63
- sx={{
64
- zIndex: 500,
65
- '& .MuiDrawer-paper': {
66
- boxSizing: 'border-box',
67
- width: 600,
68
- },
69
- '& .MuiBackdrop-root': {
70
- backgroundColor: 'rgba(0, 0, 0, 0.4)',
71
- },
72
- }}
73
- transitionDuration={200}
74
- >
75
- <StyledDrawerHeader>
76
- <DialogTitle>{title}</DialogTitle>
77
- <IconButton onClick={onClose} sx={{ color: 'black' }}>
78
- <Close />
79
- </IconButton>
80
- </StyledDrawerHeader>
81
- <StyledDrawerContent>{content({ close: onClose })}</StyledDrawerContent>
82
- </Drawer>
83
- </>
84
- )
85
- }
1
+ import { Close } from '@mui/icons-material'
2
+ import {
3
+ alpha,
4
+ Box,
5
+ ButtonProps,
6
+ DialogTitle,
7
+ Drawer,
8
+ IconButton,
9
+ styled,
10
+ } from '@mui/material'
11
+ import { ReactNode, useState } from 'react'
12
+
13
+ const StyledDrawerHeader = styled(Box)(({ theme }) => ({
14
+ height: '64px',
15
+ backgroundColor: '#f7f7f7',
16
+ display: 'flex',
17
+ justifyContent: 'space-between',
18
+ alignItems: 'end',
19
+ padding: '0.6rem 1rem',
20
+ paddingBottom: '10px',
21
+ }))
22
+
23
+ const StyledDrawerContent = styled(Box)(({ theme }) => ({
24
+ padding: '1rem',
25
+ height: 'calc(100vh - 64px)',
26
+ overflowY: 'auto',
27
+ paddingBottom: '4rem',
28
+ }))
29
+
30
+ interface DrawerButtonProps {
31
+ anchor: (props: { open: () => void }) => ReactNode
32
+ content: (props: { close: () => void }) => ReactNode
33
+ title: string | ReactNode
34
+ btnTxt?: string | ReactNode
35
+ btnProps?: ButtonProps
36
+ }
37
+
38
+ export default function DrawerButton({
39
+ content,
40
+ title,
41
+ anchor,
42
+ }: DrawerButtonProps) {
43
+ const [open, setOpen] = useState(false)
44
+
45
+ const onOpen = () => {
46
+ setOpen(true)
47
+ }
48
+
49
+ const onClose = () => {
50
+ setOpen(false)
51
+ }
52
+ return (
53
+ <>
54
+ {anchor({ open: onOpen })}
55
+ <Drawer
56
+ anchor="right"
57
+ elevation={10}
58
+ onClose={onClose}
59
+ open={open}
60
+ PaperProps={{
61
+ elevation: 2,
62
+ }}
63
+ sx={{
64
+ zIndex: 500,
65
+ '& .MuiDrawer-paper': {
66
+ boxSizing: 'border-box',
67
+ width: 600,
68
+ },
69
+ '& .MuiBackdrop-root': {
70
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
71
+ },
72
+ }}
73
+ transitionDuration={200}
74
+ >
75
+ <StyledDrawerHeader>
76
+ <DialogTitle>{title}</DialogTitle>
77
+ <IconButton onClick={onClose} sx={{ color: 'black' }}>
78
+ <Close />
79
+ </IconButton>
80
+ </StyledDrawerHeader>
81
+ <StyledDrawerContent>{content({ close: onClose })}</StyledDrawerContent>
82
+ </Drawer>
83
+ </>
84
+ )
85
+ }
@@ -1,4 +1,4 @@
1
- import DialogButton from './DialogButton'
2
- import DrawerButton from './DrawerButton'
3
-
4
- export { DialogButton, DrawerButton }
1
+ import DialogButton from './DialogButton'
2
+ import DrawerButton from './DrawerButton'
3
+
4
+ export { DialogButton, DrawerButton }