@oneblink/apps-react 2.3.0-beta.1 → 2.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/OneBlinkAutoSaveForm.d.ts +10 -10
- package/dist/OneBlinkAutoSaveForm.js +28 -28
- package/dist/OneBlinkForm.d.ts +11 -11
- package/dist/OneBlinkForm.js +11 -11
- package/dist/OneBlinkFormBase.d.ts +28 -28
- package/dist/OneBlinkFormBase.js +472 -472
- package/dist/OneBlinkFormStoreView.d.ts +8 -0
- package/dist/OneBlinkFormStoreView.js +55 -0
- package/dist/OneBlinkFormStoreView.js.map +1 -0
- package/dist/OneBlinkReadOnlyForm.d.ts +11 -11
- package/dist/OneBlinkReadOnlyForm.js +48 -48
- package/dist/components/AnnotationModal.d.ts +8 -0
- package/dist/components/AnnotationModal.js +104 -0
- package/dist/components/AnnotationModal.js.map +1 -0
- package/dist/components/AutocompleteDropdown.d.ts +26 -0
- package/dist/components/AutocompleteDropdown.js +174 -0
- package/dist/components/AutocompleteDropdown.js.map +1 -0
- package/dist/components/CopyToClipboardButton.d.ts +9 -0
- package/dist/components/CopyToClipboardButton.js +14 -0
- package/dist/components/CopyToClipboardButton.js.map +1 -0
- package/dist/components/CopyToClipboardIconButton.d.ts +10 -10
- package/dist/components/CopyToClipboardIconButton.js +32 -32
- package/dist/components/CustomAccordion.d.ts +27 -27
- package/dist/components/CustomAccordion.js +37 -37
- package/dist/components/CustomisableButtonInner.d.ts +7 -0
- package/dist/components/CustomisableButtonInner.js +9 -0
- package/dist/components/CustomisableButtonInner.js.map +1 -0
- package/dist/components/ErrorMessage.d.ts +13 -0
- package/dist/components/ErrorMessage.js +13 -0
- package/dist/components/ErrorMessage.js.map +1 -0
- package/dist/components/ErrorSnackbar.d.ts +8 -8
- package/dist/components/ErrorSnackbar.js +25 -25
- package/dist/components/FormElementLabelContainer.d.ts +12 -0
- package/dist/components/FormElementLabelContainer.js +16 -0
- package/dist/components/FormElementLabelContainer.js.map +1 -0
- package/dist/components/FormElementOptions.d.ts +9 -0
- package/dist/components/FormElementOptions.js +15 -0
- package/dist/components/FormElementOptions.js.map +1 -0
- package/dist/components/Lists.d.ts +25 -25
- package/dist/components/Lists.js +44 -44
- package/dist/components/LoadingWithMessage.d.ts +6 -6
- package/dist/components/LoadingWithMessage.js +11 -11
- package/dist/components/LookupButton.d.ts +10 -0
- package/dist/components/LookupButton.js +30 -0
- package/dist/components/LookupButton.js.map +1 -0
- package/dist/components/LookupNotification.d.ts +12 -0
- package/dist/components/LookupNotification.js +231 -0
- package/dist/components/LookupNotification.js.map +1 -0
- package/dist/components/Modal.d.ts +14 -0
- package/dist/components/Modal.js +15 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/NoResourcesYet.d.ts +12 -0
- package/dist/components/NoResourcesYet.js +7 -0
- package/dist/components/NoResourcesYet.js.map +1 -0
- package/dist/components/OnLoading.d.ts +10 -0
- package/dist/components/OnLoading.js +12 -0
- package/dist/components/OnLoading.js.map +1 -0
- package/dist/components/OneBlinkAppsErrorOriginalMessage.d.ts +7 -0
- package/dist/components/OneBlinkAppsErrorOriginalMessage.js +13 -0
- package/dist/components/OneBlinkAppsErrorOriginalMessage.js.map +1 -0
- package/dist/components/OneBlinkFormElements.d.ts +19 -0
- package/dist/components/OneBlinkFormElements.js +196 -0
- package/dist/components/OneBlinkFormElements.js.map +1 -0
- package/dist/components/PageFormElements.d.ts +17 -0
- package/dist/components/PageFormElements.js +49 -0
- package/dist/components/PageFormElements.js.map +1 -0
- package/dist/components/ToggleAllCheckbox.d.ts +13 -0
- package/dist/components/ToggleAllCheckbox.js +27 -0
- package/dist/components/ToggleAllCheckbox.js.map +1 -0
- package/dist/components/attachments/AttachmentStatus.d.ts +12 -0
- package/dist/components/attachments/AttachmentStatus.js +35 -0
- package/dist/components/attachments/AttachmentStatus.js.map +1 -0
- package/dist/components/attachments/FileCard.d.ts +18 -0
- package/dist/components/attachments/FileCard.js +58 -0
- package/dist/components/attachments/FileCard.js.map +1 -0
- package/dist/components/attachments/FileCardContent.d.ts +5 -0
- package/dist/components/attachments/FileCardContent.js +11 -0
- package/dist/components/attachments/FileCardContent.js.map +1 -0
- package/dist/components/attachments/Files.d.ts +14 -0
- package/dist/components/attachments/Files.js +27 -0
- package/dist/components/attachments/Files.js.map +1 -0
- package/dist/components/attachments/ImagePreviewUnavailable.d.ts +4 -0
- package/dist/components/attachments/ImagePreviewUnavailable.js +12 -0
- package/dist/components/attachments/ImagePreviewUnavailable.js.map +1 -0
- package/dist/components/attachments/UploadingAttachment.d.ts +4 -0
- package/dist/components/attachments/UploadingAttachment.js +13 -0
- package/dist/components/attachments/UploadingAttachment.js.map +1 -0
- package/dist/components/formStore/ColumnsConfigurationButton.d.ts +10 -0
- package/dist/components/formStore/ColumnsConfigurationButton.js +29 -0
- package/dist/components/formStore/ColumnsConfigurationButton.js.map +1 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.d.ts +13 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.js +45 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.js.map +1 -0
- package/dist/components/formStore/FormStore.d.ts +9 -0
- package/dist/components/formStore/FormStore.js +103 -0
- package/dist/components/formStore/FormStore.js.map +1 -0
- package/dist/components/formStore/FormStoreTableProvider.d.ts +6 -6
- package/dist/components/formStore/FormStoreTableProvider.js +90 -90
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +5 -5
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +19 -19
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +5 -5
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +66 -66
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +5 -5
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +86 -86
- package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +8 -8
- package/dist/components/formStore/OneBlinkFormStoreProvider.js +24 -24
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +5 -5
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +11 -11
- package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +4 -4
- package/dist/components/formStore/OneBlinkFormStoreTable.js +194 -194
- package/dist/components/formStore/display/ElementDisplay.d.ts +23 -23
- package/dist/components/formStore/display/ElementDisplay.js +77 -77
- package/dist/components/formStore/display/FormStoreIcon.d.ts +2 -2
- package/dist/components/formStore/display/FormStoreIcon.js +2 -2
- package/dist/components/formStore/table/ActionedByTableCell.d.ts +11 -11
- package/dist/components/formStore/table/ActionedByTableCell.js +43 -43
- package/dist/components/formStore/table/ColumnFilters.d.ts +9 -9
- package/dist/components/formStore/table/ColumnFilters.js +179 -179
- package/dist/components/formStore/table/FormElementTableCell.d.ts +10 -10
- package/dist/components/formStore/table/FormElementTableCell.js +228 -228
- package/dist/components/formStore/table/HeaderCellMoreButton.d.ts +9 -9
- package/dist/components/formStore/table/HeaderCellMoreButton.js +48 -48
- package/dist/components/formStore/table/RepeatableSetCell.d.ts +8 -8
- package/dist/components/formStore/table/RepeatableSetCell.js +62 -62
- package/dist/components/formStore/table/RepeatableSetCellAccordion.d.ts +9 -9
- package/dist/components/formStore/table/RepeatableSetCellAccordion.js +11 -11
- package/dist/components/formStore/table/TableCellCopyButton.d.ts +7 -7
- package/dist/components/formStore/table/TableCellCopyButton.js +27 -27
- package/dist/components/formStore/table/generateColumns.d.ts +24 -24
- package/dist/components/formStore/table/generateColumns.js +290 -290
- package/dist/components/formStore/table/index.d.ts +17 -0
- package/dist/components/formStore/table/index.js +194 -0
- package/dist/components/formStore/table/index.js.map +1 -0
- package/dist/components/formStore/table/useFormStoreTable.d.ts +52 -52
- package/dist/components/formStore/table/useFormStoreTable.js +157 -157
- package/dist/components/formStore/useFormStoreTableContext.d.ts +44 -44
- package/dist/components/formStore/useFormStoreTableContext.js +9 -9
- package/dist/components/messages/ErrorMessage.d.ts +12 -12
- package/dist/components/messages/ErrorMessage.js +12 -12
- package/dist/components/messages/LargeIconMessage.d.ts +18 -18
- package/dist/components/messages/LargeIconMessage.js +33 -33
- package/dist/components/messages/NoResourcesYet.d.ts +11 -11
- package/dist/components/messages/NoResourcesYet.js +6 -6
- package/dist/components/pickers/V4CompatibleDatePicker.d.ts +32 -32
- package/dist/components/pickers/V4CompatibleDatePicker.js +70 -70
- package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +32 -32
- package/dist/components/pickers/V4CompatibleDateTimePicker.js +70 -70
- package/dist/components/pickers/V4CompatibleTimePicker.d.ts +28 -28
- package/dist/components/pickers/V4CompatibleTimePicker.js +53 -53
- package/dist/components/renderer/AnnotationModal.d.ts +8 -8
- package/dist/components/renderer/AnnotationModal.js +101 -101
- package/dist/components/renderer/AutocompleteDropdown.d.ts +26 -26
- package/dist/components/renderer/AutocompleteDropdown.js +175 -175
- package/dist/components/renderer/CopyToClipboardButton.d.ts +8 -8
- package/dist/components/renderer/CopyToClipboardButton.js +13 -13
- package/dist/components/renderer/CustomisableButtonInner.d.ts +7 -7
- package/dist/components/renderer/CustomisableButtonInner.js +8 -8
- package/dist/components/renderer/FormElementLabelContainer.d.ts +12 -12
- package/dist/components/renderer/FormElementLabelContainer.js +15 -15
- package/dist/components/renderer/FormElementOptions.d.ts +9 -9
- package/dist/components/renderer/FormElementOptions.js +14 -14
- package/dist/components/renderer/LookupButton.d.ts +10 -10
- package/dist/components/renderer/LookupButton.js +29 -29
- package/dist/components/renderer/LookupNotification.d.ts +12 -12
- package/dist/components/renderer/LookupNotification.js +230 -230
- package/dist/components/renderer/Modal.d.ts +14 -14
- package/dist/components/renderer/Modal.js +14 -14
- package/dist/components/renderer/OnLoading.d.ts +10 -10
- package/dist/components/renderer/OnLoading.js +11 -11
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.d.ts +7 -7
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js +12 -12
- package/dist/components/renderer/OneBlinkFormElements.d.ts +19 -19
- package/dist/components/renderer/OneBlinkFormElements.js +202 -202
- package/dist/components/renderer/PageFormElements.d.ts +17 -17
- package/dist/components/renderer/PageFormElements.js +48 -48
- package/dist/components/renderer/ProgressBar.d.ts +7 -7
- package/dist/components/renderer/ProgressBar.js +6 -6
- package/dist/components/renderer/ToggleAllCheckbox.d.ts +13 -13
- package/dist/components/renderer/ToggleAllCheckbox.js +26 -26
- package/dist/components/renderer/attachments/AttachmentStatus.d.ts +10 -10
- package/dist/components/renderer/attachments/AttachmentStatus.js +36 -36
- package/dist/components/renderer/attachments/FileCard.d.ts +19 -19
- package/dist/components/renderer/attachments/FileCard.js +60 -59
- package/dist/components/renderer/attachments/FileCard.js.map +1 -1
- package/dist/components/renderer/attachments/FileCardContent.d.ts +5 -5
- package/dist/components/renderer/attachments/FileCardContent.js +10 -10
- package/dist/components/renderer/attachments/Files.d.ts +14 -0
- package/dist/components/renderer/attachments/Files.js +27 -0
- package/dist/components/renderer/attachments/Files.js.map +1 -0
- package/dist/components/renderer/attachments/ImagePreviewUnavailable.d.ts +4 -4
- package/dist/components/renderer/attachments/ImagePreviewUnavailable.js +11 -11
- package/dist/components/renderer/attachments/ProgressBar.d.ts +8 -6
- package/dist/components/renderer/attachments/ProgressBar.js +33 -12
- package/dist/components/renderer/attachments/ProgressBar.js.map +1 -1
- package/dist/components/renderer/attachments/UploadingAttachment.d.ts +4 -0
- package/dist/components/renderer/attachments/UploadingAttachment.js +13 -0
- package/dist/components/renderer/attachments/UploadingAttachment.js.map +1 -0
- package/dist/form-elements/ComplianceButton.d.ts +10 -10
- package/dist/form-elements/ComplianceButton.js +11 -11
- package/dist/form-elements/FormElementABN.d.ts +14 -14
- package/dist/form-elements/FormElementABN.js +155 -155
- package/dist/form-elements/FormElementAutocomplete.d.ts +19 -19
- package/dist/form-elements/FormElementAutocomplete.js +81 -81
- package/dist/form-elements/FormElementBSB.d.ts +18 -18
- package/dist/form-elements/FormElementBSB.js +100 -100
- package/dist/form-elements/FormElementBarcodeScanner.d.ts +14 -14
- package/dist/form-elements/FormElementBarcodeScanner.js +306 -306
- package/dist/form-elements/FormElementBoolean.d.ts +14 -14
- package/dist/form-elements/FormElementBoolean.js +16 -16
- package/dist/form-elements/FormElementCalculation.d.ts +11 -11
- package/dist/form-elements/FormElementCalculation.js +179 -179
- package/dist/form-elements/FormElementCamera.d.ts +15 -15
- package/dist/form-elements/FormElementCamera.js +227 -226
- package/dist/form-elements/FormElementCamera.js.map +1 -1
- package/dist/form-elements/FormElementCaptcha.d.ts +12 -12
- package/dist/form-elements/FormElementCaptcha.js +14 -14
- package/dist/form-elements/FormElementCheckBoxes.d.ts +15 -15
- package/dist/form-elements/FormElementCheckBoxes.js +64 -64
- package/dist/form-elements/FormElementCivicaNameRecord.d.ts +8 -8
- package/dist/form-elements/FormElementCivicaNameRecord.js +51 -51
- package/dist/form-elements/FormElementCivicaStreetName.d.ts +15 -15
- package/dist/form-elements/FormElementCivicaStreetName.js +38 -38
- package/dist/form-elements/FormElementCompliance.d.ts +22 -22
- package/dist/form-elements/FormElementCompliance.js +129 -129
- package/dist/form-elements/FormElementDate.d.ts +14 -14
- package/dist/form-elements/FormElementDate.js +74 -74
- package/dist/form-elements/FormElementDateTime.d.ts +14 -14
- package/dist/form-elements/FormElementDateTime.js +67 -67
- package/dist/form-elements/FormElementEmail.d.ts +14 -14
- package/dist/form-elements/FormElementEmail.js +22 -22
- package/dist/form-elements/FormElementFile.d.ts +13 -13
- package/dist/form-elements/FormElementFile.js +31 -31
- package/dist/form-elements/FormElementFiles/FormElementFile.d.ts +13 -0
- package/dist/form-elements/FormElementFiles/FormElementFile.js +32 -0
- package/dist/form-elements/FormElementFiles/FormElementFile.js.map +1 -0
- package/dist/form-elements/FormElementFiles/FormElementFileDisplay.d.ts +10 -0
- package/dist/form-elements/FormElementFiles/FormElementFileDisplay.js +11 -0
- package/dist/form-elements/FormElementFiles/FormElementFileDisplay.js.map +1 -0
- package/dist/form-elements/FormElementFiles/FormElementFiles.d.ts +15 -0
- package/dist/form-elements/FormElementFiles/FormElementFiles.js +17 -0
- package/dist/form-elements/FormElementFiles/FormElementFiles.js.map +1 -0
- package/dist/form-elements/FormElementFiles/FormElementFilesInvalidAttachment.d.ts +7 -0
- package/dist/form-elements/FormElementFiles/FormElementFilesInvalidAttachment.js +11 -0
- package/dist/form-elements/FormElementFiles/FormElementFilesInvalidAttachment.js.map +1 -0
- package/dist/form-elements/FormElementFiles/index.d.ts +17 -0
- package/dist/form-elements/FormElementFiles/index.js +18 -0
- package/dist/form-elements/FormElementFiles/index.js.map +1 -0
- package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.d.ts +18 -0
- package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js +61 -0
- package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js.map +1 -0
- package/dist/form-elements/FormElementFiles.d.ts +15 -15
- package/dist/form-elements/FormElementFiles.js +42 -42
- package/dist/form-elements/FormElementForm.d.ts +17 -17
- package/dist/form-elements/FormElementForm.js +63 -63
- package/dist/form-elements/FormElementFreshdeskDependentField.d.ts +8 -8
- package/dist/form-elements/FormElementFreshdeskDependentField.js +15 -15
- package/dist/form-elements/FormElementGeoscapeAddress.d.ts +15 -15
- package/dist/form-elements/FormElementGeoscapeAddress.js +62 -62
- package/dist/form-elements/FormElementHTML.d.ts +8 -8
- package/dist/form-elements/FormElementHTML.js +15 -15
- package/dist/form-elements/FormElementHeading.d.ts +8 -8
- package/dist/form-elements/FormElementHeading.js +23 -23
- package/dist/form-elements/FormElementImage.d.ts +8 -8
- package/dist/form-elements/FormElementImage.js +6 -6
- package/dist/form-elements/FormElementLocation.d.ts +20 -20
- package/dist/form-elements/FormElementLocation.js +204 -204
- package/dist/form-elements/FormElementNumber.d.ts +14 -14
- package/dist/form-elements/FormElementNumber.js +72 -72
- package/dist/form-elements/FormElementPointAddress.d.ts +15 -15
- package/dist/form-elements/FormElementPointAddress.js +69 -69
- package/dist/form-elements/FormElementRadio.d.ts +15 -15
- package/dist/form-elements/FormElementRadio.js +41 -41
- package/dist/form-elements/FormElementRepeatableSet.d.ts +19 -19
- package/dist/form-elements/FormElementRepeatableSet.js +126 -126
- package/dist/form-elements/FormElementSection.d.ts +8 -8
- package/dist/form-elements/FormElementSection.js +69 -69
- package/dist/form-elements/FormElementSelect.d.ts +15 -15
- package/dist/form-elements/FormElementSelect.js +44 -44
- package/dist/form-elements/FormElementSignature.d.ts +15 -15
- package/dist/form-elements/FormElementSignature.js +138 -140
- package/dist/form-elements/FormElementSignature.js.map +1 -1
- package/dist/form-elements/FormElementSummary.d.ts +11 -11
- package/dist/form-elements/FormElementSummary.js +159 -159
- package/dist/form-elements/FormElementTelephone.d.ts +14 -14
- package/dist/form-elements/FormElementTelephone.js +22 -22
- package/dist/form-elements/FormElementText.d.ts +14 -14
- package/dist/form-elements/FormElementText.js +29 -29
- package/dist/form-elements/FormElementTextarea.d.ts +14 -14
- package/dist/form-elements/FormElementTextarea.js +30 -30
- package/dist/form-elements/FormElementTime.d.ts +14 -14
- package/dist/form-elements/FormElementTime.js +53 -53
- package/dist/form-elements/OptionButton.d.ts +11 -11
- package/dist/form-elements/OptionButton.js +9 -9
- package/dist/hooks/attachments/useAttachment.d.ts +12 -12
- package/dist/hooks/attachments/useAttachment.js +242 -242
- package/dist/hooks/attachments/useAttachmentBlobs.d.ts +19 -19
- package/dist/hooks/attachments/useAttachmentBlobs.js +23 -23
- package/dist/hooks/attachments/useAttachmentObjectURLs.d.ts +24 -0
- package/dist/hooks/attachments/useAttachmentObjectURLs.js +37 -0
- package/dist/hooks/attachments/useAttachmentObjectURLs.js.map +1 -0
- package/dist/hooks/attachments/useAttachments.d.ts +10 -10
- package/dist/hooks/attachments/useAttachments.js +69 -69
- package/dist/hooks/attachments/useLocalAttachmentBlobs.d.ts +24 -0
- package/dist/hooks/attachments/useLocalAttachmentBlobs.js +40 -0
- package/dist/hooks/attachments/useLocalAttachmentBlobs.js.map +1 -0
- package/dist/hooks/useAbnLookupAuthenticationGuid.d.ts +3 -3
- package/dist/hooks/useAbnLookupAuthenticationGuid.js +5 -5
- package/dist/hooks/useAuth.d.ts +15 -15
- package/dist/hooks/useAuth.js +42 -42
- package/dist/hooks/useBooleanState.d.ts +5 -5
- package/dist/hooks/useBooleanState.js +8 -8
- package/dist/hooks/useButtonsConfiguration.d.ts +45 -0
- package/dist/hooks/useButtonsConfiguration.js +6 -0
- package/dist/hooks/useButtonsConfiguration.js.map +1 -0
- package/dist/hooks/useCaptchaSiteKey.d.ts +3 -3
- package/dist/hooks/useCaptchaSiteKey.js +5 -5
- package/dist/hooks/useChangeEffect.d.ts +1 -0
- package/dist/hooks/useChangeEffect.js +14 -0
- package/dist/hooks/useChangeEffect.js.map +1 -0
- package/dist/hooks/useClickOutsideElement.d.ts +3 -3
- package/dist/hooks/useClickOutsideElement.js +14 -14
- package/dist/hooks/useConditionalLogic.d.ts +6 -6
- package/dist/hooks/useConditionalLogic.js +22 -22
- package/dist/hooks/useConditionallyShowOptionCallback.d.ts +5 -0
- package/dist/hooks/useConditionallyShowOptionCallback.js +20 -0
- package/dist/hooks/useConditionallyShowOptionCallback.js.map +1 -0
- package/dist/hooks/useContrastColor.d.ts +2 -2
- package/dist/hooks/useContrastColor.js +12 -12
- package/dist/hooks/useCustomValidation.d.ts +1 -0
- package/dist/hooks/useCustomValidation.js +9 -0
- package/dist/hooks/useCustomValidation.js.map +1 -0
- package/dist/hooks/useDynamicOptionsLoaderEffect.d.ts +7 -0
- package/dist/hooks/useDynamicOptionsLoaderEffect.js +45 -0
- package/dist/hooks/useDynamicOptionsLoaderEffect.js.map +1 -0
- package/dist/hooks/useDynamicOptionsLoaderState.d.ts +7 -7
- package/dist/hooks/useDynamicOptionsLoaderState.js +44 -44
- package/dist/hooks/useExecutedLookupCallback.d.ts +12 -12
- package/dist/hooks/useExecutedLookupCallback.js +15 -15
- package/dist/hooks/useFlatpickr.d.ts +10 -10
- package/dist/hooks/useFlatpickr.js +73 -73
- package/dist/hooks/useFlatpickrGuid.d.ts +7 -7
- package/dist/hooks/useFlatpickrGuid.js +11 -11
- package/dist/hooks/useFlattenElementsContext.d.ts +2 -2
- package/dist/hooks/useFlattenElementsContext.js +7 -7
- package/dist/hooks/useFormDefinition.d.ts +4 -4
- package/dist/hooks/useFormDefinition.js +9 -9
- package/dist/hooks/useFormElementOptions.d.ts +9 -9
- package/dist/hooks/useFormElementOptions.js +35 -35
- package/dist/hooks/useFormIsReadOnly.d.ts +3 -3
- package/dist/hooks/useFormIsReadOnly.js +5 -5
- package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +24 -24
- package/dist/hooks/useFormSubmissionAutoSaveState.js +145 -145
- package/dist/hooks/useFormSubmissionModelContext.d.ts +15 -15
- package/dist/hooks/useFormSubmissionModelContext.js +32 -32
- package/dist/hooks/useFormSubmissionState.d.ts +10 -10
- package/dist/hooks/useFormSubmissionState.js +13 -13
- package/dist/hooks/useFormValidation.d.ts +7 -7
- package/dist/hooks/useFormValidation.js +29 -29
- package/dist/hooks/useGoogleMapsApiKey.d.ts +3 -3
- package/dist/hooks/useGoogleMapsApiKey.js +5 -5
- package/dist/hooks/useInfiniteScrollDataLoad.d.ts +30 -30
- package/dist/hooks/useInfiniteScrollDataLoad.js +124 -124
- package/dist/hooks/useInjectPages.d.ts +7 -7
- package/dist/hooks/useInjectPages.js +5 -5
- package/dist/hooks/useIsHovering.d.ts +5 -5
- package/dist/hooks/useIsHovering.js +12 -12
- package/dist/hooks/useIsMounted.d.ts +3 -3
- package/dist/hooks/useIsMounted.js +11 -11
- package/dist/hooks/useIsOffline.d.ts +6 -6
- package/dist/hooks/useIsOffline.js +26 -26
- package/dist/hooks/useIsPageVisible.d.ts +9 -9
- package/dist/hooks/useIsPageVisible.js +8 -8
- package/dist/hooks/useLegacyElements.d.ts +16 -0
- package/dist/hooks/useLegacyElements.js +55 -0
- package/dist/hooks/useLegacyElements.js.map +1 -0
- package/dist/hooks/useLoadDataState.d.ts +15 -15
- package/dist/hooks/useLoadDataState.js +54 -54
- package/dist/hooks/useLogin.d.ts +46 -46
- package/dist/hooks/useLogin.js +295 -295
- package/dist/hooks/useLookupNotification.d.ts +9 -9
- package/dist/hooks/useLookupNotification.js +10 -10
- package/dist/hooks/useLookups.d.ts +5 -5
- package/dist/hooks/useLookups.js +62 -62
- package/dist/hooks/useNullableState.d.ts +2 -2
- package/dist/hooks/useNullableState.js +6 -6
- package/dist/hooks/usePages.d.ts +24 -24
- package/dist/hooks/usePages.js +141 -141
- package/dist/hooks/useQuery.d.ts +2 -2
- package/dist/hooks/useQuery.js +7 -7
- package/dist/hooks/useSubmissionIdIsValid.d.ts +3 -3
- package/dist/hooks/useSubmissionIdIsValid.js +19 -19
- package/dist/hooks/useToggleAll.d.ts +6 -0
- package/dist/hooks/useToggleAll.js +24 -0
- package/dist/hooks/useToggleAll.js.map +1 -0
- package/dist/hooks/useToggleComplianceChildren.d.ts +3 -3
- package/dist/hooks/useToggleComplianceChildren.js +13 -13
- package/dist/index.d.ts +23 -23
- package/dist/index.js +23 -23
- package/dist/services/attachments.d.ts +10 -10
- package/dist/services/attachments.js +72 -72
- package/dist/services/barcode-readers/quagger.d.ts +1 -1
- package/dist/services/barcode-readers/quagger.js +34 -34
- package/dist/services/blob-utils.d.ts +5 -5
- package/dist/services/blob-utils.js +73 -73
- package/dist/services/checkBsbsAreInvalid.d.ts +3 -3
- package/dist/services/checkBsbsAreInvalid.js +40 -40
- package/dist/services/checkIfAttachmentsAreUploading.d.ts +3 -3
- package/dist/services/checkIfAttachmentsAreUploading.js +57 -57
- package/dist/services/checkIfAttachmentsExist.d.ts +5 -5
- package/dist/services/checkIfAttachmentsExist.js +144 -144
- package/dist/services/checkIfBsbsAreValidating.d.ts +3 -3
- package/dist/services/checkIfBsbsAreValidating.js +40 -40
- package/dist/services/clean-form-elements-ctrl-model.d.ts +4 -0
- package/dist/services/clean-form-elements-ctrl-model.js +166 -0
- package/dist/services/clean-form-elements-ctrl-model.js.map +1 -0
- package/dist/services/cleanFormSubmissionModel.d.ts +6 -6
- package/dist/services/cleanFormSubmissionModel.js +203 -203
- package/dist/services/conditionally-show-element.d.ts +11 -0
- package/dist/services/conditionally-show-element.js +92 -0
- package/dist/services/conditionally-show-element.js.map +1 -0
- package/dist/services/conditionally-show-option.d.ts +3 -0
- package/dist/services/conditionally-show-option.js +135 -0
- package/dist/services/conditionally-show-option.js.map +1 -0
- package/dist/services/defaultCoordinates.d.ts +5 -5
- package/dist/services/defaultCoordinates.js +8 -8
- package/dist/services/download-file.d.ts +3 -3
- package/dist/services/download-file.js +90 -90
- package/dist/services/drawTimestampOnCanvas.d.ts +1 -1
- package/dist/services/drawTimestampOnCanvas.js +22 -22
- package/dist/services/flattenFormElements.d.ts +2 -0
- package/dist/services/flattenFormElements.js +13 -0
- package/dist/services/flattenFormElements.js.map +1 -0
- package/dist/services/form-validation.d.ts +10 -10
- package/dist/services/form-validation.js +561 -561
- package/dist/services/generate-default-data.d.ts +13 -13
- package/dist/services/generate-default-data.js +494 -494
- package/dist/services/generateCivicaNameRecordElements.d.ts +2 -2
- package/dist/services/generateCivicaNameRecordElements.js +140 -140
- package/dist/services/generateFreshdeskDependentFieldElements.d.ts +2 -2
- package/dist/services/generateFreshdeskDependentFieldElements.js +69 -69
- package/dist/services/getCorrectDateFromDateOnlyString.d.ts +2 -0
- package/dist/services/getCorrectDateFromDateOnlyString.js +4 -0
- package/dist/services/getCorrectDateFromDateOnlyString.js.map +1 -0
- package/dist/services/sanitize-html.d.ts +2 -2
- package/dist/services/sanitize-html.js +20 -20
- package/dist/services/scrolling-service.d.ts +7 -7
- package/dist/services/scrolling-service.js +38 -38
- package/dist/services/utils-service.d.ts +5 -5
- package/dist/services/utils-service.js +16 -16
- package/dist/styles/boolean.scss +12 -0
- package/dist/styles/ob-file.scss +63 -0
- package/dist/styles/progress.scss +0 -7
- package/dist/styles.css +0 -7
- package/dist/styles.css.map +1 -1
- package/dist/types/attachments.d.ts +19 -19
- package/dist/types/attachments.js +1 -1
- package/dist/types/form.d.ts +40 -40
- package/dist/types/form.js +2 -2
- package/package.json +1 -1
@@ -0,0 +1,14 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { FormTypes } from '@oneblink/types';
|
3
|
+
declare function Files<T>({ id, element, isDirty, attachments, validationMessage, displayValidationMessage, onAddFiles, onRenderAttachment, }: {
|
4
|
+
id: string;
|
5
|
+
element: FormTypes.FilesElement;
|
6
|
+
isDirty: boolean;
|
7
|
+
attachments: T[];
|
8
|
+
displayValidationMessage: boolean;
|
9
|
+
validationMessage: string | undefined;
|
10
|
+
onAddFiles: (files: File[]) => void;
|
11
|
+
onRenderAttachment: (attachment: T, index: number) => React.ReactNode;
|
12
|
+
}): JSX.Element;
|
13
|
+
declare const _default: React.MemoExoticComponent<typeof Files>;
|
14
|
+
export default _default;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import FormElementLabelContainer from '../FormElementLabelContainer';
|
3
|
+
function Files({ id, element, isDirty, attachments, validationMessage, displayValidationMessage, onAddFiles, onRenderAttachment, }) {
|
4
|
+
const inputRef = React.useRef(null);
|
5
|
+
const handleAdd = React.useCallback(() => {
|
6
|
+
if (!inputRef.current)
|
7
|
+
return;
|
8
|
+
// RESET HTML FILE INPUT VALUE SO FILES PREVIOUSLY ADDED AND REMOVED ARE RECOGNISED
|
9
|
+
inputRef.current.value = '';
|
10
|
+
inputRef.current.click();
|
11
|
+
}, []);
|
12
|
+
return (React.createElement("div", { className: "cypress-files-element" },
|
13
|
+
React.createElement(FormElementLabelContainer, { className: "ob-files", element: element, id: id, required: !!element.minEntries },
|
14
|
+
React.createElement("input", { ref: inputRef, type: "file", name: element.name, id: id, className: "file-input ob-input", multiple: element.maxEntries !== 1, disabled: element.readOnly, onChange: (event) => onAddFiles(event.target.files ? Array.from(event.target.files) : []) }),
|
15
|
+
React.createElement("div", { className: "control cypress-files-control" },
|
16
|
+
React.createElement("div", { className: "columns is-multiline" },
|
17
|
+
attachments.map(onRenderAttachment),
|
18
|
+
!element.readOnly &&
|
19
|
+
(!element.maxEntries ||
|
20
|
+
attachments.length < element.maxEntries) && (React.createElement("div", { className: "column is-one-quarter" },
|
21
|
+
React.createElement("button", { type: "button", className: "button ob-files__add-new-button", onClick: handleAdd },
|
22
|
+
React.createElement("i", { className: "material-icons icon-x-large" }, "add")))))),
|
23
|
+
(isDirty || displayValidationMessage) && !!validationMessage && (React.createElement("div", { role: "alert", className: "has-margin-top-8" },
|
24
|
+
React.createElement("div", { className: "has-text-danger ob-error__text cypress-validation-message" }, validationMessage))))));
|
25
|
+
}
|
26
|
+
export default React.memo(Files);
|
27
|
+
//# sourceMappingURL=Files.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Files.js","sourceRoot":"","sources":["../../../src/components/attachments/Files.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,yBAAyB,MAAM,8BAA8B,CAAA;AAEpE,SAAS,KAAK,CAAI,EAChB,EAAE,EACF,OAAO,EACP,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,UAAU,EACV,kBAAkB,GAUnB;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAA;IAErD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAM;QAC7B,mFAAmF;QACnF,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;QAC3B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,6BAAK,SAAS,EAAC,uBAAuB;QACpC,oBAAC,yBAAyB,IACxB,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU;YAE9B,+BACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,EAAE,EAAE,EAAE,EACN,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,OAAO,CAAC,UAAU,KAAK,CAAC,EAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAEtE;YACF,6BAAK,SAAS,EAAC,+BAA+B;gBAC5C,6BAAK,SAAS,EAAC,sBAAsB;oBAClC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC;oBACnC,CAAC,OAAO,CAAC,QAAQ;wBAChB,CAAC,CAAC,OAAO,CAAC,UAAU;4BAClB,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAC5C,6BAAK,SAAS,EAAC,uBAAuB;wBACpC,gCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iCAAiC,EAC3C,OAAO,EAAE,SAAS;4BAElB,2BAAG,SAAS,EAAC,6BAA6B,UAAQ,CAC3C,CACL,CACP,CACC,CACF;YAEL,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAC/D,6BAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,kBAAkB;gBAC5C,6BAAK,SAAS,EAAC,2DAA2D,IACvE,iBAAiB,CACd,CACF,CACP,CACyB,CACxB,CACP,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA","sourcesContent":["import * as React from 'react'\n\nimport { FormTypes } from '@oneblink/types'\nimport FormElementLabelContainer from '../FormElementLabelContainer'\n\nfunction Files<T>({\n id,\n element,\n isDirty,\n attachments,\n validationMessage,\n displayValidationMessage,\n onAddFiles,\n onRenderAttachment,\n}: {\n id: string\n element: FormTypes.FilesElement\n isDirty: boolean\n attachments: T[]\n displayValidationMessage: boolean\n validationMessage: string | undefined\n onAddFiles: (files: File[]) => void\n onRenderAttachment: (attachment: T, index: number) => React.ReactNode\n}) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleAdd = React.useCallback(() => {\n if (!inputRef.current) return\n // RESET HTML FILE INPUT VALUE SO FILES PREVIOUSLY ADDED AND REMOVED ARE RECOGNISED\n inputRef.current.value = ''\n inputRef.current.click()\n }, [])\n\n return (\n <div className=\"cypress-files-element\">\n <FormElementLabelContainer\n className=\"ob-files\"\n element={element}\n id={id}\n required={!!element.minEntries}\n >\n <input\n ref={inputRef}\n type=\"file\"\n name={element.name}\n id={id}\n className=\"file-input ob-input\"\n multiple={element.maxEntries !== 1}\n disabled={element.readOnly}\n onChange={(event) =>\n onAddFiles(event.target.files ? Array.from(event.target.files) : [])\n }\n />\n <div className=\"control cypress-files-control\">\n <div className=\"columns is-multiline\">\n {attachments.map(onRenderAttachment)}\n {!element.readOnly &&\n (!element.maxEntries ||\n attachments.length < element.maxEntries) && (\n <div className=\"column is-one-quarter\">\n <button\n type=\"button\"\n className=\"button ob-files__add-new-button\"\n onClick={handleAdd}\n >\n <i className=\"material-icons icon-x-large\">add</i>\n </button>\n </div>\n )}\n </div>\n </div>\n\n {(isDirty || displayValidationMessage) && !!validationMessage && (\n <div role=\"alert\" className=\"has-margin-top-8\">\n <div className=\"has-text-danger ob-error__text cypress-validation-message\">\n {validationMessage}\n </div>\n </div>\n )}\n </FormElementLabelContainer>\n </div>\n )\n}\n\nexport default React.memo(Files)\n"]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import useIsOffline from '../../hooks/useIsOffline';
|
3
|
+
function ImagePreviewUnavailable() {
|
4
|
+
const isOffline = useIsOffline();
|
5
|
+
return (React.createElement(React.Fragment, null, isOffline ? (React.createElement(React.Fragment, null,
|
6
|
+
React.createElement("i", { className: "material-icons has-text-warning icon-large has-margin-bottom-6" }, "wifi_off"),
|
7
|
+
React.createElement("p", null, "It looks like you're offline. Image preview will be available when connectivity is restored."))) : (React.createElement(React.Fragment, null,
|
8
|
+
React.createElement("i", { className: "material-icons has-text-grey icon-large has-margin-bottom-6" }, "attach_file"),
|
9
|
+
React.createElement("p", null, "You do not have access to preview this image, however, it will be included with your submission.")))));
|
10
|
+
}
|
11
|
+
export default React.memo(ImagePreviewUnavailable);
|
12
|
+
//# sourceMappingURL=ImagePreviewUnavailable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ImagePreviewUnavailable.js","sourceRoot":"","sources":["../../../src/components/attachments/ImagePreviewUnavailable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,YAAY,MAAM,0BAA0B,CAAA;AAEnD,SAAS,uBAAuB;IAC9B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,OAAO,CACL,0CACG,SAAS,CAAC,CAAC,CAAC,CACX;QACE,2BAAG,SAAS,EAAC,gEAAgE,eAEzE;QACJ,8HAGI,CACH,CACJ,CAAC,CAAC,CAAC,CACF;QACE,2BAAG,SAAS,EAAC,6DAA6D,kBAEtE;QACJ,kIAGI,CACH,CACJ,CACA,CACJ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport useIsOffline from '../../hooks/useIsOffline'\n\nfunction ImagePreviewUnavailable() {\n const isOffline = useIsOffline()\n\n return (\n <>\n {isOffline ? (\n <>\n <i className=\"material-icons has-text-warning icon-large has-margin-bottom-6\">\n wifi_off\n </i>\n <p>\n It looks like you're offline. Image preview will be available\n when connectivity is restored.\n </p>\n </>\n ) : (\n <>\n <i className=\"material-icons has-text-grey icon-large has-margin-bottom-6\">\n attach_file\n </i>\n <p>\n You do not have access to preview this image, however, it will be\n included with your submission.\n </p>\n </>\n )}\n </>\n )\n}\n\nexport default React.memo(ImagePreviewUnavailable)\n"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Tooltip } from '@mui/material';
|
3
|
+
import useIsOffline from '../../hooks/useIsOffline';
|
4
|
+
import OnLoading from '../OnLoading';
|
5
|
+
function UploadingAttachment() {
|
6
|
+
const isOffline = useIsOffline();
|
7
|
+
return (React.createElement(Tooltip, { title: isOffline
|
8
|
+
? 'Upload will start when you connect to the internet'
|
9
|
+
: 'Uploading' },
|
10
|
+
React.createElement("div", { className: "cypress-attachment-uploading" }, isOffline ? (React.createElement("i", { className: "material-icons has-text-warning" }, "wifi_off")) : (React.createElement(OnLoading, { tiny: true })))));
|
11
|
+
}
|
12
|
+
export default React.memo(UploadingAttachment);
|
13
|
+
//# sourceMappingURL=UploadingAttachment.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"UploadingAttachment.js","sourceRoot":"","sources":["../../../src/components/attachments/UploadingAttachment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,SAAS,mBAAmB;IAC1B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,OAAO,CACL,oBAAC,OAAO,IACN,KAAK,EACH,SAAS;YACP,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,WAAW;QAGjB,6BAAK,SAAS,EAAC,8BAA8B,IAC1C,SAAS,CAAC,CAAC,CAAC,CACX,2BAAG,SAAS,EAAC,iCAAiC,eAAa,CAC5D,CAAC,CAAC,CAAC,CACF,oBAAC,SAAS,IAAC,IAAI,SAAG,CACnB,CACG,CACE,CACX,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Tooltip } from '@mui/material'\nimport useIsOffline from '../../hooks/useIsOffline'\nimport OnLoading from '../OnLoading'\n\nfunction UploadingAttachment() {\n const isOffline = useIsOffline()\n\n return (\n <Tooltip\n title={\n isOffline\n ? 'Upload will start when you connect to the internet'\n : 'Uploading'\n }\n >\n <div className=\"cypress-attachment-uploading\">\n {isOffline ? (\n <i className=\"material-icons has-text-warning\">wifi_off</i>\n ) : (\n <OnLoading tiny />\n )}\n </div>\n </Tooltip>\n )\n}\n\nexport default React.memo(UploadingAttachment)\n"]}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { ColumnInstance } from 'react-table';
|
3
|
+
import { Checkbox } from '@mui/material';
|
4
|
+
import { SubmissionTypes } from '@oneblink/types';
|
5
|
+
declare function ColumnsConfigurationButton({ allColumns, getToggleHideAllColumnsProps, }: {
|
6
|
+
allColumns: ColumnInstance<SubmissionTypes.FormStoreRecord>[];
|
7
|
+
getToggleHideAllColumnsProps: () => React.ComponentProps<typeof Checkbox>;
|
8
|
+
}): JSX.Element;
|
9
|
+
declare const _default: React.MemoExoticComponent<typeof ColumnsConfigurationButton>;
|
10
|
+
export default _default;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, FormGroup, Typography, } from '@mui/material';
|
3
|
+
import { Settings as SettingsIcon } from '@mui/icons-material';
|
4
|
+
import useBooleanState from '../../hooks/useBooleanState';
|
5
|
+
function ColumnsConfigurationButton({ allColumns, getToggleHideAllColumnsProps, }) {
|
6
|
+
const [isConfiguringColumns, showColumnConfiguration, hideColumnConfiguration,] = useBooleanState(false);
|
7
|
+
const toggleHideAllColumnsProps = getToggleHideAllColumnsProps();
|
8
|
+
return (React.createElement(React.Fragment, null,
|
9
|
+
React.createElement(Button, { startIcon: React.createElement(SettingsIcon, null), onClick: showColumnConfiguration, variant: "outlined" }, "Columns"),
|
10
|
+
React.createElement(Dialog, { open: isConfiguringColumns, maxWidth: "sm", fullWidth: true, onClose: hideColumnConfiguration },
|
11
|
+
React.createElement(DialogTitle, null, "Column Configuration"),
|
12
|
+
React.createElement(DialogContent, { dividers: true },
|
13
|
+
React.createElement(FormGroup, null,
|
14
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { ...toggleHideAllColumnsProps, indeterminate: !!toggleHideAllColumnsProps.indeterminate }), label: React.createElement("b", null, "Toggle All") }),
|
15
|
+
allColumns.map((column) => {
|
16
|
+
return (React.createElement(React.Fragment, { key: column.id },
|
17
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { ...column.getToggleHiddenProps() }), label: React.createElement(React.Fragment, null,
|
18
|
+
column.headerText,
|
19
|
+
column.tooltip && (React.createElement(Typography, { component: "span", color: "textSecondary" },
|
20
|
+
' ',
|
21
|
+
"(",
|
22
|
+
column.tooltip,
|
23
|
+
")"))) })));
|
24
|
+
}))),
|
25
|
+
React.createElement(DialogActions, null,
|
26
|
+
React.createElement(Button, { onClick: hideColumnConfiguration, color: "primary", variant: "contained" }, "Done")))));
|
27
|
+
}
|
28
|
+
export default React.memo(ColumnsConfigurationButton);
|
29
|
+
//# sourceMappingURL=ColumnsConfigurationButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ColumnsConfigurationButton.js","sourceRoot":"","sources":["../../../src/components/formStore/ColumnsConfigurationButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,eAAe,MAAM,6BAA6B,CAAA;AAGzD,SAAS,0BAA0B,CAAC,EAClC,UAAU,EACV,4BAA4B,GAI7B;IACC,MAAM,CACJ,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACxB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAE1B,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAA;IAEhE,OAAO,CACL;QACE,oBAAC,MAAM,IACL,SAAS,EAAE,oBAAC,YAAY,OAAG,EAC3B,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAC,UAAU,cAGX;QACT,oBAAC,MAAM,IACL,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAC,IAAI,EACb,SAAS,QACT,OAAO,EAAE,uBAAuB;YAEhC,oBAAC,WAAW,+BAAmC;YAC/C,oBAAC,aAAa,IAAC,QAAQ;gBACrB,oBAAC,SAAS;oBACR,oBAAC,gBAAgB,IACf,OAAO,EACL,oBAAC,QAAQ,OACH,yBAAyB,EAC7B,aAAa,EAAE,CAAC,CAAC,yBAAyB,CAAC,aAAa,GACxD,EAEJ,KAAK,EAAE,4CAAiB,GACxB;oBACD,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACzB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,EAAE;4BAC5B,oBAAC,gBAAgB,IACf,OAAO,EAAE,oBAAC,QAAQ,OAAK,MAAM,CAAC,oBAAoB,EAAE,GAAI,EACxD,KAAK,EACH;oCACG,MAAM,CAAC,UAAU;oCACjB,MAAM,CAAC,OAAO,IAAI,CACjB,oBAAC,UAAU,IAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,eAAe;wCAC/C,GAAG;;wCACF,MAAM,CAAC,OAAO;4CACL,CACd,CACA,GAEL,CACa,CAClB,CAAA;oBACH,CAAC,CAAC,CACQ,CACE;YAChB,oBAAC,aAAa;gBACZ,oBAAC,MAAM,IACL,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,WAGZ,CACK,CACT,CACR,CACJ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { ColumnInstance } from 'react-table'\nimport {\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n FormGroup,\n Typography,\n} from '@mui/material'\nimport { Settings as SettingsIcon } from '@mui/icons-material'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport { SubmissionTypes } from '@oneblink/types'\n\nfunction ColumnsConfigurationButton({\n allColumns,\n getToggleHideAllColumnsProps,\n}: {\n allColumns: ColumnInstance<SubmissionTypes.FormStoreRecord>[]\n getToggleHideAllColumnsProps: () => React.ComponentProps<typeof Checkbox>\n}) {\n const [\n isConfiguringColumns,\n showColumnConfiguration,\n hideColumnConfiguration,\n ] = useBooleanState(false)\n\n const toggleHideAllColumnsProps = getToggleHideAllColumnsProps()\n\n return (\n <>\n <Button\n startIcon={<SettingsIcon />}\n onClick={showColumnConfiguration}\n variant=\"outlined\"\n >\n Columns\n </Button>\n <Dialog\n open={isConfiguringColumns}\n maxWidth=\"sm\"\n fullWidth\n onClose={hideColumnConfiguration}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent dividers>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n {...toggleHideAllColumnsProps}\n indeterminate={!!toggleHideAllColumnsProps.indeterminate}\n />\n }\n label={<b>Toggle All</b>}\n />\n {allColumns.map((column) => {\n return (\n <React.Fragment key={column.id}>\n <FormControlLabel\n control={<Checkbox {...column.getToggleHiddenProps()} />}\n label={\n <>\n {column.headerText}\n {column.tooltip && (\n <Typography component=\"span\" color=\"textSecondary\">\n {' '}\n ({column.tooltip})\n </Typography>\n )}\n </>\n }\n />\n </React.Fragment>\n )\n })}\n </FormGroup>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={hideColumnConfiguration}\n color=\"primary\"\n variant=\"contained\"\n >\n Done\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n\nexport default React.memo(ColumnsConfigurationButton)\n"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Form } from '@oneblink/types/typescript/forms';
|
3
|
+
import { ColumnInstance } from 'react-table';
|
4
|
+
import { FormStoreRecord } from '@oneblink/types/typescript/submissions';
|
5
|
+
import { formStoreService } from '@oneblink/apps';
|
6
|
+
declare function DownloadSubmissionDataButton({ disabled, form, filters, visibleColumns, }: {
|
7
|
+
disabled: boolean;
|
8
|
+
form: Form;
|
9
|
+
filters?: formStoreService.FormStoreFilters;
|
10
|
+
visibleColumns: ColumnInstance<FormStoreRecord>[];
|
11
|
+
}): JSX.Element;
|
12
|
+
declare const _default: React.MemoExoticComponent<typeof DownloadSubmissionDataButton>;
|
13
|
+
export default _default;
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Tooltip } from '@mui/material';
|
3
|
+
import { LoadingButton } from '@mui/lab';
|
4
|
+
import CsvIcon from '@mui/icons-material/Download';
|
5
|
+
import ErrorSnackbar from '../ErrorSnackbar';
|
6
|
+
import { formStoreService } from '@oneblink/apps';
|
7
|
+
function DownloadSubmissionDataButton({ disabled, form, filters, visibleColumns, }) {
|
8
|
+
const [{ isDownloadingCsv, downloadingCsvError }, setState] = React.useState({
|
9
|
+
isDownloadingCsv: false,
|
10
|
+
downloadingCsvError: null,
|
11
|
+
});
|
12
|
+
const clearError = React.useCallback(() => {
|
13
|
+
setState({
|
14
|
+
isDownloadingCsv: false,
|
15
|
+
downloadingCsvError: null,
|
16
|
+
});
|
17
|
+
}, []);
|
18
|
+
const downloadCsv = React.useCallback(async () => {
|
19
|
+
setState({ isDownloadingCsv: true, downloadingCsvError: null });
|
20
|
+
try {
|
21
|
+
await formStoreService.exportFormStoreRecords(form.name, {
|
22
|
+
formId: form.id,
|
23
|
+
filters,
|
24
|
+
includeColumns: visibleColumns.map((visibleColumn) => visibleColumn.id),
|
25
|
+
});
|
26
|
+
setState({
|
27
|
+
isDownloadingCsv: false,
|
28
|
+
downloadingCsvError: null,
|
29
|
+
});
|
30
|
+
}
|
31
|
+
catch (error) {
|
32
|
+
setState({
|
33
|
+
isDownloadingCsv: false,
|
34
|
+
downloadingCsvError: error,
|
35
|
+
});
|
36
|
+
}
|
37
|
+
}, [form, filters, visibleColumns]);
|
38
|
+
return (React.createElement(React.Fragment, null,
|
39
|
+
React.createElement(Tooltip, { title: "Download submission data as a CSV file" },
|
40
|
+
React.createElement(LoadingButton, { type: "button", loading: isDownloadingCsv, loadingPosition: "start", startIcon: React.createElement(CsvIcon, null), onClick: downloadCsv, color: "primary", variant: "outlined", disabled: disabled }, "Download")),
|
41
|
+
React.createElement(ErrorSnackbar, { open: !!downloadingCsvError, onClose: clearError },
|
42
|
+
React.createElement("span", { "data-cypress": "edit-dialog-error-message" }, downloadingCsvError && downloadingCsvError.message))));
|
43
|
+
}
|
44
|
+
export default React.memo(DownloadSubmissionDataButton);
|
45
|
+
//# sourceMappingURL=DownloadSubmissionDataButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DownloadSubmissionDataButton.js","sourceRoot":"","sources":["../../../src/components/formStore/DownloadSubmissionDataButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAElD,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,SAAS,4BAA4B,CAAC,EACpC,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,cAAc,GAMf;IACC,MAAM,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAGzE;QACD,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACxC,QAAQ,CAAC;YACP,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/C,QAAQ,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/D,IAAI;YACF,MAAM,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO;gBACP,cAAc,EAAE,cAAc,CAAC,GAAG,CAChC,CAAC,aAA8C,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CACrE;aACF,CAAC,CAAA;YACF,QAAQ,CAAC;gBACP,gBAAgB,EAAE,KAAK;gBACvB,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAA;SACH;QAAC,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC;gBACP,gBAAgB,EAAE,KAAK;gBACvB,mBAAmB,EAAE,KAAc;aACpC,CAAC,CAAA;SACH;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;IAEnC,OAAO,CACL;QACE,oBAAC,OAAO,IAAC,KAAK,EAAC,wCAAwC;YACrD,oBAAC,aAAa,IACZ,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAC,OAAO,EACvB,SAAS,EAAE,oBAAC,OAAO,OAAG,EACtB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,UAAU,EAClB,QAAQ,EAAE,QAAQ,eAGJ,CACR;QAEV,oBAAC,aAAa,IAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB,EAAE,OAAO,EAAE,UAAU;YAC7D,8CAAmB,2BAA2B,IAC3C,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,CAC9C,CACO,CACf,CACJ,CAAA;AACH,CAAC;AACD,eAAe,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Tooltip } from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport CsvIcon from '@mui/icons-material/Download'\nimport { Form } from '@oneblink/types/typescript/forms'\nimport ErrorSnackbar from '../ErrorSnackbar'\nimport { ColumnInstance } from 'react-table'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { formStoreService } from '@oneblink/apps'\n\nfunction DownloadSubmissionDataButton({\n disabled,\n form,\n filters,\n visibleColumns,\n}: {\n disabled: boolean\n form: Form\n filters?: formStoreService.FormStoreFilters\n visibleColumns: ColumnInstance<FormStoreRecord>[]\n}) {\n const [{ isDownloadingCsv, downloadingCsvError }, setState] = React.useState<{\n isDownloadingCsv: boolean\n downloadingCsvError: Error | null\n }>({\n isDownloadingCsv: false,\n downloadingCsvError: null,\n })\n const clearError = React.useCallback(() => {\n setState({\n isDownloadingCsv: false,\n downloadingCsvError: null,\n })\n }, [])\n\n const downloadCsv = React.useCallback(async () => {\n setState({ isDownloadingCsv: true, downloadingCsvError: null })\n try {\n await formStoreService.exportFormStoreRecords(form.name, {\n formId: form.id,\n filters,\n includeColumns: visibleColumns.map(\n (visibleColumn: ColumnInstance<FormStoreRecord>) => visibleColumn.id,\n ),\n })\n setState({\n isDownloadingCsv: false,\n downloadingCsvError: null,\n })\n } catch (error) {\n setState({\n isDownloadingCsv: false,\n downloadingCsvError: error as Error,\n })\n }\n }, [form, filters, visibleColumns])\n\n return (\n <>\n <Tooltip title=\"Download submission data as a CSV file\">\n <LoadingButton\n type=\"button\"\n loading={isDownloadingCsv}\n loadingPosition=\"start\"\n startIcon={<CsvIcon />}\n onClick={downloadCsv}\n color=\"primary\"\n variant=\"outlined\"\n disabled={disabled}\n >\n Download\n </LoadingButton>\n </Tooltip>\n\n <ErrorSnackbar open={!!downloadingCsvError} onClose={clearError}>\n <span data-cypress=\"edit-dialog-error-message\">\n {downloadingCsvError && downloadingCsvError.message}\n </span>\n </ErrorSnackbar>\n </>\n )\n}\nexport default React.memo(DownloadSubmissionDataButton)\n"]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Form } from '@oneblink/types/typescript/forms';
|
3
|
+
import { FormTypes } from '@oneblink/types';
|
4
|
+
declare function FormStoreContainer({ form, formElements, }: {
|
5
|
+
form: Form;
|
6
|
+
formElements: FormTypes.FormElementWithName[];
|
7
|
+
}): JSX.Element;
|
8
|
+
declare const _default: React.MemoExoticComponent<typeof FormStoreContainer>;
|
9
|
+
export default _default;
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { useHistory } from 'react-router-dom';
|
3
|
+
import querystring from 'query-string';
|
4
|
+
import { formStoreService } from '@oneblink/apps';
|
5
|
+
import useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad';
|
6
|
+
import FormStoreTable from './table';
|
7
|
+
import useFormStoreTable from './table/useFormStoreTable';
|
8
|
+
import { Box, Button, Grid, Typography } from '@mui/material';
|
9
|
+
import { FilterList as FilterIcon, Settings as SettingsIcon, Sync as SyncIcon, } from '@mui/icons-material';
|
10
|
+
import useSubmissionIdValidationMessage, { validateIsUUID, } from '../../hooks/useSubmissionIdIsValid';
|
11
|
+
import DownloadSubmissionDataButton from './DownloadSubmissionDataButton';
|
12
|
+
import ColumnsConfigurationButton from './ColumnsConfigurationButton';
|
13
|
+
import ErrorMessage from '../ErrorMessage';
|
14
|
+
import LoadingWithMessage from '../LoadingWithMessage';
|
15
|
+
import NoResourcesYet from '../NoResourcesYet';
|
16
|
+
function FormStoreContainer({ form, formElements, }) {
|
17
|
+
var _a;
|
18
|
+
const history = useHistory();
|
19
|
+
const { isLoading, loadError, records: formStoreRecords, onTryAgain, onRefresh, filters, onChangeFilters, } = useInfiniteScrollDataLoad({
|
20
|
+
limit: 50,
|
21
|
+
debounceSearchMs: 1000,
|
22
|
+
onDefaultFilters: React.useCallback((query) => {
|
23
|
+
let filters = {};
|
24
|
+
try {
|
25
|
+
if (typeof query.filters === 'string') {
|
26
|
+
filters = JSON.parse(query.filters);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
catch (error) {
|
30
|
+
console.warn('Could not parse filter as JSON', error);
|
31
|
+
}
|
32
|
+
if (!filters.sorting) {
|
33
|
+
filters.sorting = [
|
34
|
+
{ property: 'dateTimeSubmitted', direction: 'descending' },
|
35
|
+
];
|
36
|
+
}
|
37
|
+
return filters;
|
38
|
+
}, []),
|
39
|
+
onSearch: React.useCallback(async (filters, paging, abortSignal) => {
|
40
|
+
// Exclude all search parameters if searching
|
41
|
+
// for a specific submission using an identifier
|
42
|
+
const searchFilters = filters.submissionId
|
43
|
+
? {
|
44
|
+
submissionId: filters.submissionId,
|
45
|
+
}
|
46
|
+
: filters;
|
47
|
+
const result = await formStoreService.searchFormStoreRecords({
|
48
|
+
paging,
|
49
|
+
formId: form.id,
|
50
|
+
filters: searchFilters,
|
51
|
+
}, abortSignal);
|
52
|
+
return {
|
53
|
+
records: result.formStoreRecords,
|
54
|
+
meta: result.meta,
|
55
|
+
};
|
56
|
+
}, [form.id]),
|
57
|
+
onValidateFilters: React.useCallback((currentFilters) => {
|
58
|
+
var _a;
|
59
|
+
return validateIsUUID((_a = currentFilters.submissionId) === null || _a === void 0 ? void 0 : _a.$eq);
|
60
|
+
}, []),
|
61
|
+
});
|
62
|
+
React.useEffect(() => {
|
63
|
+
history.replace({
|
64
|
+
search: querystring.stringify({
|
65
|
+
filters: JSON.stringify(filters),
|
66
|
+
}),
|
67
|
+
});
|
68
|
+
}, [filters, history]);
|
69
|
+
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_a = filters.submissionId) === null || _a === void 0 ? void 0 : _a.$eq);
|
70
|
+
const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow, allColumns, visibleColumns, getToggleHideAllColumnsProps, } = useFormStoreTable({
|
71
|
+
formStoreRecords,
|
72
|
+
filters,
|
73
|
+
onChangeFilters,
|
74
|
+
submissionIdValidationMessage,
|
75
|
+
form,
|
76
|
+
formElements,
|
77
|
+
});
|
78
|
+
return (React.createElement(Box, { padding: 2, paddingBottom: 16 },
|
79
|
+
React.createElement(Grid, { container: true, spacing: 2, alignItems: "center" },
|
80
|
+
React.createElement(Grid, { item: true, xs: true },
|
81
|
+
React.createElement(Typography, { variant: "h6" }, form === null || form === void 0 ? void 0 : form.name)),
|
82
|
+
React.createElement(Grid, { item: true, xs: false },
|
83
|
+
React.createElement(Button, { startIcon: React.createElement(FilterIcon, null), disabled: !Object.keys(filters).length, onClick: () => {
|
84
|
+
onChangeFilters((currentFilters) => ({
|
85
|
+
sorting: currentFilters.sorting,
|
86
|
+
}), false);
|
87
|
+
}, variant: "text" }, "Clear Filters")),
|
88
|
+
React.createElement(Grid, { item: true, xs: false },
|
89
|
+
React.createElement(ColumnsConfigurationButton, { allColumns: allColumns, getToggleHideAllColumnsProps: getToggleHideAllColumnsProps })),
|
90
|
+
React.createElement(Grid, { item: true, xs: false },
|
91
|
+
React.createElement(DownloadSubmissionDataButton, { disabled: false, form: form, filters: filters, visibleColumns: visibleColumns })),
|
92
|
+
React.createElement(Grid, { item: true, xs: false },
|
93
|
+
React.createElement(Button, { startIcon: React.createElement(SyncIcon, null), onClick: onRefresh, color: "primary", variant: "contained", disabled: !!submissionIdValidationMessage }, "Refresh")),
|
94
|
+
React.createElement(Grid, { item: true, xs: 12 },
|
95
|
+
visibleColumns.length ? (React.createElement(FormStoreTable, { isEmptyResults: !formStoreRecords.length && !isLoading && !loadError, getTableProps: getTableProps, getTableBodyProps: getTableBodyProps, headerGroups: headerGroups, rows: rows, prepareRow: prepareRow, onChangeFilters: onChangeFilters })) : (React.createElement(NoResourcesYet, { IconComponent: SettingsIcon, title: "No Columns Visible", gutterBottom: true }, "It looks like you have hidden all of the available columns. Please enable at least one column to view submissions.")),
|
96
|
+
isLoading && (React.createElement(LoadingWithMessage, { message: "Loading more records..." })),
|
97
|
+
loadError && (React.createElement(React.Fragment, null,
|
98
|
+
React.createElement(ErrorMessage, { title: "Error Retrieving Submissions", gutterBottom: true, gutterTop: true }, loadError.message),
|
99
|
+
React.createElement(Grid, { container: true, justifyContent: "center" },
|
100
|
+
React.createElement(Button, { variant: "outlined", color: "primary", onClick: () => onTryAgain() }, "Try Again"))))))));
|
101
|
+
}
|
102
|
+
export default React.memo(FormStoreContainer);
|
103
|
+
//# sourceMappingURL=FormStore.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"FormStore.js","sourceRoot":"","sources":["../../../src/components/formStore/FormStore.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { useHistory } from 'react-router-dom'\nimport querystring from 'query-string'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { formStoreService } from '@oneblink/apps'\nimport useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad'\nimport FormStoreTable from './table'\nimport useFormStoreTable from './table/useFormStoreTable'\nimport { Box, Button, Grid, Typography } from '@mui/material'\nimport {\n FilterList as FilterIcon,\n Settings as SettingsIcon,\n Sync as SyncIcon,\n} from '@mui/icons-material'\nimport { Form } from '@oneblink/types/typescript/forms'\nimport useSubmissionIdValidationMessage, {\n validateIsUUID,\n} from '../../hooks/useSubmissionIdIsValid'\nimport { FormTypes } from '@oneblink/types'\nimport DownloadSubmissionDataButton from './DownloadSubmissionDataButton'\nimport ColumnsConfigurationButton from './ColumnsConfigurationButton'\nimport ErrorMessage from '../ErrorMessage'\nimport LoadingWithMessage from '../LoadingWithMessage'\nimport NoResourcesYet from '../NoResourcesYet'\n\nfunction FormStoreContainer({\n form,\n formElements,\n}: {\n form: Form\n formElements: FormTypes.FormElementWithName[]\n}) {\n const history = useHistory()\n const {\n isLoading,\n loadError,\n records: formStoreRecords,\n onTryAgain,\n onRefresh,\n filters,\n onChangeFilters,\n } = useInfiniteScrollDataLoad<\n formStoreService.FormStoreFilters,\n FormStoreRecord\n >({\n limit: 50,\n debounceSearchMs: 1000,\n onDefaultFilters: React.useCallback((query) => {\n let filters: formStoreService.FormStoreFilters = {}\n try {\n if (typeof query.filters === 'string') {\n filters = JSON.parse(query.filters)\n }\n } catch (error) {\n console.warn('Could not parse filter as JSON', error)\n }\n if (!filters.sorting) {\n filters.sorting = [\n { property: 'dateTimeSubmitted', direction: 'descending' },\n ]\n }\n return filters\n }, []),\n onSearch: React.useCallback(\n async (filters, paging, abortSignal) => {\n // Exclude all search parameters if searching\n // for a specific submission using an identifier\n const searchFilters = filters.submissionId\n ? {\n submissionId: filters.submissionId,\n }\n : filters\n const result = await formStoreService.searchFormStoreRecords(\n {\n paging,\n formId: form.id,\n filters: searchFilters,\n },\n abortSignal,\n )\n return {\n records: result.formStoreRecords,\n meta: result.meta,\n }\n },\n [form.id],\n ),\n onValidateFilters: React.useCallback(\n (currentFilters: formStoreService.FormStoreFilters) => {\n return validateIsUUID(currentFilters.submissionId?.$eq)\n },\n [],\n ),\n })\n\n React.useEffect(() => {\n history.replace({\n search: querystring.stringify({\n filters: JSON.stringify(filters),\n }),\n })\n }, [filters, history])\n\n const submissionIdValidationMessage = useSubmissionIdValidationMessage(\n filters.submissionId?.$eq,\n )\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n allColumns,\n visibleColumns,\n getToggleHideAllColumnsProps,\n } = useFormStoreTable({\n formStoreRecords,\n filters,\n onChangeFilters,\n submissionIdValidationMessage,\n form,\n formElements,\n })\n\n return (\n <Box padding={2} paddingBottom={16}>\n <Grid container spacing={2} alignItems=\"center\">\n <Grid item xs={true}>\n <Typography variant=\"h6\">{form?.name}</Typography>\n </Grid>\n <Grid item xs={false}>\n <Button\n startIcon={<FilterIcon />}\n disabled={!Object.keys(filters).length}\n onClick={() => {\n onChangeFilters(\n (currentFilters) => ({\n sorting: currentFilters.sorting,\n }),\n false,\n )\n }}\n variant=\"text\"\n >\n Clear Filters\n </Button>\n </Grid>\n <Grid item xs={false}>\n <ColumnsConfigurationButton\n allColumns={allColumns}\n getToggleHideAllColumnsProps={getToggleHideAllColumnsProps}\n />\n </Grid>\n <Grid item xs={false}>\n <DownloadSubmissionDataButton\n disabled={false}\n form={form}\n filters={filters}\n visibleColumns={visibleColumns}\n />\n </Grid>\n <Grid item xs={false}>\n <Button\n startIcon={<SyncIcon />}\n onClick={onRefresh}\n color=\"primary\"\n variant=\"contained\"\n disabled={!!submissionIdValidationMessage}\n >\n Refresh\n </Button>\n </Grid>\n <Grid item xs={12}>\n {visibleColumns.length ? (\n <FormStoreTable\n isEmptyResults={\n !formStoreRecords.length && !isLoading && !loadError\n }\n getTableProps={getTableProps}\n getTableBodyProps={getTableBodyProps}\n headerGroups={headerGroups}\n rows={rows}\n prepareRow={prepareRow}\n onChangeFilters={onChangeFilters}\n />\n ) : (\n <NoResourcesYet\n IconComponent={SettingsIcon}\n title=\"No Columns Visible\"\n gutterBottom\n >\n It looks like you have hidden all of the available columns. Please\n enable at least one column to view submissions.\n </NoResourcesYet>\n )}\n\n {isLoading && (\n <LoadingWithMessage message=\"Loading more records...\" />\n )}\n\n {loadError && (\n <>\n <ErrorMessage\n title=\"Error Retrieving Submissions\"\n gutterBottom\n gutterTop\n >\n {loadError.message}\n </ErrorMessage>\n <Grid container justifyContent=\"center\">\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain()}\n >\n Try Again\n </Button>\n </Grid>\n </>\n )}\n </Grid>\n </Grid>\n </Box>\n )\n}\n\nexport default React.memo(FormStoreContainer)\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { FormTypes } from '@oneblink/types';
|
3
|
-
export declare function FormStoreTableProvider({ form, children, }: {
|
4
|
-
form: FormTypes.Form;
|
5
|
-
children: React.ReactNode;
|
6
|
-
}): JSX.Element;
|
1
|
+
import * as React from 'react';
|
2
|
+
import { FormTypes } from '@oneblink/types';
|
3
|
+
export declare function FormStoreTableProvider({ form, children, }: {
|
4
|
+
form: FormTypes.Form;
|
5
|
+
children: React.ReactNode;
|
6
|
+
}): JSX.Element;
|
@@ -1,91 +1,91 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { useHistory } from 'react-router-dom';
|
3
|
-
import querystring from 'query-string';
|
4
|
-
import { formStoreService } from '@oneblink/apps';
|
5
|
-
import useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad';
|
6
|
-
import useFormStoreTable from './table/useFormStoreTable';
|
7
|
-
import { Button, Grid } from '@mui/material';
|
8
|
-
import { Settings as SettingsIcon } from '@mui/icons-material';
|
9
|
-
import useSubmissionIdValidationMessage, { validateIsUUID, } from '../../hooks/useSubmissionIdIsValid';
|
10
|
-
import ErrorMessage from '../messages/ErrorMessage';
|
11
|
-
import LoadingWithMessage from '../LoadingWithMessage';
|
12
|
-
import NoResourcesYet from '../messages/NoResourcesYet';
|
13
|
-
import FormStoreIcon from './display/FormStoreIcon';
|
14
|
-
import { FormStoreTableContext } from './useFormStoreTableContext';
|
15
|
-
export function FormStoreTableProvider({ form, children, }) {
|
16
|
-
var _a, _b;
|
17
|
-
const history = useHistory();
|
18
|
-
const { isLoading, loadError, records: formStoreRecords, onTryAgain, onRefresh, filters: parameters, onChangeFilters: onChangeParameters, } = useInfiniteScrollDataLoad({
|
19
|
-
limit: 50,
|
20
|
-
debounceSearchMs: 1000,
|
21
|
-
onDefaultFilters: React.useCallback((query) => {
|
22
|
-
let defaultParameters = {};
|
23
|
-
try {
|
24
|
-
if (typeof query.parameters === 'string') {
|
25
|
-
defaultParameters = JSON.parse(query.parameters);
|
26
|
-
}
|
27
|
-
}
|
28
|
-
catch (error) {
|
29
|
-
console.warn('Could not parse filter as JSON', error);
|
30
|
-
}
|
31
|
-
if (!defaultParameters.sorting) {
|
32
|
-
defaultParameters.sorting = [
|
33
|
-
{ property: 'dateTimeSubmitted', direction: 'descending' },
|
34
|
-
];
|
35
|
-
}
|
36
|
-
return defaultParameters;
|
37
|
-
}, []),
|
38
|
-
onSearch: React.useCallback(async (currentParameters, paging, abortSignal) => {
|
39
|
-
var _a;
|
40
|
-
// Exclude all search parameters if searching
|
41
|
-
// for a specific submission using an identifier
|
42
|
-
const filters = ((_a = currentParameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId)
|
43
|
-
? {
|
44
|
-
submissionId: currentParameters.filters.submissionId,
|
45
|
-
}
|
46
|
-
: currentParameters.filters;
|
47
|
-
const result = await formStoreService.searchFormStoreRecords({
|
48
|
-
...currentParameters,
|
49
|
-
paging,
|
50
|
-
formId: form.id,
|
51
|
-
filters,
|
52
|
-
}, abortSignal);
|
53
|
-
return {
|
54
|
-
records: result.formStoreRecords,
|
55
|
-
meta: result.meta,
|
56
|
-
};
|
57
|
-
}, [form.id]),
|
58
|
-
onValidateFilters: React.useCallback((currentParameters) => {
|
59
|
-
var _a, _b;
|
60
|
-
return validateIsUUID((_b = (_a = currentParameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
61
|
-
}, []),
|
62
|
-
});
|
63
|
-
React.useEffect(() => {
|
64
|
-
history.replace({
|
65
|
-
search: querystring.stringify({
|
66
|
-
parameters: JSON.stringify(parameters),
|
67
|
-
}),
|
68
|
-
});
|
69
|
-
}, [history, parameters]);
|
70
|
-
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_b = (_a = parameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
71
|
-
const formStoreTable = useFormStoreTable({
|
72
|
-
formStoreRecords,
|
73
|
-
parameters,
|
74
|
-
onChangeParameters,
|
75
|
-
submissionIdValidationMessage,
|
76
|
-
form,
|
77
|
-
onRefresh,
|
78
|
-
});
|
79
|
-
return (React.createElement(FormStoreTableContext.Provider, { value: formStoreTable },
|
80
|
-
children,
|
81
|
-
formStoreTable.visibleColumns.length ? (React.createElement(React.Fragment, null, !formStoreRecords.length && !isLoading && !loadError && (React.createElement(NoResourcesYet, { IconComponent: FormStoreIcon, title: "No Records Found..." }, "There are no Submissions matching your filters.")))) : (React.createElement(NoResourcesYet, { IconComponent: SettingsIcon, title: "No Columns Visible", gutterBottom: true }, "It looks like you have hidden all of the available columns. Please enable at least one column to view submissions.")),
|
82
|
-
isLoading && (React.createElement("div", { className: isLoading === 'INITIAL'
|
83
|
-
? 'ob-form-store-loading-initial'
|
84
|
-
: 'ob-form-store-loading-more' },
|
85
|
-
React.createElement(LoadingWithMessage, { message: "Loading more records..." }))),
|
86
|
-
loadError && (React.createElement(React.Fragment, null,
|
87
|
-
React.createElement(ErrorMessage, { title: "Error Retrieving Submissions", gutterBottom: true, gutterTop: true }, loadError.message),
|
88
|
-
React.createElement(Grid, { container: true, justifyContent: "center" },
|
89
|
-
React.createElement(Button, { className: "ob-form-store-try-again-button", variant: "outlined", color: "primary", onClick: () => onTryAgain() }, "Try Again"))))));
|
90
|
-
}
|
1
|
+
import * as React from 'react';
|
2
|
+
import { useHistory } from 'react-router-dom';
|
3
|
+
import querystring from 'query-string';
|
4
|
+
import { formStoreService } from '@oneblink/apps';
|
5
|
+
import useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad';
|
6
|
+
import useFormStoreTable from './table/useFormStoreTable';
|
7
|
+
import { Button, Grid } from '@mui/material';
|
8
|
+
import { Settings as SettingsIcon } from '@mui/icons-material';
|
9
|
+
import useSubmissionIdValidationMessage, { validateIsUUID, } from '../../hooks/useSubmissionIdIsValid';
|
10
|
+
import ErrorMessage from '../messages/ErrorMessage';
|
11
|
+
import LoadingWithMessage from '../LoadingWithMessage';
|
12
|
+
import NoResourcesYet from '../messages/NoResourcesYet';
|
13
|
+
import FormStoreIcon from './display/FormStoreIcon';
|
14
|
+
import { FormStoreTableContext } from './useFormStoreTableContext';
|
15
|
+
export function FormStoreTableProvider({ form, children, }) {
|
16
|
+
var _a, _b;
|
17
|
+
const history = useHistory();
|
18
|
+
const { isLoading, loadError, records: formStoreRecords, onTryAgain, onRefresh, filters: parameters, onChangeFilters: onChangeParameters, } = useInfiniteScrollDataLoad({
|
19
|
+
limit: 50,
|
20
|
+
debounceSearchMs: 1000,
|
21
|
+
onDefaultFilters: React.useCallback((query) => {
|
22
|
+
let defaultParameters = {};
|
23
|
+
try {
|
24
|
+
if (typeof query.parameters === 'string') {
|
25
|
+
defaultParameters = JSON.parse(query.parameters);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
catch (error) {
|
29
|
+
console.warn('Could not parse filter as JSON', error);
|
30
|
+
}
|
31
|
+
if (!defaultParameters.sorting) {
|
32
|
+
defaultParameters.sorting = [
|
33
|
+
{ property: 'dateTimeSubmitted', direction: 'descending' },
|
34
|
+
];
|
35
|
+
}
|
36
|
+
return defaultParameters;
|
37
|
+
}, []),
|
38
|
+
onSearch: React.useCallback(async (currentParameters, paging, abortSignal) => {
|
39
|
+
var _a;
|
40
|
+
// Exclude all search parameters if searching
|
41
|
+
// for a specific submission using an identifier
|
42
|
+
const filters = ((_a = currentParameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId)
|
43
|
+
? {
|
44
|
+
submissionId: currentParameters.filters.submissionId,
|
45
|
+
}
|
46
|
+
: currentParameters.filters;
|
47
|
+
const result = await formStoreService.searchFormStoreRecords({
|
48
|
+
...currentParameters,
|
49
|
+
paging,
|
50
|
+
formId: form.id,
|
51
|
+
filters,
|
52
|
+
}, abortSignal);
|
53
|
+
return {
|
54
|
+
records: result.formStoreRecords,
|
55
|
+
meta: result.meta,
|
56
|
+
};
|
57
|
+
}, [form.id]),
|
58
|
+
onValidateFilters: React.useCallback((currentParameters) => {
|
59
|
+
var _a, _b;
|
60
|
+
return validateIsUUID((_b = (_a = currentParameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
61
|
+
}, []),
|
62
|
+
});
|
63
|
+
React.useEffect(() => {
|
64
|
+
history.replace({
|
65
|
+
search: querystring.stringify({
|
66
|
+
parameters: JSON.stringify(parameters),
|
67
|
+
}),
|
68
|
+
});
|
69
|
+
}, [history, parameters]);
|
70
|
+
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_b = (_a = parameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
71
|
+
const formStoreTable = useFormStoreTable({
|
72
|
+
formStoreRecords,
|
73
|
+
parameters,
|
74
|
+
onChangeParameters,
|
75
|
+
submissionIdValidationMessage,
|
76
|
+
form,
|
77
|
+
onRefresh,
|
78
|
+
});
|
79
|
+
return (React.createElement(FormStoreTableContext.Provider, { value: formStoreTable },
|
80
|
+
children,
|
81
|
+
formStoreTable.visibleColumns.length ? (React.createElement(React.Fragment, null, !formStoreRecords.length && !isLoading && !loadError && (React.createElement(NoResourcesYet, { IconComponent: FormStoreIcon, title: "No Records Found..." }, "There are no Submissions matching your filters.")))) : (React.createElement(NoResourcesYet, { IconComponent: SettingsIcon, title: "No Columns Visible", gutterBottom: true }, "It looks like you have hidden all of the available columns. Please enable at least one column to view submissions.")),
|
82
|
+
isLoading && (React.createElement("div", { className: isLoading === 'INITIAL'
|
83
|
+
? 'ob-form-store-loading-initial'
|
84
|
+
: 'ob-form-store-loading-more' },
|
85
|
+
React.createElement(LoadingWithMessage, { message: "Loading more records..." }))),
|
86
|
+
loadError && (React.createElement(React.Fragment, null,
|
87
|
+
React.createElement(ErrorMessage, { title: "Error Retrieving Submissions", gutterBottom: true, gutterTop: true }, loadError.message),
|
88
|
+
React.createElement(Grid, { container: true, justifyContent: "center" },
|
89
|
+
React.createElement(Button, { className: "ob-form-store-try-again-button", variant: "outlined", color: "primary", onClick: () => onTryAgain() }, "Try Again"))))));
|
90
|
+
}
|
91
91
|
//# sourceMappingURL=FormStoreTableProvider.js.map
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { Button } from '@mui/material';
|
3
|
-
declare function OneBlinkFormStoreClearFiltersButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
-
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreClearFiltersButton>;
|
5
|
-
export default _default;
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Button } from '@mui/material';
|
3
|
+
declare function OneBlinkFormStoreClearFiltersButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreClearFiltersButton>;
|
5
|
+
export default _default;
|