@oneblink/apps-react 0.6.2-beta.2 → 1.0.0-beta.1

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 (249) hide show
  1. package/dist/OneBlinkAutoSaveForm.js +2 -2
  2. package/dist/OneBlinkAutoSaveForm.js.map +1 -1
  3. package/dist/OneBlinkFormBase.js +4 -4
  4. package/dist/OneBlinkFormBase.js.map +1 -1
  5. package/dist/OneBlinkFormStoreView.d.ts +8 -0
  6. package/dist/OneBlinkFormStoreView.js +55 -0
  7. package/dist/OneBlinkFormStoreView.js.map +1 -0
  8. package/dist/components/CopyToClipboardIconButton.d.ts +10 -0
  9. package/dist/components/CopyToClipboardIconButton.js +42 -0
  10. package/dist/components/CopyToClipboardIconButton.js.map +1 -0
  11. package/dist/components/CustomAccordion.d.ts +27 -0
  12. package/dist/components/CustomAccordion.js +40 -0
  13. package/dist/components/CustomAccordion.js.map +1 -0
  14. package/dist/components/ErrorMessage.d.ts +13 -0
  15. package/dist/components/ErrorMessage.js +13 -0
  16. package/dist/components/ErrorMessage.js.map +1 -0
  17. package/dist/components/ErrorSnackbar.d.ts +8 -0
  18. package/dist/components/ErrorSnackbar.js +49 -0
  19. package/dist/components/ErrorSnackbar.js.map +1 -0
  20. package/dist/components/Lists.d.ts +10 -0
  21. package/dist/components/Lists.js +43 -0
  22. package/dist/components/Lists.js.map +1 -0
  23. package/dist/components/LoadingWithMessage.d.ts +6 -0
  24. package/dist/components/LoadingWithMessage.js +12 -0
  25. package/dist/components/LoadingWithMessage.js.map +1 -0
  26. package/dist/components/NoResourcesYet.d.ts +12 -0
  27. package/dist/components/NoResourcesYet.js +7 -0
  28. package/dist/components/NoResourcesYet.js.map +1 -0
  29. package/dist/components/formStore/ColumnsConfigurationButton.d.ts +10 -0
  30. package/dist/components/formStore/ColumnsConfigurationButton.js +29 -0
  31. package/dist/components/formStore/ColumnsConfigurationButton.js.map +1 -0
  32. package/dist/components/formStore/DownloadSubmissionDataButton.d.ts +13 -0
  33. package/dist/components/formStore/DownloadSubmissionDataButton.js +45 -0
  34. package/dist/components/formStore/DownloadSubmissionDataButton.js.map +1 -0
  35. package/dist/components/formStore/FormStore.d.ts +9 -0
  36. package/dist/components/formStore/FormStore.js +103 -0
  37. package/dist/components/formStore/FormStore.js.map +1 -0
  38. package/dist/components/formStore/display/ElementDisplay.d.ts +23 -0
  39. package/dist/components/formStore/display/ElementDisplay.js +78 -0
  40. package/dist/components/formStore/display/ElementDisplay.js.map +1 -0
  41. package/dist/components/formStore/display/FormStoreIcon.d.ts +2 -0
  42. package/dist/components/formStore/display/FormStoreIcon.js +3 -0
  43. package/dist/components/formStore/display/FormStoreIcon.js.map +1 -0
  44. package/dist/components/formStore/table/ActionedByTableCell.d.ts +11 -0
  45. package/dist/components/formStore/table/ActionedByTableCell.js +44 -0
  46. package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -0
  47. package/dist/components/formStore/table/ColumnFilters.d.ts +9 -0
  48. package/dist/components/formStore/table/ColumnFilters.js +180 -0
  49. package/dist/components/formStore/table/ColumnFilters.js.map +1 -0
  50. package/dist/components/formStore/table/FormElementTableCell.d.ts +10 -0
  51. package/dist/components/formStore/table/FormElementTableCell.js +195 -0
  52. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -0
  53. package/dist/components/formStore/table/HeaderCellMoreButton.d.ts +9 -0
  54. package/dist/components/formStore/table/HeaderCellMoreButton.js +49 -0
  55. package/dist/components/formStore/table/HeaderCellMoreButton.js.map +1 -0
  56. package/dist/components/formStore/table/RepeatableSetCell.d.ts +9 -0
  57. package/dist/components/formStore/table/RepeatableSetCell.js +63 -0
  58. package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -0
  59. package/dist/components/formStore/table/RepeatableSetCellAccordion.d.ts +9 -0
  60. package/dist/components/formStore/table/RepeatableSetCellAccordion.js +12 -0
  61. package/dist/components/formStore/table/RepeatableSetCellAccordion.js.map +1 -0
  62. package/dist/components/formStore/table/TableCellCopyButton.d.ts +7 -0
  63. package/dist/components/formStore/table/TableCellCopyButton.js +31 -0
  64. package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -0
  65. package/dist/components/formStore/table/generateColumns.d.ts +18 -0
  66. package/dist/components/formStore/table/generateColumns.js +233 -0
  67. package/dist/components/formStore/table/generateColumns.js.map +1 -0
  68. package/dist/components/formStore/table/index.d.ts +17 -0
  69. package/dist/components/formStore/table/index.js +194 -0
  70. package/dist/components/formStore/table/index.js.map +1 -0
  71. package/dist/components/formStore/table/useFormStoreTable.d.ts +12 -0
  72. package/dist/components/formStore/table/useFormStoreTable.js +130 -0
  73. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -0
  74. package/dist/components/messages/LargeIconMessage.d.ts +14 -0
  75. package/dist/components/messages/LargeIconMessage.js +68 -0
  76. package/dist/components/messages/LargeIconMessage.js.map +1 -0
  77. package/dist/components/pickers/V4CompatibleDatePicker.d.ts +30 -0
  78. package/dist/components/pickers/V4CompatibleDatePicker.js +58 -0
  79. package/dist/components/pickers/V4CompatibleDatePicker.js.map +1 -0
  80. package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +29 -0
  81. package/dist/components/pickers/V4CompatibleDateTimePicker.js +58 -0
  82. package/dist/components/pickers/V4CompatibleDateTimePicker.js.map +1 -0
  83. package/dist/components/pickers/V4CompatibleTimePicker.d.ts +26 -0
  84. package/dist/components/pickers/V4CompatibleTimePicker.js +41 -0
  85. package/dist/components/pickers/V4CompatibleTimePicker.js.map +1 -0
  86. package/dist/components/{AnnotationModal.d.ts → renderer/AnnotationModal.d.ts} +0 -0
  87. package/dist/components/{AnnotationModal.js → renderer/AnnotationModal.js} +2 -2
  88. package/dist/components/renderer/AnnotationModal.js.map +1 -0
  89. package/dist/components/{AutocompleteDropdown.d.ts → renderer/AutocompleteDropdown.d.ts} +0 -0
  90. package/dist/components/{AutocompleteDropdown.js → renderer/AutocompleteDropdown.js} +1 -1
  91. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -0
  92. package/dist/components/{CopyToClipboardButton.d.ts → renderer/CopyToClipboardButton.d.ts} +0 -0
  93. package/dist/components/{CopyToClipboardButton.js → renderer/CopyToClipboardButton.js} +1 -1
  94. package/dist/components/renderer/CopyToClipboardButton.js.map +1 -0
  95. package/dist/components/{CustomisableButtonInner.d.ts → renderer/CustomisableButtonInner.d.ts} +0 -0
  96. package/dist/components/{CustomisableButtonInner.js → renderer/CustomisableButtonInner.js} +0 -0
  97. package/dist/components/renderer/CustomisableButtonInner.js.map +1 -0
  98. package/dist/components/{FormElementLabelContainer.d.ts → renderer/FormElementLabelContainer.d.ts} +0 -0
  99. package/dist/components/{FormElementLabelContainer.js → renderer/FormElementLabelContainer.js} +0 -0
  100. package/dist/components/renderer/FormElementLabelContainer.js.map +1 -0
  101. package/dist/components/{FormElementOptions.d.ts → renderer/FormElementOptions.d.ts} +0 -0
  102. package/dist/components/{FormElementOptions.js → renderer/FormElementOptions.js} +0 -0
  103. package/dist/components/renderer/FormElementOptions.js.map +1 -0
  104. package/dist/components/{LookupButton.d.ts → renderer/LookupButton.d.ts} +0 -0
  105. package/dist/components/{LookupButton.js → renderer/LookupButton.js} +3 -3
  106. package/dist/components/renderer/LookupButton.js.map +1 -0
  107. package/dist/components/{LookupNotification.d.ts → renderer/LookupNotification.d.ts} +1 -1
  108. package/dist/components/{LookupNotification.js → renderer/LookupNotification.js} +9 -9
  109. package/dist/components/renderer/LookupNotification.js.map +1 -0
  110. package/dist/components/{Modal.d.ts → renderer/Modal.d.ts} +0 -0
  111. package/dist/components/{Modal.js → renderer/Modal.js} +0 -0
  112. package/dist/components/renderer/Modal.js.map +1 -0
  113. package/dist/components/{OnLoading.d.ts → renderer/OnLoading.d.ts} +0 -0
  114. package/dist/components/{OnLoading.js → renderer/OnLoading.js} +0 -0
  115. package/dist/components/renderer/OnLoading.js.map +1 -0
  116. package/dist/components/{OneBlinkAppsErrorOriginalMessage.d.ts → renderer/OneBlinkAppsErrorOriginalMessage.d.ts} +0 -0
  117. package/dist/components/{OneBlinkAppsErrorOriginalMessage.js → renderer/OneBlinkAppsErrorOriginalMessage.js} +0 -0
  118. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -0
  119. package/dist/components/{OneBlinkFormElements.d.ts → renderer/OneBlinkFormElements.d.ts} +1 -1
  120. package/dist/components/{OneBlinkFormElements.js → renderer/OneBlinkFormElements.js} +36 -36
  121. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -0
  122. package/dist/components/{PageFormElements.d.ts → renderer/PageFormElements.d.ts} +1 -1
  123. package/dist/components/{PageFormElements.js → renderer/PageFormElements.js} +3 -3
  124. package/dist/components/renderer/PageFormElements.js.map +1 -0
  125. package/dist/components/{ToggleAllCheckbox.d.ts → renderer/ToggleAllCheckbox.d.ts} +1 -1
  126. package/dist/components/{ToggleAllCheckbox.js → renderer/ToggleAllCheckbox.js} +0 -0
  127. package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -0
  128. package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.d.ts +0 -0
  129. package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.js +1 -1
  130. package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -0
  131. package/dist/components/{attachments → renderer/attachments}/FileCard.d.ts +0 -0
  132. package/dist/components/{attachments → renderer/attachments}/FileCard.js +4 -4
  133. package/dist/components/renderer/attachments/FileCard.js.map +1 -0
  134. package/dist/components/{attachments → renderer/attachments}/FileCardContent.d.ts +0 -0
  135. package/dist/components/{attachments → renderer/attachments}/FileCardContent.js +0 -0
  136. package/dist/components/renderer/attachments/FileCardContent.js.map +1 -0
  137. package/dist/components/{attachments → renderer/attachments}/Files.d.ts +0 -0
  138. package/dist/components/{attachments → renderer/attachments}/Files.js +0 -0
  139. package/dist/components/renderer/attachments/Files.js.map +1 -0
  140. package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.d.ts +0 -0
  141. package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.js +1 -1
  142. package/dist/components/renderer/attachments/ImagePreviewUnavailable.js.map +1 -0
  143. package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.d.ts +0 -0
  144. package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.js +1 -1
  145. package/dist/components/renderer/attachments/UploadingAttachment.js.map +1 -0
  146. package/dist/form-elements/FormElementABN.js +3 -3
  147. package/dist/form-elements/FormElementABN.js.map +1 -1
  148. package/dist/form-elements/FormElementAutocomplete.js +3 -3
  149. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  150. package/dist/form-elements/FormElementBSB.js +3 -3
  151. package/dist/form-elements/FormElementBSB.js.map +1 -1
  152. package/dist/form-elements/FormElementBarcodeScanner.js +4 -4
  153. package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
  154. package/dist/form-elements/FormElementBoolean.js +1 -1
  155. package/dist/form-elements/FormElementBoolean.js.map +1 -1
  156. package/dist/form-elements/FormElementCamera.js +6 -6
  157. package/dist/form-elements/FormElementCamera.js.map +1 -1
  158. package/dist/form-elements/FormElementCheckBoxes.js +4 -4
  159. package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
  160. package/dist/form-elements/FormElementCivicaStreetName.js +2 -2
  161. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  162. package/dist/form-elements/FormElementCompliance.js +2 -2
  163. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  164. package/dist/form-elements/FormElementDate.js +4 -4
  165. package/dist/form-elements/FormElementDate.js.map +1 -1
  166. package/dist/form-elements/FormElementDateTime.js +4 -4
  167. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  168. package/dist/form-elements/FormElementEmail.js +3 -3
  169. package/dist/form-elements/FormElementEmail.js.map +1 -1
  170. package/dist/form-elements/FormElementFiles/FormElementFile.js +1 -1
  171. package/dist/form-elements/FormElementFiles/FormElementFile.js.map +1 -1
  172. package/dist/form-elements/FormElementFiles/FormElementFiles.js +1 -1
  173. package/dist/form-elements/FormElementFiles/FormElementFiles.js.map +1 -1
  174. package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js +2 -2
  175. package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js.map +1 -1
  176. package/dist/form-elements/FormElementForm.js +1 -1
  177. package/dist/form-elements/FormElementForm.js.map +1 -1
  178. package/dist/form-elements/FormElementGeoscapeAddress.js +2 -2
  179. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  180. package/dist/form-elements/FormElementLocation.js +2 -2
  181. package/dist/form-elements/FormElementLocation.js.map +1 -1
  182. package/dist/form-elements/FormElementNumber.js +3 -3
  183. package/dist/form-elements/FormElementNumber.js.map +1 -1
  184. package/dist/form-elements/FormElementPointAddress.js +2 -2
  185. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  186. package/dist/form-elements/FormElementRadio.js +2 -2
  187. package/dist/form-elements/FormElementRadio.js.map +1 -1
  188. package/dist/form-elements/FormElementRepeatableSet.js +3 -3
  189. package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
  190. package/dist/form-elements/FormElementSection.d.ts +1 -1
  191. package/dist/form-elements/FormElementSection.js +1 -1
  192. package/dist/form-elements/FormElementSection.js.map +1 -1
  193. package/dist/form-elements/FormElementSelect.js +4 -4
  194. package/dist/form-elements/FormElementSelect.js.map +1 -1
  195. package/dist/form-elements/FormElementSignature.js +4 -4
  196. package/dist/form-elements/FormElementSignature.js.map +1 -1
  197. package/dist/form-elements/FormElementTelephone.js +3 -3
  198. package/dist/form-elements/FormElementTelephone.js.map +1 -1
  199. package/dist/form-elements/FormElementText.js +3 -3
  200. package/dist/form-elements/FormElementText.js.map +1 -1
  201. package/dist/form-elements/FormElementTextarea.js +3 -3
  202. package/dist/form-elements/FormElementTextarea.js.map +1 -1
  203. package/dist/form-elements/FormElementTime.js +4 -4
  204. package/dist/form-elements/FormElementTime.js.map +1 -1
  205. package/dist/hooks/useConditionalLogic.js +1 -1
  206. package/dist/hooks/useConditionalLogic.js.map +1 -1
  207. package/dist/hooks/useInfiniteScrollDataLoad.d.ts +28 -0
  208. package/dist/hooks/useInfiniteScrollDataLoad.js +118 -0
  209. package/dist/hooks/useInfiniteScrollDataLoad.js.map +1 -0
  210. package/dist/hooks/useIsHovering.d.ts +5 -0
  211. package/dist/hooks/useIsHovering.js +13 -0
  212. package/dist/hooks/useIsHovering.js.map +1 -0
  213. package/dist/hooks/useLegacyElements.d.ts +16 -0
  214. package/dist/hooks/useLegacyElements.js +55 -0
  215. package/dist/hooks/useLegacyElements.js.map +1 -0
  216. package/dist/hooks/useQuery.d.ts +2 -0
  217. package/dist/hooks/useQuery.js +8 -0
  218. package/dist/hooks/useQuery.js.map +1 -0
  219. package/dist/hooks/useSubmissionIdIsValid.d.ts +4 -0
  220. package/dist/hooks/useSubmissionIdIsValid.js +21 -0
  221. package/dist/hooks/useSubmissionIdIsValid.js.map +1 -0
  222. package/dist/index.d.ts +4 -0
  223. package/dist/index.js +4 -0
  224. package/dist/index.js.map +1 -1
  225. package/dist/services/defaultCoordinates.js +1 -1
  226. package/dist/services/defaultCoordinates.js.map +1 -1
  227. package/dist/services/generate-default-data.js +1 -1
  228. package/dist/services/generate-default-data.js.map +1 -1
  229. package/package.json +11 -4
  230. package/dist/components/AnnotationModal.js.map +0 -1
  231. package/dist/components/AutocompleteDropdown.js.map +0 -1
  232. package/dist/components/CopyToClipboardButton.js.map +0 -1
  233. package/dist/components/CustomisableButtonInner.js.map +0 -1
  234. package/dist/components/FormElementLabelContainer.js.map +0 -1
  235. package/dist/components/FormElementOptions.js.map +0 -1
  236. package/dist/components/LookupButton.js.map +0 -1
  237. package/dist/components/LookupNotification.js.map +0 -1
  238. package/dist/components/Modal.js.map +0 -1
  239. package/dist/components/OnLoading.js.map +0 -1
  240. package/dist/components/OneBlinkAppsErrorOriginalMessage.js.map +0 -1
  241. package/dist/components/OneBlinkFormElements.js.map +0 -1
  242. package/dist/components/PageFormElements.js.map +0 -1
  243. package/dist/components/ToggleAllCheckbox.js.map +0 -1
  244. package/dist/components/attachments/AttachmentStatus.js.map +0 -1
  245. package/dist/components/attachments/FileCard.js.map +0 -1
  246. package/dist/components/attachments/FileCardContent.js.map +0 -1
  247. package/dist/components/attachments/Files.js.map +0 -1
  248. package/dist/components/attachments/ImagePreviewUnavailable.js.map +0 -1
  249. package/dist/components/attachments/UploadingAttachment.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import { Box, Paper, TableContainer, Tooltip } from '@mui/material';
4
+ import makeStyles from '@mui/styles/makeStyles';
5
+ import { FilterList as FilterListIcon, Warning as WarningIcon, ArrowDownward as SortingIcon, } from '@mui/icons-material';
6
+ import { IsHoveringProvider } from '../../../hooks/useIsHovering';
7
+ import { NoResourcesYet } from '../../NoResourcesYet';
8
+ import FormStoreIcon from '../display/FormStoreIcon';
9
+ import HeaderCellMoreButton from './HeaderCellMoreButton';
10
+ const useStyles = makeStyles((theme) => ({
11
+ tooltip: {
12
+ zIndex: theme.zIndex.drawer,
13
+ },
14
+ sortingIcon: {
15
+ transition: theme.transitions.create('transform'),
16
+ },
17
+ sortingIconDescending: {
18
+ transform: 'rotate(180deg)',
19
+ },
20
+ table: {
21
+ display: 'inline-block',
22
+ '& .tbody .tr:last-child .tc': {
23
+ borderBottom: 0,
24
+ },
25
+ '& .tc': {
26
+ padding: theme.spacing(1),
27
+ borderBottomColor: theme.palette.divider,
28
+ borderBottom: '1px solid',
29
+ display: 'flex',
30
+ alignItems: 'center',
31
+ '&.is-clickable': {
32
+ cursor: 'pointer',
33
+ transition: theme.transitions.create('transform'),
34
+ '&:hover': {
35
+ backgroundColor: theme.palette.action.hover,
36
+ },
37
+ },
38
+ },
39
+ '& .td': {
40
+ position: 'relative',
41
+ borderRight: '1px solid',
42
+ borderRightColor: theme.palette.divider,
43
+ overflowX: 'hidden',
44
+ // minus 1 to cater for the border
45
+ minHeight: `${parseInt(theme.spacing(5.5)) - 1}px`,
46
+ '&.is-resizing': {
47
+ borderRightStyle: 'dashed',
48
+ },
49
+ },
50
+ '& .th': {
51
+ position: 'relative',
52
+ fontWeight: theme.typography.fontWeightBold,
53
+ paddingRight: 0,
54
+ '& .th-content': {
55
+ flex: 1,
56
+ display: 'flex',
57
+ alignItems: 'center',
58
+ justifyContent: 'space-between',
59
+ borderRight: '1px solid',
60
+ borderRightColor: theme.palette.divider,
61
+ paddingRight: theme.spacing(),
62
+ '& .th-label': {
63
+ display: 'inline-flex',
64
+ alignItems: 'center',
65
+ '& .th-icon': {
66
+ marginLeft: theme.spacing(),
67
+ },
68
+ },
69
+ },
70
+ '& .resizer': {
71
+ display: 'inline-flex',
72
+ alignItems: 'center',
73
+ justifyContent: 'center',
74
+ borderWidth: 0,
75
+ borderLeftStyle: 'solid',
76
+ borderRightStyle: 'solid',
77
+ borderColor: theme.palette.divider,
78
+ paddingTop: theme.spacing(),
79
+ paddingBottom: theme.spacing(),
80
+ paddingRight: `calc(${theme.spacing(1)} + 1px)`,
81
+ position: 'absolute',
82
+ right: 0,
83
+ top: theme.spacing(0.5),
84
+ bottom: theme.spacing(0.5),
85
+ transform: `translateX(calc(${theme.spacing(0.5)} + 1px))`,
86
+ zIndex: 1,
87
+ // prevents from scrolling while dragging on touch devices
88
+ touchAction: 'none',
89
+ '&:hover': {
90
+ borderWidth: '1px',
91
+ },
92
+ '&.is-resizing': {
93
+ borderWidth: '1px',
94
+ borderColor: theme.palette.grey[700],
95
+ },
96
+ },
97
+ },
98
+ },
99
+ }));
100
+ function FormStoreTable({ getTableProps, getTableBodyProps, headerGroups, rows, prepareRow, isEmptyResults, onChangeFilters, }) {
101
+ const classes = useStyles();
102
+ return (React.createElement(React.Fragment, null,
103
+ React.createElement(Paper, null,
104
+ React.createElement(TableContainer, null,
105
+ React.createElement("div", { className: classes.table, ...getTableProps() },
106
+ React.createElement("div", { className: "thead" },
107
+ // Loop over the header rows
108
+ headerGroups.map((headerGroup) => (
109
+ // Apply the header row props
110
+ React.createElement("div", { ...headerGroup.getHeaderGroupProps(), className: "tr" },
111
+ // Loop over the headers in each row
112
+ headerGroup.headers.map((headerGroup) => {
113
+ var _a, _b, _c, _d, _e;
114
+ const sortingProperty = (_a = headerGroup.sorting) === null || _a === void 0 ? void 0 : _a.property;
115
+ const sortingDirection = (_b = headerGroup.sorting) === null || _b === void 0 ? void 0 : _b.direction;
116
+ return (React.createElement(Tooltip, { title: headerGroup.tooltip || '', arrow: true, key: headerGroup.id, classes: {
117
+ popper: classes.tooltip,
118
+ } },
119
+ React.createElement("div", { className: clsx('th tc', {
120
+ 'is-clickable': !!sortingProperty,
121
+ }), onClick: sortingProperty
122
+ ? () => {
123
+ onChangeFilters((currentFilters) => {
124
+ switch (sortingDirection) {
125
+ case 'ascending': {
126
+ return {
127
+ ...currentFilters,
128
+ sorting: [
129
+ {
130
+ property: sortingProperty,
131
+ direction: 'descending',
132
+ },
133
+ ],
134
+ };
135
+ }
136
+ case 'descending': {
137
+ return {
138
+ ...currentFilters,
139
+ sorting: undefined,
140
+ };
141
+ }
142
+ default: {
143
+ return {
144
+ ...currentFilters,
145
+ sorting: [
146
+ {
147
+ property: sortingProperty,
148
+ direction: 'ascending',
149
+ },
150
+ ],
151
+ };
152
+ }
153
+ }
154
+ }, false);
155
+ }
156
+ : undefined, ...headerGroup.getHeaderProps() },
157
+ React.createElement(IsHoveringProvider, { className: "th-content" },
158
+ React.createElement("div", { className: "th-label" },
159
+ React.createElement("span", null, headerGroup.headerText),
160
+ sortingDirection && (React.createElement(SortingIcon, { fontSize: "small", color: "primary", className: clsx('th-icon', classes.sortingIcon, {
161
+ [classes.sortingIconDescending]: sortingDirection === 'descending',
162
+ }) })),
163
+ ((_c = headerGroup.filter) === null || _c === void 0 ? void 0 : _c.isInvalid) ? (React.createElement(Tooltip, { title: ((_d = headerGroup.filter) === null || _d === void 0 ? void 0 : _d.validationMessage) ||
164
+ '' },
165
+ React.createElement(WarningIcon, { fontSize: "small", color: "error", className: "th-icon" }))) : ((_e = headerGroup.filter) === null || _e === void 0 ? void 0 : _e.value) ? (React.createElement(FilterListIcon, { fontSize: "small", color: "primary", className: "th-icon" })) : null),
166
+ React.createElement(HeaderCellMoreButton, { headerGroup: headerGroup, onHide: headerGroup.toggleHidden }),
167
+ React.createElement("div", { ...headerGroup.getResizerProps(), className: clsx('resizer', {
168
+ 'is-resizing': headerGroup.isResizing,
169
+ }), onClick: (event) => {
170
+ event.stopPropagation();
171
+ } })))));
172
+ }))))),
173
+ !isEmptyResults ? (React.createElement("div", { ...getTableBodyProps(), className: "tbody" },
174
+ // Loop over the table rows
175
+ rows.map((row) => {
176
+ // Prepare the row for display
177
+ prepareRow(row);
178
+ return (
179
+ // Apply the row props
180
+ React.createElement("div", { ...row.getRowProps(), className: "tr" },
181
+ // Loop over the rows cells
182
+ row.cells.map((cell) => {
183
+ // Apply the cell props
184
+ return (React.createElement(IsHoveringProvider, { ...cell.getCellProps(), className: clsx('td tc', {
185
+ 'is-resizing': cell.column.isResizing,
186
+ }) },
187
+ // Render the cell contents
188
+ cell.render('Cell')));
189
+ })));
190
+ }))) : (React.createElement(Box, { padding: 2 }))))),
191
+ isEmptyResults && (React.createElement(NoResourcesYet, { IconComponent: FormStoreIcon, title: "No Records Found..." }, "There are no Submissions matching your filters."))));
192
+ }
193
+ export default React.memo(FormStoreTable);
194
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { TableInstance } from 'react-table'\nimport clsx from 'clsx'\nimport { Box, Paper, TableContainer, Tooltip } from '@mui/material'\nimport makeStyles from '@mui/styles/makeStyles'\nimport {\n FilterList as FilterListIcon,\n Warning as WarningIcon,\n ArrowDownward as SortingIcon,\n} from '@mui/icons-material'\nimport { SubmissionTypes } from '@oneblink/types'\nimport { IsHoveringProvider } from '../../../hooks/useIsHovering'\nimport { NoResourcesYet } from '../../NoResourcesYet'\nimport FormStoreIcon from '../display/FormStoreIcon'\nimport HeaderCellMoreButton from './HeaderCellMoreButton'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\nimport { formStoreService } from '@oneblink/apps'\n\nconst useStyles = makeStyles((theme) => ({\n tooltip: {\n zIndex: theme.zIndex.drawer,\n },\n sortingIcon: {\n transition: theme.transitions.create('transform'),\n },\n sortingIconDescending: {\n transform: 'rotate(180deg)',\n },\n table: {\n display: 'inline-block',\n '& .tbody .tr:last-child .tc': {\n borderBottom: 0,\n },\n '& .tc': {\n padding: theme.spacing(1),\n borderBottomColor: theme.palette.divider,\n borderBottom: '1px solid',\n display: 'flex',\n alignItems: 'center',\n '&.is-clickable': {\n cursor: 'pointer',\n transition: theme.transitions.create('transform'),\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n '& .td': {\n position: 'relative',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n overflowX: 'hidden',\n // minus 1 to cater for the border\n minHeight: `${parseInt(theme.spacing(5.5)) - 1}px`,\n '&.is-resizing': {\n borderRightStyle: 'dashed',\n },\n },\n '& .th': {\n position: 'relative',\n fontWeight: theme.typography.fontWeightBold,\n paddingRight: 0,\n '& .th-content': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n paddingRight: theme.spacing(),\n '& .th-label': {\n display: 'inline-flex',\n alignItems: 'center',\n '& .th-icon': {\n marginLeft: theme.spacing(),\n },\n },\n },\n '& .resizer': {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 0,\n borderLeftStyle: 'solid',\n borderRightStyle: 'solid',\n borderColor: theme.palette.divider,\n paddingTop: theme.spacing(),\n paddingBottom: theme.spacing(),\n paddingRight: `calc(${theme.spacing(1)} + 1px)`,\n position: 'absolute',\n right: 0,\n top: theme.spacing(0.5),\n bottom: theme.spacing(0.5),\n transform: `translateX(calc(${theme.spacing(0.5)} + 1px))`,\n zIndex: 1,\n // prevents from scrolling while dragging on touch devices\n touchAction: 'none',\n '&:hover': {\n borderWidth: '1px',\n },\n '&.is-resizing': {\n borderWidth: '1px',\n borderColor: theme.palette.grey[700],\n },\n },\n },\n },\n}))\n\ntype FormStoreTableInstance = TableInstance<SubmissionTypes.FormStoreRecord>\n\nfunction FormStoreTable({\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n isEmptyResults,\n onChangeFilters,\n}: {\n getTableProps: FormStoreTableInstance['getTableProps']\n getTableBodyProps: FormStoreTableInstance['getTableBodyProps']\n headerGroups: FormStoreTableInstance['headerGroups']\n rows: FormStoreTableInstance['rows']\n prepareRow: FormStoreTableInstance['prepareRow']\n isEmptyResults: boolean\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n}) {\n const classes = useStyles()\n\n return (\n <>\n <Paper>\n <TableContainer>\n <div className={classes.table} {...getTableProps()}>\n <div className=\"thead\">\n {\n // Loop over the header rows\n headerGroups.map((headerGroup) => (\n // Apply the header row props\n <div {...headerGroup.getHeaderGroupProps()} className=\"tr\">\n {\n // Loop over the headers in each row\n headerGroup.headers.map((headerGroup) => {\n const sortingProperty = headerGroup.sorting?.property\n const sortingDirection = headerGroup.sorting?.direction\n\n return (\n <Tooltip\n title={headerGroup.tooltip || ''}\n arrow\n key={headerGroup.id}\n classes={{\n popper: classes.tooltip,\n }}\n >\n <div\n className={clsx('th tc', {\n 'is-clickable': !!sortingProperty,\n })}\n onClick={\n sortingProperty\n ? () => {\n onChangeFilters((currentFilters) => {\n switch (sortingDirection) {\n case 'ascending': {\n return {\n ...currentFilters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'descending',\n },\n ],\n }\n }\n case 'descending': {\n return {\n ...currentFilters,\n sorting: undefined,\n }\n }\n default: {\n return {\n ...currentFilters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'ascending',\n },\n ],\n }\n }\n }\n }, false)\n }\n : undefined\n }\n // Apply the header cell props\n {...headerGroup.getHeaderProps()}\n >\n <IsHoveringProvider className=\"th-content\">\n <div className=\"th-label\">\n <span>{headerGroup.headerText}</span>\n {sortingDirection && (\n <SortingIcon\n fontSize=\"small\"\n color=\"primary\"\n className={clsx(\n 'th-icon',\n classes.sortingIcon,\n {\n [classes.sortingIconDescending]:\n sortingDirection === 'descending',\n },\n )}\n />\n )}\n {headerGroup.filter?.isInvalid ? (\n <Tooltip\n title={\n headerGroup.filter?.validationMessage ||\n ''\n }\n >\n <WarningIcon\n fontSize=\"small\"\n color=\"error\"\n className=\"th-icon\"\n />\n </Tooltip>\n ) : headerGroup.filter?.value ? (\n <FilterListIcon\n fontSize=\"small\"\n color=\"primary\"\n className=\"th-icon\"\n />\n ) : null}\n </div>\n <HeaderCellMoreButton\n headerGroup={headerGroup}\n onHide={headerGroup.toggleHidden}\n />\n <div\n {...headerGroup.getResizerProps()}\n className={clsx('resizer', {\n 'is-resizing': headerGroup.isResizing,\n })}\n onClick={(event) => {\n event.stopPropagation()\n }}\n />\n </IsHoveringProvider>\n </div>\n </Tooltip>\n )\n })\n }\n </div>\n ))\n }\n </div>\n {!isEmptyResults ? (\n <div {...getTableBodyProps()} className=\"tbody\">\n {\n // Loop over the table rows\n rows.map((row) => {\n // Prepare the row for display\n prepareRow(row)\n return (\n // Apply the row props\n <div {...row.getRowProps()} className=\"tr\">\n {\n // Loop over the rows cells\n row.cells.map((cell) => {\n // Apply the cell props\n return (\n <IsHoveringProvider\n {...cell.getCellProps()}\n className={clsx('td tc', {\n 'is-resizing': cell.column.isResizing,\n })}\n >\n {\n // Render the cell contents\n cell.render('Cell')\n }\n </IsHoveringProvider>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n ) : (\n <Box padding={2} />\n )}\n </div>\n </TableContainer>\n </Paper>\n\n {isEmptyResults && (\n <NoResourcesYet\n IconComponent={FormStoreIcon}\n title=\"No Records Found...\"\n >\n There are no Submissions matching your filters.\n </NoResourcesYet>\n )}\n </>\n )\n}\n\nexport default React.memo(FormStoreTable)\n"]}
@@ -0,0 +1,12 @@
1
+ import { FormStoreRecord } from '@oneblink/types/typescript/submissions';
2
+ import { FormTypes } from '@oneblink/types';
3
+ import { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad';
4
+ import { formStoreService } from '@oneblink/apps';
5
+ export default function FormStoreTable({ form, formElements, formStoreRecords, filters, onChangeFilters, submissionIdValidationMessage, }: {
6
+ formStoreRecords: FormStoreRecord[];
7
+ form: FormTypes.Form;
8
+ formElements: FormTypes.FormElementWithName[];
9
+ filters: formStoreService.FormStoreFilters;
10
+ onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>;
11
+ submissionIdValidationMessage?: string;
12
+ }): import("react-table").TableInstance<FormStoreRecord>;
@@ -0,0 +1,130 @@
1
+ import * as React from 'react';
2
+ import { useFlexLayout, useResizeColumns, useTable, } from 'react-table';
3
+ import { format } from 'date-fns';
4
+ import generateColumns from './generateColumns';
5
+ import ActionedByTableCell from './ActionedByTableCell';
6
+ import TableCellCopyButton from './TableCellCopyButton';
7
+ import { localisationService } from '@oneblink/apps';
8
+ const defaultColumn = {
9
+ minWidth: 150,
10
+ width: 225,
11
+ };
12
+ const localStorageKey = (formId) => `REACT_TABLE_STATE_FORM_STORE_${formId}`;
13
+ export default function FormStoreTable({ form, formElements, formStoreRecords, filters, onChangeFilters, submissionIdValidationMessage, }) {
14
+ const columns = React.useMemo(() => {
15
+ var _a, _b, _c, _d;
16
+ return generateColumns({
17
+ formElements,
18
+ filters,
19
+ parentElementNames: [],
20
+ onChangeFilters,
21
+ allowCopy: true,
22
+ initialColumns: [
23
+ {
24
+ id: 'SUBMITTED_AT',
25
+ headerText: 'Submission Date Time',
26
+ sorting: {
27
+ property: 'dateTimeSubmitted',
28
+ direction: (_b = (_a = filters.sorting) === null || _a === void 0 ? void 0 : _a.find(({ property }) => property === 'dateTimeSubmitted')) === null || _b === void 0 ? void 0 : _b.direction,
29
+ },
30
+ filter: {
31
+ type: 'DATETIME',
32
+ value: filters.dateTimeSubmitted,
33
+ onChange: (newValue) => {
34
+ onChangeFilters((currentFilters) => ({
35
+ ...currentFilters,
36
+ dateTimeSubmitted: newValue,
37
+ }), false);
38
+ },
39
+ },
40
+ Cell: ({ row: { original: formStoreRecord }, }) => {
41
+ const text = format(new Date(formStoreRecord.dateTimeSubmitted), localisationService.getDateFnsFormats().longDateTime);
42
+ return (React.createElement(React.Fragment, null,
43
+ text,
44
+ React.createElement(TableCellCopyButton, { text: text })));
45
+ },
46
+ },
47
+ {
48
+ id: 'SUBMITTED_BY',
49
+ headerText: 'Submitted By',
50
+ sorting: undefined,
51
+ filter: {
52
+ type: 'TEXT',
53
+ value: filters.submittedBy,
54
+ onChange: (newValue) => {
55
+ onChangeFilters((currentFilters) => ({
56
+ ...currentFilters,
57
+ submittedBy: newValue,
58
+ }), true);
59
+ },
60
+ },
61
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(ActionedByTableCell, { userProfile: formStoreRecord.user, developerKey: formStoreRecord.key, variant: "outlined" })),
62
+ },
63
+ {
64
+ id: 'SUBMISSION_ID',
65
+ headerText: 'Submission Id',
66
+ sorting: undefined,
67
+ filter: {
68
+ type: 'SUBMISSION_ID',
69
+ value: filters.submissionId,
70
+ validationMessage: submissionIdValidationMessage,
71
+ isInvalid: !!submissionIdValidationMessage,
72
+ onChange: (newValue) => {
73
+ onChangeFilters((currentFilters) => ({
74
+ ...currentFilters,
75
+ submissionId: newValue,
76
+ }), true);
77
+ },
78
+ },
79
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(React.Fragment, null,
80
+ formStoreRecord.submissionId,
81
+ React.createElement(TableCellCopyButton, { text: formStoreRecord.submissionId }))),
82
+ },
83
+ {
84
+ id: 'EXTERNAL_ID',
85
+ headerText: 'External Id',
86
+ sorting: {
87
+ property: 'externalId',
88
+ direction: (_d = (_c = filters.sorting) === null || _c === void 0 ? void 0 : _c.find(({ property }) => property === 'externalId')) === null || _d === void 0 ? void 0 : _d.direction,
89
+ },
90
+ filter: {
91
+ type: 'TEXT',
92
+ value: filters.externalId,
93
+ onChange: (newValue) => {
94
+ onChangeFilters((currentFilters) => ({
95
+ ...currentFilters,
96
+ externalId: newValue,
97
+ }), true);
98
+ },
99
+ },
100
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(React.Fragment, null,
101
+ formStoreRecord.externalId,
102
+ formStoreRecord.externalId && (React.createElement(TableCellCopyButton, { text: formStoreRecord.externalId })))),
103
+ },
104
+ ],
105
+ });
106
+ }, [filters, formElements, onChangeFilters, submissionIdValidationMessage]);
107
+ const [initialState] = React.useState(() => {
108
+ const text = localStorage.getItem(localStorageKey(form.id));
109
+ if (text) {
110
+ return JSON.parse(text);
111
+ }
112
+ });
113
+ const table = useTable({
114
+ columns,
115
+ data: formStoreRecords,
116
+ defaultColumn,
117
+ autoResetHiddenColumns: false,
118
+ autoResetResize: false,
119
+ initialState: initialState
120
+ ? initialState
121
+ : { hiddenColumns: ['SUBMISSION_ID', 'EXTERNAL_ID'] },
122
+ }, useFlexLayout, useResizeColumns);
123
+ React.useEffect(() => {
124
+ if (!table.state.columnResizing.isResizingColumn) {
125
+ localStorage.setItem(localStorageKey(form.id), JSON.stringify(table.state));
126
+ }
127
+ }, [form.id, table.state]);
128
+ return table;
129
+ }
130
+ //# sourceMappingURL=useFormStoreTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormStoreTable.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/useFormStoreTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport {\n CellProps,\n useFlexLayout,\n useResizeColumns,\n useTable,\n TableState,\n} from 'react-table'\nimport { format } from 'date-fns'\nimport generateColumns from './generateColumns'\nimport ActionedByTableCell from './ActionedByTableCell'\nimport TableCellCopyButton from './TableCellCopyButton'\nimport { FormTypes } from '@oneblink/types'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\nimport { formStoreService, localisationService } from '@oneblink/apps'\n\nconst defaultColumn = {\n minWidth: 150,\n width: 225,\n}\n\nconst localStorageKey = (formId: number) =>\n `REACT_TABLE_STATE_FORM_STORE_${formId}`\n\nexport default function FormStoreTable({\n form,\n formElements,\n formStoreRecords,\n filters,\n onChangeFilters,\n submissionIdValidationMessage,\n}: {\n formStoreRecords: FormStoreRecord[]\n form: FormTypes.Form\n formElements: FormTypes.FormElementWithName[]\n filters: formStoreService.FormStoreFilters\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n submissionIdValidationMessage?: string\n}) {\n const columns = React.useMemo(() => {\n return generateColumns({\n formElements,\n filters,\n parentElementNames: [],\n onChangeFilters,\n allowCopy: true,\n initialColumns: [\n {\n id: 'SUBMITTED_AT',\n headerText: 'Submission Date Time',\n sorting: {\n property: 'dateTimeSubmitted',\n direction: filters.sorting?.find(\n ({ property }) => property === 'dateTimeSubmitted',\n )?.direction,\n },\n filter: {\n type: 'DATETIME',\n value: filters.dateTimeSubmitted as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange: (newValue) => {\n onChangeFilters(\n (currentFilters) => ({\n ...currentFilters,\n dateTimeSubmitted: newValue,\n }),\n false,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => {\n const text = format(\n new Date(formStoreRecord.dateTimeSubmitted),\n localisationService.getDateFnsFormats().longDateTime,\n )\n return (\n <>\n {text}\n <TableCellCopyButton text={text} />\n </>\n )\n },\n },\n {\n id: 'SUBMITTED_BY',\n headerText: 'Submitted By',\n sorting: undefined,\n filter: {\n type: 'TEXT',\n value: filters.submittedBy as { $regex: string } | undefined,\n onChange: (newValue) => {\n onChangeFilters(\n (currentFilters) => ({\n ...currentFilters,\n submittedBy: newValue,\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <ActionedByTableCell\n userProfile={formStoreRecord.user}\n developerKey={formStoreRecord.key}\n variant=\"outlined\"\n />\n ),\n },\n {\n id: 'SUBMISSION_ID',\n headerText: 'Submission Id',\n sorting: undefined,\n filter: {\n type: 'SUBMISSION_ID',\n value: filters.submissionId as { $eq: string } | undefined,\n validationMessage: submissionIdValidationMessage,\n isInvalid: !!submissionIdValidationMessage,\n onChange: (newValue) => {\n onChangeFilters(\n (currentFilters) => ({\n ...currentFilters,\n submissionId: newValue,\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.submissionId}\n <TableCellCopyButton text={formStoreRecord.submissionId} />\n </>\n ),\n },\n {\n id: 'EXTERNAL_ID',\n headerText: 'External Id',\n sorting: {\n property: 'externalId',\n direction: filters.sorting?.find(\n ({ property }) => property === 'externalId',\n )?.direction,\n },\n filter: {\n type: 'TEXT',\n value: filters.externalId as { $regex: string } | undefined,\n onChange: (newValue) => {\n onChangeFilters(\n (currentFilters) => ({\n ...currentFilters,\n externalId: newValue,\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.externalId}\n {formStoreRecord.externalId && (\n <TableCellCopyButton text={formStoreRecord.externalId} />\n )}\n </>\n ),\n },\n ],\n })\n }, [filters, formElements, onChangeFilters, submissionIdValidationMessage])\n\n const [initialState] = React.useState<Partial<TableState<FormStoreRecord>>>(\n () => {\n const text = localStorage.getItem(localStorageKey(form.id))\n if (text) {\n return JSON.parse(text)\n }\n },\n )\n\n const table = useTable(\n {\n columns,\n data: formStoreRecords,\n defaultColumn,\n autoResetHiddenColumns: false,\n autoResetResize: false,\n initialState: initialState\n ? initialState\n : { hiddenColumns: ['SUBMISSION_ID', 'EXTERNAL_ID'] },\n },\n useFlexLayout,\n useResizeColumns,\n )\n\n React.useEffect(() => {\n if (!table.state.columnResizing.isResizingColumn) {\n localStorage.setItem(\n localStorageKey(form.id),\n JSON.stringify(table.state),\n )\n }\n }, [form.id, table.state])\n\n return table\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ declare type Props = {
3
+ IconComponent: React.ComponentType<{
4
+ className: string;
5
+ }>;
6
+ title: string;
7
+ variant: 'primary' | 'success' | 'error' | 'warning';
8
+ gutterTop?: boolean;
9
+ gutterBottom?: boolean;
10
+ children?: React.ReactNode;
11
+ action?: React.ReactNode;
12
+ };
13
+ declare const _default: React.NamedExoticComponent<Props>;
14
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import makeStyles from '@mui/styles/makeStyles';
4
+ import { Typography, Grid, Container } from '@mui/material';
5
+ // Styles
6
+ const useStyles = makeStyles((theme) => ({
7
+ gutterTop: {
8
+ paddingTop: theme.spacing(4),
9
+ },
10
+ gutterBottom: {
11
+ marginBottom: theme.spacing(4),
12
+ },
13
+ iconContainer: {
14
+ textAlign: 'center',
15
+ },
16
+ icon: {
17
+ fontSize: theme.spacing(16),
18
+ },
19
+ primaryText: {
20
+ color: theme.palette.primary.main,
21
+ },
22
+ successText: {
23
+ color: theme.palette.success.main,
24
+ },
25
+ errorText: {
26
+ color: theme.palette.error.main,
27
+ },
28
+ warningText: {
29
+ color: theme.palette.warning.main,
30
+ },
31
+ }));
32
+ // TODO: Come back to this
33
+ // interface StyledIconContainerProps {
34
+ // gutterTop?: boolean
35
+ // }
36
+ // const StyledIconContainer = styled('div', {
37
+ // shouldForwardProp: (prop) => prop !== 'gutterTop',
38
+ // })<StyledIconContainerProps>(({ theme, gutterTop }) => ({
39
+ // textAlign: 'center',
40
+ // ...(gutterTop
41
+ // ? {
42
+ // paddingTop: theme.spacing(4),
43
+ // }
44
+ // : {}),
45
+ // }))
46
+ function LargeIconMessage({ IconComponent, title, variant, gutterTop, gutterBottom, children, action, }) {
47
+ const classes = useStyles();
48
+ const textClassName = clsx({
49
+ [classes.primaryText]: variant === 'primary',
50
+ [classes.successText]: variant === 'success',
51
+ [classes.errorText]: variant === 'error',
52
+ [classes.warningText]: variant === 'warning',
53
+ });
54
+ return (React.createElement(Container, { maxWidth: "sm" },
55
+ React.createElement("div", { className: clsx(classes.iconContainer, {
56
+ [classes.gutterTop]: gutterTop,
57
+ }) },
58
+ React.createElement(IconComponent, { className: clsx(classes.icon, textClassName) })),
59
+ React.createElement(Typography, { variant: "h5", align: "center", gutterBottom: true, className: textClassName }, title),
60
+ children ? (React.createElement(Typography, { align: "center", variant: "body2", paragraph: !!action, className: clsx({
61
+ [classes.gutterBottom]: !action && gutterBottom,
62
+ }) }, children)) : null,
63
+ action && (React.createElement(Grid, { container: true, justifyContent: "center", className: clsx({
64
+ [classes.gutterBottom]: gutterBottom,
65
+ }) }, action))));
66
+ }
67
+ export default React.memo(LargeIconMessage);
68
+ //# sourceMappingURL=LargeIconMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LargeIconMessage.js","sourceRoot":"","sources":["../../../src/components/messages/LargeIconMessage.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport makeStyles from '@mui/styles/makeStyles'\nimport { Typography, Grid, Container } from '@mui/material'\n// import { styled } from '@mui/material/styles'\n\ntype Props = {\n IconComponent: React.ComponentType<{\n className: string\n }>\n title: string\n variant: 'primary' | 'success' | 'error' | 'warning'\n gutterTop?: boolean\n gutterBottom?: boolean\n children?: React.ReactNode\n action?: React.ReactNode\n}\n// Styles\nconst useStyles = makeStyles((theme) => ({\n gutterTop: {\n paddingTop: theme.spacing(4),\n },\n gutterBottom: {\n marginBottom: theme.spacing(4),\n },\n iconContainer: {\n textAlign: 'center',\n },\n icon: {\n fontSize: theme.spacing(16),\n },\n primaryText: {\n color: theme.palette.primary.main,\n },\n successText: {\n color: theme.palette.success.main,\n },\n errorText: {\n color: theme.palette.error.main,\n },\n warningText: {\n color: theme.palette.warning.main,\n },\n}))\n\n// TODO: Come back to this\n// interface StyledIconContainerProps {\n// gutterTop?: boolean\n// }\n\n// const StyledIconContainer = styled('div', {\n// shouldForwardProp: (prop) => prop !== 'gutterTop',\n// })<StyledIconContainerProps>(({ theme, gutterTop }) => ({\n// textAlign: 'center',\n// ...(gutterTop\n// ? {\n// paddingTop: theme.spacing(4),\n// }\n// : {}),\n// }))\n\nfunction LargeIconMessage({\n IconComponent,\n title,\n variant,\n gutterTop,\n gutterBottom,\n children,\n action,\n}: Props) {\n const classes = useStyles()\n const textClassName = clsx({\n [classes.primaryText]: variant === 'primary',\n [classes.successText]: variant === 'success',\n [classes.errorText]: variant === 'error',\n [classes.warningText]: variant === 'warning',\n })\n return (\n <Container maxWidth=\"sm\">\n <div\n className={clsx(classes.iconContainer, {\n [classes.gutterTop]: gutterTop,\n })}\n >\n <IconComponent className={clsx(classes.icon, textClassName)} />\n </div>\n <Typography\n variant=\"h5\"\n align=\"center\"\n gutterBottom\n className={textClassName}\n >\n {title}\n </Typography>\n {children ? (\n <Typography\n align=\"center\"\n variant=\"body2\"\n paragraph={!!action}\n className={clsx({\n [classes.gutterBottom]: !action && gutterBottom,\n })}\n >\n {children}\n </Typography>\n ) : null}\n {action && (\n <Grid\n container\n justifyContent=\"center\"\n className={clsx({\n [classes.gutterBottom]: gutterBottom,\n })}\n >\n {action}\n </Grid>\n )}\n </Container>\n )\n}\n\nexport default React.memo<Props>(LargeIconMessage)\n"]}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import { MobileDatePickerProps } from '@mui/x-date-pickers';
3
+ import { TextField, IconButton } from '@mui/material';
4
+ declare type RemainingPickerProps = Omit<MobileDatePickerProps<Date>, 'onError' | 'renderInput' | 'toolbarFormat' | 'rightArrowIcon' | 'leftArrowIcon' | 'maxDate' | 'minDate' | 'inputFormat'>;
5
+ declare type TextFieldProps = React.ComponentProps<typeof TextField>;
6
+ declare type IconButtonProps = React.ComponentProps<typeof IconButton>;
7
+ declare type Props = RemainingPickerProps & {
8
+ name?: string;
9
+ label?: string;
10
+ maxDate?: string | Date;
11
+ maxDateMessage?: string;
12
+ minDate?: string | Date;
13
+ minDateMessage?: string;
14
+ margin?: TextFieldProps['margin'];
15
+ size?: TextFieldProps['size'];
16
+ placeholder?: string;
17
+ InputProps?: TextFieldProps['InputProps'];
18
+ inputVariant?: TextFieldProps['variant'];
19
+ onBlur?: TextFieldProps['onBlur'];
20
+ startIconButton?: boolean;
21
+ endIconButton?: boolean;
22
+ iconButtonEdge?: IconButtonProps['edge'];
23
+ iconButtonSize?: IconButtonProps['size'];
24
+ helperText?: string | React.ReactNode;
25
+ error?: boolean;
26
+ required?: boolean;
27
+ 'data-cypress'?: string;
28
+ };
29
+ declare const _default: React.NamedExoticComponent<Props>;
30
+ export default _default;
@@ -0,0 +1,58 @@
1
+ import * as React from 'react';
2
+ import { MobileDatePicker } from '@mui/x-date-pickers';
3
+ import { TextField, InputAdornment, IconButton } from '@mui/material';
4
+ import { DateRange } from '@mui/icons-material';
5
+ import useBooleanState from '../../hooks/useBooleanState';
6
+ import { localisationService } from '@oneblink/apps';
7
+ const emptyFn = () => {
8
+ //
9
+ };
10
+ const V4CompatibleDatePicker = ({ name, label, maxDate, maxDateMessage, minDate, minDateMessage, margin, size, placeholder, InputProps, onChange, inputVariant, onBlur, disabled, startIconButton, endIconButton, iconButtonEdge, iconButtonSize, helperText: helperTextProp, error, required, 'data-cypress': dataCypress, ...rest }) => {
11
+ const [isOpen, setIsOpen, setIsClosed] = useBooleanState(false);
12
+ const [helperText, setHelperText] = React.useState(undefined);
13
+ const handleError = React.useCallback((error) => {
14
+ switch (error) {
15
+ case 'invalidDate': {
16
+ return setHelperText('Invalid Date Time');
17
+ }
18
+ case 'maxDate': {
19
+ return setHelperText(maxDateMessage);
20
+ }
21
+ case 'minDate': {
22
+ return setHelperText(minDateMessage);
23
+ }
24
+ default: {
25
+ return setHelperText(undefined);
26
+ }
27
+ }
28
+ }, [maxDateMessage, minDateMessage]);
29
+ const convertedMaxDate = React.useMemo(() => {
30
+ if (typeof maxDate === 'string') {
31
+ return new Date(maxDate);
32
+ }
33
+ }, [maxDate]);
34
+ const convertedMinDate = React.useMemo(() => {
35
+ if (typeof minDate === 'string') {
36
+ return new Date(minDate);
37
+ }
38
+ }, [minDate]);
39
+ const onAccept = React.useCallback((date) => {
40
+ const currentValue = rest.value instanceof Date ? rest.value.toISOString() : rest.value;
41
+ if (currentValue !== ((date === null || date === void 0 ? void 0 : date.toISOString()) || null)) {
42
+ onChange(date);
43
+ }
44
+ }, [onChange, rest.value]);
45
+ return (React.createElement(MobileDatePicker, { open: isOpen, onOpen: setIsOpen, onClose: setIsClosed, renderInput: (props) => (React.createElement(TextField, { ...props, name: name, label: label, required: required, helperText: helperTextProp || helperText, ...(error ? { error } : {}), fullWidth: true, margin: margin, size: size, placeholder: placeholder, variant: inputVariant, onBlur: onBlur, InputProps: {
46
+ startAdornment: startIconButton ? (React.createElement(InputAdornment, { position: "start" },
47
+ React.createElement(IconButton, { edge: iconButtonEdge, size: iconButtonSize, onClick: setIsOpen, disabled: disabled },
48
+ React.createElement(DateRange, null)))) : undefined,
49
+ endAdornment: endIconButton ? (React.createElement(InputAdornment, { position: "end" },
50
+ React.createElement(IconButton, { edge: iconButtonEdge, size: iconButtonSize, onClick: setIsOpen, disabled: disabled },
51
+ React.createElement(DateRange, null)))) : undefined,
52
+ ...(InputProps ? InputProps : {}),
53
+ }, "data-cypress": dataCypress })), maxDate: convertedMaxDate, minDate: convertedMinDate, onError: handleError,
54
+ // This triggers everytime a component of the while date changes within the picker
55
+ onChange: emptyFn, onAccept: onAccept, inputFormat: localisationService.getDateFnsFormats().shortDateTime, disabled: disabled, ...rest }));
56
+ };
57
+ export default React.memo(V4CompatibleDatePicker);
58
+ //# sourceMappingURL=V4CompatibleDatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V4CompatibleDatePicker.js","sourceRoot":"","sources":["../../../src/components/pickers/V4CompatibleDatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { MobileDatePicker, MobileDatePickerProps } from '@mui/x-date-pickers'\nimport { TextField, InputAdornment, IconButton } from '@mui/material'\nimport { DateRange } from '@mui/icons-material'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport { localisationService } from '@oneblink/apps'\n\ntype RemainingPickerProps = Omit<\n MobileDatePickerProps<Date>,\n | 'onError'\n | 'renderInput'\n | 'toolbarFormat'\n | 'rightArrowIcon'\n | 'leftArrowIcon'\n | 'maxDate'\n | 'minDate'\n | 'inputFormat'\n>\n\ntype TextFieldProps = React.ComponentProps<typeof TextField>\ntype IconButtonProps = React.ComponentProps<typeof IconButton>\n\ntype Props = RemainingPickerProps & {\n name?: string\n label?: string\n maxDate?: string | Date\n maxDateMessage?: string\n minDate?: string | Date\n minDateMessage?: string\n margin?: TextFieldProps['margin']\n size?: TextFieldProps['size']\n placeholder?: string\n InputProps?: TextFieldProps['InputProps']\n inputVariant?: TextFieldProps['variant']\n onBlur?: TextFieldProps['onBlur']\n startIconButton?: boolean\n endIconButton?: boolean\n iconButtonEdge?: IconButtonProps['edge']\n iconButtonSize?: IconButtonProps['size']\n helperText?: string | React.ReactNode\n error?: boolean\n required?: boolean\n 'data-cypress'?: string\n}\n\nconst emptyFn = () => {\n //\n}\nconst V4CompatibleDatePicker = ({\n name,\n label,\n maxDate,\n maxDateMessage,\n minDate,\n minDateMessage,\n margin,\n size,\n placeholder,\n InputProps,\n onChange,\n inputVariant,\n onBlur,\n disabled,\n startIconButton,\n endIconButton,\n iconButtonEdge,\n iconButtonSize,\n helperText: helperTextProp,\n error,\n required,\n 'data-cypress': dataCypress,\n ...rest\n}: Props) => {\n const [isOpen, setIsOpen, setIsClosed] = useBooleanState(false)\n const [helperText, setHelperText] = React.useState<string | undefined>(\n undefined,\n )\n const handleError = React.useCallback(\n (error: Parameters<Required<MobileDatePickerProps>['onError']>[0]) => {\n switch (error) {\n case 'invalidDate': {\n return setHelperText('Invalid Date Time')\n }\n case 'maxDate': {\n return setHelperText(maxDateMessage)\n }\n case 'minDate': {\n return setHelperText(minDateMessage)\n }\n default: {\n return setHelperText(undefined)\n }\n }\n },\n [maxDateMessage, minDateMessage],\n )\n\n const convertedMaxDate = React.useMemo(() => {\n if (typeof maxDate === 'string') {\n return new Date(maxDate)\n }\n }, [maxDate])\n const convertedMinDate = React.useMemo(() => {\n if (typeof minDate === 'string') {\n return new Date(minDate)\n }\n }, [minDate])\n\n const onAccept = React.useCallback(\n (date: Date | null) => {\n const currentValue =\n rest.value instanceof Date ? rest.value.toISOString() : rest.value\n\n if (currentValue !== (date?.toISOString() || null)) {\n onChange(date)\n }\n },\n [onChange, rest.value],\n )\n\n return (\n <MobileDatePicker\n open={isOpen}\n onOpen={setIsOpen}\n onClose={setIsClosed}\n renderInput={(props) => (\n <TextField\n {...props}\n name={name}\n label={label}\n required={required}\n helperText={helperTextProp || helperText}\n {...(error ? { error } : {})}\n fullWidth\n margin={margin}\n size={size}\n placeholder={placeholder}\n variant={inputVariant}\n onBlur={onBlur}\n InputProps={{\n startAdornment: startIconButton ? (\n <InputAdornment position=\"start\">\n <IconButton\n edge={iconButtonEdge}\n size={iconButtonSize}\n onClick={setIsOpen}\n disabled={disabled}\n >\n <DateRange />\n </IconButton>\n </InputAdornment>\n ) : undefined,\n endAdornment: endIconButton ? (\n <InputAdornment position=\"end\">\n <IconButton\n edge={iconButtonEdge}\n size={iconButtonSize}\n onClick={setIsOpen}\n disabled={disabled}\n >\n <DateRange />\n </IconButton>\n </InputAdornment>\n ) : undefined,\n ...(InputProps ? InputProps : {}),\n }}\n data-cypress={dataCypress}\n />\n )}\n maxDate={convertedMaxDate}\n minDate={convertedMinDate}\n onError={handleError}\n // This triggers everytime a component of the while date changes within the picker\n onChange={emptyFn}\n onAccept={onAccept}\n inputFormat={localisationService.getDateFnsFormats().shortDateTime}\n disabled={disabled}\n {...rest}\n />\n )\n}\n\nexport default React.memo<Props>(V4CompatibleDatePicker)\n"]}