wcz-layout 6.7.2 → 8.3.2

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 (269) hide show
  1. package/dist/Approval-BTJTexDo.js +143 -0
  2. package/dist/Approval-BTJTexDo.js.map +1 -0
  3. package/dist/DialogsContext-DLqA8RJ_.js +7 -0
  4. package/dist/DialogsContext-DLqA8RJ_.js.map +1 -0
  5. package/dist/Email-C9qwj7GD.js +20 -0
  6. package/dist/Email-C9qwj7GD.js.map +1 -0
  7. package/dist/FileMeta-DDqUju1Y.js +19 -0
  8. package/dist/FileMeta-DDqUju1Y.js.map +1 -0
  9. package/dist/FileMeta-ILLTOjaM.d.ts +20 -0
  10. package/dist/NotificationContext-CgwUOeW0.js +7 -0
  11. package/dist/NotificationContext-CgwUOeW0.js.map +1 -0
  12. package/dist/RouterListItemButton-owZVvuC_.js +78 -0
  13. package/dist/RouterListItemButton-owZVvuC_.js.map +1 -0
  14. package/dist/User-CT_IDGuG.d.ts +15 -0
  15. package/dist/apiMiddleware-CtY4rOFU.js +23 -0
  16. package/dist/apiMiddleware-CtY4rOFU.js.map +1 -0
  17. package/dist/components.d.ts +118 -0
  18. package/dist/components.js +1554 -0
  19. package/dist/components.js.map +1 -0
  20. package/dist/data/client.d.ts +3111 -0
  21. package/dist/data/client.js +188 -0
  22. package/dist/data/client.js.map +1 -0
  23. package/dist/data/server.d.ts +19 -0
  24. package/dist/data/server.js +16 -0
  25. package/dist/data/server.js.map +1 -0
  26. package/dist/data.d.ts +7 -0
  27. package/dist/data.js +2 -0
  28. package/dist/env-ON-cyE3N.js +31 -0
  29. package/dist/env-ON-cyE3N.js.map +1 -0
  30. package/dist/file-BUdLb7H1.js +148 -0
  31. package/dist/file-BUdLb7H1.js.map +1 -0
  32. package/dist/file-Dsht7yOP.js +100 -0
  33. package/dist/file-Dsht7yOP.js.map +1 -0
  34. package/dist/hooks.d.ts +226 -0
  35. package/dist/hooks.js +1180 -0
  36. package/dist/hooks.js.map +1 -0
  37. package/dist/index.d.ts +50 -0
  38. package/dist/index.js +2106 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/middleware.d.ts +47 -0
  41. package/dist/middleware.js +80 -0
  42. package/dist/middleware.js.map +1 -0
  43. package/dist/models.d.ts +474 -0
  44. package/dist/models.js +74 -0
  45. package/dist/models.js.map +1 -0
  46. package/dist/msalClient-CYiQAFnY.d.ts +15 -0
  47. package/dist/msalServer-B9sVqpQ2.js +47 -0
  48. package/dist/msalServer-B9sVqpQ2.js.map +1 -0
  49. package/dist/peoplesoft-BCjRje6b.js +240 -0
  50. package/dist/peoplesoft-BCjRje6b.js.map +1 -0
  51. package/dist/peoplesoft-Cze2ngGd.d.ts +1150 -0
  52. package/dist/queryClient-D64McLhZ.js +7 -0
  53. package/dist/queryClient-D64McLhZ.js.map +1 -0
  54. package/dist/useDialogs-BJVhBr8S.js +248 -0
  55. package/dist/useDialogs-BJVhBr8S.js.map +1 -0
  56. package/dist/utils-BMUmv2ws.js +191 -0
  57. package/dist/utils-BMUmv2ws.js.map +1 -0
  58. package/dist/utils-CvvyM8Xw.d.ts +56 -0
  59. package/dist/utils.d.ts +21 -0
  60. package/dist/utils.js +6 -0
  61. package/dist/vite.d.ts +7 -0
  62. package/dist/vite.js +147 -0
  63. package/dist/vite.js.map +1 -0
  64. package/package.json +158 -62
  65. package/skills/client-db/SKILL.md +107 -0
  66. package/skills/data-grid/SKILL.md +147 -0
  67. package/skills/db-schema/SKILL.md +68 -0
  68. package/skills/dialogs/SKILL.md +79 -0
  69. package/skills/forms/SKILL.md +82 -0
  70. package/skills/general/SKILL.md +17 -0
  71. package/skills/notifications/SKILL.md +43 -0
  72. package/skills/routing/SKILL.md +123 -0
  73. package/skills/server-functions/SKILL.md +109 -0
  74. package/skills/services/SKILL.md +28 -0
  75. package/skills/services/docs/approval.md +204 -0
  76. package/skills/services/docs/email.md +32 -0
  77. package/skills/services/docs/file.md +85 -0
  78. package/skills/services/docs/peoplesoft.md +110 -0
  79. package/skills/start/SKILL.md +46 -0
  80. package/skills/start/steps/01-git-setup.md +10 -0
  81. package/skills/start/steps/02-project-name-setup.md +14 -0
  82. package/skills/start/steps/03-apm-setup.md +208 -0
  83. package/skills/start/steps/04-database-setup.md +37 -0
  84. package/skills/start/steps/05-entra-setup.md +59 -0
  85. package/skills/start/steps/06-vault-setup.md +53 -0
  86. package/skills/start/steps/07-generate-favicon.md +10 -0
  87. package/skills/start/steps/08-commit.md +15 -0
  88. package/dist/src/components/Layout.d.ts +0 -16
  89. package/dist/src/components/Layout.js +0 -122
  90. package/dist/src/components/Layout.js.map +0 -1
  91. package/dist/src/components/dataGrid/ChipInputCell.d.ts +0 -9
  92. package/dist/src/components/dataGrid/ChipInputCell.js +0 -17
  93. package/dist/src/components/dataGrid/ChipInputCell.js.map +0 -1
  94. package/dist/src/components/dataGrid/EditableColumnHeader.d.ts +0 -2
  95. package/dist/src/components/dataGrid/EditableColumnHeader.js +0 -7
  96. package/dist/src/components/dataGrid/EditableColumnHeader.js.map +0 -1
  97. package/dist/src/components/dataGrid/GridToolbar.d.ts +0 -8
  98. package/dist/src/components/dataGrid/GridToolbar.js +0 -40
  99. package/dist/src/components/dataGrid/GridToolbar.js.map +0 -1
  100. package/dist/src/components/dataGrid/TableContainer.d.ts +0 -3
  101. package/dist/src/components/dataGrid/TableContainer.js +0 -32
  102. package/dist/src/components/dataGrid/TableContainer.js.map +0 -1
  103. package/dist/src/components/form/FormAutocomplete.d.ts +0 -7
  104. package/dist/src/components/form/FormAutocomplete.js +0 -10
  105. package/dist/src/components/form/FormAutocomplete.js.map +0 -1
  106. package/dist/src/components/form/FormCheckbox.d.ts +0 -7
  107. package/dist/src/components/form/FormCheckbox.js +0 -11
  108. package/dist/src/components/form/FormCheckbox.js.map +0 -1
  109. package/dist/src/components/form/FormDatePicker.d.ts +0 -9
  110. package/dist/src/components/form/FormDatePicker.js +0 -19
  111. package/dist/src/components/form/FormDatePicker.js.map +0 -1
  112. package/dist/src/components/form/FormDateTimePicker.d.ts +0 -9
  113. package/dist/src/components/form/FormDateTimePicker.js +0 -19
  114. package/dist/src/components/form/FormDateTimePicker.js.map +0 -1
  115. package/dist/src/components/form/FormNumberField.d.ts +0 -12
  116. package/dist/src/components/form/FormNumberField.js +0 -12
  117. package/dist/src/components/form/FormNumberField.js.map +0 -1
  118. package/dist/src/components/form/FormRadioGroup.d.ts +0 -13
  119. package/dist/src/components/form/FormRadioGroup.js +0 -11
  120. package/dist/src/components/form/FormRadioGroup.js.map +0 -1
  121. package/dist/src/components/form/FormSlider.d.ts +0 -7
  122. package/dist/src/components/form/FormSlider.js +0 -11
  123. package/dist/src/components/form/FormSlider.js.map +0 -1
  124. package/dist/src/components/form/FormSubmitButton.d.ts +0 -5
  125. package/dist/src/components/form/FormSubmitButton.js +0 -13
  126. package/dist/src/components/form/FormSubmitButton.js.map +0 -1
  127. package/dist/src/components/form/FormSwitch.d.ts +0 -7
  128. package/dist/src/components/form/FormSwitch.js +0 -11
  129. package/dist/src/components/form/FormSwitch.js.map +0 -1
  130. package/dist/src/components/form/FormTextField.d.ts +0 -7
  131. package/dist/src/components/form/FormTextField.js +0 -11
  132. package/dist/src/components/form/FormTextField.js.map +0 -1
  133. package/dist/src/components/layout/AccountMenu.d.ts +0 -9
  134. package/dist/src/components/layout/AccountMenu.js +0 -44
  135. package/dist/src/components/layout/AccountMenu.js.map +0 -1
  136. package/dist/src/components/layout/DevelopmentBanner.d.ts +0 -7
  137. package/dist/src/components/layout/DevelopmentBanner.js +0 -29
  138. package/dist/src/components/layout/DevelopmentBanner.js.map +0 -1
  139. package/dist/src/components/layout/ErrorPage.d.ts +0 -2
  140. package/dist/src/components/layout/ErrorPage.js +0 -25
  141. package/dist/src/components/layout/ErrorPage.js.map +0 -1
  142. package/dist/src/components/layout/LayoutDialog.d.ts +0 -12
  143. package/dist/src/components/layout/LayoutDialog.js +0 -12
  144. package/dist/src/components/layout/LayoutDialog.js.map +0 -1
  145. package/dist/src/components/layout/LayoutSnackbar.d.ts +0 -8
  146. package/dist/src/components/layout/LayoutSnackbar.js +0 -25
  147. package/dist/src/components/layout/LayoutSnackbar.js.map +0 -1
  148. package/dist/src/components/layout/NavigationDrawer.d.ts +0 -11
  149. package/dist/src/components/layout/NavigationDrawer.js +0 -70
  150. package/dist/src/components/layout/NavigationDrawer.js.map +0 -1
  151. package/dist/src/components/layout/NotificationMenu.d.ts +0 -8
  152. package/dist/src/components/layout/NotificationMenu.js +0 -26
  153. package/dist/src/components/layout/NotificationMenu.js.map +0 -1
  154. package/dist/src/components/layout/TypographyWithIcon.d.ts +0 -7
  155. package/dist/src/components/layout/TypographyWithIcon.js +0 -22
  156. package/dist/src/components/layout/TypographyWithIcon.js.map +0 -1
  157. package/dist/src/components/layout/Unauthorized.d.ts +0 -2
  158. package/dist/src/components/layout/Unauthorized.js +0 -26
  159. package/dist/src/components/layout/Unauthorized.js.map +0 -1
  160. package/dist/src/contexts/LayoutContext.d.ts +0 -40
  161. package/dist/src/contexts/LayoutContext.js +0 -60
  162. package/dist/src/contexts/LayoutContext.js.map +0 -1
  163. package/dist/src/contexts/UserContext.d.ts +0 -24
  164. package/dist/src/contexts/UserContext.js +0 -55
  165. package/dist/src/contexts/UserContext.js.map +0 -1
  166. package/dist/src/hooks/FormHooks.d.ts +0 -46
  167. package/dist/src/hooks/FormHooks.js +0 -31
  168. package/dist/src/hooks/FormHooks.js.map +0 -1
  169. package/dist/src/hooks/UseSnackbar.d.ts +0 -10
  170. package/dist/src/hooks/UseSnackbar.js +0 -23
  171. package/dist/src/hooks/UseSnackbar.js.map +0 -1
  172. package/dist/src/hooks/UseUser.d.ts +0 -10
  173. package/dist/src/hooks/UseUser.js +0 -25
  174. package/dist/src/hooks/UseUser.js.map +0 -1
  175. package/dist/src/index.d.ts +0 -20
  176. package/dist/src/index.js +0 -15
  177. package/dist/src/index.js.map +0 -1
  178. package/dist/src/models/Error.d.ts +0 -6
  179. package/dist/src/models/Error.js +0 -2
  180. package/dist/src/models/Error.js.map +0 -1
  181. package/dist/src/models/KeycloakSettings.d.ts +0 -8
  182. package/dist/src/models/KeycloakSettings.js +0 -2
  183. package/dist/src/models/KeycloakSettings.js.map +0 -1
  184. package/dist/src/models/LayoutPaletteColorOptions.d.ts +0 -6
  185. package/dist/src/models/LayoutPaletteColorOptions.js +0 -2
  186. package/dist/src/models/LayoutPaletteColorOptions.js.map +0 -1
  187. package/dist/src/models/LayoutRoute.d.ts +0 -14
  188. package/dist/src/models/LayoutRoute.js +0 -2
  189. package/dist/src/models/LayoutRoute.js.map +0 -1
  190. package/dist/src/models/Notification.d.ts +0 -9
  191. package/dist/src/models/Notification.js +0 -2
  192. package/dist/src/models/Notification.js.map +0 -1
  193. package/dist/src/models/PeoplesoftDepartment.d.ts +0 -14
  194. package/dist/src/models/PeoplesoftDepartment.js +0 -2
  195. package/dist/src/models/PeoplesoftDepartment.js.map +0 -1
  196. package/dist/src/models/PeoplesoftEmployee.d.ts +0 -34
  197. package/dist/src/models/PeoplesoftEmployee.js +0 -2
  198. package/dist/src/models/PeoplesoftEmployee.js.map +0 -1
  199. package/dist/src/models/Snackbar.d.ts +0 -15
  200. package/dist/src/models/Snackbar.js +0 -2
  201. package/dist/src/models/Snackbar.js.map +0 -1
  202. package/dist/src/models/User.d.ts +0 -27
  203. package/dist/src/models/User.js +0 -11
  204. package/dist/src/models/User.js.map +0 -1
  205. package/dist/src/models/types/EmployeeCategoryGroup.d.ts +0 -1
  206. package/dist/src/models/types/EmployeeCategoryGroup.js +0 -2
  207. package/dist/src/models/types/EmployeeCategoryGroup.js.map +0 -1
  208. package/dist/src/models/types/EmployeeStatus.d.ts +0 -1
  209. package/dist/src/models/types/EmployeeStatus.js +0 -2
  210. package/dist/src/models/types/EmployeeStatus.js.map +0 -1
  211. package/dist/src/utils/Auth.d.ts +0 -12
  212. package/dist/src/utils/Auth.js +0 -49
  213. package/dist/src/utils/Auth.js.map +0 -1
  214. package/dist/src/utils/Fetches.d.ts +0 -5
  215. package/dist/src/utils/Fetches.js +0 -66
  216. package/dist/src/utils/Fetches.js.map +0 -1
  217. package/dist/src/utils/FormUtils.d.ts +0 -7
  218. package/dist/src/utils/FormUtils.js +0 -9
  219. package/dist/src/utils/FormUtils.js.map +0 -1
  220. package/dist/src/utils/Helpers.d.ts +0 -11
  221. package/dist/src/utils/Helpers.js +0 -26
  222. package/dist/src/utils/Helpers.js.map +0 -1
  223. package/dist/tsconfig.tsbuildinfo +0 -1
  224. package/src/components/Layout.tsx +0 -183
  225. package/src/components/dataGrid/ChipInputCell.tsx +0 -31
  226. package/src/components/dataGrid/EditableColumnHeader.tsx +0 -7
  227. package/src/components/dataGrid/GridToolbar.tsx +0 -63
  228. package/src/components/dataGrid/TableContainer.tsx +0 -39
  229. package/src/components/form/FormAutocomplete.tsx +0 -34
  230. package/src/components/form/FormCheckbox.tsx +0 -32
  231. package/src/components/form/FormDatePicker.tsx +0 -34
  232. package/src/components/form/FormDateTimePicker.tsx +0 -34
  233. package/src/components/form/FormNumberField.tsx +0 -33
  234. package/src/components/form/FormRadioGroup.tsx +0 -43
  235. package/src/components/form/FormSlider.tsx +0 -28
  236. package/src/components/form/FormSubmitButton.tsx +0 -29
  237. package/src/components/form/FormSwitch.tsx +0 -32
  238. package/src/components/form/FormTextField.tsx +0 -26
  239. package/src/components/layout/AccountMenu.tsx +0 -160
  240. package/src/components/layout/DevelopmentBanner.tsx +0 -54
  241. package/src/components/layout/ErrorPage.tsx +0 -34
  242. package/src/components/layout/LayoutDialog.tsx +0 -50
  243. package/src/components/layout/LayoutSnackbar.tsx +0 -44
  244. package/src/components/layout/NavigationDrawer.tsx +0 -131
  245. package/src/components/layout/NotificationMenu.tsx +0 -76
  246. package/src/components/layout/TypographyWithIcon.tsx +0 -35
  247. package/src/components/layout/Unauthorized.tsx +0 -37
  248. package/src/contexts/LayoutContext.tsx +0 -127
  249. package/src/contexts/UserContext.tsx +0 -88
  250. package/src/hooks/FormHooks.ts +0 -33
  251. package/src/hooks/UseSnackbar.tsx +0 -28
  252. package/src/hooks/UseUser.tsx +0 -29
  253. package/src/index.ts +0 -27
  254. package/src/models/Error.tsx +0 -6
  255. package/src/models/KeycloakSettings.ts +0 -8
  256. package/src/models/LayoutPaletteColorOptions.tsx +0 -7
  257. package/src/models/LayoutRoute.ts +0 -15
  258. package/src/models/Notification.ts +0 -10
  259. package/src/models/PeoplesoftDepartment.ts +0 -15
  260. package/src/models/PeoplesoftEmployee.ts +0 -35
  261. package/src/models/Snackbar.ts +0 -16
  262. package/src/models/User.ts +0 -13
  263. package/src/models/types/EmployeeCategoryGroup.ts +0 -1
  264. package/src/models/types/EmployeeStatus.ts +0 -1
  265. package/src/utils/Auth.ts +0 -58
  266. package/src/utils/Fetches.ts +0 -83
  267. package/src/utils/FormUtils.ts +0 -22
  268. package/src/utils/Helpers.ts +0 -27
  269. package/tsconfig.json +0 -29
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Add } from "@mui/icons-material";
3
- import { Box, Button } from "@mui/material";
4
- import { GridToolbarColumnsButton, GridToolbarContainer, GridToolbarExport, GridToolbarFilterButton, GridToolbarQuickFilter, useGridApiContext } from "@mui/x-data-grid-premium";
5
- import { useContext } from "react";
6
- import { LayoutContext } from "../../contexts/LayoutContext";
7
- import { newGuid } from "../../utils/Helpers";
8
- const getFirstEditableColumn = (apiRef) => {
9
- const editableColumns = apiRef.getAllColumns().filter(column => column.editable);
10
- if (editableColumns.length)
11
- return editableColumns[0];
12
- };
13
- const hasEditableColumn = (apiRef) => {
14
- const editableColumns = apiRef === null || apiRef === void 0 ? void 0 : apiRef.getAllColumns().filter(column => column.editable);
15
- return !!(editableColumns === null || editableColumns === void 0 ? void 0 : editableColumns.length);
16
- };
17
- export const GridToolbar = (props) => {
18
- var _a, _b, _c, _d;
19
- const apiRef = useGridApiContext();
20
- const { t } = useContext(LayoutContext);
21
- const handleOnAddRecordClick = () => {
22
- var _a, _b, _c, _d;
23
- if (!apiRef.current)
24
- return;
25
- const rowIds = (_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.getAllRowIds();
26
- const allRows = rowIds.map(rowId => { var _a; return ((_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.getRow(rowId)); });
27
- const id = (_c = (_b = props.newRowDefaultValue) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : newGuid();
28
- (_d = apiRef.current) === null || _d === void 0 ? void 0 : _d.setRows([{ ...props.newRowDefaultValue, id, isNew: true }, ...allRows]);
29
- setTimeout(() => { var _a; return (_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.startRowEditMode({ id }); });
30
- const firstEditableColumn = getFirstEditableColumn(apiRef.current);
31
- if (firstEditableColumn) {
32
- apiRef.current.setCellFocus(id, firstEditableColumn.field);
33
- setTimeout(() => { var _a; return (_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.scrollToIndexes({ rowIndex: 0 }); });
34
- }
35
- };
36
- const showNewRowButton = hasEditableColumn(apiRef.current) && !props.hideAddNewRow;
37
- const hasActiveFilters = !!((_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.state.filter.filterModel.items.length) || !!((_c = (_b = apiRef.current) === null || _b === void 0 ? void 0 : _b.state.filter.filterModel.quickFilterValues) === null || _c === void 0 ? void 0 : _c.length);
38
- return (_jsxs(GridToolbarContainer, { children: [_jsx(GridToolbarColumnsButton, {}), _jsx(GridToolbarFilterButton, {}), _jsx(GridToolbarExport, {}), showNewRowButton && _jsx(Button, { size: "small", startIcon: _jsx(Add, {}), onClick: handleOnAddRecordClick, disabled: hasActiveFilters, children: t("Layout.AddRow") }), (_d = props.actions) === null || _d === void 0 ? void 0 : _d.map(action => action), _jsx(Box, { sx: { flexGrow: 1 } }), _jsx(GridToolbarQuickFilter, {})] }));
39
- };
40
- //# sourceMappingURL=GridToolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GridToolbar.js","sourceRoot":"","sources":["../../../../src/components/dataGrid/GridToolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Add } from \"@mui/icons-material\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { GridRowId, GridToolbarColumnsButton, GridToolbarContainer, GridToolbarExport, GridToolbarFilterButton, GridToolbarQuickFilter, GridToolbarProps as MuiGridToolbarProps, useGridApiContext } from \"@mui/x-data-grid-premium\";\r\nimport { GridApiPremium } from \"@mui/x-data-grid-premium/models/gridApiPremium\";\r\nimport React, { useContext } from \"react\";\r\nimport { LayoutContext } from \"../../contexts/LayoutContext\";\r\nimport { newGuid } from \"../../utils/Helpers\";\r\n\r\nconst getFirstEditableColumn = (apiRef: GridApiPremium) => {\r\n const editableColumns = apiRef.getAllColumns().filter(column => column.editable);\r\n if (editableColumns.length)\r\n return editableColumns[0];\r\n};\r\n\r\nconst hasEditableColumn = (apiRef: GridApiPremium | null) => {\r\n const editableColumns = apiRef?.getAllColumns().filter(column => column.editable);\r\n return !!editableColumns?.length;\r\n};\r\n\r\nexport interface GridToolbarProps extends MuiGridToolbarProps {\r\n actions?: React.ReactNode[];\r\n hideAddNewRow?: boolean;\r\n newRowDefaultValue?: any;\r\n}\r\n\r\nexport const GridToolbar: React.FC<GridToolbarProps> = (props) => {\r\n const apiRef = useGridApiContext();\r\n const { t } = useContext(LayoutContext);\r\n\r\n const handleOnAddRecordClick = () => {\r\n if (!apiRef.current) return;\r\n\r\n const rowIds: GridRowId[] = apiRef.current?.getAllRowIds();\r\n const allRows: any[] = rowIds.map(rowId => (apiRef.current?.getRow(rowId)));\r\n\r\n const id: GridRowId = props.newRowDefaultValue?.id ?? newGuid();\r\n apiRef.current?.setRows([{ ...props.newRowDefaultValue, id, isNew: true }, ...allRows]);\r\n setTimeout(() => apiRef.current?.startRowEditMode({ id }));\r\n\r\n const firstEditableColumn = getFirstEditableColumn(apiRef.current);\r\n if (firstEditableColumn) {\r\n apiRef.current.setCellFocus(id, firstEditableColumn.field);\r\n setTimeout(() => apiRef.current?.scrollToIndexes({ rowIndex: 0 }));\r\n }\r\n };\r\n\r\n const showNewRowButton = hasEditableColumn(apiRef.current) && !props.hideAddNewRow;\r\n const hasActiveFilters = !!apiRef.current?.state.filter.filterModel.items.length || !!apiRef.current?.state.filter.filterModel.quickFilterValues?.length;\r\n\r\n return (\r\n <GridToolbarContainer>\r\n <GridToolbarColumnsButton />\r\n <GridToolbarFilterButton />\r\n <GridToolbarExport />\r\n {showNewRowButton && <Button size=\"small\" startIcon={<Add />} onClick={handleOnAddRecordClick} disabled={hasActiveFilters}>{t(\"Layout.AddRow\")}</Button>}\r\n {props.actions?.map(action => action)}\r\n\r\n <Box sx={{ flexGrow: 1 }} />\r\n\r\n <GridToolbarQuickFilter />\r\n </GridToolbarContainer>\r\n );\r\n};"]}
@@ -1,3 +0,0 @@
1
- import { BoxProps } from "@mui/material";
2
- import React from "react";
3
- export declare const TableContainer: React.FC<BoxProps>;
@@ -1,32 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, useTheme } from "@mui/material";
3
- export const TableContainer = ({ sx, ...props }) => {
4
- const theme = useTheme();
5
- return (_jsx(Box, { ...props, sx: {
6
- height: { xs: "calc(100vh - 56px)", sm: "calc(100vh - 64px)" },
7
- "& .MuiDataGrid-cell--editing": {
8
- "& .MuiInputBase-root": {
9
- height: "100%",
10
- },
11
- },
12
- "& .MuiDataGrid-columnHeaderTitle": {
13
- fontWeight: "600",
14
- },
15
- "& .MuiDataGrid-cell": {
16
- display: "flex",
17
- alignItems: "center",
18
- },
19
- "& .Mui-error": {
20
- backgroundColor: theme.palette.error.main,
21
- color: theme.palette.error.contrastText
22
- },
23
- "& .MuiDataGrid-booleanCell[data-value=\"true\"]": {
24
- color: `${theme.palette.success.main}!important`
25
- },
26
- "& .MuiDataGrid-booleanCell[data-value=\"false\"]": {
27
- color: `${theme.palette.error.main}!important`
28
- },
29
- ...sx
30
- }, children: props.children }));
31
- };
32
- //# sourceMappingURL=TableContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableContainer.js","sourceRoot":"","sources":["../../../../src/components/dataGrid/TableContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAY,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACH,KAAC,GAAG,OACI,KAAK,EACT,EAAE,EAAE;YACA,MAAM,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,oBAAoB,EAAE;YAC9D,8BAA8B,EAAE;gBAC5B,sBAAsB,EAAE;oBACpB,MAAM,EAAE,MAAM;iBACjB;aACJ;YACD,kCAAkC,EAAE;gBAChC,UAAU,EAAE,KAAK;aACpB;YACD,qBAAqB,EAAE;gBACnB,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;aACvB;YACD,cAAc,EAAE;gBACZ,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;gBACzC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY;aAC1C;YACD,iDAAiD,EAAE;gBAC/C,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY;aACnD;YACD,kDAAkD,EAAE;gBAChD,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY;aACjD;YACD,GAAG,EAAE;SACR,YACA,KAAK,CAAC,QAAQ,GACb,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Box, BoxProps, useTheme } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const TableContainer: React.FC<BoxProps> = ({ sx, ...props }) => {\r\n const theme = useTheme();\r\n\r\n return (\r\n <Box\r\n {...props}\r\n sx={{\r\n height: { xs: \"calc(100vh - 56px)\", sm: \"calc(100vh - 64px)\" },\r\n \"& .MuiDataGrid-cell--editing\": {\r\n \"& .MuiInputBase-root\": {\r\n height: \"100%\",\r\n },\r\n },\r\n \"& .MuiDataGrid-columnHeaderTitle\": {\r\n fontWeight: \"600\",\r\n },\r\n \"& .MuiDataGrid-cell\": {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n \"& .Mui-error\": {\r\n backgroundColor: theme.palette.error.main,\r\n color: theme.palette.error.contrastText\r\n },\r\n \"& .MuiDataGrid-booleanCell[data-value=\\\"true\\\"]\": {\r\n color: `${theme.palette.success.main}!important`\r\n },\r\n \"& .MuiDataGrid-booleanCell[data-value=\\\"false\\\"]\": {\r\n color: `${theme.palette.error.main}!important`\r\n },\r\n ...sx\r\n }}>\r\n {props.children}\r\n </Box>\r\n );\r\n};"]}
@@ -1,7 +0,0 @@
1
- import { AutocompleteProps, TextFieldProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- export interface FormAutocompleteProps extends Omit<AutocompleteProps<any, boolean, boolean, boolean>, FormOmittedProps> {
5
- textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;
6
- }
7
- export declare const FormAutocomplete: FC<FormAutocompleteProps>;
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Autocomplete, TextField } from "@mui/material";
3
- import { getFieldStatus } from "../../utils/FormUtils";
4
- import { useFieldContext } from "../../hooks/FormHooks";
5
- export const FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
6
- const field = useFieldContext();
7
- const { isTouched, hasError, helperText } = getFieldStatus(field);
8
- return (_jsx(Autocomplete, { value: field.state.value, onChange: (_, value) => !autocompleteProps.freeSolo && field.handleChange(value), onInputChange: (_, value, reason) => reason !== "reset" && autocompleteProps.freeSolo && field.handleChange(value), onBlur: field.handleBlur, "aria-label": field.name, ...autocompleteProps, renderInput: (params) => _jsx(TextField, { ...params, name: field.name, error: isTouched && hasError, helperText: isTouched && helperText, ...textFieldProps }) }));
9
- };
10
- //# sourceMappingURL=FormAutocomplete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormAutocomplete.js","sourceRoot":"","sources":["../../../../src/components/form/FormAutocomplete.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAqB,SAAS,EAAkB,MAAM,eAAe,CAAC;AAG3F,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,EAAE,EAAE;IACpG,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,YAAY,IACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAChF,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,IAAI,iBAAiB,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAClH,MAAM,EAAE,KAAK,CAAC,UAAU,gBACZ,KAAK,CAAC,IAAI,KAClB,iBAAiB,EACrB,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,KAAC,SAAS,OACF,MAAM,EACV,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,SAAS,IAAI,QAAQ,EAC5B,UAAU,EAAE,SAAS,IAAI,UAAU,KAC/B,cAAc,GACpB,GAER,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import { Autocomplete, AutocompleteProps, TextField, TextFieldProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\n\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\n\r\nexport interface FormAutocompleteProps extends Omit<AutocompleteProps<any, boolean, boolean, boolean>, FormOmittedProps> {\r\n textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;\r\n}\r\n\r\nexport const FormAutocomplete: FC<FormAutocompleteProps> = ({ textFieldProps, ...autocompleteProps }) => {\r\n const field = useFieldContext();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <Autocomplete\r\n value={field.state.value}\r\n onChange={(_, value) => !autocompleteProps.freeSolo && field.handleChange(value)}\r\n onInputChange={(_, value, reason) => reason !== \"reset\" && autocompleteProps.freeSolo && field.handleChange(value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...autocompleteProps}\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n name={field.name}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n {...textFieldProps}\r\n />\r\n }\r\n />\r\n )\r\n}"]}
@@ -1,7 +0,0 @@
1
- import { CheckboxProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- export interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {
5
- label?: string;
6
- }
7
- export declare const FormCheckbox: FC<FormCheckboxProps>;
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Checkbox, FormControl, FormControlLabel, FormHelperText } from "@mui/material";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- export const FormCheckbox = (props) => {
6
- var _a;
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsxs(FormControl, { component: "fieldset", children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { name: field.name, checked: Boolean(field.state.value), onChange: (e) => field.handleChange(e.target.checked), onBlur: field.handleBlur, "aria-label": field.name, ...props }), label: (_a = props.label) !== null && _a !== void 0 ? _a : "" }), isTouched && hasError && _jsx(FormHelperText, { error: hasError, children: helperText })] }));
10
- };
11
- //# sourceMappingURL=FormCheckbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormCheckbox.js","sourceRoot":"","sources":["../../../../src/components/form/FormCheckbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAiB,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEvG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMzE,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,KAAK,EAAE,EAAE;;IACzD,MAAM,KAAK,GAAG,eAAe,EAA8B,CAAC;IAC5D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,MAAC,WAAW,IAAC,SAAS,EAAC,UAAU,aAC7B,KAAC,gBAAgB,IACb,OAAO,EACH,KAAC,QAAQ,IACL,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACrD,MAAM,EAAE,KAAK,CAAC,UAAU,gBACZ,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,EAEN,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,EAAE,GAC1B,EACD,SAAS,IAAI,QAAQ,IAAI,KAAC,cAAc,IAAC,KAAK,EAAE,QAAQ,YAAG,UAAU,GAAkB,IAC9E,CACjB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Checkbox, CheckboxProps, FormControl, FormControlLabel, FormHelperText } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\n\r\nexport interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormCheckbox: FC<FormCheckboxProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(e) => field.handleChange(e.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};"]}
@@ -1,9 +0,0 @@
1
- import { TextFieldProps } from "@mui/material";
2
- import { DatePickerProps } from "@mui/x-date-pickers-pro";
3
- import { FC } from "react";
4
- import { FormOmittedProps } from "../../utils/FormUtils";
5
- import { Moment } from "moment";
6
- export interface FormDatePickerProps extends Omit<DatePickerProps<Moment>, FormOmittedProps> {
7
- textFieldProps?: TextFieldProps;
8
- }
9
- export declare const FormDatePicker: FC<FormDatePickerProps>;
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { DatePicker } from "@mui/x-date-pickers-pro";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- import moment from "moment";
6
- export const FormDatePicker = (props) => {
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsx(DatePicker, { name: field.name, value: field.state.value ? moment(field.state.value) : null, onChange: (value) => field.handleChange(value ? value.format() : null), slotProps: {
10
- textField: {
11
- onBlur: field.handleBlur,
12
- error: isTouched && hasError,
13
- helperText: isTouched && helperText,
14
- ...props.textFieldProps
15
- },
16
- ...props.slotProps
17
- }, "aria-label": field.name, ...props }));
18
- };
19
- //# sourceMappingURL=FormDatePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormDatePicker.js","sourceRoot":"","sources":["../../../../src/components/form/FormDatePicker.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,MAAkB,MAAM,QAAQ,CAAC;AAMxC,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,KAAK,EAAE,EAAE;IAC7D,MAAM,KAAK,GAAG,eAAe,EAA6B,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,UAAU,IACP,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACtE,SAAS,EAAE;YACP,SAAS,EAAE;gBACP,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,KAAK,EAAE,SAAS,IAAI,QAAQ;gBAC5B,UAAU,EAAE,SAAS,IAAI,UAAU;gBACnC,GAAG,KAAK,CAAC,cAAc;aAC1B;YACD,GAAG,KAAK,CAAC,SAAS;SACrB,gBACW,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import { TextFieldProps } from \"@mui/material\";\r\nimport { DatePicker, DatePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\nimport moment, { Moment } from \"moment\";\r\n\r\nexport interface FormDatePickerProps extends Omit<DatePickerProps<Moment>, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDatePicker: FC<FormDatePickerProps> = (props) => {\r\n const field = useFieldContext<string | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DatePicker\r\n name={field.name}\r\n value={field.state.value ? moment(field.state.value) : null}\r\n onChange={(value) => field.handleChange(value ? value.format() : null)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n )\r\n}"]}
@@ -1,9 +0,0 @@
1
- import { TextFieldProps } from "@mui/material";
2
- import { DateTimePickerProps } from "@mui/x-date-pickers-pro";
3
- import { FC } from "react";
4
- import { FormOmittedProps } from "../../utils/FormUtils";
5
- import { Moment } from "moment";
6
- export interface FormDateTimePickerProps extends Omit<DateTimePickerProps<Moment>, FormOmittedProps> {
7
- textFieldProps?: TextFieldProps;
8
- }
9
- export declare const FormDateTimePicker: FC<FormDateTimePickerProps>;
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { DateTimePicker } from "@mui/x-date-pickers-pro";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- import moment from "moment";
6
- export const FormDateTimePicker = (props) => {
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsx(DateTimePicker, { name: field.name, value: field.state.value ? moment(field.state.value) : null, onChange: (value) => field.handleChange(value ? value.format() : null), slotProps: {
10
- textField: {
11
- onBlur: field.handleBlur,
12
- error: isTouched && hasError,
13
- helperText: isTouched && helperText,
14
- ...props.textFieldProps,
15
- },
16
- ...props.slotProps
17
- }, "aria-label": field.name, ...props }));
18
- };
19
- //# sourceMappingURL=FormDateTimePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormDateTimePicker.js","sourceRoot":"","sources":["../../../../src/components/form/FormDateTimePicker.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAuB,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,MAAkB,MAAM,QAAQ,CAAC;AAMxC,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,KAAK,GAAG,eAAe,EAA6B,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,cAAc,IACX,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACtE,SAAS,EAAE;YACP,SAAS,EAAE;gBACP,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,KAAK,EAAE,SAAS,IAAI,QAAQ;gBAC5B,UAAU,EAAE,SAAS,IAAI,UAAU;gBACnC,GAAG,KAAK,CAAC,cAAc;aAC1B;YACD,GAAG,KAAK,CAAC,SAAS;SACrB,gBACW,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { TextFieldProps } from \"@mui/material\";\r\nimport { DateTimePicker, DateTimePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\nimport moment, { Moment } from \"moment\";\r\n\r\nexport interface FormDateTimePickerProps extends Omit<DateTimePickerProps<Moment>, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateTimePicker: FC<FormDateTimePickerProps> = (props) => {\r\n const field = useFieldContext<string | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateTimePicker\r\n name={field.name}\r\n value={field.state.value ? moment(field.state.value) : null}\r\n onChange={(value) => field.handleChange(value ? value.format() : null)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps,\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n"]}
@@ -1,12 +0,0 @@
1
- import { TextFieldProps } from '@mui/material';
2
- import { FC } from 'react';
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- import { NumericFormatProps, InputAttributes } from 'react-number-format/types/types';
5
- interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {
6
- }
7
- export interface FormNumberFieldProps extends FormTextFieldProps {
8
- defaultValue?: number | null;
9
- options?: Omit<NumericFormatProps<InputAttributes>, "customInput" | "onValueChange" | keyof InputAttributes>;
10
- }
11
- export declare const FormNumberField: FC<FormNumberFieldProps>;
12
- export {};
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { TextField } from '@mui/material';
3
- import { NumericFormat } from 'react-number-format';
4
- import { useFieldContext } from "../../hooks/FormHooks";
5
- import { getFieldStatus } from "../../utils/FormUtils";
6
- export const FormNumberField = ({ options, ...props }) => {
7
- var _a;
8
- const field = useFieldContext();
9
- const { isTouched, hasError, helperText } = getFieldStatus(field);
10
- return (_jsx(NumericFormat, { customInput: TextField, name: field.name, value: (_a = field.state.value) !== null && _a !== void 0 ? _a : '', onValueChange: ({ floatValue }) => field.handleChange(floatValue), onBlur: field.handleBlur, error: isTouched && hasError, helperText: isTouched && helperText, "aria-label": field.name, ...props, ...options }));
11
- };
12
- //# sourceMappingURL=FormNumberField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormNumberField.js","sourceRoot":"","sources":["../../../../src/components/form/FormNumberField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUzE,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;;IAClF,MAAM,KAAK,GAAG,eAAe,EAA6B,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACN,KAAC,aAAa,IACb,WAAW,EAAE,SAAS,EACtB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAC9B,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EACjE,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,KAAK,EAAE,SAAS,IAAI,QAAQ,EAC5B,UAAU,EAAE,SAAS,IAAI,UAAU,gBACvB,KAAK,CAAC,IAAI,KAClB,KAAK,KACL,OAAO,GACV,CACF,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { TextField, TextFieldProps } from '@mui/material';\r\nimport { FC } from 'react';\r\nimport { NumericFormat } from 'react-number-format';\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\nimport { NumericFormatProps, InputAttributes } from 'react-number-format/types/types';\r\n\r\ninterface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> { }\r\n\r\nexport interface FormNumberFieldProps extends FormTextFieldProps {\r\n\tdefaultValue?: number | null;\r\n\toptions?: Omit<NumericFormatProps<InputAttributes>, \"customInput\" | \"onValueChange\" | keyof InputAttributes>;\r\n}\r\n\r\nexport const FormNumberField: FC<FormNumberFieldProps> = ({ options, ...props }) => {\r\n\tconst field = useFieldContext<number | null | undefined>();\r\n\tconst { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n\treturn (\r\n\t\t<NumericFormat\r\n\t\t\tcustomInput={TextField}\r\n\t\t\tname={field.name}\r\n\t\t\tvalue={field.state.value ?? ''}\r\n\t\t\tonValueChange={({ floatValue }) => field.handleChange(floatValue)}\r\n\t\t\tonBlur={field.handleBlur}\r\n\t\t\terror={isTouched && hasError}\r\n\t\t\thelperText={isTouched && helperText}\r\n\t\t\taria-label={field.name}\r\n\t\t\t{...props}\r\n\t\t\t{...options}\r\n\t\t/>\r\n\t);\r\n}"]}
@@ -1,13 +0,0 @@
1
- import { RadioGroupProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- interface Option {
5
- label: string;
6
- value: string | number;
7
- }
8
- export interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {
9
- label?: string;
10
- options: Option[];
11
- }
12
- export declare const FormRadioGroup: FC<FormRadioGroupProps>;
13
- export {};
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup } from "@mui/material";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- export const FormRadioGroup = ({ label, options, ...props }) => {
6
- var _a;
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsxs(FormControl, { component: "fieldset", children: [label && _jsx(FormLabel, { component: "legend", children: label }), _jsx(RadioGroup, { name: field.name, value: (_a = field.state.value) !== null && _a !== void 0 ? _a : "", onChange: (e) => field.handleChange(e.target.value), onBlur: field.handleBlur, "aria-label": field.name, ...props, children: options.map((option) => (_jsx(FormControlLabel, { value: option.value, control: _jsx(Radio, {}), label: option.label }, option.value))) }), isTouched && hasError && _jsx(FormHelperText, { error: hasError, children: helperText })] }));
10
- };
11
- //# sourceMappingURL=FormRadioGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormRadioGroup.js","sourceRoot":"","sources":["../../../../src/components/form/FormRadioGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAE7H,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAYzE,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;;IACpF,MAAM,KAAK,GAAG,eAAe,EAAsC,CAAC;IACpE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,MAAC,WAAW,IAAC,SAAS,EAAC,UAAU,aAC5B,KAAK,IAAI,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,YAAE,KAAK,GAAa,EAC3D,KAAC,UAAU,IACP,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,MAAM,EAAE,KAAK,CAAC,UAAU,gBACZ,KAAK,CAAC,IAAI,KAClB,KAAK,YAER,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACrB,KAAC,gBAAgB,IAEb,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,KAAC,KAAK,KAAG,EAClB,KAAK,EAAE,MAAM,CAAC,KAAK,IAHd,MAAM,CAAC,KAAK,CAInB,CACL,CAAC,GACO,EACZ,SAAS,IAAI,QAAQ,IAAI,KAAC,cAAc,IAAC,KAAK,EAAE,QAAQ,YAAG,UAAU,GAAkB,IAC9E,CACjB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup, RadioGroupProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\n\r\ninterface Option {\r\n label: string;\r\n value: string | number;\r\n}\r\n\r\nexport interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {\r\n label?: string;\r\n options: Option[];\r\n}\r\n\r\nexport const FormRadioGroup: FC<FormRadioGroupProps> = ({ label, options, ...props }) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel component=\"legend\">{label}</FormLabel>}\r\n <RadioGroup\r\n name={field.name}\r\n value={field.state.value ?? \"\"}\r\n onChange={(e) => field.handleChange(e.target.value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n >\r\n {options.map((option) => (\r\n <FormControlLabel\r\n key={option.value}\r\n value={option.value}\r\n control={<Radio />}\r\n label={option.label}\r\n />\r\n ))}\r\n </RadioGroup>\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n"]}
@@ -1,7 +0,0 @@
1
- import { SliderProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- export interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {
5
- label?: string;
6
- }
7
- export declare const FormSlider: FC<FormSliderProps>;
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { FormControl, FormHelperText, FormLabel, Slider } from "@mui/material";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- export const FormSlider = ({ label, ...props }) => {
6
- var _a;
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsxs(FormControl, { component: "fieldset", children: [label && _jsx(FormLabel, { children: label }), _jsx(Slider, { name: field.name, value: (_a = field.state.value) !== null && _a !== void 0 ? _a : 0, onChange: (_, value) => field.handleChange(Array.isArray(value) ? value[0] : value), onBlur: field.handleBlur, "aria-label": field.name, ...props }), isTouched && hasError && _jsx(FormHelperText, { error: hasError, children: helperText })] }));
10
- };
11
- //# sourceMappingURL=FormSlider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormSlider.js","sourceRoot":"","sources":["../../../../src/components/form/FormSlider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMzE,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;;IACnE,MAAM,KAAK,GAAG,eAAe,EAA6B,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,MAAC,WAAW,IAAC,SAAS,EAAC,UAAU,aAC5B,KAAK,IAAI,KAAC,SAAS,cAAE,KAAK,GAAa,EACxC,KAAC,MAAM,IACH,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,CAAC,KAAK,mCAAI,CAAC,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACnF,MAAM,EAAE,KAAK,CAAC,UAAU,gBACZ,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,EACD,SAAS,IAAI,QAAQ,IAAI,KAAC,cAAc,IAAC,KAAK,EAAE,QAAQ,YAAG,UAAU,GAAkB,IAC9E,CACjB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { FormControl, FormHelperText, FormLabel, Slider, SliderProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\n\r\nexport interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSlider: FC<FormSliderProps> = ({ label, ...props }) => {\r\n const field = useFieldContext<number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel>{label}</FormLabel>}\r\n <Slider\r\n name={field.name}\r\n value={field.state.value ?? 0}\r\n onChange={(_, value) => field.handleChange(Array.isArray(value) ? value[0] : value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n"]}
@@ -1,5 +0,0 @@
1
- import { ButtonProps } from "@mui/material";
2
- import { FC } from "react";
3
- export interface FormSubmitButtonProps extends Omit<ButtonProps, "loading" | "disabled" | "onClick"> {
4
- }
5
- export declare const FormSubmitButton: FC<FormSubmitButtonProps>;
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Button } from "@mui/material";
3
- import { useFormContext } from "../../hooks/FormHooks";
4
- export const FormSubmitButton = (props) => {
5
- const form = useFormContext();
6
- const handleClick = (e) => {
7
- e.preventDefault();
8
- e.stopPropagation();
9
- form.handleSubmit();
10
- };
11
- return (_jsx(form.Subscribe, { selector: (state) => [state.canSubmit, state.isSubmitting], children: ([canSubmit, isSubmitting]) => (_jsx(Button, { loading: isSubmitting, disabled: !canSubmit, onClick: handleClick, "aria-label": "submit", ...props })) }));
12
- };
13
- //# sourceMappingURL=FormSubmitButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormSubmitButton.js","sourceRoot":"","sources":["../../../../src/components/form/FormSubmitButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,KAAK,EAAE,EAAE;IACjE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,MAAM,WAAW,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC3D,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,IAAI,CAAC,SAAS,IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,YACrE,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAC5B,KAAC,MAAM,IACH,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,SAAS,EACpB,OAAO,EAAE,WAAW,gBACT,QAAQ,KACf,KAAK,GACX,CACL,GACY,CACpB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Button, ButtonProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFormContext } from \"../../hooks/FormHooks\";\r\n\r\nexport interface FormSubmitButtonProps extends Omit<ButtonProps, \"loading\" | \"disabled\" | \"onClick\"> { }\r\n\r\nexport const FormSubmitButton: FC<FormSubmitButtonProps> = (props) => {\r\n const form = useFormContext();\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n form.handleSubmit();\r\n };\r\n\r\n return (\r\n <form.Subscribe selector={(state) => [state.canSubmit, state.isSubmitting]}>\r\n {([canSubmit, isSubmitting]) => (\r\n <Button\r\n loading={isSubmitting}\r\n disabled={!canSubmit}\r\n onClick={handleClick}\r\n aria-label=\"submit\"\r\n {...props}\r\n />\r\n )}\r\n </form.Subscribe>\r\n );\r\n};"]}
@@ -1,7 +0,0 @@
1
- import { SwitchProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- export interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {
5
- label?: string;
6
- }
7
- export declare const FormSwitch: FC<FormSwitchProps>;
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { FormControl, FormControlLabel, FormHelperText, Switch } from "@mui/material";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- export const FormSwitch = (props) => {
6
- var _a;
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsxs(FormControl, { component: "fieldset", children: [_jsx(FormControlLabel, { control: _jsx(Switch, { name: field.name, checked: Boolean(field.state.value), onChange: (e) => field.handleChange(e.target.checked), onBlur: field.handleBlur, "aria-label": field.name, ...props }), label: (_a = props.label) !== null && _a !== void 0 ? _a : "" }), isTouched && hasError && _jsx(FormHelperText, { error: hasError, children: helperText })] }));
10
- };
11
- //# sourceMappingURL=FormSwitch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormSwitch.js","sourceRoot":"","sources":["../../../../src/components/form/FormSwitch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMzE,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,KAAK,EAAE,EAAE;;IACrD,MAAM,KAAK,GAAG,eAAe,EAA8B,CAAC;IAC5D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,MAAC,WAAW,IAAC,SAAS,EAAC,UAAU,aAC7B,KAAC,gBAAgB,IACb,OAAO,EACH,KAAC,MAAM,IACH,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACrD,MAAM,EAAE,KAAK,CAAC,UAAU,gBACZ,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,EAEN,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,EAAE,GAC1B,EACD,SAAS,IAAI,QAAQ,IAAI,KAAC,cAAc,IAAC,KAAK,EAAE,QAAQ,YAAG,UAAU,GAAkB,IAC9E,CACjB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { FormControl, FormControlLabel, FormHelperText, Switch, SwitchProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\n\r\nexport interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSwitch: FC<FormSwitchProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Switch\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(e) => field.handleChange(e.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n"]}
@@ -1,7 +0,0 @@
1
- import { TextFieldProps } from "@mui/material";
2
- import { FC } from "react";
3
- import { FormOmittedProps } from "../../utils/FormUtils";
4
- export interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {
5
- type?: "color" | "email" | "password" | "search" | "tel" | "text" | "url";
6
- }
7
- export declare const FormTextField: FC<FormTextFieldProps>;
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { TextField } from "@mui/material";
3
- import { useFieldContext } from "../../hooks/FormHooks";
4
- import { getFieldStatus } from "../../utils/FormUtils";
5
- export const FormTextField = (props) => {
6
- var _a;
7
- const field = useFieldContext();
8
- const { isTouched, hasError, helperText } = getFieldStatus(field);
9
- return (_jsx(TextField, { name: field.name, value: (_a = field.state.value) !== null && _a !== void 0 ? _a : '', onChange: e => field.handleChange(e.target.value), onBlur: field.handleBlur, error: isTouched && hasError, helperText: isTouched && helperText, "aria-label": field.name, ...props }));
10
- };
11
- //# sourceMappingURL=FormTextField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormTextField.js","sourceRoot":"","sources":["../../../../src/components/form/FormTextField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMzE,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,KAAK,EAAE,EAAE;;IAC3D,MAAM,KAAK,GAAG,eAAe,EAAsC,CAAC;IACpE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,SAAS,IACN,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,KAAK,EAAE,SAAS,IAAI,QAAQ,EAC5B,UAAU,EAAE,SAAS,IAAI,UAAU,gBACvB,KAAK,CAAC,IAAI,KAClB,KAAK,GACX,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import { TextField, TextFieldProps } from \"@mui/material\";\r\nimport { FC } from \"react\";\r\nimport { useFieldContext } from \"../../hooks/FormHooks\";\r\nimport { FormOmittedProps, getFieldStatus } from \"../../utils/FormUtils\";\r\n\r\nexport interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\r\n type?: \"color\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\"\r\n}\r\n\r\nexport const FormTextField: FC<FormTextFieldProps> = (props) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TextField\r\n name={field.name}\r\n value={field.state.value ?? ''}\r\n onChange={e => field.handleChange(e.target.value)}\r\n onBlur={field.handleBlur}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n )\r\n}"]}
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- import { User } from "../../models/User";
3
- interface AccountMenuProps {
4
- mode: "light" | "dark" | "system";
5
- setMode: (mode: "light" | "dark" | "system") => void;
6
- user: User;
7
- }
8
- export declare const AccountMenu: React.FC<AccountMenuProps>;
9
- export {};
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useIsAuthenticated, useMsal } from "@azure/msal-react";
3
- import { AccountCircle, ArrowBack, Brightness4, ChevronRight, DarkMode, LightMode, Login, Logout, SettingsBrightness, Translate } from "@mui/icons-material";
4
- import { Avatar, Box, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu } from "@mui/material";
5
- import { useQuery } from "@tanstack/react-query";
6
- import { Fragment, useState } from "react";
7
- import { useTranslation } from "react-i18next";
8
- import { graphQueries } from "../../hooks/UseUser";
9
- const drawerWidth = 240;
10
- export const AccountMenu = ({ mode, setMode, user }) => {
11
- const [anchorEl, setAnchorEl] = useState(null);
12
- const [tab, setTab] = useState("settings");
13
- const open = Boolean(anchorEl);
14
- const { t, i18n } = useTranslation();
15
- const { instance } = useMsal();
16
- const isAuthenticated = useIsAuthenticated();
17
- const { data: userPhoto } = useQuery({ ...graphQueries.sessionUserPhoto(), enabled: isAuthenticated });
18
- const changeLanguage = (newLanguage) => () => {
19
- i18n.changeLanguage(newLanguage)
20
- .finally(() => closeMenu());
21
- };
22
- const changeMode = (newMode) => () => {
23
- setMode(newMode);
24
- closeMenu();
25
- };
26
- const openMenu = (e) => setAnchorEl(e.currentTarget);
27
- const closeMenu = () => { setAnchorEl(null); setTimeout(() => setTab("settings"), 300); };
28
- const login = () => instance.loginRedirect();
29
- const logout = () => instance.logoutRedirect({
30
- postLogoutRedirectUri: "/",
31
- });
32
- const changeTab = (newTab) => () => setTab(newTab);
33
- const settings = (_jsxs(List, { component: "nav", subheader: _jsx(ListSubheader, { sx: { backgroundColor: "transparent" }, children: t("Layout.Settings") }), children: [_jsxs(ListItemButton, { onClick: changeTab("theme"), sx: { py: 0.3 }, children: [_jsx(ListItemIcon, { children: _jsx(Brightness4, {}) }), _jsx(ListItemText, { primary: t("Layout.Appearance"), secondary: t(`Layout.${mode.charAt(0).toUpperCase() + mode.slice(1)}`) }), _jsx(ChevronRight, {})] }), _jsxs(ListItemButton, { onClick: changeTab("language"), sx: { py: 0.3 }, children: [_jsx(ListItemIcon, { children: _jsx(Translate, {}) }), _jsx(ListItemText, { primary: t("Layout.Language"), secondary: i18n.resolvedLanguage === "en" ? "English" : "Čeština" }), _jsx(ChevronRight, {})] })] }));
34
- const theme = (_jsxs(List, { subheader: _jsxs(ListSubheader, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [_jsx(IconButton, { size: "small", sx: { mr: 0.5 }, children: _jsx(ArrowBack, { fontSize: "small" }) }), " ", t("Layout.Appearance")] }), children: [_jsxs(ListItemButton, { onClick: changeMode("light"), disabled: mode === "light", children: [_jsx(ListItemIcon, { children: _jsx(LightMode, {}) }), _jsx(ListItemText, { primary: t("Layout.Light") })] }), _jsxs(ListItemButton, { onClick: changeMode("dark"), disabled: mode === "dark", children: [_jsx(ListItemIcon, { children: _jsx(DarkMode, {}) }), _jsx(ListItemText, { primary: t("Layout.Dark") })] }), _jsxs(ListItemButton, { onClick: changeMode("system"), disabled: mode === "system", children: [_jsx(ListItemIcon, { children: _jsx(SettingsBrightness, {}) }), _jsx(ListItemText, { primary: t("Layout.System") })] })] }));
35
- const language = (_jsxs(List, { subheader: _jsxs(ListSubheader, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [_jsx(IconButton, { size: "small", sx: { mr: 0.5 }, children: _jsx(ArrowBack, { fontSize: "small" }) }), " ", t("Layout.Language")] }), children: [_jsx(ListItemButton, { onClick: changeLanguage("en"), disabled: i18n.resolvedLanguage === "en", children: _jsx(ListItemText, { primary: "English" }) }), _jsx(ListItemButton, { onClick: changeLanguage("cs"), disabled: i18n.resolvedLanguage === "cs", children: _jsx(ListItemText, { primary: "\u010Ce\u0161tina" }) })] }));
36
- return (_jsxs(Fragment, { children: [_jsx(IconButton, { size: "small", edge: "end", onClick: openMenu, children: userPhoto ?
37
- _jsx(Avatar, { src: userPhoto, sx: { width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } } })
38
- :
39
- _jsx(AccountCircle, { sx: { width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } } }) }), _jsx(Menu, { anchorEl: anchorEl, open: open, onClose: closeMenu, children: _jsxs(Box, { sx: { width: drawerWidth }, children: [_jsx(List, { disablePadding: true, children: isAuthenticated ?
40
- _jsxs(Fragment, { children: [_jsx(ListItem, { children: _jsx(ListItemText, { primary: user.name, secondary: _jsxs("span", { children: [user.employeeId && _jsx("span", { children: user.employeeId }), user.employeeId && _jsx("br", {}), user.department && _jsx("span", { children: user.department })] }) }) }), _jsxs(ListItemButton, { onClick: logout, children: [_jsx(ListItemIcon, { children: _jsx(Logout, { color: "error" }) }), _jsx(ListItemText, { primary: t("Layout.Logout") })] })] })
41
- :
42
- _jsxs(ListItemButton, { onClick: login, children: [_jsx(ListItemIcon, { children: _jsx(Login, { color: "success" }) }), _jsx(ListItemText, { primary: t("Layout.LogIn") })] }) }), tab === "settings" && settings, tab === "theme" && theme, tab === "language" && language] }) })] }));
43
- };
44
- //# sourceMappingURL=AccountMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountMenu.js","sourceRoot":"","sources":["../../../../src/components/layout/AccountMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\nimport { AccountCircle, ArrowBack, Brightness4, ChevronRight, DarkMode, LightMode, Login, Logout, SettingsBrightness, Translate } from \"@mui/icons-material\";\r\nimport { Avatar, Box, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu } from \"@mui/material\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport React, { Fragment, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { graphQueries } from \"../../hooks/UseUser\";\r\nimport { User } from \"../../models/User\";\r\n\r\nconst drawerWidth = 240;\r\ntype TabType = \"settings\" | \"theme\" | \"language\";\r\n\r\ninterface AccountMenuProps {\r\n mode: \"light\" | \"dark\" | \"system\";\r\n setMode: (mode: \"light\" | \"dark\" | \"system\") => void;\r\n user: User;\r\n}\r\n\r\nexport const AccountMenu: React.FC<AccountMenuProps> = ({ mode, setMode, user }) => {\r\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n const [tab, setTab] = useState<TabType>(\"settings\");\r\n const open = Boolean(anchorEl);\r\n const { t, i18n } = useTranslation();\r\n const { instance } = useMsal();\r\n const isAuthenticated = useIsAuthenticated();\r\n\r\n const { data: userPhoto } = useQuery({ ...graphQueries.sessionUserPhoto(), enabled: isAuthenticated });\r\n\r\n const changeLanguage = (newLanguage: \"en\" | \"cs\") => () => {\r\n i18n.changeLanguage(newLanguage)\r\n .finally(() => closeMenu());\r\n };\r\n\r\n const changeMode = (newMode: \"light\" | \"dark\" | \"system\") => () => {\r\n setMode(newMode);\r\n closeMenu();\r\n };\r\n\r\n const openMenu = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => setAnchorEl(e.currentTarget);\r\n const closeMenu = () => { setAnchorEl(null); setTimeout(() => setTab(\"settings\"), 300); };\r\n\r\n const login = () => instance.loginRedirect();\r\n const logout = () => instance.logoutRedirect({\r\n postLogoutRedirectUri: \"/\",\r\n });\r\n\r\n const changeTab = (newTab: TabType) => () => setTab(newTab);\r\n\r\n const settings = (\r\n <List component=\"nav\" subheader={<ListSubheader sx={{ backgroundColor: \"transparent\" }}>{t(\"Layout.Settings\")}</ListSubheader>}>\r\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Brightness4 />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Appearance\")} secondary={t(`Layout.${mode.charAt(0).toUpperCase() + mode.slice(1)}`)} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n\r\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Translate />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Language\")} secondary={i18n.resolvedLanguage === \"en\" ? \"English\" : \"Čeština\"} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const theme = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Appearance\")}\r\n </ListSubheader>\r\n }>\r\n <ListItemButton onClick={changeMode(\"light\")} disabled={mode === \"light\"}>\r\n <ListItemIcon>\r\n <LightMode />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Light\")} />\r\n </ListItemButton>\r\n <ListItemButton onClick={changeMode(\"dark\")} disabled={mode === \"dark\"}>\r\n <ListItemIcon>\r\n <DarkMode />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Dark\")} />\r\n </ListItemButton>\r\n <ListItemButton onClick={changeMode(\"system\")} disabled={mode === \"system\"}>\r\n <ListItemIcon>\r\n <SettingsBrightness />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.System\")} />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const language = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Language\")}\r\n </ListSubheader>\r\n }>\r\n <ListItemButton onClick={changeLanguage(\"en\")} disabled={i18n.resolvedLanguage === \"en\"}>\r\n <ListItemText primary=\"English\" />\r\n </ListItemButton>\r\n <ListItemButton onClick={changeLanguage(\"cs\")} disabled={i18n.resolvedLanguage === \"cs\"}>\r\n <ListItemText primary=\"Čeština\" />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n return (\r\n <Fragment>\r\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu}>\r\n {userPhoto ?\r\n <Avatar src={userPhoto} sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n :\r\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n }\r\n </IconButton>\r\n\r\n <Menu anchorEl={anchorEl} open={open} onClose={closeMenu}>\r\n <Box sx={{ width: drawerWidth }}>\r\n <List disablePadding>\r\n {isAuthenticated ?\r\n <Fragment>\r\n <ListItem>\r\n <ListItemText primary={user.name} secondary={\r\n <span>\r\n {user.employeeId && <span>{user.employeeId}</span>}\r\n {user.employeeId && <br />}\r\n {user.department && <span>{user.department}</span>}\r\n </span>\r\n } />\r\n </ListItem>\r\n\r\n <ListItemButton onClick={logout}>\r\n <ListItemIcon><Logout color=\"error\" /></ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Logout\")} />\r\n </ListItemButton>\r\n </Fragment>\r\n :\r\n <ListItemButton onClick={login}>\r\n <ListItemIcon><Login color=\"success\" /></ListItemIcon>\r\n <ListItemText primary={t(\"Layout.LogIn\")} />\r\n </ListItemButton>\r\n }\r\n </List>\r\n\r\n {tab === \"settings\" && settings}\r\n {tab === \"theme\" && theme}\r\n {tab === \"language\" && language}\r\n </Box>\r\n </Menu>\r\n </Fragment>\r\n );\r\n};"]}
@@ -1,7 +0,0 @@
1
- import { User } from "../../models/User";
2
- interface DevelopmentBannerProps {
3
- user: User;
4
- hasNavigationRoutes: boolean;
5
- }
6
- export declare const DevelopmentBanner: React.FC<DevelopmentBannerProps>;
7
- export {};
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Close } from "@mui/icons-material";
3
- import { Fade, Grid2, IconButton, Paper, Typography } from "@mui/material";
4
- import { grey } from "@mui/material/colors";
5
- import { useEffect, useState } from "react";
6
- import { useTranslation } from "react-i18next";
7
- import { environment } from "../../utils/Helpers";
8
- import { hasRole } from "../../utils/Auth";
9
- export const DevelopmentBanner = ({ user, hasNavigationRoutes }) => {
10
- const { t } = useTranslation();
11
- const [bannerOpen, setBannerOpen] = useState(false);
12
- useEffect(() => {
13
- if (!hasRole(user, ["wcz-developers"]) && (environment === "dev" || environment === "qas"))
14
- setBannerOpen(true);
15
- }, [user]);
16
- const closeBanner = () => setBannerOpen(false);
17
- return (_jsx(Fade, { appear: false, in: bannerOpen, children: _jsx(Paper, { square: true, variant: "outlined", tabIndex: -1, sx: theme => ({
18
- position: "fixed",
19
- bottom: 0,
20
- left: { xs: 0, sm: hasNavigationRoutes ? 68.7 : 0 },
21
- right: 0,
22
- m: 0,
23
- p: 2,
24
- borderWidth: 0,
25
- borderTopWidth: 1,
26
- bgcolor: theme.palette.mode === "dark" ? grey[900] : grey[100]
27
- }), children: _jsxs(Grid2, { container: true, justifyContent: "space-between", alignItems: "center", children: [_jsxs(Grid2, { size: 10, children: [_jsx(Typography, { fontWeight: "bold", children: t("Layout.DevelopmentDialogTitle") }), _jsx(Typography, { variant: "body2", children: t("Layout.DevelopmentDialogContent") })] }), _jsx(Grid2, { size: 2, sx: { p: 1, textAlign: "right" }, children: _jsx(IconButton, { size: "small", onClick: closeBanner, children: _jsx(Close, {}) }) })] }) }) }));
28
- };
29
- //# sourceMappingURL=DevelopmentBanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevelopmentBanner.js","sourceRoot":"","sources":["../../../../src/components/layout/DevelopmentBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAO3C,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE;IACjG,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC;YACtF,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO,CACH,KAAC,IAAI,IAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,YAC/B,KAAC,KAAK,IAAC,MAAM,QAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzD,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnD,KAAK,EAAE,CAAC;gBACR,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,CAAC;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aACjE,CAAC,YACE,MAAC,KAAK,IAAC,SAAS,QAAC,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,QAAQ,aAC/D,MAAC,KAAK,IAAC,IAAI,EAAE,EAAE,aACX,KAAC,UAAU,IAAC,UAAU,EAAC,MAAM,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAc,EAC/E,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,CAAC,CAAC,iCAAiC,CAAC,GAAc,IAC3E,EAER,KAAC,KAAK,IAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAC5C,KAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,WAAW,YACzC,KAAC,KAAK,KAAG,GACA,GACT,IACJ,GACJ,GACL,CACV,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Close } from \"@mui/icons-material\";\r\nimport { Fade, Grid2, IconButton, Paper, Typography } from \"@mui/material\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { User } from \"../../models/User\";\r\nimport { environment } from \"../../utils/Helpers\";\r\nimport { hasRole } from \"../../utils/Auth\";\r\n\r\ninterface DevelopmentBannerProps {\r\n user: User;\r\n hasNavigationRoutes: boolean;\r\n}\r\n\r\nexport const DevelopmentBanner: React.FC<DevelopmentBannerProps> = ({ user, hasNavigationRoutes }) => {\r\n const { t } = useTranslation();\r\n const [bannerOpen, setBannerOpen] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (!hasRole(user, [\"wcz-developers\"]) && (environment === \"dev\" || environment === \"qas\"))\r\n setBannerOpen(true);\r\n }, [user]);\r\n\r\n const closeBanner = () => setBannerOpen(false);\r\n\r\n return (\r\n <Fade appear={false} in={bannerOpen}>\r\n <Paper square variant=\"outlined\" tabIndex={-1} sx={theme => ({\r\n position: \"fixed\",\r\n bottom: 0,\r\n left: { xs: 0, sm: hasNavigationRoutes ? 68.7 : 0 },\r\n right: 0,\r\n m: 0,\r\n p: 2,\r\n borderWidth: 0,\r\n borderTopWidth: 1,\r\n bgcolor: theme.palette.mode === \"dark\" ? grey[900] : grey[100]\r\n })}>\r\n <Grid2 container justifyContent=\"space-between\" alignItems=\"center\">\r\n <Grid2 size={10}>\r\n <Typography fontWeight=\"bold\">{t(\"Layout.DevelopmentDialogTitle\")}</Typography>\r\n <Typography variant=\"body2\">{t(\"Layout.DevelopmentDialogContent\")}</Typography>\r\n </Grid2>\r\n\r\n <Grid2 size={2} sx={{ p: 1, textAlign: \"right\" }}>\r\n <IconButton size=\"small\" onClick={closeBanner}>\r\n <Close />\r\n </IconButton>\r\n </Grid2>\r\n </Grid2>\r\n </Paper>\r\n </Fade>\r\n );\r\n};"]}