@ukhomeoffice/cop-react-form-renderer 5.90.0 → 5.90.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CheckYourAnswers/Answer.js +15 -15
- package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +106 -142
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +563 -941
- package/dist/components/CheckYourAnswers/index.js +1 -1
- package/dist/components/CollectionPage/CollectionPage.js +76 -66
- package/dist/components/CollectionPage/CollectionPage.test.js +318 -369
- package/dist/components/CollectionPage/index.js +1 -1
- package/dist/components/CollectionSummary/BannerStrip.js +15 -15
- package/dist/components/CollectionSummary/BannerStrip.test.js +83 -79
- package/dist/components/CollectionSummary/CollectionSummary.js +109 -131
- package/dist/components/CollectionSummary/CollectionSummary.test.js +198 -180
- package/dist/components/CollectionSummary/Confirmation.js +15 -13
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/RenderListView.js +47 -55
- package/dist/components/CollectionSummary/RenderListView.test.js +82 -81
- package/dist/components/CollectionSummary/SummaryCard.js +121 -157
- package/dist/components/CollectionSummary/SummaryCard.test.js +970 -1000
- package/dist/components/CollectionSummary/SummaryCardDetails.js +103 -94
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +187 -195
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +64 -76
- package/dist/components/CollectionSummary/index.js +1 -1
- package/dist/components/FormComponent/Collection.js +81 -117
- package/dist/components/FormComponent/Collection.test.js +910 -1082
- package/dist/components/FormComponent/Container.js +43 -38
- package/dist/components/FormComponent/Container.test.js +379 -411
- package/dist/components/FormComponent/FormComponent.js +71 -74
- package/dist/components/FormComponent/FormComponent.test.js +354 -415
- package/dist/components/FormComponent/helpers/addLabel.js +4 -7
- package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
- package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
- package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
- package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
- package/dist/components/FormComponent/helpers/index.js +5 -5
- package/dist/components/FormComponent/index.js +1 -1
- package/dist/components/FormPage/FormPage.js +71 -87
- package/dist/components/FormPage/FormPage.test.js +133 -170
- package/dist/components/FormPage/index.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +153 -198
- package/dist/components/FormRenderer/FormRenderer.test.js +731 -1116
- package/dist/components/FormRenderer/handlers/cyaAction.js +3 -3
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
- package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
- package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
- package/dist/components/FormRenderer/handlers/index.js +2 -2
- package/dist/components/FormRenderer/handlers/navigate.js +4 -4
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +16 -16
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +27 -30
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
- package/dist/components/FormRenderer/helpers/getCYA.js +5 -7
- package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getFormState.js +6 -8
- package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getNextPageId.js +18 -32
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
- package/dist/components/FormRenderer/helpers/getPage.js +2 -4
- package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +8 -11
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +12 -13
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +65 -64
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +72 -79
- package/dist/components/FormRenderer/helpers/index.js +2 -2
- package/dist/components/FormRenderer/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +61 -54
- package/dist/components/FormRenderer/onCYAAction.test.js +165 -153
- package/dist/components/FormRenderer/onPageAction.js +45 -41
- package/dist/components/FormRenderer/onPageAction.test.js +225 -210
- package/dist/components/FormRenderer/onTaskAction.js +11 -15
- package/dist/components/FormRenderer/onTaskAction.test.js +94 -89
- package/dist/components/PageActions/ActionButton.js +13 -16
- package/dist/components/PageActions/ActionButton.test.js +57 -79
- package/dist/components/PageActions/PageActions.js +11 -11
- package/dist/components/PageActions/PageActions.test.js +87 -116
- package/dist/components/PageActions/index.js +1 -1
- package/dist/components/SummaryList/GroupAction.js +13 -21
- package/dist/components/SummaryList/GroupAction.test.js +41 -37
- package/dist/components/SummaryList/RowAction.js +12 -17
- package/dist/components/SummaryList/RowAction.test.js +41 -37
- package/dist/components/SummaryList/SummaryList.js +23 -28
- package/dist/components/SummaryList/SummaryList.test.js +179 -206
- package/dist/components/SummaryList/SummaryListHeadingRow.js +8 -6
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
- package/dist/components/SummaryList/SummaryListRow.js +8 -6
- package/dist/components/SummaryList/SummaryListTitleRow.js +7 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +4 -6
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +24 -24
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +4 -6
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +24 -24
- package/dist/components/SummaryList/helpers/index.js +2 -2
- package/dist/components/SummaryList/index.js +1 -1
- package/dist/components/TaskList/Task.js +20 -30
- package/dist/components/TaskList/Task.test.js +84 -77
- package/dist/components/TaskList/TaskList.js +53 -84
- package/dist/components/TaskList/TaskList.test.js +150 -150
- package/dist/components/TaskList/TaskState.js +8 -6
- package/dist/components/TaskList/TaskState.test.js +56 -49
- package/dist/components/TaskList/index.js +1 -1
- package/dist/components/index.js +8 -8
- package/dist/context/HooksContext/HooksContext.js +58 -81
- package/dist/context/HooksContext/HooksContext.test.js +27 -36
- package/dist/context/HooksContext/index.js +3 -4
- package/dist/context/ValidationContext/ValidationContext.js +44 -95
- package/dist/context/ValidationContext/ValidationContext.test.js +58 -70
- package/dist/context/ValidationContext/index.js +3 -4
- package/dist/context/index.js +3 -3
- package/dist/hooks/index.js +10 -11
- package/dist/hooks/useAxios.js +15 -41
- package/dist/hooks/useGetRequest.js +62 -98
- package/dist/hooks/useHooks.js +1 -3
- package/dist/hooks/useRefData.js +28 -41
- package/dist/hooks/useValidation.js +1 -3
- package/dist/index.js +14 -15
- package/dist/models/CollectionLabels.js +1 -1
- package/dist/models/ComponentTypes.js +25 -25
- package/dist/models/EventTypes.js +4 -4
- package/dist/models/FormPages.js +4 -4
- package/dist/models/FormTypes.js +8 -8
- package/dist/models/HubFormats.js +3 -3
- package/dist/models/PageAction.js +44 -38
- package/dist/models/TaskStates.js +29 -28
- package/dist/models/index.js +10 -10
- package/dist/setupTests.js +31 -32
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +17 -27
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +34 -36
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +20 -34
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +43 -45
- package/dist/utils/CheckYourAnswers/getCYARow.js +8 -10
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -25
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +39 -45
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +72 -75
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +100 -105
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +218 -182
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +26 -21
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +15 -21
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +77 -83
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +13 -13
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +14 -19
- package/dist/utils/CheckYourAnswers/index.js +2 -2
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +6 -6
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +3 -3
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +21 -22
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +15 -24
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +52 -43
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +3 -3
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -12
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -13
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
- package/dist/utils/CollectionPage/getErrorsForCollection.js +25 -26
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
- package/dist/utils/CollectionPage/getQuickEditPage.js +37 -32
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +18 -22
- package/dist/utils/CollectionPage/index.js +2 -2
- package/dist/utils/CollectionPage/mergeCollectionPages.js +37 -42
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +26 -22
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
- package/dist/utils/CollectionPage/setCollectionPageData.js +13 -19
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +26 -26
- package/dist/utils/Component/addShowWhen.js +4 -8
- package/dist/utils/Component/addShowWhen.test.js +38 -38
- package/dist/utils/Component/applyToComponentTree.js +19 -20
- package/dist/utils/Component/applyToComponentTree.test.js +28 -33
- package/dist/utils/Component/cleanAttributes.js +10 -13
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +6 -7
- package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
- package/dist/utils/Component/getComponent.js +90 -97
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +50 -63
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +30 -40
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +22 -27
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +12 -11
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +23 -27
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +58 -73
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +34 -41
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +23 -32
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
- package/dist/utils/Component/getDefaultValue.js +7 -9
- package/dist/utils/Component/getDefaultValue.test.js +13 -13
- package/dist/utils/Component/getDefaultValueFromConfig.js +24 -24
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +32 -32
- package/dist/utils/Component/index.js +2 -2
- package/dist/utils/Component/isEditable.js +2 -4
- package/dist/utils/Component/isEditable.test.js +14 -15
- package/dist/utils/Component/optionIsSelected.js +2 -4
- package/dist/utils/Component/optionIsSelected.test.js +12 -12
- package/dist/utils/Component/setupContainerComponentsPath.js +29 -31
- package/dist/utils/Component/setupContainerComponentsPath.test.js +16 -16
- package/dist/utils/Component/showComponent.js +3 -4
- package/dist/utils/Component/showComponent.test.js +29 -29
- package/dist/utils/Component/wrapInFormGroup.js +4 -4
- package/dist/utils/Condition/index.js +2 -2
- package/dist/utils/Condition/meetsAllConditions.js +9 -9
- package/dist/utils/Condition/meetsAllConditions.test.js +21 -21
- package/dist/utils/Condition/meetsCondition.js +20 -31
- package/dist/utils/Condition/meetsCondition.test.js +403 -403
- package/dist/utils/Condition/meetsOneCondition.js +6 -6
- package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
- package/dist/utils/Condition/setupConditions.js +14 -19
- package/dist/utils/Condition/setupConditions.test.js +8 -8
- package/dist/utils/Container/getEditableComponents.js +4 -6
- package/dist/utils/Container/getEditableComponents.test.js +44 -46
- package/dist/utils/Container/index.js +2 -2
- package/dist/utils/Container/setupNesting.js +16 -22
- package/dist/utils/Container/setupNesting.test.js +28 -31
- package/dist/utils/Container/showContainer.js +4 -8
- package/dist/utils/Container/showContainer.test.js +31 -31
- package/dist/utils/Data/applyFormula.js +40 -50
- package/dist/utils/Data/applyFormula.test.js +26 -26
- package/dist/utils/Data/deleteValues.js +4 -8
- package/dist/utils/Data/deleteValues.test.js +11 -11
- package/dist/utils/Data/getAutocompleteSource.js +20 -29
- package/dist/utils/Data/getAutocompleteSource.test.js +81 -87
- package/dist/utils/Data/getDataPath.js +20 -30
- package/dist/utils/Data/getDataPath.test.js +20 -20
- package/dist/utils/Data/getOptions.js +27 -34
- package/dist/utils/Data/getOptions.test.js +28 -28
- package/dist/utils/Data/getSourceData.js +6 -19
- package/dist/utils/Data/getSourceData.test.js +85 -81
- package/dist/utils/Data/index.js +2 -2
- package/dist/utils/Data/nestInRefdataOptions.js +9 -16
- package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
- package/dist/utils/Data/refDataToOptions.js +11 -15
- package/dist/utils/Data/refDataToOptions.test.js +20 -20
- package/dist/utils/Data/setDataItem.js +7 -8
- package/dist/utils/Data/setDataItem.test.js +38 -38
- package/dist/utils/Data/setupFormData.js +14 -22
- package/dist/utils/Data/setupFormData.test.js +52 -51
- package/dist/utils/Data/setupRefDataUrlForComponent.js +21 -28
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +28 -28
- package/dist/utils/FormPage/applyConditionalProperties.js +6 -10
- package/dist/utils/FormPage/applyConditionalProperties.test.js +16 -19
- package/dist/utils/FormPage/getConditionalText.js +4 -4
- package/dist/utils/FormPage/getConditionalText.test.js +35 -35
- package/dist/utils/FormPage/getFormPage.js +16 -17
- package/dist/utils/FormPage/getFormPage.test.js +49 -48
- package/dist/utils/FormPage/getFormPages.js +8 -13
- package/dist/utils/FormPage/getFormPages.test.js +22 -25
- package/dist/utils/FormPage/getPageActions.js +10 -17
- package/dist/utils/FormPage/getPageActions.test.js +33 -33
- package/dist/utils/FormPage/getParagraphFromText.js +5 -7
- package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
- package/dist/utils/FormPage/index.js +3 -5
- package/dist/utils/FormPage/showFormPage.js +4 -8
- package/dist/utils/FormPage/showFormPage.test.js +33 -33
- package/dist/utils/FormPage/showFormPageCYA.js +3 -3
- package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
- package/dist/utils/FormPage/useComponent.js +21 -28
- package/dist/utils/FormPage/useComponent.test.js +78 -80
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +19 -19
- package/dist/utils/Format/formatDataForComponent.js +6 -7
- package/dist/utils/Format/formatDataForComponent.test.js +50 -78
- package/dist/utils/Format/formatDataForForm.js +6 -8
- package/dist/utils/Format/formatDataForForm.test.js +14 -17
- package/dist/utils/Format/formatDataForPage.js +4 -5
- package/dist/utils/Format/formatDataForPage.test.js +20 -25
- package/dist/utils/Format/index.js +2 -2
- package/dist/utils/Hub/getFormHub.js +2 -2
- package/dist/utils/Hub/getFormHub.test.js +29 -32
- package/dist/utils/Hub/index.js +2 -2
- package/dist/utils/Meta/constants.js +2 -2
- package/dist/utils/Meta/documents/getDocuments.js +1 -4
- package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
- package/dist/utils/Meta/documents/index.js +2 -2
- package/dist/utils/Meta/documents/setDocumentsForField.js +15 -17
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +69 -35
- package/dist/utils/Meta/index.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.js +4 -4
- package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
- package/dist/utils/Operate/deleteValueInFormData.js +3 -3
- package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
- package/dist/utils/Operate/getFirstOf.js +8 -8
- package/dist/utils/Operate/getFirstOf.test.js +33 -33
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +12 -12
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
- package/dist/utils/Operate/getLength.js +11 -11
- package/dist/utils/Operate/getLength.test.js +19 -19
- package/dist/utils/Operate/index.js +2 -2
- package/dist/utils/Operate/persistValueInFormData.js +6 -6
- package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
- package/dist/utils/Operate/runPageOperations.js +9 -9
- package/dist/utils/Operate/runPageOperations.test.js +36 -37
- package/dist/utils/Operate/setValueInFormData.js +5 -5
- package/dist/utils/Operate/setValueInFormData.test.js +17 -17
- package/dist/utils/Operate/shouldRun.js +8 -8
- package/dist/utils/Operate/shouldRun.test.js +22 -28
- package/dist/utils/Validate/additional/conditionallyPermittedChange.js +1 -1
- package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +15 -15
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -5
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
- package/dist/utils/Validate/additional/index.js +8 -8
- package/dist/utils/Validate/additional/index.test.js +22 -22
- package/dist/utils/Validate/additional/mustBeAfter.js +3 -3
- package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
- package/dist/utils/Validate/additional/mustBeBefore.js +3 -3
- package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +9 -14
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +38 -42
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +4 -4
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
- package/dist/utils/Validate/additional/mustBeOneOf.js +1 -1
- package/dist/utils/Validate/additional/mustBeOneOf.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +5 -5
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +36 -40
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +3 -5
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
- package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +15 -15
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +3 -5
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
- package/dist/utils/Validate/additional/utils.js +11 -24
- package/dist/utils/Validate/index.js +2 -2
- package/dist/utils/Validate/validateCollection.js +21 -27
- package/dist/utils/Validate/validateCollection.test.js +85 -77
- package/dist/utils/Validate/validateComponent.js +22 -23
- package/dist/utils/Validate/validateComponent.test.js +188 -165
- package/dist/utils/Validate/validateContainer.js +16 -21
- package/dist/utils/Validate/validateContainer.test.js +62 -56
- package/dist/utils/Validate/validateDate.js +17 -23
- package/dist/utils/Validate/validateDate.test.js +31 -32
- package/dist/utils/Validate/validateEmail.js +7 -9
- package/dist/utils/Validate/validateEmail.test.js +26 -26
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +20 -24
- package/dist/utils/Validate/validatePage.test.js +227 -215
- package/dist/utils/Validate/validateRegex.js +5 -8
- package/dist/utils/Validate/validateRegex.test.js +17 -17
- package/dist/utils/Validate/validateRequired.js +5 -7
- package/dist/utils/Validate/validateRequired.test.js +19 -19
- package/dist/utils/Validate/validateTextArea.js +5 -7
- package/dist/utils/Validate/validateTextArea.test.js +21 -21
- package/dist/utils/Validate/validateTime.js +12 -19
- package/dist/utils/Validate/validateTime.test.js +27 -27
- package/dist/utils/index.js +8 -10
- package/package.json +3 -2
|
@@ -2,75 +2,75 @@
|
|
|
2
2
|
|
|
3
3
|
var _setupTests = require("../../setupTests");
|
|
4
4
|
var _setupContainerComponentsPath = _interopRequireDefault(require("./setupContainerComponentsPath"));
|
|
5
|
-
function _interopRequireDefault(
|
|
6
|
-
describe('utils.CheckYourAnswers.setupContainerComponentsPath',
|
|
7
|
-
it('should setup the full_path attribute for components within a container',
|
|
8
|
-
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
describe('utils.CheckYourAnswers.setupContainerComponentsPath', () => {
|
|
7
|
+
it('should setup the full_path attribute for components within a container', () => {
|
|
8
|
+
const COMPONENT_1 = {
|
|
9
9
|
id: 'checkboxes1',
|
|
10
10
|
fieldId: 'checkboxes1',
|
|
11
11
|
type: 'checkboxes',
|
|
12
12
|
label: 'Alpha'
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
const COMPONENT_2 = {
|
|
15
15
|
id: 'checkboxes2',
|
|
16
16
|
fieldId: 'checkboxes2',
|
|
17
17
|
type: 'checkboxes',
|
|
18
18
|
label: 'Bravo'
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
const CONTAINER = {
|
|
21
21
|
id: 'test-container',
|
|
22
22
|
fieldId: 'test-container',
|
|
23
23
|
type: 'container',
|
|
24
24
|
full_path: 'test-container',
|
|
25
25
|
components: [COMPONENT_1, COMPONENT_2]
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
const container = (0, _setupContainerComponentsPath.default)(CONTAINER);
|
|
28
28
|
(0, _setupTests.expectObjectLike)(container.components[0], {
|
|
29
29
|
id: COMPONENT_1.id,
|
|
30
30
|
fieldId: COMPONENT_1.fieldId,
|
|
31
|
-
full_path:
|
|
31
|
+
full_path: `${CONTAINER.fieldId}.${COMPONENT_1.fieldId}`,
|
|
32
32
|
type: COMPONENT_1.type,
|
|
33
33
|
label: COMPONENT_1.label
|
|
34
34
|
});
|
|
35
35
|
(0, _setupTests.expectObjectLike)(container.components[1], {
|
|
36
36
|
id: COMPONENT_2.id,
|
|
37
37
|
fieldId: COMPONENT_2.fieldId,
|
|
38
|
-
full_path:
|
|
38
|
+
full_path: `${CONTAINER.fieldId}.${COMPONENT_2.fieldId}`,
|
|
39
39
|
type: COMPONENT_2.type,
|
|
40
40
|
label: COMPONENT_2.label
|
|
41
41
|
});
|
|
42
42
|
});
|
|
43
|
-
it('should setup the full_path attribute for components when the container full_path property is missing',
|
|
44
|
-
|
|
43
|
+
it('should setup the full_path attribute for components when the container full_path property is missing', () => {
|
|
44
|
+
const COMPONENT_1 = {
|
|
45
45
|
id: 'checkboxes1',
|
|
46
46
|
fieldId: 'checkboxes1',
|
|
47
47
|
type: 'checkboxes',
|
|
48
48
|
label: 'Alpha'
|
|
49
49
|
};
|
|
50
|
-
|
|
50
|
+
const COMPONENT_2 = {
|
|
51
51
|
id: 'checkboxes2',
|
|
52
52
|
fieldId: 'checkboxes2',
|
|
53
53
|
type: 'checkboxes',
|
|
54
54
|
label: 'Bravo'
|
|
55
55
|
};
|
|
56
|
-
|
|
56
|
+
const CONTAINER = {
|
|
57
57
|
id: 'test-container',
|
|
58
58
|
fieldId: 'test-container',
|
|
59
59
|
type: 'container',
|
|
60
60
|
components: [COMPONENT_1, COMPONENT_2]
|
|
61
61
|
};
|
|
62
|
-
|
|
62
|
+
const container = (0, _setupContainerComponentsPath.default)(CONTAINER);
|
|
63
63
|
(0, _setupTests.expectObjectLike)(container.components[0], {
|
|
64
64
|
id: COMPONENT_1.id,
|
|
65
65
|
fieldId: COMPONENT_1.fieldId,
|
|
66
|
-
full_path:
|
|
66
|
+
full_path: `${CONTAINER.fieldId}.${COMPONENT_1.fieldId}`,
|
|
67
67
|
type: COMPONENT_1.type,
|
|
68
68
|
label: COMPONENT_1.label
|
|
69
69
|
});
|
|
70
70
|
(0, _setupTests.expectObjectLike)(container.components[1], {
|
|
71
71
|
id: COMPONENT_2.id,
|
|
72
72
|
fieldId: COMPONENT_2.fieldId,
|
|
73
|
-
full_path:
|
|
73
|
+
full_path: `${CONTAINER.fieldId}.${COMPONENT_2.fieldId}`,
|
|
74
74
|
type: COMPONENT_2.type,
|
|
75
75
|
label: COMPONENT_2.label
|
|
76
76
|
});
|
|
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _Condition = _interopRequireDefault(require("../Condition"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
// Local imports
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
var _component$show_when;
|
|
11
|
+
const showComponent = (component, data) => {
|
|
13
12
|
if (!component) {
|
|
14
13
|
return false;
|
|
15
14
|
}
|
|
16
15
|
if (component.hidden && component.disabled) {
|
|
17
16
|
return false;
|
|
18
17
|
}
|
|
19
|
-
if (
|
|
18
|
+
if (component.show_when?.type === "or") {
|
|
20
19
|
return _Condition.default.meetsOne(component, data);
|
|
21
20
|
}
|
|
22
21
|
return _Condition.default.meetsAll(component, data);
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _showComponent = _interopRequireDefault(require("./showComponent"));
|
|
4
|
-
function _interopRequireDefault(
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
5
|
// Local imports
|
|
6
6
|
|
|
7
|
-
describe('utils',
|
|
8
|
-
describe('Component',
|
|
9
|
-
describe('show',
|
|
10
|
-
it('should not show when there are no options',
|
|
7
|
+
describe('utils', () => {
|
|
8
|
+
describe('Component', () => {
|
|
9
|
+
describe('show', () => {
|
|
10
|
+
it('should not show when there are no options', () => {
|
|
11
11
|
expect((0, _showComponent.default)(null, null)).toBeFalsy();
|
|
12
12
|
});
|
|
13
|
-
it('should not show when hidden and disabled',
|
|
13
|
+
it('should not show when hidden and disabled', () => {
|
|
14
14
|
expect((0, _showComponent.default)({
|
|
15
15
|
hidden: true,
|
|
16
16
|
disabled: true
|
|
17
17
|
}, null)).toBeFalsy();
|
|
18
18
|
});
|
|
19
|
-
it('should show when hidden but not disabled',
|
|
19
|
+
it('should show when hidden but not disabled', () => {
|
|
20
20
|
expect((0, _showComponent.default)({
|
|
21
21
|
hidden: true
|
|
22
22
|
}, null)).toBeTruthy();
|
|
23
23
|
});
|
|
24
|
-
it('should show when disabled but not hidden',
|
|
24
|
+
it('should show when disabled but not hidden', () => {
|
|
25
25
|
expect((0, _showComponent.default)({
|
|
26
26
|
disabled: true
|
|
27
27
|
}, null)).toBeTruthy();
|
|
28
28
|
});
|
|
29
|
-
it('should show when a single show_when condition is met',
|
|
30
|
-
|
|
29
|
+
it('should show when a single show_when condition is met', () => {
|
|
30
|
+
const COMPONENT = {
|
|
31
31
|
show_when: {
|
|
32
32
|
field: 'alpha',
|
|
33
33
|
op: 'eq',
|
|
34
34
|
value: 'bravo'
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
const DATA = {
|
|
38
38
|
alpha: 'bravo'
|
|
39
39
|
};
|
|
40
40
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeTruthy();
|
|
41
41
|
});
|
|
42
|
-
it('should not show when a single show_when condition is not met',
|
|
43
|
-
|
|
42
|
+
it('should not show when a single show_when condition is not met', () => {
|
|
43
|
+
const COMPONENT = {
|
|
44
44
|
show_when: {
|
|
45
45
|
field: 'alpha',
|
|
46
46
|
op: 'eq',
|
|
47
47
|
value: 'bravo'
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
|
|
50
|
+
const DATA = {
|
|
51
51
|
alpha: 'charlie'
|
|
52
52
|
};
|
|
53
53
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeFalsy();
|
|
54
54
|
});
|
|
55
|
-
it('should show when multiple show_when conditions are met',
|
|
56
|
-
|
|
55
|
+
it('should show when multiple show_when conditions are met', () => {
|
|
56
|
+
const COMPONENT = {
|
|
57
57
|
show_when: [{
|
|
58
58
|
field: 'alpha',
|
|
59
59
|
op: 'eq',
|
|
@@ -64,14 +64,14 @@ describe('utils', function () {
|
|
|
64
64
|
value: 'delta'
|
|
65
65
|
}]
|
|
66
66
|
};
|
|
67
|
-
|
|
67
|
+
const DATA = {
|
|
68
68
|
alpha: 'bravo',
|
|
69
69
|
charlie: 'delta'
|
|
70
70
|
};
|
|
71
71
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeTruthy();
|
|
72
72
|
});
|
|
73
|
-
it('should not show when one of multiple show_when conditions is not met',
|
|
74
|
-
|
|
73
|
+
it('should not show when one of multiple show_when conditions is not met', () => {
|
|
74
|
+
const COMPONENT = {
|
|
75
75
|
show_when: [{
|
|
76
76
|
field: 'alpha',
|
|
77
77
|
op: 'eq',
|
|
@@ -82,14 +82,14 @@ describe('utils', function () {
|
|
|
82
82
|
value: 'delta'
|
|
83
83
|
}]
|
|
84
84
|
};
|
|
85
|
-
|
|
85
|
+
const DATA = {
|
|
86
86
|
alpha: 'bravo',
|
|
87
87
|
charlie: 'echo'
|
|
88
88
|
};
|
|
89
89
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeFalsy();
|
|
90
90
|
});
|
|
91
|
-
it('SHOULD be shown when the component has multiple show_when conditions, with type "or" provided and ALL are matched',
|
|
92
|
-
|
|
91
|
+
it('SHOULD be shown when the component has multiple show_when conditions, with type "or" provided and ALL are matched', () => {
|
|
92
|
+
const COMPONENT = {
|
|
93
93
|
show_when: {
|
|
94
94
|
"type": "or",
|
|
95
95
|
"conditions": [{
|
|
@@ -103,14 +103,14 @@ describe('utils', function () {
|
|
|
103
103
|
}]
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
|
-
|
|
106
|
+
const DATA = {
|
|
107
107
|
alpha: 'Alpha',
|
|
108
108
|
bravo: 'Bravo'
|
|
109
109
|
};
|
|
110
110
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeTruthy();
|
|
111
111
|
});
|
|
112
|
-
it('SHOULD be shown when the component has multiple show_when conditions, with type "or" provided and at least ONE is matched',
|
|
113
|
-
|
|
112
|
+
it('SHOULD be shown when the component has multiple show_when conditions, with type "or" provided and at least ONE is matched', () => {
|
|
113
|
+
const COMPONENT = {
|
|
114
114
|
show_when: {
|
|
115
115
|
"type": "or",
|
|
116
116
|
"conditions": [{
|
|
@@ -124,14 +124,14 @@ describe('utils', function () {
|
|
|
124
124
|
}]
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
|
-
|
|
127
|
+
const DATA = {
|
|
128
128
|
alpha: 'Alpha',
|
|
129
129
|
bravo: 'Bravo'
|
|
130
130
|
};
|
|
131
131
|
expect((0, _showComponent.default)(COMPONENT, DATA)).toBeTruthy();
|
|
132
132
|
});
|
|
133
|
-
it('should NOT be shown when the component has multiple show_when conditions, with type "or" provided and NONE are matched',
|
|
134
|
-
|
|
133
|
+
it('should NOT be shown when the component has multiple show_when conditions, with type "or" provided and NONE are matched', () => {
|
|
134
|
+
const COMPONENT = {
|
|
135
135
|
show_when: {
|
|
136
136
|
"type": "or",
|
|
137
137
|
"conditions": [{
|
|
@@ -145,7 +145,7 @@ describe('utils', function () {
|
|
|
145
145
|
}]
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
|
-
|
|
148
|
+
const DATA = {
|
|
149
149
|
alpha: 'Alpha',
|
|
150
150
|
bravo: 'Bravo'
|
|
151
151
|
};
|
|
@@ -7,11 +7,11 @@ exports.default = void 0;
|
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _cleanAttributes = _interopRequireDefault(require("./cleanAttributes"));
|
|
10
|
-
function _interopRequireDefault(
|
|
11
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // Global imports
|
|
12
12
|
// Local imports
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const wrapInFormGroup = (config, children) => {
|
|
14
|
+
const attrs = (0, _cleanAttributes.default)(config, ['fieldId', 'displayMenu', 'showCharacterCount', 'readonly']);
|
|
15
15
|
return /*#__PURE__*/_react.default.createElement(_copReactComponents.FormGroup, _extends({}, attrs, {
|
|
16
16
|
onChange: null
|
|
17
17
|
}), children);
|
|
@@ -7,8 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
var _meetsAllConditions = _interopRequireDefault(require("./meetsAllConditions"));
|
|
8
8
|
var _meetsCondition = _interopRequireDefault(require("./meetsCondition"));
|
|
9
9
|
var _meetsOneCondition = _interopRequireDefault(require("./meetsOneCondition"));
|
|
10
|
-
function _interopRequireDefault(
|
|
11
|
-
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const Condition = {
|
|
12
12
|
meetsOne: _meetsOneCondition.default,
|
|
13
13
|
meetsAll: _meetsAllConditions.default,
|
|
14
14
|
met: _meetsCondition.default
|
|
@@ -8,20 +8,20 @@ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
|
8
8
|
var _Data = _interopRequireDefault(require("../Data"));
|
|
9
9
|
var _meetsCondition = _interopRequireDefault(require("./meetsCondition"));
|
|
10
10
|
var _setupConditions = _interopRequireDefault(require("./setupConditions"));
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
// Global imports
|
|
13
13
|
|
|
14
14
|
// Local imports
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const testConditions = function (conditions, data) {
|
|
17
|
+
let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'and';
|
|
18
|
+
const arr = Array.isArray(conditions) ? conditions : [conditions];
|
|
19
|
+
const testCallback = condition => {
|
|
20
20
|
if (Array.isArray(condition.conditions)) {
|
|
21
21
|
return testConditions(condition.conditions, data, condition.type);
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const field = condition.field.startsWith('interpolate::') ? _copReactComponents.Utils.interpolateString(condition.field, data).replace('interpolate::', '') : condition.field;
|
|
24
|
+
const sourceDataValue = _Data.default.getSource(data, field);
|
|
25
25
|
return (0, _meetsCondition.default)(condition, sourceDataValue, data);
|
|
26
26
|
};
|
|
27
27
|
return type === 'and' ? arr.every(testCallback) : arr.some(testCallback);
|
|
@@ -33,8 +33,8 @@ var testConditions = function testConditions(conditions, data) {
|
|
|
33
33
|
* @param {object} data The top-level form data.
|
|
34
34
|
* @returns Boolean true if all conditions are met; false otherwise.
|
|
35
35
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const meetsAllConditions = (options, data) => {
|
|
37
|
+
const conditions = (0, _setupConditions.default)(options);
|
|
38
38
|
if (conditions) {
|
|
39
39
|
return testConditions(conditions, data);
|
|
40
40
|
}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _meetsAllConditions = _interopRequireDefault(require("./meetsAllConditions"));
|
|
4
|
-
function _interopRequireDefault(
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
5
|
// Local imports
|
|
6
6
|
|
|
7
|
-
describe('utils.Condition.meetsAllConditions',
|
|
8
|
-
|
|
7
|
+
describe('utils.Condition.meetsAllConditions', () => {
|
|
8
|
+
const DATA = {
|
|
9
9
|
alpha: 'bravo',
|
|
10
10
|
charlie: 'delta'
|
|
11
11
|
};
|
|
12
|
-
it('should evaluate to true when conditions are null',
|
|
12
|
+
it('should evaluate to true when conditions are null', () => {
|
|
13
13
|
expect((0, _meetsAllConditions.default)(null, DATA)).toBeTruthy();
|
|
14
14
|
});
|
|
15
|
-
it('should evaluate to true when conditions are undefined',
|
|
15
|
+
it('should evaluate to true when conditions are undefined', () => {
|
|
16
16
|
expect((0, _meetsAllConditions.default)(undefined, DATA)).toBeTruthy();
|
|
17
17
|
});
|
|
18
|
-
it('should evaluate to true when conditions is an empty array',
|
|
18
|
+
it('should evaluate to true when conditions is an empty array', () => {
|
|
19
19
|
expect((0, _meetsAllConditions.default)([], DATA)).toBeTruthy();
|
|
20
20
|
});
|
|
21
|
-
it('should evaluate to true when a single condition is met',
|
|
22
|
-
|
|
21
|
+
it('should evaluate to true when a single condition is met', () => {
|
|
22
|
+
const CONDITION = {
|
|
23
23
|
field: 'alpha',
|
|
24
24
|
op: 'eq',
|
|
25
25
|
value: 'bravo'
|
|
26
26
|
};
|
|
27
27
|
expect((0, _meetsAllConditions.default)(CONDITION, DATA)).toBeTruthy();
|
|
28
28
|
});
|
|
29
|
-
it('should evaluate to false when a single condition is not met',
|
|
30
|
-
|
|
29
|
+
it('should evaluate to false when a single condition is not met', () => {
|
|
30
|
+
const CONDITION = {
|
|
31
31
|
field: 'alpha',
|
|
32
32
|
op: 'ne',
|
|
33
33
|
value: 'bravo'
|
|
34
34
|
};
|
|
35
35
|
expect((0, _meetsAllConditions.default)(CONDITION, DATA)).toBeFalsy();
|
|
36
36
|
});
|
|
37
|
-
it('should evaluate to true when all conditions are met',
|
|
38
|
-
|
|
37
|
+
it('should evaluate to true when all conditions are met', () => {
|
|
38
|
+
const CONDITIONS = [{
|
|
39
39
|
field: 'alpha',
|
|
40
40
|
op: 'eq',
|
|
41
41
|
value: 'bravo'
|
|
@@ -46,8 +46,8 @@ describe('utils.Condition.meetsAllConditions', function () {
|
|
|
46
46
|
}];
|
|
47
47
|
expect((0, _meetsAllConditions.default)(CONDITIONS, DATA)).toBeTruthy();
|
|
48
48
|
});
|
|
49
|
-
it('should evaluate to false when one of the conditions is not met',
|
|
50
|
-
|
|
49
|
+
it('should evaluate to false when one of the conditions is not met', () => {
|
|
50
|
+
const CONDITIONS = [{
|
|
51
51
|
field: 'alpha',
|
|
52
52
|
op: 'eq',
|
|
53
53
|
value: 'bravo'
|
|
@@ -58,18 +58,18 @@ describe('utils.Condition.meetsAllConditions', function () {
|
|
|
58
58
|
}];
|
|
59
59
|
expect((0, _meetsAllConditions.default)(CONDITIONS, DATA)).toBeFalsy();
|
|
60
60
|
});
|
|
61
|
-
it('should handle nested conditions',
|
|
62
|
-
|
|
61
|
+
it('should handle nested conditions', () => {
|
|
62
|
+
const VALID_DATA = {
|
|
63
63
|
shouldBeAlpha: 'alpha',
|
|
64
64
|
shouldBeBravo: 'bravo',
|
|
65
65
|
canBeCharlieOrDelta: 'charlie'
|
|
66
66
|
};
|
|
67
|
-
|
|
67
|
+
const INVALID_DATA = {
|
|
68
68
|
shouldBeAlpha: 'alpha',
|
|
69
69
|
shouldBeBravo: 'bravo',
|
|
70
70
|
canBeCharlieOrDelta: 'echo'
|
|
71
71
|
};
|
|
72
|
-
|
|
72
|
+
const CONDITIONS = [{
|
|
73
73
|
type: 'or',
|
|
74
74
|
conditions: [{
|
|
75
75
|
field: 'canBeCharlieOrDelta',
|
|
@@ -92,12 +92,12 @@ describe('utils.Condition.meetsAllConditions', function () {
|
|
|
92
92
|
expect((0, _meetsAllConditions.default)(CONDITIONS, VALID_DATA)).toBeTruthy();
|
|
93
93
|
expect((0, _meetsAllConditions.default)(CONDITIONS, INVALID_DATA)).toBeFalsy();
|
|
94
94
|
});
|
|
95
|
-
it('should evaluate conditions correctly using interpolated fields',
|
|
96
|
-
|
|
95
|
+
it('should evaluate conditions correctly using interpolated fields', () => {
|
|
96
|
+
const NEW_DATA = {
|
|
97
97
|
role: 'admin',
|
|
98
98
|
'admin_status': 'active'
|
|
99
99
|
};
|
|
100
|
-
|
|
100
|
+
const CONDITION = {
|
|
101
101
|
// eslint-disable-next-line no-template-curly-in-string
|
|
102
102
|
field: 'interpolate::${role}_status',
|
|
103
103
|
op: 'eq',
|
|
@@ -5,15 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _Data = _interopRequireDefault(require("../Data"));
|
|
8
|
-
function _interopRequireDefault(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
// Local imports
|
|
10
|
+
|
|
11
|
+
const getComparisonValue = (condition, data) => {
|
|
12
12
|
if (['in', 'nin', 'includesAllOf', '!includesAllOf'].includes(condition.op)) {
|
|
13
13
|
return condition.values;
|
|
14
14
|
}
|
|
15
|
-
if (typeof condition.value === 'string' &&
|
|
16
|
-
|
|
15
|
+
if (typeof condition.value === 'string' && condition.value?.startsWith('field::')) {
|
|
16
|
+
const comparisonField = condition.value.replace('field::', '');
|
|
17
17
|
return _Data.default.getSource(data, comparisonField);
|
|
18
18
|
}
|
|
19
19
|
return condition.value;
|
|
@@ -31,9 +31,9 @@ var getComparisonValue = function getComparisonValue(condition, data) {
|
|
|
31
31
|
*
|
|
32
32
|
* @returns A boolean indicating whether the value meets the condition.
|
|
33
33
|
*/
|
|
34
|
-
|
|
35
|
-
if (condition &&
|
|
36
|
-
|
|
34
|
+
const meetsCondition = (condition, value, data) => {
|
|
35
|
+
if (condition && typeof condition === 'object') {
|
|
36
|
+
const compare = getComparisonValue(condition, data);
|
|
37
37
|
switch (condition.op) {
|
|
38
38
|
case '=':
|
|
39
39
|
case 'eq':
|
|
@@ -68,8 +68,8 @@ var meetsCondition = function meetsCondition(condition, value, data) {
|
|
|
68
68
|
if (!value || !compare) {
|
|
69
69
|
return false;
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
const valFloat = parseFloat(value.replace(',', ''));
|
|
72
|
+
const compareFloat = parseFloat(compare.replace(',', ''));
|
|
73
73
|
return valFloat < compareFloat;
|
|
74
74
|
}
|
|
75
75
|
case '>':
|
|
@@ -77,23 +77,20 @@ var meetsCondition = function meetsCondition(condition, value, data) {
|
|
|
77
77
|
if (!value || !compare) {
|
|
78
78
|
return false;
|
|
79
79
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return
|
|
80
|
+
const valFloat = parseFloat(value.replace(/,/g, ''));
|
|
81
|
+
const compareFloat = parseFloat(compare.replace(/,/g, ''));
|
|
82
|
+
return valFloat > compareFloat;
|
|
83
83
|
}
|
|
84
84
|
case 'contains':
|
|
85
85
|
{
|
|
86
|
-
return value
|
|
86
|
+
return value?.toString().toLowerCase().includes(compare);
|
|
87
87
|
// If no value is provided, the field cannot contain it, so it must fail the condition.
|
|
88
88
|
}
|
|
89
|
-
|
|
90
89
|
case '!contains':
|
|
91
90
|
{
|
|
92
|
-
|
|
93
|
-
return (_value$toString$toLow = !(value !== null && value !== void 0 && value.toString().toLowerCase().includes(compare))) !== null && _value$toString$toLow !== void 0 ? _value$toString$toLow : true;
|
|
91
|
+
return !value?.toString().toLowerCase().includes(compare) ?? true;
|
|
94
92
|
// If no value is provided, the field cannot contain it, so it must meet the condition.
|
|
95
93
|
}
|
|
96
|
-
|
|
97
94
|
case 'includes':
|
|
98
95
|
{
|
|
99
96
|
if (Array.isArray(value)) {
|
|
@@ -111,18 +108,14 @@ var meetsCondition = function meetsCondition(condition, value, data) {
|
|
|
111
108
|
case 'includesObjectProp':
|
|
112
109
|
{
|
|
113
110
|
if (Array.isArray(value)) {
|
|
114
|
-
return value.some(
|
|
115
|
-
return v[condition.key] === compare;
|
|
116
|
-
});
|
|
111
|
+
return value.some(v => v[condition.key] === compare);
|
|
117
112
|
}
|
|
118
113
|
return false;
|
|
119
114
|
}
|
|
120
115
|
case '!includesObjectProp':
|
|
121
116
|
{
|
|
122
117
|
if (Array.isArray(value)) {
|
|
123
|
-
return !value.some(
|
|
124
|
-
return v[condition.key] === compare;
|
|
125
|
-
});
|
|
118
|
+
return !value.some(v => v[condition.key] === compare);
|
|
126
119
|
}
|
|
127
120
|
return true;
|
|
128
121
|
}
|
|
@@ -132,9 +125,7 @@ var meetsCondition = function meetsCondition(condition, value, data) {
|
|
|
132
125
|
// This will break if compare is not an array, meaning
|
|
133
126
|
// the form JSON has been written incorrectly. Seemed silly
|
|
134
127
|
// to try and hide the configuration error with type checking.
|
|
135
|
-
return compare.every(
|
|
136
|
-
return value.includes(entry);
|
|
137
|
-
});
|
|
128
|
+
return compare.every(entry => value.includes(entry));
|
|
138
129
|
}
|
|
139
130
|
return false;
|
|
140
131
|
}
|
|
@@ -144,9 +135,7 @@ var meetsCondition = function meetsCondition(condition, value, data) {
|
|
|
144
135
|
// This will break if compare is not an array, meaning
|
|
145
136
|
// the form JSON has been written incorrectly. Seemed silly
|
|
146
137
|
// to try and hide the configuration error with type checking.
|
|
147
|
-
return !compare.every(
|
|
148
|
-
return value.includes(entry);
|
|
149
|
-
});
|
|
138
|
+
return !compare.every(entry => value.includes(entry));
|
|
150
139
|
}
|
|
151
140
|
return true;
|
|
152
141
|
}
|