@ukhomeoffice/cop-react-form-renderer 6.13.2 → 6.14.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/README.md +8 -0
- package/dist/components/CheckYourAnswers/Answer.js +12 -11
- package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +98 -133
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +544 -939
- package/dist/components/CheckYourAnswers/index.js +1 -1
- package/dist/components/CollectionPage/CollectionPage.js +62 -60
- package/dist/components/CollectionPage/CollectionPage.test.js +315 -365
- package/dist/components/CollectionPage/index.js +1 -1
- package/dist/components/CollectionSummary/BannerStrip.js +14 -14
- package/dist/components/CollectionSummary/BannerStrip.test.js +79 -74
- package/dist/components/CollectionSummary/CollectionSummary.js +81 -99
- package/dist/components/CollectionSummary/CollectionSummary.test.js +182 -166
- package/dist/components/CollectionSummary/Confirmation.js +15 -13
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/RenderListView.js +47 -48
- package/dist/components/CollectionSummary/RenderListView.scss +4 -0
- package/dist/components/CollectionSummary/RenderListView.test.js +133 -98
- package/dist/components/CollectionSummary/SummaryCard.js +110 -148
- package/dist/components/CollectionSummary/SummaryCard.test.js +961 -993
- package/dist/components/CollectionSummary/SummaryCardButtons.js +71 -0
- package/dist/components/CollectionSummary/SummaryCardButtons.test.js +85 -0
- package/dist/components/CollectionSummary/SummaryCardDetails.js +59 -76
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +170 -180
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +63 -75
- package/dist/components/CollectionSummary/index.js +1 -1
- package/dist/components/FormComponent/Collection.js +67 -102
- package/dist/components/FormComponent/Collection.test.js +907 -1080
- package/dist/components/FormComponent/Container.js +35 -29
- package/dist/components/FormComponent/Container.test.js +378 -409
- package/dist/components/FormComponent/FormComponent.js +59 -63
- 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 +99 -88
- package/dist/components/FormPage/FormPage.test.js +173 -164
- package/dist/components/FormPage/index.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +138 -174
- package/dist/components/FormRenderer/FormRenderer.test.js +732 -1114
- 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 +22 -25
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
- package/dist/components/FormRenderer/helpers/getCYA.js +4 -6
- 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 +14 -25
- 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 +7 -9
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +6 -6
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +44 -51
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +68 -74
- package/dist/components/FormRenderer/helpers/index.js +2 -2
- package/dist/components/FormRenderer/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +43 -44
- package/dist/components/FormRenderer/onCYAAction.test.js +126 -133
- package/dist/components/FormRenderer/onPageAction.js +26 -35
- package/dist/components/FormRenderer/onPageAction.test.js +177 -186
- package/dist/components/FormRenderer/onTaskAction.js +11 -12
- package/dist/components/FormRenderer/onTaskAction.test.js +63 -68
- package/dist/components/PageActions/ActionButton.js +14 -14
- 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 +10 -18
- package/dist/components/SummaryList/GroupAction.test.js +38 -34
- package/dist/components/SummaryList/RowAction.js +12 -17
- package/dist/components/SummaryList/RowAction.test.js +38 -34
- package/dist/components/SummaryList/SummaryList.js +23 -25
- package/dist/components/SummaryList/SummaryList.test.js +162 -189
- package/dist/components/SummaryList/SummaryListHeadingRow.js +7 -5
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
- package/dist/components/SummaryList/SummaryListRow.js +7 -5
- package/dist/components/SummaryList/SummaryListTitleRow.js +6 -4
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +23 -23
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +23 -23
- 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 +56 -79
- package/dist/components/TaskList/TaskList.test.js +149 -149
- package/dist/components/TaskList/TaskState.js +8 -6
- package/dist/components/TaskList/TaskState.test.js +53 -46
- package/dist/components/TaskList/index.js +1 -1
- package/dist/components/index.js +8 -8
- package/dist/context/HooksContext/HooksContext.js +56 -79
- 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 +57 -69
- 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 +25 -37
- 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 +30 -31
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +12 -21
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +32 -33
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +15 -28
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +41 -42
- package/dist/utils/CheckYourAnswers/getCYARow.js +7 -7
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -21
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +27 -34
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +48 -52
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +79 -93
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +110 -115
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +11 -14
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +146 -98
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +14 -19
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +69 -73
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +7 -8
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +15 -16
- package/dist/utils/CheckYourAnswers/index.js +2 -2
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +5 -5
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -19
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +13 -20
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +48 -39
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
- package/dist/utils/CollectionPage/getErrorsForCollection.js +20 -21
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
- package/dist/utils/CollectionPage/getQuickEditPage.js +22 -23
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +17 -18
- package/dist/utils/CollectionPage/index.js +2 -2
- package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -35
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +18 -18
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
- package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +25 -25
- package/dist/utils/Component/addShowWhen.js +5 -6
- package/dist/utils/Component/addShowWhen.test.js +38 -38
- package/dist/utils/Component/applyToComponentTree.js +12 -15
- package/dist/utils/Component/applyToComponentTree.test.js +28 -31
- package/dist/utils/Component/cleanAttributes.js +12 -11
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +6 -6
- package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
- package/dist/utils/Component/getComponent.js +81 -83
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +41 -58
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +24 -34
- 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 +21 -26
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +11 -10
- 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 +201 -174
- 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 +32 -39
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +21 -30
- 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 +16 -20
- 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 +23 -28
- package/dist/utils/Component/setupContainerComponentsPath.test.js +12 -12
- package/dist/utils/Component/showComponent.js +2 -2
- 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 +17 -26
- 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 +12 -15
- 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 +14 -15
- package/dist/utils/Container/setupNesting.test.js +20 -23
- package/dist/utils/Container/showContainer.js +4 -8
- package/dist/utils/Container/showContainer.test.js +31 -31
- package/dist/utils/Data/applyFormula.js +30 -44
- package/dist/utils/Data/applyFormula.test.js +21 -21
- package/dist/utils/Data/deleteValues.js +4 -8
- package/dist/utils/Data/deleteValues.test.js +11 -11
- package/dist/utils/Data/getAutocompleteSource.js +19 -27
- package/dist/utils/Data/getAutocompleteSource.test.js +76 -81
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +13 -13
- package/dist/utils/Data/getOptions.js +57 -30
- package/dist/utils/Data/getOptions.test.js +75 -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 -12
- package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
- package/dist/utils/Data/refDataToOptions.js +9 -10
- 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 +13 -20
- package/dist/utils/Data/setupFormData.test.js +48 -47
- package/dist/utils/Data/setupRefDataUrlForComponent.js +11 -20
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +25 -25
- package/dist/utils/FormPage/applyConditionalProperties.js +7 -8
- package/dist/utils/FormPage/applyConditionalProperties.test.js +14 -15
- package/dist/utils/FormPage/getConditionalText.js +4 -4
- package/dist/utils/FormPage/getConditionalText.test.js +30 -30
- package/dist/utils/FormPage/getFormPage.js +16 -12
- package/dist/utils/FormPage/getFormPage.test.js +23 -24
- package/dist/utils/FormPage/getFormPages.js +8 -11
- package/dist/utils/FormPage/getFormPages.test.js +15 -16
- package/dist/utils/FormPage/getPageActions.js +10 -13
- 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 +2 -2
- package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
- package/dist/utils/FormPage/useComponent.js +25 -22
- package/dist/utils/FormPage/useComponent.test.js +79 -44
- 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 +5 -6
- 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 +23 -24
- package/dist/utils/Hub/index.js +2 -2
- package/dist/utils/Meta/constants.js +2 -2
- package/dist/utils/Meta/documents/getDocuments.js +1 -1
- 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 +12 -13
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +70 -33
- package/dist/utils/Meta/index.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.js +3 -3
- package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
- package/dist/utils/Operate/deleteValueInFormData.js +2 -2
- package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
- package/dist/utils/Operate/getFirstOf.js +6 -6
- package/dist/utils/Operate/getFirstOf.test.js +32 -32
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +11 -11
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
- package/dist/utils/Operate/getLength.js +9 -9
- package/dist/utils/Operate/getLength.test.js +19 -19
- package/dist/utils/Operate/index.js +2 -2
- package/dist/utils/Operate/persistValueInFormData.js +4 -4
- package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
- package/dist/utils/Operate/runPageOperations.js +8 -8
- package/dist/utils/Operate/runPageOperations.test.js +24 -25
- package/dist/utils/Operate/setValueInFormData.js +3 -3
- package/dist/utils/Operate/setValueInFormData.test.js +17 -17
- package/dist/utils/Operate/shouldRun.js +7 -7
- package/dist/utils/Operate/shouldRun.test.js +22 -24
- 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 -4
- 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 +8 -12
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -38
- 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 +3 -3
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeInThePast.js +4 -4
- 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 +35 -36
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- 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 +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
- package/dist/utils/Validate/additional/utils.js +9 -22
- package/dist/utils/Validate/index.js +2 -2
- package/dist/utils/Validate/validateCollection.js +18 -23
- package/dist/utils/Validate/validateCollection.test.js +75 -67
- package/dist/utils/Validate/validateComponent.js +19 -19
- package/dist/utils/Validate/validateComponent.test.js +179 -154
- package/dist/utils/Validate/validateContainer.js +14 -17
- package/dist/utils/Validate/validateContainer.test.js +59 -53
- package/dist/utils/Validate/validateDate.js +16 -22
- package/dist/utils/Validate/validateDate.test.js +31 -32
- package/dist/utils/Validate/validateEmail.js +8 -9
- package/dist/utils/Validate/validateEmail.test.js +29 -26
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +13 -18
- package/dist/utils/Validate/validatePage.test.js +198 -195
- package/dist/utils/Validate/validateRegex.js +3 -5
- package/dist/utils/Validate/validateRegex.test.js +15 -15
- package/dist/utils/Validate/validateRequired.js +4 -6
- package/dist/utils/Validate/validateRequired.test.js +19 -19
- package/dist/utils/Validate/validateTextArea.js +4 -6
- 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 +5 -6
- package/package.json +5 -5
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getLength = _interopRequireDefault(require("./getLength"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.getLength',
|
|
6
|
-
it('returns null if config is not defined',
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.getLength', () => {
|
|
6
|
+
it('returns null if config is not defined', () => {
|
|
7
7
|
expect((0, _getLength.default)(null, {})).toEqual(null);
|
|
8
8
|
});
|
|
9
|
-
it('returns null if data is not defined',
|
|
9
|
+
it('returns null if data is not defined', () => {
|
|
10
10
|
expect((0, _getLength.default)({}, null)).toEqual(null);
|
|
11
11
|
});
|
|
12
|
-
it('returns the length of a top level string',
|
|
13
|
-
|
|
12
|
+
it('returns the length of a top level string', () => {
|
|
13
|
+
const CONFIG = {
|
|
14
14
|
target: 'alpha'
|
|
15
15
|
};
|
|
16
|
-
|
|
16
|
+
const DATA = {
|
|
17
17
|
alpha: 'abcdef'
|
|
18
18
|
};
|
|
19
19
|
expect((0, _getLength.default)(CONFIG, DATA)).toEqual(6);
|
|
20
20
|
});
|
|
21
|
-
it('returns the length of a top level array',
|
|
22
|
-
|
|
21
|
+
it('returns the length of a top level array', () => {
|
|
22
|
+
const CONFIG = {
|
|
23
23
|
target: 'alpha'
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
const DATA = {
|
|
26
26
|
alpha: [{
|
|
27
27
|
test: 'test'
|
|
28
28
|
}, {
|
|
@@ -35,11 +35,11 @@ describe('Utils.Operate.getLength', function () {
|
|
|
35
35
|
};
|
|
36
36
|
expect((0, _getLength.default)(CONFIG, DATA)).toEqual(4);
|
|
37
37
|
});
|
|
38
|
-
it('returns 0 if the field cannot be found',
|
|
39
|
-
|
|
38
|
+
it('returns 0 if the field cannot be found', () => {
|
|
39
|
+
const CONFIG = {
|
|
40
40
|
target: 'alpha'
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
const DATA = {
|
|
43
43
|
beta: [{
|
|
44
44
|
test: 'test'
|
|
45
45
|
}, {
|
|
@@ -52,11 +52,11 @@ describe('Utils.Operate.getLength', function () {
|
|
|
52
52
|
};
|
|
53
53
|
expect((0, _getLength.default)(CONFIG, DATA)).toEqual(0);
|
|
54
54
|
});
|
|
55
|
-
it('returns the length of a field not on the top level',
|
|
56
|
-
|
|
55
|
+
it('returns the length of a field not on the top level', () => {
|
|
56
|
+
const CONFIG = {
|
|
57
57
|
target: 'alpha.beta'
|
|
58
58
|
};
|
|
59
|
-
|
|
59
|
+
const DATA = {
|
|
60
60
|
alphaActiveId: 3,
|
|
61
61
|
alpha: {
|
|
62
62
|
beta: 'qwerty'
|
|
@@ -64,11 +64,11 @@ describe('Utils.Operate.getLength', function () {
|
|
|
64
64
|
};
|
|
65
65
|
expect((0, _getLength.default)(CONFIG, DATA)).toEqual(6);
|
|
66
66
|
});
|
|
67
|
-
it('returns the length of an array nested under an array',
|
|
68
|
-
|
|
67
|
+
it('returns the length of an array nested under an array', () => {
|
|
68
|
+
const CONFIG = {
|
|
69
69
|
target: 'alpha[].beta'
|
|
70
70
|
};
|
|
71
|
-
|
|
71
|
+
const DATA = {
|
|
72
72
|
alphaActiveId: 3,
|
|
73
73
|
alpha: [{
|
|
74
74
|
id: 1,
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _runPageOperations = _interopRequireDefault(require("./runPageOperations"));
|
|
8
|
-
function _interopRequireDefault(
|
|
9
|
-
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
const Operate = {
|
|
10
10
|
runPageOperations: _runPageOperations.default
|
|
11
11
|
};
|
|
12
12
|
var _default = exports.default = Operate;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
// Global imports.
|
|
11
11
|
|
|
12
12
|
// Local imports.
|
|
@@ -18,10 +18,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
18
18
|
* @param {object} data The page's formData.
|
|
19
19
|
* @param {function} onChange The page's onChange handler.
|
|
20
20
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const persistValueInFormData = (config, data, onChange) => {
|
|
22
|
+
let value;
|
|
23
23
|
if (config !== null && config !== void 0 && config.field) {
|
|
24
|
-
|
|
24
|
+
const fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
|
|
25
25
|
value = (0, _getSourceData.default)(data, fieldPath);
|
|
26
26
|
} else {
|
|
27
27
|
value = config === null || config === void 0 ? void 0 : config.value;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _persistValueInFormData = _interopRequireDefault(require("./persistValueInFormData"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.persistValueInFormData',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.persistValueInFormData', () => {
|
|
6
|
+
let DATA = {
|
|
7
7
|
alpha: 'abc',
|
|
8
8
|
beta: 'charlie',
|
|
9
9
|
charlie: '123'
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
let ON_CHANGE_COUNT = 0;
|
|
12
|
+
const ON_CHANGE = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
target
|
|
15
|
+
} = _ref;
|
|
14
16
|
DATA[target.name] = target.value;
|
|
15
17
|
ON_CHANGE_COUNT += 1;
|
|
16
18
|
};
|
|
17
|
-
beforeEach(
|
|
19
|
+
beforeEach(() => {
|
|
18
20
|
DATA = {
|
|
19
21
|
alpha: 'abc',
|
|
20
22
|
beta: 'charlie',
|
|
@@ -22,8 +24,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
22
24
|
};
|
|
23
25
|
ON_CHANGE_COUNT = 0;
|
|
24
26
|
});
|
|
25
|
-
it('Should trigger a change correctly',
|
|
26
|
-
|
|
27
|
+
it('Should trigger a change correctly', () => {
|
|
28
|
+
const CONFIG = {
|
|
27
29
|
name: 'alpha',
|
|
28
30
|
value: 'bcd'
|
|
29
31
|
};
|
|
@@ -35,8 +37,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
35
37
|
});
|
|
36
38
|
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
37
39
|
});
|
|
38
|
-
it('Should trigger a change correctly with boolean false',
|
|
39
|
-
|
|
40
|
+
it('Should trigger a change correctly with boolean false', () => {
|
|
41
|
+
const CONFIG = {
|
|
40
42
|
name: 'alpha',
|
|
41
43
|
value: false
|
|
42
44
|
};
|
|
@@ -48,8 +50,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
48
50
|
});
|
|
49
51
|
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
50
52
|
});
|
|
51
|
-
it('Should not call onChange when value is unchanged',
|
|
52
|
-
|
|
53
|
+
it('Should not call onChange when value is unchanged', () => {
|
|
54
|
+
const CONFIG = {
|
|
53
55
|
name: 'alpha',
|
|
54
56
|
value: 'abc'
|
|
55
57
|
};
|
|
@@ -61,8 +63,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
61
63
|
});
|
|
62
64
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
63
65
|
});
|
|
64
|
-
it('Should not call onChange if no value or field is given',
|
|
65
|
-
|
|
66
|
+
it('Should not call onChange if no value or field is given', () => {
|
|
67
|
+
const CONFIG = {
|
|
66
68
|
name: 'alpha'
|
|
67
69
|
};
|
|
68
70
|
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
@@ -73,8 +75,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
73
75
|
});
|
|
74
76
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
75
77
|
});
|
|
76
|
-
it('Should not call onChange if no name is given',
|
|
77
|
-
|
|
78
|
+
it('Should not call onChange if no name is given', () => {
|
|
79
|
+
const CONFIG = {
|
|
78
80
|
field: 'charlie'
|
|
79
81
|
};
|
|
80
82
|
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
@@ -85,8 +87,8 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
85
87
|
});
|
|
86
88
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
87
89
|
});
|
|
88
|
-
it('Should not call onChange if field cannot be found',
|
|
89
|
-
|
|
90
|
+
it('Should not call onChange if field cannot be found', () => {
|
|
91
|
+
const CONFIG = {
|
|
90
92
|
name: 'alpha',
|
|
91
93
|
field: 'delta'
|
|
92
94
|
};
|
|
@@ -98,9 +100,9 @@ describe('Utils.Operate.persistValueInFormData', function () {
|
|
|
98
100
|
});
|
|
99
101
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
100
102
|
});
|
|
101
|
-
it('Should correctly interpolate a field value',
|
|
103
|
+
it('Should correctly interpolate a field value', () => {
|
|
102
104
|
// eslint-disable-next-line no-template-curly-in-string
|
|
103
|
-
|
|
105
|
+
const CONFIG = {
|
|
104
106
|
name: 'alpha',
|
|
105
107
|
field: '${beta}'
|
|
106
108
|
};
|
|
@@ -14,12 +14,12 @@ var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
|
14
14
|
var _setDataItem = _interopRequireDefault(require("../Data/setDataItem"));
|
|
15
15
|
var _getFirstOf = _interopRequireDefault(require("./getFirstOf"));
|
|
16
16
|
var _getLength = _interopRequireDefault(require("./getLength"));
|
|
17
|
-
function _interopRequireDefault(
|
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
18
|
// Global imports.
|
|
19
19
|
|
|
20
20
|
// Local imports.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
const functions = {
|
|
23
23
|
checkValueIsTruthy: _checkValueIsTruthy.default,
|
|
24
24
|
getIndexOfMatchingValueIn: _getIndexOfMatchingValueIn.default,
|
|
25
25
|
persistValueInFormData: _persistValueInFormData.default,
|
|
@@ -28,8 +28,8 @@ var functions = {
|
|
|
28
28
|
getLength: _getLength.default,
|
|
29
29
|
getFirstOf: _getFirstOf.default
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const doOperation = (config, data, onChange) => {
|
|
32
|
+
const fn = functions[config.function];
|
|
33
33
|
if (typeof fn === 'function') {
|
|
34
34
|
return fn(config, data, onChange);
|
|
35
35
|
}
|
|
@@ -53,15 +53,15 @@ var doOperation = function doOperation(config, data, onChange) {
|
|
|
53
53
|
* @param {function} onChange The page's onChange handler.
|
|
54
54
|
* @returns data with the results of any operations included.
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
const runPageOperations = (config, data, onChange) => {
|
|
57
57
|
if (config !== null && config !== void 0 && config.operations && data) {
|
|
58
|
-
config.operations.forEach(
|
|
58
|
+
config.operations.forEach(op => {
|
|
59
59
|
if ((0, _shouldRun.default)(op.run_when, data)) {
|
|
60
|
-
|
|
60
|
+
const result = doOperation(op, data, onChange);
|
|
61
61
|
if (op.output) {
|
|
62
62
|
// Remove array indexers and replace them with dot separators. This ensures that outputPath will
|
|
63
63
|
// work with setDataItem.
|
|
64
|
-
|
|
64
|
+
const outputPath = _copReactComponents.Utils.interpolateString(op.output, data).replace('[', '.').replace(']', '');
|
|
65
65
|
(0, _setDataItem.default)(data, outputPath, result);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _runPageOperations = _interopRequireDefault(require("./runPageOperations"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
-
function _defineProperty(
|
|
9
|
-
function _toPropertyKey(
|
|
10
|
-
function _toPrimitive(
|
|
11
|
-
describe('Utils.Operate.runPageOperations',
|
|
12
|
-
|
|
7
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
8
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
9
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
+
describe('Utils.Operate.runPageOperations', () => {
|
|
11
|
+
const DATA = {
|
|
13
12
|
alpha: 'abc',
|
|
14
13
|
bravo: ['bcd', 'cde', 'charlie'],
|
|
15
14
|
charlie: 'def',
|
|
16
15
|
delta: 'root',
|
|
17
16
|
array: ['123', '234', '456']
|
|
18
17
|
};
|
|
19
|
-
it('Should return an empty object when no operations are specified',
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
it('Should return an empty object when no operations are specified', () => {
|
|
19
|
+
const PAGE = {};
|
|
20
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
22
21
|
expect(result).toEqual(DATA);
|
|
23
22
|
});
|
|
24
|
-
it('Should handle a single operation correctly',
|
|
25
|
-
|
|
23
|
+
it('Should handle a single operation correctly', () => {
|
|
24
|
+
const PAGE = {
|
|
26
25
|
operations: [{
|
|
27
26
|
output: 'firstOpResult',
|
|
28
27
|
function: 'setValueInFormData',
|
|
29
28
|
field: 'alpha'
|
|
30
29
|
}]
|
|
31
30
|
};
|
|
32
|
-
|
|
31
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
33
32
|
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
34
33
|
firstOpResult: 'abc'
|
|
35
34
|
}));
|
|
36
35
|
});
|
|
37
|
-
it('Should handle a multiple operations correctly',
|
|
38
|
-
|
|
36
|
+
it('Should handle a multiple operations correctly', () => {
|
|
37
|
+
const PAGE = {
|
|
39
38
|
operations: [{
|
|
40
39
|
output: 'firstOpResult',
|
|
41
40
|
function: 'setValueInFormData',
|
|
@@ -46,14 +45,14 @@ describe('Utils.Operate.runPageOperations', function () {
|
|
|
46
45
|
field: 'bravo[1]'
|
|
47
46
|
}]
|
|
48
47
|
};
|
|
49
|
-
|
|
48
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
50
49
|
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
51
50
|
firstOpResult: 'abc',
|
|
52
51
|
secondOpResult: 'cde'
|
|
53
52
|
}));
|
|
54
53
|
});
|
|
55
|
-
it('Should handle chained operations correctly',
|
|
56
|
-
|
|
54
|
+
it('Should handle chained operations correctly', () => {
|
|
55
|
+
const PAGE = {
|
|
57
56
|
operations: [{
|
|
58
57
|
output: 'firstOpResult',
|
|
59
58
|
function: 'setValueInFormData',
|
|
@@ -65,14 +64,14 @@ describe('Utils.Operate.runPageOperations', function () {
|
|
|
65
64
|
field: '${firstOpResult}'
|
|
66
65
|
}]
|
|
67
66
|
};
|
|
68
|
-
|
|
67
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
69
68
|
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
70
69
|
firstOpResult: 'charlie',
|
|
71
70
|
secondOpResult: 'def'
|
|
72
71
|
}));
|
|
73
72
|
});
|
|
74
|
-
it('Should handle an interpolated output string correctly',
|
|
75
|
-
|
|
73
|
+
it('Should handle an interpolated output string correctly', () => {
|
|
74
|
+
const PAGE = {
|
|
76
75
|
operations: [{
|
|
77
76
|
function: 'setValueInFormData',
|
|
78
77
|
value: 'leaf',
|
|
@@ -80,7 +79,7 @@ describe('Utils.Operate.runPageOperations', function () {
|
|
|
80
79
|
output: '${delta}.trunk.branch'
|
|
81
80
|
}]
|
|
82
81
|
};
|
|
83
|
-
|
|
82
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
84
83
|
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
85
84
|
root: {
|
|
86
85
|
trunk: {
|
|
@@ -89,15 +88,15 @@ describe('Utils.Operate.runPageOperations', function () {
|
|
|
89
88
|
}
|
|
90
89
|
}));
|
|
91
90
|
});
|
|
92
|
-
it('Should handle an output string with array indeces in',
|
|
93
|
-
|
|
91
|
+
it('Should handle an output string with array indeces in', () => {
|
|
92
|
+
const PAGE = {
|
|
94
93
|
operations: [{
|
|
95
94
|
function: 'setValueInFormData',
|
|
96
95
|
value: '000',
|
|
97
96
|
output: 'array[1]'
|
|
98
97
|
}]
|
|
99
98
|
};
|
|
100
|
-
|
|
99
|
+
const result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
101
100
|
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
102
101
|
array: ['123', '000', '456']
|
|
103
102
|
}));
|
|
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
// Global imports.
|
|
11
11
|
|
|
12
12
|
// Local imports.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const setValueInFormData = (config, data) => {
|
|
15
15
|
if (config !== null && config !== void 0 && config.field) {
|
|
16
|
-
|
|
16
|
+
const fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
|
|
17
17
|
return (0, _getSourceData.default)(data, fieldPath) || null;
|
|
18
18
|
}
|
|
19
19
|
return (config === null || config === void 0 ? void 0 : config.value) || null;
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.setValueInFormData',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.setValueInFormData', () => {
|
|
6
|
+
const DATA = {
|
|
7
7
|
a: '1',
|
|
8
8
|
b: ['2', '3'],
|
|
9
9
|
indexOfThree: 1
|
|
10
10
|
};
|
|
11
|
-
it('Should return the value provided in config if no field is specified',
|
|
12
|
-
|
|
11
|
+
it('Should return the value provided in config if no field is specified', () => {
|
|
12
|
+
const CONFIG = {
|
|
13
13
|
value: '2'
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
const result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
16
16
|
expect(result).toEqual(CONFIG.value);
|
|
17
17
|
});
|
|
18
|
-
it('Should return the value of the field given in config, if it exists',
|
|
19
|
-
|
|
18
|
+
it('Should return the value of the field given in config, if it exists', () => {
|
|
19
|
+
const CONFIG = {
|
|
20
20
|
field: 'a'
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
const result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
23
23
|
expect(result).toEqual(DATA.a);
|
|
24
24
|
});
|
|
25
|
-
it('Should handle interpolated field strings',
|
|
25
|
+
it('Should handle interpolated field strings', () => {
|
|
26
26
|
// eslint-disable-next-line no-template-curly-in-string
|
|
27
|
-
|
|
27
|
+
const CONFIG = {
|
|
28
28
|
field: 'b[${indexOfThree}]'
|
|
29
29
|
};
|
|
30
|
-
|
|
30
|
+
const result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
31
31
|
expect(result).toEqual(DATA.b[1]);
|
|
32
32
|
});
|
|
33
|
-
it('Should return null when an invalid config is used',
|
|
34
|
-
|
|
33
|
+
it('Should return null when an invalid config is used', () => {
|
|
34
|
+
const result = (0, _setValueInFormData.default)(null, DATA);
|
|
35
35
|
expect(result).toEqual(null);
|
|
36
36
|
});
|
|
37
|
-
it('Should return null when invalid data is used',
|
|
38
|
-
|
|
37
|
+
it('Should return null when invalid data is used', () => {
|
|
38
|
+
const CONFIG = {
|
|
39
39
|
field: 'a'
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
const result = (0, _setValueInFormData.default)(CONFIG, null);
|
|
42
42
|
expect(result).toEqual(null);
|
|
43
43
|
});
|
|
44
44
|
});
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
// Global imports.
|
|
11
11
|
|
|
12
12
|
// Local imports.
|
|
@@ -18,17 +18,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
18
18
|
* @param {object} data The page's formData.
|
|
19
19
|
* @returns
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
const shouldRun = (config, data) => {
|
|
22
22
|
if (config !== null && config !== void 0 && config.condition) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const configuration = config;
|
|
24
|
+
const fieldPath = _copReactComponents.Utils.interpolateString(configuration.field, data);
|
|
25
|
+
const fieldValue = (0, _getSourceData.default)(data, fieldPath);
|
|
26
26
|
switch (configuration.condition) {
|
|
27
27
|
// Only run the operation if a given field's value has changed.
|
|
28
28
|
case 'changes':
|
|
29
29
|
{
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
const lastPath = "".concat(fieldPath, "LastValue");
|
|
31
|
+
const lastValue = configuration[lastPath] || null;
|
|
32
32
|
if (lastValue === null) {
|
|
33
33
|
// If there isn't a last value then we assume
|
|
34
34
|
// that this is the first render.
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
-
function _defineProperty(
|
|
9
|
-
function _toPropertyKey(
|
|
10
|
-
function _toPrimitive(
|
|
11
|
-
describe('Utils.Operate.shouldRun',
|
|
12
|
-
|
|
7
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
8
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
9
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
+
describe('Utils.Operate.shouldRun', () => {
|
|
11
|
+
const DATA = {
|
|
13
12
|
alpha: 'abc',
|
|
14
13
|
bravo: ''
|
|
15
14
|
};
|
|
16
|
-
it('Should return true if the run_when config is invalid',
|
|
15
|
+
it('Should return true if the run_when config is invalid', () => {
|
|
17
16
|
expect((0, _shouldRun.default)(null, DATA)).toEqual(true);
|
|
18
17
|
});
|
|
19
|
-
it('Should return true when the condition is \'changes\' and target value has changed',
|
|
20
|
-
|
|
18
|
+
it('Should return true when the condition is \'changes\' and target value has changed', () => {
|
|
19
|
+
const CONFIG = {
|
|
21
20
|
condition: 'changes',
|
|
22
21
|
field: 'alpha'
|
|
23
22
|
};
|
|
24
|
-
|
|
23
|
+
let result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
25
24
|
expect(result).toEqual(false); // Expect false as this is the first render.
|
|
26
25
|
result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
27
26
|
expect(result).toEqual(false); // Expect false as the field hasn't changed.
|
|
@@ -30,37 +29,36 @@ describe('Utils.Operate.shouldRun', function () {
|
|
|
30
29
|
}));
|
|
31
30
|
expect(result).toEqual(true); // Expect true as the field's value has been updated.
|
|
32
31
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var CONFIG = {
|
|
32
|
+
it('Should return true when the condition is \'isTruthy\' and target value is truthy', () => {
|
|
33
|
+
const CONFIG = {
|
|
36
34
|
condition: 'isTruthy',
|
|
37
35
|
field: 'alpha'
|
|
38
36
|
};
|
|
39
|
-
|
|
37
|
+
const result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
40
38
|
expect(result).toEqual(true);
|
|
41
39
|
});
|
|
42
|
-
it('Should return false when the condition is \'isTruthy\' and target value is falsy',
|
|
43
|
-
|
|
40
|
+
it('Should return false when the condition is \'isTruthy\' and target value is falsy', () => {
|
|
41
|
+
const CONFIG = {
|
|
44
42
|
condition: 'isTruthy',
|
|
45
43
|
field: 'bravo'
|
|
46
44
|
};
|
|
47
|
-
|
|
45
|
+
const result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
48
46
|
expect(result).toEqual(false);
|
|
49
47
|
});
|
|
50
|
-
it('Should return true when the condition is \'isFalsy\' and target value is falsy',
|
|
51
|
-
|
|
48
|
+
it('Should return true when the condition is \'isFalsy\' and target value is falsy', () => {
|
|
49
|
+
const CONFIG = {
|
|
52
50
|
condition: 'isFalsy',
|
|
53
51
|
field: 'bravo'
|
|
54
52
|
};
|
|
55
|
-
|
|
53
|
+
const result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
56
54
|
expect(result).toEqual(true);
|
|
57
55
|
});
|
|
58
|
-
it('Should return false when the condition is \'isFalsy\' and target value is truthy',
|
|
59
|
-
|
|
56
|
+
it('Should return false when the condition is \'isFalsy\' and target value is truthy', () => {
|
|
57
|
+
const CONFIG = {
|
|
60
58
|
condition: 'isFalsy',
|
|
61
59
|
field: 'alpha'
|
|
62
60
|
};
|
|
63
|
-
|
|
61
|
+
const result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
64
62
|
expect(result).toEqual(false);
|
|
65
63
|
});
|
|
66
64
|
});
|
|
@@ -16,7 +16,7 @@ exports.default = void 0;
|
|
|
16
16
|
* the 'check' value exists in formData as an item
|
|
17
17
|
* otherwise returns true
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
const conditionallyPermittedChange = (data, config, _, formData) => {
|
|
20
20
|
if (data !== config.base && formData[config.check]) {
|
|
21
21
|
return false;
|
|
22
22
|
}
|