@oneblink/apps-react 0.6.2 → 1.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) 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/components/CopyToClipboardIconButton.d.ts +10 -0
  6. package/dist/components/CopyToClipboardIconButton.js +33 -0
  7. package/dist/components/CopyToClipboardIconButton.js.map +1 -0
  8. package/dist/components/CustomAccordion.d.ts +27 -0
  9. package/dist/components/CustomAccordion.js +38 -0
  10. package/dist/components/CustomAccordion.js.map +1 -0
  11. package/dist/components/ErrorSnackbar.d.ts +8 -0
  12. package/dist/components/ErrorSnackbar.js +26 -0
  13. package/dist/components/ErrorSnackbar.js.map +1 -0
  14. package/dist/components/Lists.d.ts +25 -0
  15. package/dist/components/Lists.js +45 -0
  16. package/dist/components/Lists.js.map +1 -0
  17. package/dist/components/LoadingWithMessage.d.ts +6 -0
  18. package/dist/components/LoadingWithMessage.js +12 -0
  19. package/dist/components/LoadingWithMessage.js.map +1 -0
  20. package/dist/components/formStore/FormStoreTableProvider.d.ts +6 -0
  21. package/dist/components/formStore/FormStoreTableProvider.js +89 -0
  22. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -0
  23. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +5 -0
  24. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +19 -0
  25. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -0
  26. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +5 -0
  27. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +33 -0
  28. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -0
  29. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +5 -0
  30. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +49 -0
  31. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -0
  32. package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +8 -0
  33. package/dist/components/formStore/OneBlinkFormStoreProvider.js +25 -0
  34. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -0
  35. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +5 -0
  36. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +12 -0
  37. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -0
  38. package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +4 -0
  39. package/dist/components/formStore/OneBlinkFormStoreTable.js +184 -0
  40. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -0
  41. package/dist/components/formStore/display/ElementDisplay.d.ts +23 -0
  42. package/dist/components/formStore/display/ElementDisplay.js +78 -0
  43. package/dist/components/formStore/display/ElementDisplay.js.map +1 -0
  44. package/dist/components/formStore/display/FormStoreIcon.d.ts +2 -0
  45. package/dist/components/formStore/display/FormStoreIcon.js +3 -0
  46. package/dist/components/formStore/display/FormStoreIcon.js.map +1 -0
  47. package/dist/components/formStore/table/ActionedByTableCell.d.ts +11 -0
  48. package/dist/components/formStore/table/ActionedByTableCell.js +44 -0
  49. package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -0
  50. package/dist/components/formStore/table/ColumnFilters.d.ts +9 -0
  51. package/dist/components/formStore/table/ColumnFilters.js +180 -0
  52. package/dist/components/formStore/table/ColumnFilters.js.map +1 -0
  53. package/dist/components/formStore/table/FormElementTableCell.d.ts +10 -0
  54. package/dist/components/formStore/table/FormElementTableCell.js +215 -0
  55. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -0
  56. package/dist/components/formStore/table/HeaderCellMoreButton.d.ts +9 -0
  57. package/dist/components/formStore/table/HeaderCellMoreButton.js +49 -0
  58. package/dist/components/formStore/table/HeaderCellMoreButton.js.map +1 -0
  59. package/dist/components/formStore/table/RepeatableSetCell.d.ts +8 -0
  60. package/dist/components/formStore/table/RepeatableSetCell.js +61 -0
  61. package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -0
  62. package/dist/components/formStore/table/RepeatableSetCellAccordion.d.ts +9 -0
  63. package/dist/components/formStore/table/RepeatableSetCellAccordion.js +12 -0
  64. package/dist/components/formStore/table/RepeatableSetCellAccordion.js.map +1 -0
  65. package/dist/components/formStore/table/TableCellCopyButton.d.ts +7 -0
  66. package/dist/components/formStore/table/TableCellCopyButton.js +28 -0
  67. package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -0
  68. package/dist/components/formStore/table/generateColumns.d.ts +18 -0
  69. package/dist/components/formStore/table/generateColumns.js +233 -0
  70. package/dist/components/formStore/table/generateColumns.js.map +1 -0
  71. package/dist/components/formStore/table/useFormStoreTable.d.ts +52 -0
  72. package/dist/components/formStore/table/useFormStoreTable.js +139 -0
  73. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -0
  74. package/dist/components/formStore/useFormStoreTableContext.d.ts +44 -0
  75. package/dist/components/formStore/useFormStoreTableContext.js +10 -0
  76. package/dist/components/formStore/useFormStoreTableContext.js.map +1 -0
  77. package/dist/components/messages/ErrorMessage.d.ts +12 -0
  78. package/dist/components/messages/ErrorMessage.js +13 -0
  79. package/dist/components/messages/ErrorMessage.js.map +1 -0
  80. package/dist/components/messages/LargeIconMessage.d.ts +17 -0
  81. package/dist/components/messages/LargeIconMessage.js +38 -0
  82. package/dist/components/messages/LargeIconMessage.js.map +1 -0
  83. package/dist/components/messages/NoResourcesYet.d.ts +11 -0
  84. package/dist/components/messages/NoResourcesYet.js +7 -0
  85. package/dist/components/messages/NoResourcesYet.js.map +1 -0
  86. package/dist/components/pickers/V4CompatibleDatePicker.d.ts +30 -0
  87. package/dist/components/pickers/V4CompatibleDatePicker.js +58 -0
  88. package/dist/components/pickers/V4CompatibleDatePicker.js.map +1 -0
  89. package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +29 -0
  90. package/dist/components/pickers/V4CompatibleDateTimePicker.js +58 -0
  91. package/dist/components/pickers/V4CompatibleDateTimePicker.js.map +1 -0
  92. package/dist/components/pickers/V4CompatibleTimePicker.d.ts +26 -0
  93. package/dist/components/pickers/V4CompatibleTimePicker.js +41 -0
  94. package/dist/components/pickers/V4CompatibleTimePicker.js.map +1 -0
  95. package/dist/components/{AnnotationModal.d.ts → renderer/AnnotationModal.d.ts} +0 -0
  96. package/dist/components/{AnnotationModal.js → renderer/AnnotationModal.js} +2 -2
  97. package/dist/components/renderer/AnnotationModal.js.map +1 -0
  98. package/dist/components/{AutocompleteDropdown.d.ts → renderer/AutocompleteDropdown.d.ts} +0 -0
  99. package/dist/components/{AutocompleteDropdown.js → renderer/AutocompleteDropdown.js} +1 -1
  100. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -0
  101. package/dist/components/{CopyToClipboardButton.d.ts → renderer/CopyToClipboardButton.d.ts} +0 -0
  102. package/dist/components/{CopyToClipboardButton.js → renderer/CopyToClipboardButton.js} +1 -1
  103. package/dist/components/renderer/CopyToClipboardButton.js.map +1 -0
  104. package/dist/components/{CustomisableButtonInner.d.ts → renderer/CustomisableButtonInner.d.ts} +0 -0
  105. package/dist/components/{CustomisableButtonInner.js → renderer/CustomisableButtonInner.js} +0 -0
  106. package/dist/components/renderer/CustomisableButtonInner.js.map +1 -0
  107. package/dist/components/{FormElementLabelContainer.d.ts → renderer/FormElementLabelContainer.d.ts} +0 -0
  108. package/dist/components/{FormElementLabelContainer.js → renderer/FormElementLabelContainer.js} +0 -0
  109. package/dist/components/renderer/FormElementLabelContainer.js.map +1 -0
  110. package/dist/components/{FormElementOptions.d.ts → renderer/FormElementOptions.d.ts} +0 -0
  111. package/dist/components/{FormElementOptions.js → renderer/FormElementOptions.js} +0 -0
  112. package/dist/components/renderer/FormElementOptions.js.map +1 -0
  113. package/dist/components/{LookupButton.d.ts → renderer/LookupButton.d.ts} +0 -0
  114. package/dist/components/{LookupButton.js → renderer/LookupButton.js} +3 -3
  115. package/dist/components/renderer/LookupButton.js.map +1 -0
  116. package/dist/components/{LookupNotification.d.ts → renderer/LookupNotification.d.ts} +1 -1
  117. package/dist/components/{LookupNotification.js → renderer/LookupNotification.js} +9 -9
  118. package/dist/components/renderer/LookupNotification.js.map +1 -0
  119. package/dist/components/{Modal.d.ts → renderer/Modal.d.ts} +0 -0
  120. package/dist/components/{Modal.js → renderer/Modal.js} +0 -0
  121. package/dist/components/renderer/Modal.js.map +1 -0
  122. package/dist/components/{OnLoading.d.ts → renderer/OnLoading.d.ts} +0 -0
  123. package/dist/components/{OnLoading.js → renderer/OnLoading.js} +0 -0
  124. package/dist/components/renderer/OnLoading.js.map +1 -0
  125. package/dist/components/{OneBlinkAppsErrorOriginalMessage.d.ts → renderer/OneBlinkAppsErrorOriginalMessage.d.ts} +0 -0
  126. package/dist/components/{OneBlinkAppsErrorOriginalMessage.js → renderer/OneBlinkAppsErrorOriginalMessage.js} +0 -0
  127. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -0
  128. package/dist/components/{OneBlinkFormElements.d.ts → renderer/OneBlinkFormElements.d.ts} +1 -1
  129. package/dist/components/{OneBlinkFormElements.js → renderer/OneBlinkFormElements.js} +36 -36
  130. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -0
  131. package/dist/components/{PageFormElements.d.ts → renderer/PageFormElements.d.ts} +1 -1
  132. package/dist/components/{PageFormElements.js → renderer/PageFormElements.js} +3 -3
  133. package/dist/components/renderer/PageFormElements.js.map +1 -0
  134. package/dist/components/{ToggleAllCheckbox.d.ts → renderer/ToggleAllCheckbox.d.ts} +1 -1
  135. package/dist/components/{ToggleAllCheckbox.js → renderer/ToggleAllCheckbox.js} +0 -0
  136. package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -0
  137. package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.d.ts +0 -0
  138. package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.js +1 -1
  139. package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -0
  140. package/dist/components/{attachments → renderer/attachments}/FileCard.d.ts +0 -0
  141. package/dist/components/{attachments → renderer/attachments}/FileCard.js +4 -4
  142. package/dist/components/renderer/attachments/FileCard.js.map +1 -0
  143. package/dist/components/{attachments → renderer/attachments}/FileCardContent.d.ts +0 -0
  144. package/dist/components/{attachments → renderer/attachments}/FileCardContent.js +0 -0
  145. package/dist/components/renderer/attachments/FileCardContent.js.map +1 -0
  146. package/dist/components/{attachments → renderer/attachments}/Files.d.ts +0 -0
  147. package/dist/components/{attachments → renderer/attachments}/Files.js +0 -0
  148. package/dist/components/renderer/attachments/Files.js.map +1 -0
  149. package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.d.ts +0 -0
  150. package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.js +1 -1
  151. package/dist/components/renderer/attachments/ImagePreviewUnavailable.js.map +1 -0
  152. package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.d.ts +0 -0
  153. package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.js +1 -1
  154. package/dist/components/renderer/attachments/UploadingAttachment.js.map +1 -0
  155. package/dist/form-elements/FormElementABN.js +3 -3
  156. package/dist/form-elements/FormElementABN.js.map +1 -1
  157. package/dist/form-elements/FormElementAutocomplete.js +3 -3
  158. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  159. package/dist/form-elements/FormElementBSB.js +3 -3
  160. package/dist/form-elements/FormElementBSB.js.map +1 -1
  161. package/dist/form-elements/FormElementBarcodeScanner.js +4 -4
  162. package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
  163. package/dist/form-elements/FormElementBoolean.js +1 -1
  164. package/dist/form-elements/FormElementBoolean.js.map +1 -1
  165. package/dist/form-elements/FormElementCamera.js +6 -6
  166. package/dist/form-elements/FormElementCamera.js.map +1 -1
  167. package/dist/form-elements/FormElementCheckBoxes.js +4 -4
  168. package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
  169. package/dist/form-elements/FormElementCivicaStreetName.js +2 -2
  170. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  171. package/dist/form-elements/FormElementCompliance.js +2 -2
  172. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  173. package/dist/form-elements/FormElementDate.js +4 -4
  174. package/dist/form-elements/FormElementDate.js.map +1 -1
  175. package/dist/form-elements/FormElementDateTime.js +4 -4
  176. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  177. package/dist/form-elements/FormElementEmail.js +3 -3
  178. package/dist/form-elements/FormElementEmail.js.map +1 -1
  179. package/dist/form-elements/FormElementFiles/FormElementFile.js +1 -1
  180. package/dist/form-elements/FormElementFiles/FormElementFile.js.map +1 -1
  181. package/dist/form-elements/FormElementFiles/FormElementFiles.js +1 -1
  182. package/dist/form-elements/FormElementFiles/FormElementFiles.js.map +1 -1
  183. package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js +2 -2
  184. package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js.map +1 -1
  185. package/dist/form-elements/FormElementForm.js +1 -1
  186. package/dist/form-elements/FormElementForm.js.map +1 -1
  187. package/dist/form-elements/FormElementGeoscapeAddress.js +2 -2
  188. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  189. package/dist/form-elements/FormElementLocation.js +2 -2
  190. package/dist/form-elements/FormElementLocation.js.map +1 -1
  191. package/dist/form-elements/FormElementNumber.js +3 -3
  192. package/dist/form-elements/FormElementNumber.js.map +1 -1
  193. package/dist/form-elements/FormElementPointAddress.js +2 -2
  194. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  195. package/dist/form-elements/FormElementRadio.js +2 -2
  196. package/dist/form-elements/FormElementRadio.js.map +1 -1
  197. package/dist/form-elements/FormElementRepeatableSet.js +3 -3
  198. package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
  199. package/dist/form-elements/FormElementSection.d.ts +1 -1
  200. package/dist/form-elements/FormElementSection.js +1 -1
  201. package/dist/form-elements/FormElementSection.js.map +1 -1
  202. package/dist/form-elements/FormElementSelect.js +4 -4
  203. package/dist/form-elements/FormElementSelect.js.map +1 -1
  204. package/dist/form-elements/FormElementSignature.js +4 -4
  205. package/dist/form-elements/FormElementSignature.js.map +1 -1
  206. package/dist/form-elements/FormElementTelephone.js +3 -3
  207. package/dist/form-elements/FormElementTelephone.js.map +1 -1
  208. package/dist/form-elements/FormElementText.js +3 -3
  209. package/dist/form-elements/FormElementText.js.map +1 -1
  210. package/dist/form-elements/FormElementTextarea.js +3 -3
  211. package/dist/form-elements/FormElementTextarea.js.map +1 -1
  212. package/dist/form-elements/FormElementTime.js +4 -4
  213. package/dist/form-elements/FormElementTime.js.map +1 -1
  214. package/dist/hooks/useInfiniteScrollDataLoad.d.ts +29 -0
  215. package/dist/hooks/useInfiniteScrollDataLoad.js +118 -0
  216. package/dist/hooks/useInfiniteScrollDataLoad.js.map +1 -0
  217. package/dist/hooks/useIsHovering.d.ts +5 -0
  218. package/dist/hooks/useIsHovering.js +13 -0
  219. package/dist/hooks/useIsHovering.js.map +1 -0
  220. package/dist/hooks/useQuery.d.ts +2 -0
  221. package/dist/hooks/useQuery.js +8 -0
  222. package/dist/hooks/useQuery.js.map +1 -0
  223. package/dist/hooks/useSubmissionIdIsValid.d.ts +3 -0
  224. package/dist/hooks/useSubmissionIdIsValid.js +20 -0
  225. package/dist/hooks/useSubmissionIdIsValid.js.map +1 -0
  226. package/dist/index.d.ts +9 -0
  227. package/dist/index.js +9 -0
  228. package/dist/index.js.map +1 -1
  229. package/dist/services/defaultCoordinates.js +1 -1
  230. package/dist/services/defaultCoordinates.js.map +1 -1
  231. package/dist/services/generate-default-data.js +1 -1
  232. package/dist/services/generate-default-data.js.map +1 -1
  233. package/package.json +13 -4
  234. package/dist/components/AnnotationModal.js.map +0 -1
  235. package/dist/components/AutocompleteDropdown.js.map +0 -1
  236. package/dist/components/CopyToClipboardButton.js.map +0 -1
  237. package/dist/components/CustomisableButtonInner.js.map +0 -1
  238. package/dist/components/FormElementLabelContainer.js.map +0 -1
  239. package/dist/components/FormElementOptions.js.map +0 -1
  240. package/dist/components/LookupButton.js.map +0 -1
  241. package/dist/components/LookupNotification.js.map +0 -1
  242. package/dist/components/Modal.js.map +0 -1
  243. package/dist/components/OnLoading.js.map +0 -1
  244. package/dist/components/OneBlinkAppsErrorOriginalMessage.js.map +0 -1
  245. package/dist/components/OneBlinkFormElements.js.map +0 -1
  246. package/dist/components/PageFormElements.js.map +0 -1
  247. package/dist/components/ToggleAllCheckbox.js.map +0 -1
  248. package/dist/components/attachments/AttachmentStatus.js.map +0 -1
  249. package/dist/components/attachments/FileCard.js.map +0 -1
  250. package/dist/components/attachments/FileCardContent.js.map +0 -1
  251. package/dist/components/attachments/Files.js.map +0 -1
  252. package/dist/components/attachments/ImagePreviewUnavailable.js.map +0 -1
  253. package/dist/components/attachments/UploadingAttachment.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ import * as React from 'react';
2
+ import FormElementTableCell from './FormElementTableCell';
3
+ function generateSorting({ formElement, parentElementNames, filters, }) {
4
+ var _a, _b;
5
+ switch (formElement.type) {
6
+ case 'text':
7
+ case 'textarea':
8
+ case 'number':
9
+ case 'email':
10
+ case 'telephone':
11
+ case 'barcodeScanner':
12
+ case 'date':
13
+ case 'datetime':
14
+ case 'time':
15
+ case 'calculation': {
16
+ const sortProperty = [
17
+ 'submission',
18
+ ...parentElementNames,
19
+ formElement.name,
20
+ ].join('.');
21
+ return {
22
+ property: sortProperty,
23
+ direction: (_b = (_a = filters.sorting) === null || _a === void 0 ? void 0 : _a.find(({ property }) => property === sortProperty)) === null || _b === void 0 ? void 0 : _b.direction,
24
+ };
25
+ }
26
+ }
27
+ }
28
+ function generateFilter({ formElement, onChangeFilters, rootSubmissionFilters, parentElementNames, }) {
29
+ function onChange(newValue, shouldDebounce) {
30
+ onChangeFilters((currentFilters) => {
31
+ let newSubmission = {
32
+ [formElement.name]: newValue,
33
+ };
34
+ if (parentElementNames.length) {
35
+ const copy = [...parentElementNames];
36
+ while (copy.length) {
37
+ const nestedSubmission = copy.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], rootSubmissionFilters);
38
+ const elementName = copy.pop();
39
+ if (elementName) {
40
+ newSubmission = {
41
+ [elementName]: {
42
+ ...nestedSubmission,
43
+ ...newSubmission,
44
+ },
45
+ };
46
+ }
47
+ }
48
+ }
49
+ return {
50
+ ...currentFilters,
51
+ submission: {
52
+ ...currentFilters.submission,
53
+ ...newSubmission,
54
+ },
55
+ };
56
+ }, shouldDebounce);
57
+ }
58
+ const submissionFilters = parentElementNames.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], rootSubmissionFilters);
59
+ switch (formElement.type) {
60
+ case 'text':
61
+ case 'textarea':
62
+ case 'email':
63
+ case 'telephone':
64
+ case 'barcodeScanner': {
65
+ return {
66
+ type: 'TEXT',
67
+ value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
68
+ onChange,
69
+ };
70
+ }
71
+ case 'number':
72
+ case 'calculation': {
73
+ return {
74
+ type: 'NUMBER',
75
+ value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
76
+ onChange,
77
+ };
78
+ }
79
+ case 'checkboxes':
80
+ case 'select':
81
+ case 'radio':
82
+ case 'autocomplete': {
83
+ const value = submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name];
84
+ if (Array.isArray(formElement.options)) {
85
+ if ((formElement.type === 'select' && formElement.multi) ||
86
+ formElement.type === 'checkboxes') {
87
+ return {
88
+ type: 'OPTIONS_MULTIPLE',
89
+ value: value,
90
+ options: formElement.options,
91
+ onChange,
92
+ };
93
+ }
94
+ else {
95
+ return {
96
+ type: 'OPTIONS_SINGLE',
97
+ value: value,
98
+ options: formElement.options,
99
+ onChange,
100
+ };
101
+ }
102
+ }
103
+ else {
104
+ return {
105
+ type: 'TEXT',
106
+ value: value,
107
+ onChange,
108
+ };
109
+ }
110
+ }
111
+ case 'boolean':
112
+ return {
113
+ type: 'BOOLEAN',
114
+ value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
115
+ onChange,
116
+ };
117
+ case 'date': {
118
+ return {
119
+ type: 'DATE',
120
+ value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
121
+ onChange,
122
+ };
123
+ }
124
+ case 'datetime':
125
+ return {
126
+ type: 'DATETIME',
127
+ value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
128
+ onChange,
129
+ };
130
+ default: {
131
+ return undefined;
132
+ }
133
+ }
134
+ }
135
+ const generateColumns = ({ formElements, onChangeFilters, filters, parentElementNames, initialColumns, allowCopy, }) => {
136
+ return formElements.reduce((columns, formElement) => {
137
+ switch (formElement.type) {
138
+ case 'page':
139
+ case 'section': {
140
+ generateColumns({
141
+ onChangeFilters,
142
+ formElements: formElement.elements,
143
+ parentElementNames,
144
+ filters,
145
+ initialColumns: columns,
146
+ allowCopy,
147
+ });
148
+ break;
149
+ }
150
+ case 'form': {
151
+ if (formElement.elements) {
152
+ generateColumns({
153
+ onChangeFilters,
154
+ formElements: formElement.elements,
155
+ parentElementNames: [...parentElementNames, formElement.name],
156
+ initialColumns: columns,
157
+ filters,
158
+ allowCopy,
159
+ });
160
+ }
161
+ break;
162
+ }
163
+ case 'compliance': {
164
+ generateColumns({
165
+ onChangeFilters,
166
+ formElements: [
167
+ {
168
+ ...formElement,
169
+ tooltip: formElement.name,
170
+ type: 'radio',
171
+ name: 'value',
172
+ buttons: false,
173
+ },
174
+ {
175
+ ...formElement,
176
+ tooltip: `${formElement.name}_notes`,
177
+ type: 'textarea',
178
+ name: 'notes',
179
+ label: `${formElement.label} (Notes)`,
180
+ },
181
+ {
182
+ ...formElement,
183
+ tooltip: `${formElement.name}_media`,
184
+ type: 'files',
185
+ restrictFileTypes: false,
186
+ name: 'files',
187
+ label: `${formElement.label} (Media)`,
188
+ },
189
+ ],
190
+ parentElementNames: [...parentElementNames, formElement.name],
191
+ initialColumns: columns,
192
+ filters,
193
+ allowCopy,
194
+ });
195
+ break;
196
+ }
197
+ case 'summary':
198
+ case 'captcha':
199
+ case 'html':
200
+ case 'heading':
201
+ case 'infoPage':
202
+ case 'image': {
203
+ break;
204
+ }
205
+ default: {
206
+ columns.push({
207
+ id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join('_'),
208
+ sorting: generateSorting({
209
+ formElement,
210
+ filters,
211
+ parentElementNames,
212
+ }),
213
+ headerText: formElement.label,
214
+ tooltip: formElement.tooltip || formElement.name,
215
+ filter: generateFilter({
216
+ parentElementNames,
217
+ formElement,
218
+ onChangeFilters,
219
+ rootSubmissionFilters: filters.submission,
220
+ }),
221
+ Cell: ({ row: { original: formStoreRecord } }) => {
222
+ const submission = parentElementNames.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], formStoreRecord.submission);
223
+ return (React.createElement(FormElementTableCell, { formElement: formElement, submission: submission, allowCopy: allowCopy }));
224
+ },
225
+ });
226
+ break;
227
+ }
228
+ }
229
+ return columns;
230
+ }, initialColumns);
231
+ };
232
+ export default generateColumns;
233
+ //# sourceMappingURL=generateColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateColumns.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/generateColumns.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { Column as ColumnWithCell, CellProps } from 'react-table'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport FormElementTableCell from './FormElementTableCell'\nimport { formStoreService } from '@oneblink/apps'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\n\nfunction generateSorting({\n formElement,\n parentElementNames,\n filters,\n}: {\n formElement: FormTypes.FormElementWithName\n parentElementNames: string[]\n filters: formStoreService.FormStoreFilters\n}) {\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'number':\n case 'email':\n case 'telephone':\n case 'barcodeScanner':\n case 'date':\n case 'datetime':\n case 'time':\n case 'calculation': {\n const sortProperty = [\n 'submission',\n ...parentElementNames,\n formElement.name,\n ].join('.')\n return {\n property: sortProperty,\n direction: filters.sorting?.find(\n ({ property }) => property === sortProperty,\n )?.direction,\n }\n }\n }\n}\n\nfunction generateFilter({\n formElement,\n onChangeFilters,\n rootSubmissionFilters,\n parentElementNames,\n}: {\n formElement: FormTypes.FormElementWithName\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n rootSubmissionFilters: formStoreService.FormStoreFilters['submission']\n parentElementNames: string[]\n}): ColumnWithCell<Record<string, unknown>>['filter'] {\n function onChange<T>(\n newValue: formStoreService.FormStoreFilter<T> | undefined,\n shouldDebounce: boolean,\n ) {\n onChangeFilters((currentFilters) => {\n let newSubmission = {\n [formElement.name]: newValue,\n }\n\n if (parentElementNames.length) {\n const copy = [...parentElementNames]\n while (copy.length) {\n const nestedSubmission = copy.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[\n elementName\n ] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n const elementName = copy.pop()\n if (elementName) {\n newSubmission = {\n [elementName]: {\n ...nestedSubmission,\n ...newSubmission,\n },\n }\n }\n }\n }\n\n return {\n ...currentFilters,\n submission: {\n ...currentFilters.submission,\n ...newSubmission,\n },\n } as formStoreService.FormStoreFilters\n }, shouldDebounce)\n }\n\n const submissionFilters = parentElementNames.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'email':\n case 'telephone':\n case 'barcodeScanner': {\n return {\n type: 'TEXT',\n value: submissionFilters?.[formElement.name] as\n | { $regex: string; $options?: string }\n | undefined,\n onChange,\n }\n }\n case 'number':\n case 'calculation': {\n return {\n type: 'NUMBER',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: number; $lte?: number }\n | undefined,\n onChange,\n }\n }\n case 'checkboxes':\n case 'select':\n case 'radio':\n case 'autocomplete': {\n const value = submissionFilters?.[formElement.name]\n if (Array.isArray(formElement.options)) {\n if (\n (formElement.type === 'select' && formElement.multi) ||\n formElement.type === 'checkboxes'\n ) {\n return {\n type: 'OPTIONS_MULTIPLE',\n value: value as { $elemMatch: { $in: string[] } } | undefined,\n options: formElement.options,\n onChange,\n }\n } else {\n return {\n type: 'OPTIONS_SINGLE',\n value: value as { $in: string[] } | undefined,\n options: formElement.options,\n onChange,\n }\n }\n } else {\n return {\n type: 'TEXT',\n value: value as { $regex: string } | undefined,\n onChange,\n }\n }\n }\n case 'boolean':\n return {\n type: 'BOOLEAN',\n value: submissionFilters?.[formElement.name] as\n | { $eq: boolean }\n | undefined,\n onChange,\n }\n case 'date': {\n return {\n type: 'DATE',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n }\n case 'datetime':\n return {\n type: 'DATETIME',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n default: {\n return undefined\n }\n }\n}\n\nconst generateColumns = <\n T extends { submission: FormStoreRecord['submission'] },\n>({\n formElements,\n onChangeFilters,\n filters,\n parentElementNames,\n initialColumns,\n allowCopy,\n}: {\n formElements: (FormTypes.FormElement & { tooltip?: string })[]\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n filters: formStoreService.FormStoreFilters\n parentElementNames: string[]\n initialColumns: Array<ColumnWithCell<T>>\n allowCopy: boolean\n}) => {\n return formElements.reduce<Array<ColumnWithCell<T>>>(\n (columns, formElement) => {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n generateColumns({\n onChangeFilters,\n formElements: formElement.elements,\n parentElementNames,\n filters,\n initialColumns: columns,\n allowCopy,\n })\n break\n }\n case 'form': {\n if (formElement.elements) {\n generateColumns({\n onChangeFilters,\n formElements: formElement.elements,\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n })\n }\n break\n }\n case 'compliance': {\n generateColumns({\n onChangeFilters,\n formElements: [\n {\n ...formElement,\n tooltip: formElement.name,\n type: 'radio',\n name: 'value',\n buttons: false,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_notes`,\n type: 'textarea',\n name: 'notes',\n label: `${formElement.label} (Notes)`,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_media`,\n type: 'files',\n restrictFileTypes: false,\n name: 'files',\n label: `${formElement.label} (Media)`,\n },\n ],\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n })\n break\n }\n case 'summary':\n case 'captcha':\n case 'html':\n case 'heading':\n case 'infoPage':\n case 'image': {\n break\n }\n default: {\n columns.push({\n id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join(\n '_',\n ),\n sorting: generateSorting({\n formElement,\n filters,\n parentElementNames,\n }),\n headerText: formElement.label,\n tooltip: formElement.tooltip || formElement.name,\n filter: generateFilter({\n parentElementNames,\n formElement,\n onChangeFilters,\n rootSubmissionFilters: filters.submission,\n }),\n Cell: ({ row: { original: formStoreRecord } }: CellProps<T>) => {\n const submission = parentElementNames.reduce<\n SubmissionTypes.S3SubmissionData['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as FormStoreRecord['submission'],\n formStoreRecord.submission,\n )\n return (\n <FormElementTableCell\n formElement={formElement}\n submission={submission}\n allowCopy={allowCopy}\n />\n )\n },\n })\n break\n }\n }\n return columns\n },\n initialColumns,\n )\n}\n\nexport default generateColumns\n"]}
@@ -0,0 +1,52 @@
1
+ import { FormStoreRecord } from '@oneblink/types/typescript/submissions';
2
+ import { TableState } from 'react-table';
3
+ import { FormTypes } from '@oneblink/types';
4
+ import { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad';
5
+ import { formStoreService } from '@oneblink/apps';
6
+ export default function useFormStoreTable({ form, formStoreRecords, filters, onChangeFilters, onRefresh, submissionIdValidationMessage, }: {
7
+ formStoreRecords: FormStoreRecord[];
8
+ form: FormTypes.Form;
9
+ filters: formStoreService.FormStoreFilters;
10
+ onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>;
11
+ onRefresh: () => void;
12
+ submissionIdValidationMessage?: string;
13
+ }): {
14
+ form: FormTypes.Form;
15
+ filters: formStoreService.FormStoreFilters;
16
+ onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>;
17
+ onRefresh: () => void;
18
+ submissionIdValidationMessage: string | undefined;
19
+ data: readonly FormStoreRecord[];
20
+ initialState?: Partial<TableState<FormStoreRecord>> | undefined;
21
+ stateReducer?: ((newState: TableState<FormStoreRecord>, action: import("react-table").ActionType, previousState: TableState<FormStoreRecord>, instance?: import("react-table").TableInstance<FormStoreRecord> | undefined) => TableState<FormStoreRecord>) | undefined;
22
+ useControlledState?: ((state: TableState<FormStoreRecord>, meta: import("react-table").MetaBase<FormStoreRecord>) => TableState<FormStoreRecord>) | undefined;
23
+ defaultColumn?: Partial<import("react-table").Column<FormStoreRecord>> | undefined;
24
+ getSubRows?: ((originalRow: FormStoreRecord, relativeIndex: number) => FormStoreRecord[]) | undefined;
25
+ getRowId?: ((originalRow: FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<FormStoreRecord> | undefined) => string) | undefined;
26
+ autoResetHiddenColumns?: boolean | undefined;
27
+ disableResizing?: boolean | undefined;
28
+ autoResetResize?: boolean | undefined;
29
+ state: TableState<FormStoreRecord>;
30
+ plugins: import("react-table").PluginHook<FormStoreRecord>[];
31
+ dispatch: import("react-table").TableDispatch<any>;
32
+ columns: import("react-table").ColumnInstance<FormStoreRecord>[];
33
+ allColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
34
+ visibleColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
35
+ headerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
36
+ footerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
37
+ headers: import("react-table").ColumnInstance<FormStoreRecord>[];
38
+ flatHeaders: import("react-table").ColumnInstance<FormStoreRecord>[];
39
+ rows: import("react-table").Row<FormStoreRecord>[];
40
+ rowsById: Record<string, import("react-table").Row<FormStoreRecord>>;
41
+ getTableProps: (propGetter?: import("react-table").TablePropGetter<FormStoreRecord> | undefined) => import("react-table").TableProps;
42
+ getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
43
+ prepareRow: (row: import("react-table").Row<FormStoreRecord>) => void;
44
+ flatRows: import("react-table").Row<FormStoreRecord>[];
45
+ totalColumnsWidth: number;
46
+ allColumnsHidden: boolean;
47
+ toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
48
+ setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
49
+ toggleHideAllColumns: (value?: boolean | undefined) => void;
50
+ getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
51
+ getHooks: () => import("react-table").Hooks<FormStoreRecord>;
52
+ };
@@ -0,0 +1,139 @@
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
+ import { FormStoreElementsContext } from '../OneBlinkFormStoreProvider';
9
+ const defaultColumn = {
10
+ minWidth: 150,
11
+ width: 225,
12
+ };
13
+ const localStorageKey = (formId) => `REACT_TABLE_STATE_FORM_STORE_${formId}`;
14
+ export default function useFormStoreTable({ form, formStoreRecords, filters, onChangeFilters, onRefresh, submissionIdValidationMessage, }) {
15
+ const formElements = React.useContext(FormStoreElementsContext);
16
+ const columns = React.useMemo(() => {
17
+ var _a, _b, _c, _d;
18
+ return generateColumns({
19
+ formElements,
20
+ filters,
21
+ parentElementNames: [],
22
+ onChangeFilters,
23
+ allowCopy: true,
24
+ initialColumns: [
25
+ {
26
+ id: 'SUBMITTED_AT',
27
+ headerText: 'Submission Date Time',
28
+ sorting: {
29
+ property: 'dateTimeSubmitted',
30
+ direction: (_b = (_a = filters.sorting) === null || _a === void 0 ? void 0 : _a.find(({ property }) => property === 'dateTimeSubmitted')) === null || _b === void 0 ? void 0 : _b.direction,
31
+ },
32
+ filter: {
33
+ type: 'DATETIME',
34
+ value: filters.dateTimeSubmitted,
35
+ onChange: (newValue) => {
36
+ onChangeFilters((currentFilters) => ({
37
+ ...currentFilters,
38
+ dateTimeSubmitted: newValue,
39
+ }), false);
40
+ },
41
+ },
42
+ Cell: ({ row: { original: formStoreRecord }, }) => {
43
+ const text = format(new Date(formStoreRecord.dateTimeSubmitted), localisationService.getDateFnsFormats().longDateTime);
44
+ return (React.createElement(React.Fragment, null,
45
+ text,
46
+ React.createElement(TableCellCopyButton, { text: text })));
47
+ },
48
+ },
49
+ {
50
+ id: 'SUBMITTED_BY',
51
+ headerText: 'Submitted By',
52
+ sorting: undefined,
53
+ filter: {
54
+ type: 'TEXT',
55
+ value: filters.submittedBy,
56
+ onChange: (newValue) => {
57
+ onChangeFilters((currentFilters) => ({
58
+ ...currentFilters,
59
+ submittedBy: newValue,
60
+ }), true);
61
+ },
62
+ },
63
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(ActionedByTableCell, { userProfile: formStoreRecord.user, developerKey: formStoreRecord.key, variant: "outlined" })),
64
+ },
65
+ {
66
+ id: 'SUBMISSION_ID',
67
+ headerText: 'Submission Id',
68
+ sorting: undefined,
69
+ filter: {
70
+ type: 'SUBMISSION_ID',
71
+ value: filters.submissionId,
72
+ validationMessage: submissionIdValidationMessage,
73
+ isInvalid: !!submissionIdValidationMessage,
74
+ onChange: (newValue) => {
75
+ onChangeFilters((currentFilters) => ({
76
+ ...currentFilters,
77
+ submissionId: newValue,
78
+ }), true);
79
+ },
80
+ },
81
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(React.Fragment, null,
82
+ formStoreRecord.submissionId,
83
+ React.createElement(TableCellCopyButton, { text: formStoreRecord.submissionId }))),
84
+ },
85
+ {
86
+ id: 'EXTERNAL_ID',
87
+ headerText: 'External Id',
88
+ sorting: {
89
+ property: 'externalId',
90
+ direction: (_d = (_c = filters.sorting) === null || _c === void 0 ? void 0 : _c.find(({ property }) => property === 'externalId')) === null || _d === void 0 ? void 0 : _d.direction,
91
+ },
92
+ filter: {
93
+ type: 'TEXT',
94
+ value: filters.externalId,
95
+ onChange: (newValue) => {
96
+ onChangeFilters((currentFilters) => ({
97
+ ...currentFilters,
98
+ externalId: newValue,
99
+ }), true);
100
+ },
101
+ },
102
+ Cell: ({ row: { original: formStoreRecord }, }) => (React.createElement(React.Fragment, null,
103
+ formStoreRecord.externalId,
104
+ formStoreRecord.externalId && (React.createElement(TableCellCopyButton, { text: formStoreRecord.externalId })))),
105
+ },
106
+ ],
107
+ });
108
+ }, [filters, formElements, onChangeFilters, submissionIdValidationMessage]);
109
+ const [initialState] = React.useState(() => {
110
+ const text = localStorage.getItem(localStorageKey(form.id));
111
+ if (text) {
112
+ return JSON.parse(text);
113
+ }
114
+ });
115
+ const table = useTable({
116
+ columns,
117
+ data: formStoreRecords,
118
+ defaultColumn,
119
+ autoResetHiddenColumns: false,
120
+ autoResetResize: false,
121
+ initialState: initialState
122
+ ? initialState
123
+ : { hiddenColumns: ['SUBMISSION_ID', 'EXTERNAL_ID'] },
124
+ }, useFlexLayout, useResizeColumns);
125
+ React.useEffect(() => {
126
+ if (!table.state.columnResizing.isResizingColumn) {
127
+ localStorage.setItem(localStorageKey(form.id), JSON.stringify(table.state));
128
+ }
129
+ }, [form.id, table.state]);
130
+ return {
131
+ ...table,
132
+ form,
133
+ filters,
134
+ onChangeFilters,
135
+ onRefresh,
136
+ submissionIdValidationMessage,
137
+ };
138
+ }
139
+ //# 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'\nimport { FormStoreElementsContext } from '../OneBlinkFormStoreProvider'\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 useFormStoreTable({\n form,\n formStoreRecords,\n filters,\n onChangeFilters,\n onRefresh,\n submissionIdValidationMessage,\n}: {\n formStoreRecords: FormStoreRecord[]\n form: FormTypes.Form\n filters: formStoreService.FormStoreFilters\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n onRefresh: () => void\n submissionIdValidationMessage?: string\n}) {\n const formElements = React.useContext(FormStoreElementsContext)\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 {\n ...table,\n form,\n filters,\n onChangeFilters,\n onRefresh,\n submissionIdValidationMessage,\n }\n}\n"]}
@@ -0,0 +1,44 @@
1
+ import * as React from 'react';
2
+ import useFormStoreTable from './table/useFormStoreTable';
3
+ export declare type FormStoreTableContextValue = ReturnType<typeof useFormStoreTable> | undefined;
4
+ export declare const FormStoreTableContext: React.Context<FormStoreTableContextValue>;
5
+ export default function useFormStoreTableContext(): {
6
+ form: import("@oneblink/types/typescript/forms").Form;
7
+ filters: import("@oneblink/apps/dist/form-store-service").FormStoreFilters;
8
+ onChangeFilters: import("../../hooks/useInfiniteScrollDataLoad").OnChangeFilters<import("@oneblink/apps/dist/form-store-service").FormStoreFilters>;
9
+ onRefresh: () => void;
10
+ submissionIdValidationMessage: string | undefined;
11
+ data: readonly import("@oneblink/types/typescript/submissions").FormStoreRecord[];
12
+ initialState?: Partial<import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
13
+ stateReducer?: ((newState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, action: import("react-table").ActionType, previousState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, instance?: import("react-table").TableInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
14
+ useControlledState?: ((state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, meta: import("react-table").MetaBase<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
15
+ defaultColumn?: Partial<import("react-table").Column<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
16
+ getSubRows?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number) => import("@oneblink/types/typescript/submissions").FormStoreRecord[]) | undefined;
17
+ getRowId?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => string) | undefined;
18
+ autoResetHiddenColumns?: boolean | undefined;
19
+ disableResizing?: boolean | undefined;
20
+ autoResetResize?: boolean | undefined;
21
+ state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
22
+ plugins: import("react-table").PluginHook<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
23
+ dispatch: import("react-table").TableDispatch<any>;
24
+ columns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
25
+ allColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
26
+ visibleColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
27
+ headerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
28
+ footerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
29
+ headers: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
30
+ flatHeaders: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
31
+ rows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
32
+ rowsById: Record<string, import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>>;
33
+ getTableProps: (propGetter?: import("react-table").TablePropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableProps;
34
+ getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
35
+ prepareRow: (row: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => void;
36
+ flatRows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
37
+ totalColumnsWidth: number;
38
+ allColumnsHidden: boolean;
39
+ toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
40
+ setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
41
+ toggleHideAllColumns: (value?: boolean | undefined) => void;
42
+ getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
43
+ getHooks: () => import("react-table").Hooks<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
44
+ };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export const FormStoreTableContext = React.createContext(undefined);
3
+ export default function useFormStoreTableContext() {
4
+ const formStoreTableContext = React.useContext(FormStoreTableContext);
5
+ if (!formStoreTableContext) {
6
+ throw new TypeError('You have attempted to run the hook "useFormStoreTableContext()" outside of the "FormStoreTableContext" context.');
7
+ }
8
+ return formStoreTableContext;
9
+ }
10
+ //# sourceMappingURL=useFormStoreTableContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormStoreTableContext.js","sourceRoot":"","sources":["../../../src/components/formStore/useFormStoreTableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,MAAM,CAAC,MAAM,qBAAqB,GAChC,KAAK,CAAC,aAAa,CAA6B,SAAS,CAAC,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC9C,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;IACrE,IAAI,CAAC,qBAAqB,EAAE;QAC1B,MAAM,IAAI,SAAS,CACjB,iHAAiH,CAClH,CAAA;KACF;IACD,OAAO,qBAAqB,CAAA;AAC9B,CAAC","sourcesContent":["import * as React from 'react'\nimport useFormStoreTable from './table/useFormStoreTable'\nexport type FormStoreTableContextValue =\n | ReturnType<typeof useFormStoreTable>\n | undefined\n\nexport const FormStoreTableContext =\n React.createContext<FormStoreTableContextValue>(undefined)\n\nexport default function useFormStoreTableContext() {\n const formStoreTableContext = React.useContext(FormStoreTableContext)\n if (!formStoreTableContext) {\n throw new TypeError(\n 'You have attempted to run the hook \"useFormStoreTableContext()\" outside of the \"FormStoreTableContext\" context.',\n )\n }\n return formStoreTableContext\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { Props as LargeIconMessageProps } from './LargeIconMessage';
3
+ declare type Props = {
4
+ IconComponent?: LargeIconMessageProps['IconComponent'];
5
+ title: string;
6
+ gutterTop?: boolean;
7
+ gutterBottom?: boolean;
8
+ children?: React.ReactNode;
9
+ onTryAgain?: () => void;
10
+ };
11
+ declare const _default: React.NamedExoticComponent<Props>;
12
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import ErrorIcon from '@mui/icons-material/Error';
3
+ import LargeIconMessage from './LargeIconMessage';
4
+ import { Button } from '@mui/material';
5
+ function ErrorMessage({ title, children, gutterTop, gutterBottom, IconComponent, onTryAgain, }) {
6
+ if (!IconComponent) {
7
+ IconComponent = ErrorIcon;
8
+ }
9
+ return (React.createElement(React.Fragment, null,
10
+ React.createElement(LargeIconMessage, { IconComponent: IconComponent, title: title, variant: "error", gutterTop: gutterTop, gutterBottom: gutterBottom, action: onTryAgain && (React.createElement(Button, { variant: "outlined", color: "primary", onClick: () => onTryAgain() }, "Try Again")), className: "ob-error-snackbar" }, children)));
11
+ }
12
+ export default React.memo(ErrorMessage);
13
+ //# sourceMappingURL=ErrorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorMessage.js","sourceRoot":"","sources":["../../../src/components/messages/ErrorMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,gBAEN,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAUtC,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,GACJ;IACN,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG,SAAS,CAAA;KAC1B;IAED,OAAO,CACL;QACE,oBAAC,gBAAgB,IACf,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAC,OAAO,EACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,MAAM,EACJ,UAAU,IAAI,CACZ,oBAAC,MAAM,IACL,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,gBAGpB,CACV,EAEH,SAAS,EAAC,mBAAmB,IAE5B,QAAQ,CACQ,CAClB,CACJ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAQ,YAAY,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport ErrorIcon from '@mui/icons-material/Error'\nimport LargeIconMessage, {\n Props as LargeIconMessageProps,\n} from './LargeIconMessage'\nimport { Button } from '@mui/material'\ntype Props = {\n IconComponent?: LargeIconMessageProps['IconComponent']\n title: string\n gutterTop?: boolean\n gutterBottom?: boolean\n children?: React.ReactNode\n onTryAgain?: () => void\n}\n\nfunction ErrorMessage({\n title,\n children,\n gutterTop,\n gutterBottom,\n IconComponent,\n onTryAgain,\n}: Props) {\n if (!IconComponent) {\n IconComponent = ErrorIcon\n }\n\n return (\n <>\n <LargeIconMessage\n IconComponent={IconComponent}\n title={title}\n variant=\"error\"\n gutterTop={gutterTop}\n gutterBottom={gutterBottom}\n action={\n onTryAgain && (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain()}\n >\n Try Again\n </Button>\n )\n }\n className=\"ob-error-snackbar\"\n >\n {children}\n </LargeIconMessage>\n </>\n )\n}\n\nexport default React.memo<Props>(ErrorMessage)\n"]}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { CommonProps } from '@mui/material/OverridableComponent';
3
+ declare type Variant = 'primary' | 'success' | 'error' | 'warning';
4
+ export declare type Props = {
5
+ IconComponent: React.ComponentType<{
6
+ color: Variant;
7
+ }>;
8
+ title: string;
9
+ variant: Variant;
10
+ gutterTop?: boolean;
11
+ gutterBottom?: boolean;
12
+ children?: React.ReactNode;
13
+ action?: React.ReactNode;
14
+ className?: CommonProps['className'];
15
+ };
16
+ declare const _default: React.NamedExoticComponent<Props>;
17
+ export default _default;