@oneblink/apps-react 2.2.0 → 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 -0
- package/dist/components/renderer/ProgressBar.js +7 -0
- package/dist/components/renderer/ProgressBar.js.map +1 -0
- 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 -30
- package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -1
- package/dist/components/renderer/attachments/FileCard.d.ts +19 -18
- package/dist/components/renderer/attachments/FileCard.js +60 -57
- 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 -0
- package/dist/components/renderer/attachments/ProgressBar.js +34 -0
- package/dist/components/renderer/attachments/ProgressBar.js.map +1 -0
- package/dist/components/renderer/attachments/UploadingAttachment.d.ts +4 -4
- package/dist/components/renderer/attachments/UploadingAttachment.js +12 -12
- 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 -220
- 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/FormElementFile.js.map +1 -1
- 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 -135
- 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 -11
- package/dist/hooks/attachments/useAttachment.js +242 -235
- package/dist/hooks/attachments/useAttachment.js.map +1 -1
- 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 -22
- package/dist/index.js +23 -22
- package/dist/index.js.map +1 -1
- 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 +8 -0
- package/dist/styles.css +7 -0
- package/dist/styles.css.map +1 -1
- package/dist/styles.scss +1 -0
- 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 +2 -2
@@ -0,0 +1,92 @@
|
|
1
|
+
import { conditionalLogicService } from '@oneblink/sdk-core';
|
2
|
+
const getParentFormElements = (formElementsCtrl, childElement) => {
|
3
|
+
const parentElement = formElementsCtrl.flattenedElements.find((element) => {
|
4
|
+
return ((element.type === 'page' || element.type === 'section') &&
|
5
|
+
element.elements.some(({ id }) => id === childElement.id));
|
6
|
+
});
|
7
|
+
if (parentElement &&
|
8
|
+
(parentElement.type === 'page' || parentElement.type === 'section')) {
|
9
|
+
return [
|
10
|
+
parentElement,
|
11
|
+
...getParentFormElements(formElementsCtrl, parentElement),
|
12
|
+
];
|
13
|
+
}
|
14
|
+
return [];
|
15
|
+
};
|
16
|
+
const conditionallyShowByPredicate = (formElementsCtrl, predicate, elementsEvaluated) => {
|
17
|
+
const predicateElement = formElementsCtrl.flattenedElements.find((element) => {
|
18
|
+
return element.id === predicate.elementId;
|
19
|
+
});
|
20
|
+
// If we cant find the element used for the predicate,
|
21
|
+
// we can check to see if the element being evaluated
|
22
|
+
// is in a repeatable set and the predicate element is
|
23
|
+
// in a parent list of elements.
|
24
|
+
if (!predicateElement) {
|
25
|
+
if (formElementsCtrl.parentFormElementsCtrl) {
|
26
|
+
return conditionallyShowByPredicate(formElementsCtrl.parentFormElementsCtrl, predicate, elementsEvaluated);
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
// Here we will also need to check if the predicate element
|
33
|
+
// is on a page/section element and the page/section element
|
34
|
+
// is also hidden. If it is hidden we will treat this
|
35
|
+
// predicate element as hidden as well.
|
36
|
+
const parentFormElements = getParentFormElements(formElementsCtrl, predicateElement);
|
37
|
+
for (const parentFormElement of parentFormElements) {
|
38
|
+
if (!conditionallyShowElement(formElementsCtrl, parentFormElement, [
|
39
|
+
...elementsEvaluated,
|
40
|
+
])) {
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
// Check to see if the model has one of the valid values to show the element
|
45
|
+
return (conditionallyShowElement(formElementsCtrl, predicateElement, elementsEvaluated) &&
|
46
|
+
conditionalLogicService.evaluateConditionalPredicate({
|
47
|
+
predicate,
|
48
|
+
submission: formElementsCtrl.model,
|
49
|
+
predicateElement,
|
50
|
+
}));
|
51
|
+
};
|
52
|
+
export default function conditionallyShowElement(formElementsCtrl, elementToEvaluate, elementsEvaluated) {
|
53
|
+
// If the element does not have the `conditionallyShow` flag set,
|
54
|
+
// we can always show the element.
|
55
|
+
if (!elementToEvaluate ||
|
56
|
+
!elementToEvaluate.conditionallyShow ||
|
57
|
+
!Array.isArray(elementToEvaluate.conditionallyShowPredicates) ||
|
58
|
+
!elementToEvaluate.conditionallyShowPredicates.length) {
|
59
|
+
return true;
|
60
|
+
}
|
61
|
+
const conditionallyShowPredicates = elementToEvaluate.conditionallyShowPredicates;
|
62
|
+
// Check to see if this element has already been used to evaluate
|
63
|
+
// if the element should be shown based on parent element conditional logic
|
64
|
+
const elementAlreadyEvaluated = elementsEvaluated.find(({ id }) => id === elementToEvaluate.id);
|
65
|
+
if (elementAlreadyEvaluated) {
|
66
|
+
throw new Error(`Your conditional logic has caused an infinite loop. Check the "${elementAlreadyEvaluated.label}" form element to ensure element A does not rely on element B if element B also relies on element A.`);
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
elementsEvaluated.push({
|
70
|
+
id: elementToEvaluate.id,
|
71
|
+
label: elementToEvaluate.type === 'form' ||
|
72
|
+
elementToEvaluate.type === 'infoPage'
|
73
|
+
? elementToEvaluate.name
|
74
|
+
: elementToEvaluate.label,
|
75
|
+
});
|
76
|
+
}
|
77
|
+
const predicateFunction = (predicate) => {
|
78
|
+
// Spread the array of elements evaluated so that each predicate can
|
79
|
+
// evaluate the tree without causing false positives for infinite
|
80
|
+
// loop conditional logic
|
81
|
+
return conditionallyShowByPredicate(formElementsCtrl, predicate, [
|
82
|
+
...elementsEvaluated,
|
83
|
+
]);
|
84
|
+
};
|
85
|
+
if (elementToEvaluate.requiresAllConditionallyShowPredicates) {
|
86
|
+
return conditionallyShowPredicates.every(predicateFunction);
|
87
|
+
}
|
88
|
+
else {
|
89
|
+
return conditionallyShowPredicates.some(predicateFunction);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
//# sourceMappingURL=conditionally-show-element.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionally-show-element.js","sourceRoot":"","sources":["../../src/services/conditionally-show-element.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, ConditionTypes } from '@oneblink/types'\nimport { conditionalLogicService } from '@oneblink/sdk-core'\nimport { FormSubmissionModel } from '../types/form'\n\nexport type FormElementsCtrl = {\n model: FormSubmissionModel\n flattenedElements: import('@oneblink/types').FormTypes.FormElement[]\n parentFormElementsCtrl?: FormElementsCtrl\n}\n\nconst getParentFormElements = (\n formElementsCtrl: FormElementsCtrl,\n childElement: FormTypes.FormElement,\n): Array<FormTypes.SectionElement | FormTypes.PageElement> => {\n const parentElement = formElementsCtrl.flattenedElements.find((element) => {\n return (\n (element.type === 'page' || element.type === 'section') &&\n element.elements.some(({ id }) => id === childElement.id)\n )\n })\n if (\n parentElement &&\n (parentElement.type === 'page' || parentElement.type === 'section')\n ) {\n return [\n parentElement,\n ...getParentFormElements(formElementsCtrl, parentElement),\n ]\n }\n return []\n}\n\nconst conditionallyShowByPredicate = (\n formElementsCtrl: FormElementsCtrl,\n predicate: ConditionTypes.ConditionalPredicate,\n elementsEvaluated: Array<{ id: string; label: string }>,\n): FormTypes.FormElement | boolean => {\n const predicateElement = formElementsCtrl.flattenedElements.find(\n (element: FormTypes.FormElement) => {\n return element.id === predicate.elementId\n },\n )\n\n // If we cant find the element used for the predicate,\n // we can check to see if the element being evaluated\n // is in a repeatable set and the predicate element is\n // in a parent list of elements.\n if (!predicateElement) {\n if (formElementsCtrl.parentFormElementsCtrl) {\n return conditionallyShowByPredicate(\n formElementsCtrl.parentFormElementsCtrl,\n predicate,\n elementsEvaluated,\n )\n } else {\n return false\n }\n }\n\n // Here we will also need to check if the predicate element\n // is on a page/section element and the page/section element\n // is also hidden. If it is hidden we will treat this\n // predicate element as hidden as well.\n const parentFormElements = getParentFormElements(\n formElementsCtrl,\n predicateElement,\n )\n for (const parentFormElement of parentFormElements) {\n if (\n !conditionallyShowElement(formElementsCtrl, parentFormElement, [\n ...elementsEvaluated,\n ])\n ) {\n return false\n }\n }\n\n // Check to see if the model has one of the valid values to show the element\n return (\n conditionallyShowElement(\n formElementsCtrl,\n predicateElement,\n elementsEvaluated,\n ) &&\n conditionalLogicService.evaluateConditionalPredicate({\n predicate,\n submission: formElementsCtrl.model,\n predicateElement,\n })\n )\n}\n\nexport default function conditionallyShowElement(\n formElementsCtrl: FormElementsCtrl,\n elementToEvaluate: FormTypes.FormElement,\n elementsEvaluated: Array<{ id: string; label: string }>,\n): boolean {\n // If the element does not have the `conditionallyShow` flag set,\n // we can always show the element.\n if (\n !elementToEvaluate ||\n !elementToEvaluate.conditionallyShow ||\n !Array.isArray(elementToEvaluate.conditionallyShowPredicates) ||\n !elementToEvaluate.conditionallyShowPredicates.length\n ) {\n return true\n }\n const conditionallyShowPredicates =\n elementToEvaluate.conditionallyShowPredicates\n\n // Check to see if this element has already been used to evaluate\n // if the element should be shown based on parent element conditional logic\n const elementAlreadyEvaluated = elementsEvaluated.find(\n ({ id }) => id === elementToEvaluate.id,\n )\n if (elementAlreadyEvaluated) {\n throw new Error(\n `Your conditional logic has caused an infinite loop. Check the \"${elementAlreadyEvaluated.label}\" form element to ensure element A does not rely on element B if element B also relies on element A.`,\n )\n } else {\n elementsEvaluated.push({\n id: elementToEvaluate.id,\n label:\n elementToEvaluate.type === 'form' ||\n elementToEvaluate.type === 'infoPage'\n ? elementToEvaluate.name\n : elementToEvaluate.label,\n })\n }\n\n const predicateFunction = (\n predicate: ConditionTypes.ConditionalPredicate,\n ) => {\n // Spread the array of elements evaluated so that each predicate can\n // evaluate the tree without causing false positives for infinite\n // loop conditional logic\n return conditionallyShowByPredicate(formElementsCtrl, predicate, [\n ...elementsEvaluated,\n ])\n }\n\n if (elementToEvaluate.requiresAllConditionallyShowPredicates) {\n return conditionallyShowPredicates.every(predicateFunction)\n } else {\n return conditionallyShowPredicates.some(predicateFunction)\n }\n}\n"]}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { FormTypes } from '@oneblink/types';
|
2
|
+
import { FormElementsCtrl } from '../services/conditionally-show-element';
|
3
|
+
export default function conditionallyShowOption(formElementsCtrl: FormElementsCtrl, elementToEvaluate: FormTypes.FormElementWithOptions, optionToEvaluate: FormTypes.ChoiceElementOption, optionsEvaluated: string[]): boolean;
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import { conditionalLogicService } from '@oneblink/sdk-core';
|
2
|
+
import conditionallyShowElement from '../services/conditionally-show-element';
|
3
|
+
const handleAttributePredicate = (predicate, model, predicateElement) => {
|
4
|
+
const values = model[predicateElement.name];
|
5
|
+
if (!values)
|
6
|
+
return true;
|
7
|
+
if (Array.isArray(values) &&
|
8
|
+
(!values.length ||
|
9
|
+
!values.filter((value) => typeof value !== 'undefined').length)) {
|
10
|
+
return true;
|
11
|
+
}
|
12
|
+
return conditionalLogicService.evaluateConditionalOptionsPredicate({
|
13
|
+
predicate: {
|
14
|
+
type: 'OPTIONS',
|
15
|
+
elementId: predicate.elementId,
|
16
|
+
optionIds: predicate.optionIds,
|
17
|
+
},
|
18
|
+
submission: model,
|
19
|
+
predicateElement,
|
20
|
+
});
|
21
|
+
};
|
22
|
+
const conditionallyShowOptionByPredicate = (formElementsCtrl, predicate, elementsEvaluated) => {
|
23
|
+
// Validate the predicate data, if it is invalid,
|
24
|
+
// we will always show the field
|
25
|
+
if (!predicate ||
|
26
|
+
!predicate.elementId ||
|
27
|
+
!predicate.optionIds ||
|
28
|
+
!predicate.optionIds.length) {
|
29
|
+
return true;
|
30
|
+
}
|
31
|
+
const predicateElement = formElementsCtrl.flattenedElements.find((element) => {
|
32
|
+
return element.id === predicate.elementId;
|
33
|
+
});
|
34
|
+
// If we cant find the element used for the predicate,
|
35
|
+
// we can check to see if the element being evaluated
|
36
|
+
// is in a repeatable set and the predicate element is
|
37
|
+
// in a parent list of elements.
|
38
|
+
if (!predicateElement) {
|
39
|
+
if (formElementsCtrl.parentFormElementsCtrl) {
|
40
|
+
return conditionallyShowOptionByPredicate(formElementsCtrl.parentFormElementsCtrl, predicate, elementsEvaluated);
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
return false;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
if (predicateElement.type !== 'compliance' &&
|
47
|
+
predicateElement.type !== 'select' &&
|
48
|
+
predicateElement.type !== 'autocomplete' &&
|
49
|
+
predicateElement.type !== 'checkboxes' &&
|
50
|
+
predicateElement.type !== 'radio') {
|
51
|
+
return false;
|
52
|
+
}
|
53
|
+
// If the predicate element does not have any options to evaluate,
|
54
|
+
// we will show the element.
|
55
|
+
// Unless the predicate element has dynamic options and
|
56
|
+
// options have not been fetched yet.
|
57
|
+
if (!Array.isArray(predicateElement.options)) {
|
58
|
+
return predicateElement.optionsType !== 'DYNAMIC';
|
59
|
+
}
|
60
|
+
const everyOptionIsShowing = predicate.optionIds.every((id) => {
|
61
|
+
var _a;
|
62
|
+
const predicateOption = (_a = predicateElement.options) === null || _a === void 0 ? void 0 : _a.find((o) => o.id === id);
|
63
|
+
if (!predicateOption)
|
64
|
+
return false;
|
65
|
+
return conditionallyShowOption({ model: formElementsCtrl.model, flattenedElements: [] }, predicateElement, predicateOption, elementsEvaluated);
|
66
|
+
});
|
67
|
+
if (!everyOptionIsShowing) {
|
68
|
+
return false;
|
69
|
+
}
|
70
|
+
// Check to see if the model has one of the valid values to show the element
|
71
|
+
return handleAttributePredicate(predicate, formElementsCtrl.model, predicateElement);
|
72
|
+
};
|
73
|
+
const isAttributeFilterValid = (formElementsCtrl, predicate, elementsEvaluated) => {
|
74
|
+
const predicateElement = formElementsCtrl.flattenedElements.find((element) => {
|
75
|
+
return element.id === predicate.elementId;
|
76
|
+
});
|
77
|
+
// If we cant find the element used for the predicate,
|
78
|
+
// we can check to see if the element being evaluated
|
79
|
+
// is in a repeatable set and the predicate element is
|
80
|
+
// in a parent list of elements.
|
81
|
+
if (!predicateElement) {
|
82
|
+
if (formElementsCtrl.parentFormElementsCtrl) {
|
83
|
+
return isAttributeFilterValid(formElementsCtrl.parentFormElementsCtrl, predicate, elementsEvaluated);
|
84
|
+
}
|
85
|
+
else {
|
86
|
+
return false;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
// now we have the model and predicate element, verify that the predicate element
|
90
|
+
// is not hidden
|
91
|
+
if (
|
92
|
+
// Will never be a page, just making typescript happy :)
|
93
|
+
predicateElement.type === 'page' ||
|
94
|
+
predicateElement.type === 'section' ||
|
95
|
+
!conditionallyShowElement(formElementsCtrl, predicateElement, [])) {
|
96
|
+
return false;
|
97
|
+
}
|
98
|
+
// verify that at least one option is selected
|
99
|
+
const values = formElementsCtrl.model[predicateElement.name];
|
100
|
+
if (!values)
|
101
|
+
return false;
|
102
|
+
// if the model value is an array, verify that it has a selection
|
103
|
+
if (Array.isArray(values) &&
|
104
|
+
(!values.length ||
|
105
|
+
!values.filter((value) => typeof value !== 'undefined').length)) {
|
106
|
+
return false;
|
107
|
+
}
|
108
|
+
return true;
|
109
|
+
};
|
110
|
+
export default function conditionallyShowOption(formElementsCtrl, elementToEvaluate, optionToEvaluate, optionsEvaluated) {
|
111
|
+
// If the element does not have the `conditionallyShow` flag set,
|
112
|
+
// we can always show the element.
|
113
|
+
if (!elementToEvaluate.conditionallyShowOptions ||
|
114
|
+
!optionToEvaluate ||
|
115
|
+
!optionToEvaluate.attributes ||
|
116
|
+
!Array.isArray(optionToEvaluate.attributes) ||
|
117
|
+
!optionToEvaluate.attributes.length) {
|
118
|
+
return true;
|
119
|
+
}
|
120
|
+
// Check to see if this element has already been used to evaluate
|
121
|
+
// if the element should be shown based on parent element conditional logic
|
122
|
+
if (optionsEvaluated.some((optionId) => optionId === optionToEvaluate.id)) {
|
123
|
+
throw new Error('Your conditional logic has caused an infinite loop. Check the following Fields to ensure element A does not rely on element B if element B also relies on element A.');
|
124
|
+
}
|
125
|
+
else {
|
126
|
+
optionsEvaluated.push(optionToEvaluate.id);
|
127
|
+
}
|
128
|
+
const validPredicates = (optionToEvaluate.attributes || []).filter((predicate) => {
|
129
|
+
return isAttributeFilterValid(formElementsCtrl, predicate, optionsEvaluated);
|
130
|
+
});
|
131
|
+
if (!validPredicates.length)
|
132
|
+
return true;
|
133
|
+
return validPredicates.some((predicate) => conditionallyShowOptionByPredicate(formElementsCtrl, predicate, optionsEvaluated));
|
134
|
+
}
|
135
|
+
//# sourceMappingURL=conditionally-show-option.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionally-show-option.js","sourceRoot":"","sources":["../../src/services/conditionally-show-option.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { conditionalLogicService } from '@oneblink/sdk-core'\n\nimport conditionallyShowElement, {\n FormElementsCtrl,\n} from '../services/conditionally-show-element'\nimport { FormSubmissionModel } from '../types/form'\n\nconst handleAttributePredicate = (\n predicate: FormTypes.ChoiceElementOptionAttribute,\n model: FormSubmissionModel,\n predicateElement: FormTypes.FormElementWithOptions,\n) => {\n const values = model[predicateElement.name]\n if (!values) return true\n\n if (\n Array.isArray(values) &&\n (!values.length ||\n !values.filter((value) => typeof value !== 'undefined').length)\n ) {\n return true\n }\n\n return conditionalLogicService.evaluateConditionalOptionsPredicate({\n predicate: {\n type: 'OPTIONS',\n elementId: predicate.elementId,\n optionIds: predicate.optionIds,\n },\n submission: model,\n predicateElement,\n })\n}\n\nconst conditionallyShowOptionByPredicate = (\n formElementsCtrl: FormElementsCtrl,\n predicate: FormTypes.ChoiceElementOptionAttribute,\n elementsEvaluated: string[],\n): boolean => {\n // Validate the predicate data, if it is invalid,\n // we will always show the field\n if (\n !predicate ||\n !predicate.elementId ||\n !predicate.optionIds ||\n !predicate.optionIds.length\n ) {\n return true\n }\n\n const predicateElement = formElementsCtrl.flattenedElements.find(\n (element) => {\n return element.id === predicate.elementId\n },\n )\n\n // If we cant find the element used for the predicate,\n // we can check to see if the element being evaluated\n // is in a repeatable set and the predicate element is\n // in a parent list of elements.\n if (!predicateElement) {\n if (formElementsCtrl.parentFormElementsCtrl) {\n return conditionallyShowOptionByPredicate(\n formElementsCtrl.parentFormElementsCtrl,\n predicate,\n elementsEvaluated,\n )\n } else {\n return false\n }\n }\n\n if (\n predicateElement.type !== 'compliance' &&\n predicateElement.type !== 'select' &&\n predicateElement.type !== 'autocomplete' &&\n predicateElement.type !== 'checkboxes' &&\n predicateElement.type !== 'radio'\n ) {\n return false\n }\n\n // If the predicate element does not have any options to evaluate,\n // we will show the element.\n // Unless the predicate element has dynamic options and\n // options have not been fetched yet.\n if (!Array.isArray(predicateElement.options)) {\n return predicateElement.optionsType !== 'DYNAMIC'\n }\n\n const everyOptionIsShowing = predicate.optionIds.every((id) => {\n const predicateOption = predicateElement.options?.find((o) => o.id === id)\n if (!predicateOption) return false\n\n return conditionallyShowOption(\n { model: formElementsCtrl.model, flattenedElements: [] },\n predicateElement,\n predicateOption,\n elementsEvaluated,\n )\n })\n\n if (!everyOptionIsShowing) {\n return false\n }\n\n // Check to see if the model has one of the valid values to show the element\n return handleAttributePredicate(\n predicate,\n formElementsCtrl.model,\n predicateElement,\n )\n}\n\nconst isAttributeFilterValid = (\n formElementsCtrl: FormElementsCtrl,\n predicate: FormTypes.ChoiceElementOptionAttribute,\n elementsEvaluated: string[],\n): boolean => {\n const predicateElement = formElementsCtrl.flattenedElements.find(\n (element) => {\n return element.id === predicate.elementId\n },\n )\n\n // If we cant find the element used for the predicate,\n // we can check to see if the element being evaluated\n // is in a repeatable set and the predicate element is\n // in a parent list of elements.\n if (!predicateElement) {\n if (formElementsCtrl.parentFormElementsCtrl) {\n return isAttributeFilterValid(\n formElementsCtrl.parentFormElementsCtrl,\n predicate,\n elementsEvaluated,\n )\n } else {\n return false\n }\n }\n\n // now we have the model and predicate element, verify that the predicate element\n // is not hidden\n if (\n // Will never be a page, just making typescript happy :)\n predicateElement.type === 'page' ||\n predicateElement.type === 'section' ||\n !conditionallyShowElement(formElementsCtrl, predicateElement, [])\n ) {\n return false\n }\n\n // verify that at least one option is selected\n const values = formElementsCtrl.model[predicateElement.name]\n if (!values) return false\n // if the model value is an array, verify that it has a selection\n if (\n Array.isArray(values) &&\n (!values.length ||\n !values.filter((value) => typeof value !== 'undefined').length)\n ) {\n return false\n }\n\n return true\n}\n\nexport default function conditionallyShowOption(\n formElementsCtrl: FormElementsCtrl,\n elementToEvaluate: FormTypes.FormElementWithOptions,\n optionToEvaluate: FormTypes.ChoiceElementOption,\n optionsEvaluated: string[],\n): boolean {\n // If the element does not have the `conditionallyShow` flag set,\n // we can always show the element.\n\n if (\n !elementToEvaluate.conditionallyShowOptions ||\n !optionToEvaluate ||\n !optionToEvaluate.attributes ||\n !Array.isArray(optionToEvaluate.attributes) ||\n !optionToEvaluate.attributes.length\n ) {\n return true\n }\n\n // Check to see if this element has already been used to evaluate\n // if the element should be shown based on parent element conditional logic\n if (optionsEvaluated.some((optionId) => optionId === optionToEvaluate.id)) {\n throw new Error(\n 'Your conditional logic has caused an infinite loop. Check the following Fields to ensure element A does not rely on element B if element B also relies on element A.',\n )\n } else {\n optionsEvaluated.push(optionToEvaluate.id)\n }\n\n const validPredicates = (optionToEvaluate.attributes || []).filter(\n (predicate) => {\n return isAttributeFilterValid(\n formElementsCtrl,\n predicate,\n optionsEvaluated,\n )\n },\n )\n\n if (!validPredicates.length) return true\n return validPredicates.some((predicate) =>\n conditionallyShowOptionByPredicate(\n formElementsCtrl,\n predicate,\n optionsEvaluated,\n ),\n )\n}\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
declare const coords: () => {
|
2
|
-
latitude: number;
|
3
|
-
longitude: number;
|
4
|
-
};
|
5
|
-
export default coords;
|
1
|
+
declare const coords: () => {
|
2
|
+
latitude: number;
|
3
|
+
longitude: number;
|
4
|
+
};
|
5
|
+
export default coords;
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import { localisationService } from '@oneblink/apps';
|
2
|
-
const usCoords = { latitude: 40.75764768718219, longitude: -73.98578582987093 }; //TIMES SQUARE, NY
|
3
|
-
const auCoords = {
|
4
|
-
latitude: -33.861146727854496,
|
5
|
-
longitude: 151.20863228242192,
|
6
|
-
}; //CIRCULAR QUAY, SYDNEY
|
7
|
-
const coords = () => localisationService.getLocale() === 'en-US' ? usCoords : auCoords;
|
8
|
-
export default coords;
|
1
|
+
import { localisationService } from '@oneblink/apps';
|
2
|
+
const usCoords = { latitude: 40.75764768718219, longitude: -73.98578582987093 }; //TIMES SQUARE, NY
|
3
|
+
const auCoords = {
|
4
|
+
latitude: -33.861146727854496,
|
5
|
+
longitude: 151.20863228242192,
|
6
|
+
}; //CIRCULAR QUAY, SYDNEY
|
7
|
+
const coords = () => localisationService.getLocale() === 'en-US' ? usCoords : auCoords;
|
8
|
+
export default coords;
|
9
9
|
//# sourceMappingURL=defaultCoordinates.js.map
|
@@ -1,3 +1,3 @@
|
|
1
|
-
import { Attachment } from '../types/attachments';
|
2
|
-
export declare function downloadFileLegacy(dataURI: string, fileName: string): Promise<void>;
|
3
|
-
export default function downloadAttachment(attachment: Attachment): Promise<void>;
|
1
|
+
import { Attachment } from '../types/attachments';
|
2
|
+
export declare function downloadFileLegacy(dataURI: string, fileName: string): Promise<void>;
|
3
|
+
export default function downloadAttachment(attachment: Attachment): Promise<void>;
|
@@ -1,91 +1,91 @@
|
|
1
|
-
import { Sentry } from '@oneblink/apps';
|
2
|
-
import * as bulmaToast from 'bulma-toast';
|
3
|
-
import fileSaver from 'file-saver';
|
4
|
-
import { urlToBlobAsync } from './blob-utils';
|
5
|
-
async function downloadFile(data, fileName) {
|
6
|
-
if (window.cordova) {
|
7
|
-
const file = typeof data === 'string' ? await urlToBlobAsync(data) : data;
|
8
|
-
await new Promise((resolve, reject) => {
|
9
|
-
window.requestFileSystem(window.PERSISTENT, 0, (fs) => {
|
10
|
-
fs.root.getFile(fileName, {
|
11
|
-
create: true,
|
12
|
-
exclusive: false,
|
13
|
-
}, (fileEntry) => {
|
14
|
-
// Create a FileWriter object for our FileEntry
|
15
|
-
fileEntry.createWriter((fileWriter) => {
|
16
|
-
fileWriter.onwriteend = () => {
|
17
|
-
// @ts-expect-error ???
|
18
|
-
window.cordova.plugins.fileOpener2.open(
|
19
|
-
// @ts-expect-error ???
|
20
|
-
fileEntry.nativeURL, file.type, {
|
21
|
-
error: (error) => {
|
22
|
-
console.log('An error occurred opening the downloaded file');
|
23
|
-
reject(error);
|
24
|
-
},
|
25
|
-
success: () => resolve(undefined),
|
26
|
-
});
|
27
|
-
};
|
28
|
-
fileWriter.onerror = (error) => {
|
29
|
-
console.log('An error occurred writing the file to file system');
|
30
|
-
reject(error);
|
31
|
-
};
|
32
|
-
fileWriter.write(file);
|
33
|
-
}, (error) => {
|
34
|
-
console.log('An error attempting to create file writer for new file');
|
35
|
-
reject(error);
|
36
|
-
});
|
37
|
-
}, (error) => {
|
38
|
-
console.log('An error occurred getting new file data from file system');
|
39
|
-
reject(error);
|
40
|
-
});
|
41
|
-
}, (error) => {
|
42
|
-
console.log('An error occurred requesting access to the file system');
|
43
|
-
reject(error);
|
44
|
-
});
|
45
|
-
});
|
46
|
-
return;
|
47
|
-
}
|
48
|
-
else {
|
49
|
-
fileSaver.saveAs(data, fileName);
|
50
|
-
}
|
51
|
-
}
|
52
|
-
const handleError = (error) => {
|
53
|
-
if (error) {
|
54
|
-
console.warn('An error occurred attempting to download file:', error);
|
55
|
-
Sentry.captureException(error);
|
56
|
-
bulmaToast.toast({
|
57
|
-
message: 'Sorry, there was an issue downloading your file, please try again.',
|
58
|
-
// @ts-expect-error bulma sets this string as a class, so we are hacking in our own classes
|
59
|
-
type: 'ob-toast is-danger cypress-download-file-toast',
|
60
|
-
dismissible: true,
|
61
|
-
closeOnClick: true,
|
62
|
-
});
|
63
|
-
}
|
64
|
-
};
|
65
|
-
export async function downloadFileLegacy(dataURI, fileName) {
|
66
|
-
try {
|
67
|
-
return await downloadFile(dataURI, fileName);
|
68
|
-
}
|
69
|
-
catch (error) {
|
70
|
-
handleError(error);
|
71
|
-
}
|
72
|
-
}
|
73
|
-
export default async function downloadAttachment(attachment) {
|
74
|
-
try {
|
75
|
-
if (attachment.type) {
|
76
|
-
if (attachment.data) {
|
77
|
-
await downloadFile(attachment.data, attachment.fileName);
|
78
|
-
}
|
79
|
-
return;
|
80
|
-
}
|
81
|
-
if (!attachment.isPrivate) {
|
82
|
-
return await downloadFile(attachment.url, attachment.fileName);
|
83
|
-
}
|
84
|
-
const blob = await urlToBlobAsync(attachment.url, attachment.isPrivate);
|
85
|
-
return await downloadFile(blob, attachment.fileName);
|
86
|
-
}
|
87
|
-
catch (error) {
|
88
|
-
handleError(error);
|
89
|
-
}
|
90
|
-
}
|
1
|
+
import { Sentry } from '@oneblink/apps';
|
2
|
+
import * as bulmaToast from 'bulma-toast';
|
3
|
+
import fileSaver from 'file-saver';
|
4
|
+
import { urlToBlobAsync } from './blob-utils';
|
5
|
+
async function downloadFile(data, fileName) {
|
6
|
+
if (window.cordova) {
|
7
|
+
const file = typeof data === 'string' ? await urlToBlobAsync(data) : data;
|
8
|
+
await new Promise((resolve, reject) => {
|
9
|
+
window.requestFileSystem(window.PERSISTENT, 0, (fs) => {
|
10
|
+
fs.root.getFile(fileName, {
|
11
|
+
create: true,
|
12
|
+
exclusive: false,
|
13
|
+
}, (fileEntry) => {
|
14
|
+
// Create a FileWriter object for our FileEntry
|
15
|
+
fileEntry.createWriter((fileWriter) => {
|
16
|
+
fileWriter.onwriteend = () => {
|
17
|
+
// @ts-expect-error ???
|
18
|
+
window.cordova.plugins.fileOpener2.open(
|
19
|
+
// @ts-expect-error ???
|
20
|
+
fileEntry.nativeURL, file.type, {
|
21
|
+
error: (error) => {
|
22
|
+
console.log('An error occurred opening the downloaded file');
|
23
|
+
reject(error);
|
24
|
+
},
|
25
|
+
success: () => resolve(undefined),
|
26
|
+
});
|
27
|
+
};
|
28
|
+
fileWriter.onerror = (error) => {
|
29
|
+
console.log('An error occurred writing the file to file system');
|
30
|
+
reject(error);
|
31
|
+
};
|
32
|
+
fileWriter.write(file);
|
33
|
+
}, (error) => {
|
34
|
+
console.log('An error attempting to create file writer for new file');
|
35
|
+
reject(error);
|
36
|
+
});
|
37
|
+
}, (error) => {
|
38
|
+
console.log('An error occurred getting new file data from file system');
|
39
|
+
reject(error);
|
40
|
+
});
|
41
|
+
}, (error) => {
|
42
|
+
console.log('An error occurred requesting access to the file system');
|
43
|
+
reject(error);
|
44
|
+
});
|
45
|
+
});
|
46
|
+
return;
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
fileSaver.saveAs(data, fileName);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
const handleError = (error) => {
|
53
|
+
if (error) {
|
54
|
+
console.warn('An error occurred attempting to download file:', error);
|
55
|
+
Sentry.captureException(error);
|
56
|
+
bulmaToast.toast({
|
57
|
+
message: 'Sorry, there was an issue downloading your file, please try again.',
|
58
|
+
// @ts-expect-error bulma sets this string as a class, so we are hacking in our own classes
|
59
|
+
type: 'ob-toast is-danger cypress-download-file-toast',
|
60
|
+
dismissible: true,
|
61
|
+
closeOnClick: true,
|
62
|
+
});
|
63
|
+
}
|
64
|
+
};
|
65
|
+
export async function downloadFileLegacy(dataURI, fileName) {
|
66
|
+
try {
|
67
|
+
return await downloadFile(dataURI, fileName);
|
68
|
+
}
|
69
|
+
catch (error) {
|
70
|
+
handleError(error);
|
71
|
+
}
|
72
|
+
}
|
73
|
+
export default async function downloadAttachment(attachment) {
|
74
|
+
try {
|
75
|
+
if (attachment.type) {
|
76
|
+
if (attachment.data) {
|
77
|
+
await downloadFile(attachment.data, attachment.fileName);
|
78
|
+
}
|
79
|
+
return;
|
80
|
+
}
|
81
|
+
if (!attachment.isPrivate) {
|
82
|
+
return await downloadFile(attachment.url, attachment.fileName);
|
83
|
+
}
|
84
|
+
const blob = await urlToBlobAsync(attachment.url, attachment.isPrivate);
|
85
|
+
return await downloadFile(blob, attachment.fileName);
|
86
|
+
}
|
87
|
+
catch (error) {
|
88
|
+
handleError(error);
|
89
|
+
}
|
90
|
+
}
|
91
91
|
//# sourceMappingURL=download-file.js.map
|
@@ -1 +1 @@
|
|
1
|
-
export default function (file: File, canvas: HTMLCanvasElement): void;
|
1
|
+
export default function (file: File, canvas: HTMLCanvasElement): void;
|
@@ -1,23 +1,23 @@
|
|
1
|
-
import { localisationService } from '@oneblink/apps';
|
2
|
-
export default function (file, canvas) {
|
3
|
-
const ctx = canvas.getContext('2d');
|
4
|
-
if (ctx) {
|
5
|
-
const now = localisationService.formatDatetime(new Date(file.lastModified));
|
6
|
-
const imageHeightMultiplierCoefficient = 0.0021;
|
7
|
-
const textHeightCoefficient = 20;
|
8
|
-
const backgroundMarginCoefficient = 10;
|
9
|
-
const textHeight = imageHeightMultiplierCoefficient * canvas.height * textHeightCoefficient;
|
10
|
-
const backgroundMargin = imageHeightMultiplierCoefficient *
|
11
|
-
canvas.height *
|
12
|
-
backgroundMarginCoefficient;
|
13
|
-
ctx.font = `${textHeight}px Arial`;
|
14
|
-
const { width: textWidth } = ctx.measureText(now);
|
15
|
-
const backgroundWidth = backgroundMargin * 2 + textWidth;
|
16
|
-
const backgroundHeight = backgroundMargin * 2 + textHeight;
|
17
|
-
ctx.fillStyle = 'rgba(20, 20, 20, 0.6)';
|
18
|
-
ctx.fillRect(canvas.width - backgroundWidth - backgroundMargin, canvas.height - backgroundHeight - backgroundMargin, backgroundWidth, backgroundHeight);
|
19
|
-
ctx.fillStyle = '#FFF';
|
20
|
-
ctx.fillText(now, canvas.width - textWidth - backgroundMargin * 2, canvas.height - textHeight - backgroundMargin / 3);
|
21
|
-
}
|
22
|
-
}
|
1
|
+
import { localisationService } from '@oneblink/apps';
|
2
|
+
export default function (file, canvas) {
|
3
|
+
const ctx = canvas.getContext('2d');
|
4
|
+
if (ctx) {
|
5
|
+
const now = localisationService.formatDatetime(new Date(file.lastModified));
|
6
|
+
const imageHeightMultiplierCoefficient = 0.0021;
|
7
|
+
const textHeightCoefficient = 20;
|
8
|
+
const backgroundMarginCoefficient = 10;
|
9
|
+
const textHeight = imageHeightMultiplierCoefficient * canvas.height * textHeightCoefficient;
|
10
|
+
const backgroundMargin = imageHeightMultiplierCoefficient *
|
11
|
+
canvas.height *
|
12
|
+
backgroundMarginCoefficient;
|
13
|
+
ctx.font = `${textHeight}px Arial`;
|
14
|
+
const { width: textWidth } = ctx.measureText(now);
|
15
|
+
const backgroundWidth = backgroundMargin * 2 + textWidth;
|
16
|
+
const backgroundHeight = backgroundMargin * 2 + textHeight;
|
17
|
+
ctx.fillStyle = 'rgba(20, 20, 20, 0.6)';
|
18
|
+
ctx.fillRect(canvas.width - backgroundWidth - backgroundMargin, canvas.height - backgroundHeight - backgroundMargin, backgroundWidth, backgroundHeight);
|
19
|
+
ctx.fillStyle = '#FFF';
|
20
|
+
ctx.fillText(now, canvas.width - textWidth - backgroundMargin * 2, canvas.height - textHeight - backgroundMargin / 3);
|
21
|
+
}
|
22
|
+
}
|
23
23
|
//# sourceMappingURL=drawTimestampOnCanvas.js.map
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export default function flattenFormElements(elements) {
|
2
|
+
return elements.reduce((flattenedElements, element) => {
|
3
|
+
flattenedElements.push(element);
|
4
|
+
switch (element.type) {
|
5
|
+
case 'section':
|
6
|
+
case 'page': {
|
7
|
+
flattenedElements.push(...flattenFormElements(element.elements));
|
8
|
+
}
|
9
|
+
}
|
10
|
+
return flattenedElements;
|
11
|
+
}, []);
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=flattenFormElements.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"flattenFormElements.js","sourceRoot":"","sources":["../../src/services/flattenFormElements.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,QAAiC;IAEjC,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE;QAC7B,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,QAAQ,OAAO,CAAC,IAAI,EAAE;YACpB,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC,CAAC;gBACX,iBAAiB,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;aACjE;SACF;QACD,OAAO,iBAAiB,CAAA;IAC1B,CAAC,EACD,EAAE,CACH,CAAA;AACH,CAAC","sourcesContent":["import { FormTypes } from '@oneblink/types'\n\nexport default function flattenFormElements(\n elements: FormTypes.FormElement[],\n): FormTypes.FormElement[] {\n return elements.reduce<FormTypes.FormElement[]>(\n (flattenedElements, element) => {\n flattenedElements.push(element)\n switch (element.type) {\n case 'section':\n case 'page': {\n flattenedElements.push(...flattenFormElements(element.elements))\n }\n }\n return flattenedElements\n },\n [],\n )\n}\n"]}
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import { FormTypes } from '@oneblink/types';
|
2
|
-
import { FormElementsConditionallyShown, FormElementsValidation, FormSubmissionModel } from '../types/form';
|
3
|
-
export declare const lookupValidationMessage = "Lookup is required";
|
4
|
-
declare type ValidateJSSchema = Record<string, unknown>;
|
5
|
-
export declare function validateSubmission(schema: ValidateJSSchema, submission: FormSubmissionModel, formElementsConditionallyShown: FormElementsConditionallyShown): FormElementsValidation | undefined;
|
6
|
-
export declare function generateValidationSchema(elements: FormTypes.FormElement[], elementIdsWithLookupsExecuted: string[]): ValidateJSSchema;
|
7
|
-
export declare function checkFileNameIsValid(formElement: FormTypes.FilesElement, fileName: string): boolean;
|
8
|
-
export declare function checkFileNameExtensionIsValid(formElement: FormTypes.FilesElement, fileName: string): boolean;
|
9
|
-
export declare function checkSectionValidity(element: FormTypes.PageElement | FormTypes.SectionElement, formElementsValidation: FormElementsValidation | undefined): boolean;
|
10
|
-
export {};
|
1
|
+
import { FormTypes } from '@oneblink/types';
|
2
|
+
import { FormElementsConditionallyShown, FormElementsValidation, FormSubmissionModel } from '../types/form';
|
3
|
+
export declare const lookupValidationMessage = "Lookup is required";
|
4
|
+
declare type ValidateJSSchema = Record<string, unknown>;
|
5
|
+
export declare function validateSubmission(schema: ValidateJSSchema, submission: FormSubmissionModel, formElementsConditionallyShown: FormElementsConditionallyShown): FormElementsValidation | undefined;
|
6
|
+
export declare function generateValidationSchema(elements: FormTypes.FormElement[], elementIdsWithLookupsExecuted: string[]): ValidateJSSchema;
|
7
|
+
export declare function checkFileNameIsValid(formElement: FormTypes.FilesElement, fileName: string): boolean;
|
8
|
+
export declare function checkFileNameExtensionIsValid(formElement: FormTypes.FilesElement, fileName: string): boolean;
|
9
|
+
export declare function checkSectionValidity(element: FormTypes.PageElement | FormTypes.SectionElement, formElementsValidation: FormElementsValidation | undefined): boolean;
|
10
|
+
export {};
|