@ukhomeoffice/cop-react-form-renderer 6.14.0 → 6.14.2-alpha
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 +5 -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 +75 -97
- 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 +34 -47
- package/dist/components/CollectionSummary/RenderListView.test.js +113 -111
- package/dist/components/CollectionSummary/SummaryCard.js +101 -133
- package/dist/components/CollectionSummary/SummaryCard.test.js +961 -993
- package/dist/components/CollectionSummary/SummaryCardButtons.js +25 -30
- package/dist/components/CollectionSummary/SummaryCardButtons.test.js +30 -28
- 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 +63 -100
- 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 +70 -93
- package/dist/components/FormPage/FormPage.test.js +150 -202
- package/dist/components/FormPage/index.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +131 -173
- 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 +76 -93
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +110 -115
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +11 -16
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
- 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 +79 -85
- 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 -226
- 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 +72 -63
- package/dist/utils/Data/getAutocompleteSource.test.js +106 -98
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +13 -13
- package/dist/utils/Data/getOptions.js +35 -42
- package/dist/utils/Data/getOptions.test.js +37 -38
- 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 +12 -15
- 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 +15 -23
- package/dist/utils/FormPage/useComponent.test.js +49 -50
- 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 +7 -9
- package/dist/utils/Validate/validateEmail.test.js +27 -27
- 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 +2 -4
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _checkValueIsTruthy = _interopRequireDefault(require("./checkValueIsTruthy"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.checkValueIsTruthy',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.checkValueIsTruthy', () => {
|
|
6
|
+
const DATA = {
|
|
7
7
|
alpha: 'abc',
|
|
8
8
|
bravo: ''
|
|
9
9
|
};
|
|
10
|
-
it('Should return true is the value of the field is truthy',
|
|
11
|
-
|
|
10
|
+
it('Should return true is the value of the field is truthy', () => {
|
|
11
|
+
const CONFIG = {
|
|
12
12
|
field: 'alpha'
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
|
|
15
15
|
expect(result).toEqual(true);
|
|
16
16
|
});
|
|
17
|
-
it('Should return false if the value of the field is falsy',
|
|
18
|
-
|
|
17
|
+
it('Should return false if the value of the field is falsy', () => {
|
|
18
|
+
const CONFIG = {
|
|
19
19
|
field: 'bravo'
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
|
|
22
22
|
expect(result).toEqual(false);
|
|
23
23
|
});
|
|
24
|
-
it('Should return false if the field does not exist',
|
|
25
|
-
|
|
24
|
+
it('Should return false if the field does not exist', () => {
|
|
25
|
+
const CONFIG = {
|
|
26
26
|
field: 'charlie'
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
|
|
29
29
|
expect(result).toEqual(false);
|
|
30
30
|
});
|
|
31
|
-
it('Should return false when an invalid config is used',
|
|
32
|
-
|
|
31
|
+
it('Should return false when an invalid config is used', () => {
|
|
32
|
+
const result = (0, _checkValueIsTruthy.default)(null, DATA);
|
|
33
33
|
expect(result).toEqual(false);
|
|
34
34
|
});
|
|
35
|
-
it('Should return false when invalid data is used',
|
|
36
|
-
|
|
35
|
+
it('Should return false when invalid data is used', () => {
|
|
36
|
+
const CONFIG = {
|
|
37
37
|
field: 'alpha'
|
|
38
38
|
};
|
|
39
|
-
|
|
39
|
+
const result = (0, _checkValueIsTruthy.default)(CONFIG, null);
|
|
40
40
|
expect(result).toEqual(false);
|
|
41
41
|
});
|
|
42
42
|
});
|
|
@@ -10,8 +10,8 @@ exports.default = void 0;
|
|
|
10
10
|
* @param {object} data The page's formData.
|
|
11
11
|
* @param {function} onChange The page's onChange handler.
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const deleteValueInFormData = (config, data, onChange) => {
|
|
14
|
+
const node = data;
|
|
15
15
|
if (config !== null && config !== void 0 && config.field && config !== null && config !== void 0 && config.component) {
|
|
16
16
|
delete node[config.field];
|
|
17
17
|
onChange({
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _deleteValueInFormData = _interopRequireDefault(require("./deleteValueInFormData"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.deleteValueInFormData',
|
|
6
|
-
|
|
7
|
-
it('Should delete value from data',
|
|
8
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.deleteValueInFormData', () => {
|
|
6
|
+
const ON_CHANGE = () => {};
|
|
7
|
+
it('Should delete value from data', () => {
|
|
8
|
+
const CONFIG = {
|
|
9
9
|
field: 'a',
|
|
10
10
|
component: 'A'
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
const DATA = {
|
|
13
13
|
a: '1',
|
|
14
14
|
b: '2'
|
|
15
15
|
};
|
|
@@ -18,12 +18,12 @@ describe('Utils.Operate.deleteValueInFormData', function () {
|
|
|
18
18
|
b: '2'
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
|
-
it('Should do nothing if value is absent',
|
|
22
|
-
|
|
21
|
+
it('Should do nothing if value is absent', () => {
|
|
22
|
+
const CONFIG = {
|
|
23
23
|
field: 'c',
|
|
24
24
|
component: 'C'
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
const DATA = {
|
|
27
27
|
a: '1',
|
|
28
28
|
b: '2'
|
|
29
29
|
};
|
|
@@ -33,9 +33,9 @@ describe('Utils.Operate.deleteValueInFormData', function () {
|
|
|
33
33
|
b: '2'
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
-
it('Should do nothing if config is null',
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
it('Should do nothing if config is null', () => {
|
|
37
|
+
const CONFIG = null;
|
|
38
|
+
const DATA = {
|
|
39
39
|
a: '1',
|
|
40
40
|
b: '2'
|
|
41
41
|
};
|
|
@@ -45,9 +45,9 @@ describe('Utils.Operate.deleteValueInFormData', function () {
|
|
|
45
45
|
b: '2'
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
|
-
it('Should do nothing if config is empty',
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
it('Should do nothing if config is empty', () => {
|
|
49
|
+
const CONFIG = {};
|
|
50
|
+
const DATA = {
|
|
51
51
|
a: '1',
|
|
52
52
|
b: '2'
|
|
53
53
|
};
|
|
@@ -6,17 +6,17 @@ 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 getFirstOf = (config, data) => {
|
|
15
15
|
if (config !== null && config !== void 0 && config.fields) {
|
|
16
|
-
|
|
17
|
-
config.fields.find(
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
let fieldValue;
|
|
17
|
+
config.fields.find(field => {
|
|
18
|
+
const fieldPath = _copReactComponents.Utils.interpolateString(field, data);
|
|
19
|
+
const foundValue = (0, _getSourceData.default)(data, fieldPath);
|
|
20
20
|
if (foundValue) {
|
|
21
21
|
fieldValue = foundValue;
|
|
22
22
|
return true;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getFirstOf = _interopRequireDefault(require("./getFirstOf"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.getFirstOf',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.getFirstOf', () => {
|
|
6
|
+
const DATA = {
|
|
7
7
|
name: 'sam',
|
|
8
8
|
id: 1,
|
|
9
9
|
test: ['2', '3'],
|
|
@@ -12,75 +12,75 @@ describe('Utils.Operate.getFirstOf', function () {
|
|
|
12
12
|
otherIdDoc: '',
|
|
13
13
|
anotherMadeUpId: 789
|
|
14
14
|
};
|
|
15
|
-
it('Should handle interpolated field strings',
|
|
15
|
+
it('Should handle interpolated field strings', () => {
|
|
16
16
|
// eslint-disable-next-line no-template-curly-in-string
|
|
17
|
-
|
|
17
|
+
const CONFIG = {
|
|
18
18
|
fields: ['test[${id}]']
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
21
21
|
expect(result).toEqual(DATA.test[1]);
|
|
22
22
|
});
|
|
23
|
-
it('Should return the value provided in config if no field is specified',
|
|
24
|
-
|
|
23
|
+
it('Should return the value provided in config if no field is specified', () => {
|
|
24
|
+
const CONFIG = {
|
|
25
25
|
value: '2'
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
28
28
|
expect(result).toEqual(CONFIG.value);
|
|
29
29
|
});
|
|
30
|
-
it('Should return the fallback if the requested fields are not found',
|
|
30
|
+
it('Should return the fallback if the requested fields are not found', () => {
|
|
31
31
|
// eslint-disable-next-line no-template-curly-in-string
|
|
32
|
-
|
|
32
|
+
const CONFIG = {
|
|
33
33
|
value: '2',
|
|
34
34
|
fields: ['nonExistent'],
|
|
35
35
|
fallback: "Test ${name}"
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
38
38
|
expect(result).toEqual("Test ".concat(DATA.name));
|
|
39
39
|
});
|
|
40
|
-
it('Should return the value of the passportNumber field given in config',
|
|
41
|
-
|
|
40
|
+
it('Should return the value of the passportNumber field given in config', () => {
|
|
41
|
+
const CONFIG = {
|
|
42
42
|
fields: ['passportNumber', 'anotherMadeUpId', 'otherIdDoc']
|
|
43
43
|
};
|
|
44
|
-
|
|
44
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
45
45
|
expect(result).toEqual(DATA.passportNumber);
|
|
46
46
|
});
|
|
47
|
-
it('Should return the value of the anotherMadeUpId field given in config',
|
|
48
|
-
|
|
47
|
+
it('Should return the value of the anotherMadeUpId field given in config', () => {
|
|
48
|
+
const CONFIG = {
|
|
49
49
|
fields: ['anotherMadeUpId', 'passportNumber', 'otherIdDoc']
|
|
50
50
|
};
|
|
51
|
-
|
|
51
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
52
52
|
expect(result).toEqual(DATA.anotherMadeUpId);
|
|
53
53
|
});
|
|
54
|
-
it('Should return the value of the otherIdDoc field given in config',
|
|
55
|
-
|
|
54
|
+
it('Should return the value of the otherIdDoc field given in config', () => {
|
|
55
|
+
const CONFIG = {
|
|
56
56
|
fields: ['otherIdDoc', 'passportNumber', 'anotherMadeUpId']
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
59
59
|
expect(result).toEqual(DATA.passportNumber);
|
|
60
60
|
});
|
|
61
|
-
it('Should return the value of the otherIdDoc field given in config, if it exists, otherwise next field next in the array',
|
|
62
|
-
|
|
61
|
+
it('Should return the value of the otherIdDoc field given in config, if it exists, otherwise next field next in the array', () => {
|
|
62
|
+
const CONFIG = {
|
|
63
63
|
fields: ['otherIdDoc', 'passportNumber', 'anotherMadeUpId']
|
|
64
64
|
};
|
|
65
|
-
|
|
65
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
66
66
|
expect(result).toEqual(DATA.passportNumber);
|
|
67
67
|
});
|
|
68
|
-
it('Should return no value if elements in config.fields are not found in data',
|
|
69
|
-
|
|
68
|
+
it('Should return no value if elements in config.fields are not found in data', () => {
|
|
69
|
+
const CONFIG = {
|
|
70
70
|
fields: ['otherIdDoc1', 'passportNumber1', 'anotherMadeUpId1']
|
|
71
71
|
};
|
|
72
|
-
|
|
72
|
+
const result = (0, _getFirstOf.default)(CONFIG, DATA);
|
|
73
73
|
expect(result).toEqual('');
|
|
74
74
|
});
|
|
75
|
-
it('Should return null when an invalid config is used',
|
|
76
|
-
|
|
75
|
+
it('Should return null when an invalid config is used', () => {
|
|
76
|
+
const result = (0, _getFirstOf.default)(null, DATA);
|
|
77
77
|
expect(result).toEqual(null);
|
|
78
78
|
});
|
|
79
|
-
it('Should return null when invalid data is used',
|
|
80
|
-
|
|
79
|
+
it('Should return null when invalid data is used', () => {
|
|
80
|
+
const CONFIG = {
|
|
81
81
|
field: 'a'
|
|
82
82
|
};
|
|
83
|
-
|
|
83
|
+
const result = (0, _getFirstOf.default)(CONFIG, null);
|
|
84
84
|
expect(result).toEqual(null);
|
|
85
85
|
});
|
|
86
86
|
});
|
|
@@ -6,16 +6,16 @@ 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 getValueOrField = (config, data) => {
|
|
15
15
|
if (config !== null && config !== void 0 && config.value) {
|
|
16
16
|
return config.value;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
const path = _copReactComponents.Utils.interpolateString(config === null || config === void 0 ? void 0 : config.field, data);
|
|
19
19
|
return (0, _getSourceData.default)(data, path);
|
|
20
20
|
};
|
|
21
21
|
|
|
@@ -28,18 +28,18 @@ var getValueOrField = function getValueOrField(config, data) {
|
|
|
28
28
|
* @param {object} data A page's formData.
|
|
29
29
|
* @returns The index of the matching value if one exists, or null.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
const getIndexOfMatchingValueIn = (config, data) => {
|
|
32
32
|
if (!config || !data) {
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
const targetPath = _copReactComponents.Utils.interpolateString(config.target, data);
|
|
36
|
+
const target = (0, _getSourceData.default)(data, targetPath);
|
|
37
|
+
const value = getValueOrField(config, data);
|
|
38
|
+
const cutoff = getValueOrField(config.cutoff, data);
|
|
39
|
+
const ignore = getValueOrField(config.ignore, data);
|
|
40
|
+
let result = null;
|
|
41
41
|
if (target && value && Array.isArray(target)) {
|
|
42
|
-
target.every(
|
|
42
|
+
target.every((entry, index) => {
|
|
43
43
|
if (index === cutoff) {
|
|
44
44
|
return false;
|
|
45
45
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getIndexOfMatchingValueIn = _interopRequireDefault(require("./getIndexOfMatchingValueIn"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('Utils.Operate.getIndexOfPriorMatchingValueIn',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('Utils.Operate.getIndexOfPriorMatchingValueIn', () => {
|
|
6
|
+
const DATA = {
|
|
7
7
|
arrayOfValues: ['abc', 'bcd', 'cde', 'def', {
|
|
8
8
|
root: {
|
|
9
9
|
branch: 'leaf'
|
|
@@ -17,147 +17,141 @@ describe('Utils.Operate.getIndexOfPriorMatchingValueIn', function () {
|
|
|
17
17
|
cutoffName: 'cutoffIndex',
|
|
18
18
|
ignoreName: 'ignoreIndex'
|
|
19
19
|
};
|
|
20
|
-
it('Should return the index of a matching value if one exists',
|
|
21
|
-
|
|
20
|
+
it('Should return the index of a matching value if one exists', () => {
|
|
21
|
+
const CONFIG = {
|
|
22
22
|
target: 'arrayOfValues',
|
|
23
23
|
value: 'cde'
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
26
26
|
expect(result).toEqual('2');
|
|
27
27
|
});
|
|
28
|
-
it('Should handle getting value from given field',
|
|
29
|
-
|
|
28
|
+
it('Should handle getting value from given field', () => {
|
|
29
|
+
const CONFIG = {
|
|
30
30
|
target: 'arrayOfValues',
|
|
31
31
|
field: 'valueToSearchFor'
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
34
34
|
expect(result).toEqual('2');
|
|
35
35
|
});
|
|
36
|
-
it('Should handle interpolated string for field',
|
|
36
|
+
it('Should handle interpolated string for field', () => {
|
|
37
37
|
// eslint-disable-next-line no-template-curly-in-string
|
|
38
|
-
|
|
38
|
+
const CONFIG = {
|
|
39
39
|
target: 'arrayOfValues',
|
|
40
40
|
field: '${fieldName}'
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
43
43
|
expect(result).toEqual('2');
|
|
44
44
|
});
|
|
45
|
-
it('Should handle interpolated string for key',
|
|
45
|
+
it('Should handle interpolated string for key', () => {
|
|
46
46
|
// eslint-disable-next-line no-template-curly-in-string
|
|
47
|
-
|
|
47
|
+
const CONFIG = {
|
|
48
48
|
target: 'arrayOfValues',
|
|
49
49
|
key: 'root.branch',
|
|
50
50
|
value: 'leaf'
|
|
51
51
|
};
|
|
52
|
-
|
|
52
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
53
53
|
expect(result).toEqual('4');
|
|
54
54
|
});
|
|
55
|
-
it('Should handle a cutoff value being specified',
|
|
56
|
-
|
|
55
|
+
it('Should handle a cutoff value being specified', () => {
|
|
56
|
+
const CONFIG = {
|
|
57
57
|
target: 'arrayOfValues',
|
|
58
58
|
value: 'cde',
|
|
59
59
|
cutoff: {
|
|
60
60
|
value: 1
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
|
-
|
|
63
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
64
64
|
expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
|
|
65
65
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var CONFIG = {
|
|
66
|
+
it('Should handle a cutoff field being specified', () => {
|
|
67
|
+
const CONFIG = {
|
|
69
68
|
target: 'arrayOfValues',
|
|
70
69
|
value: 'cde',
|
|
71
70
|
cutoff: {
|
|
72
71
|
field: 'cutoffIndex'
|
|
73
72
|
}
|
|
74
73
|
};
|
|
75
|
-
|
|
74
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
76
75
|
expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
|
|
77
76
|
});
|
|
78
|
-
|
|
79
|
-
it('Should handle interpolated string for cutoff.field', function () {
|
|
77
|
+
it('Should handle interpolated string for cutoff.field', () => {
|
|
80
78
|
// eslint-disable-next-line no-template-curly-in-string
|
|
81
|
-
|
|
79
|
+
const CONFIG = {
|
|
82
80
|
target: 'arrayOfValues',
|
|
83
81
|
value: 'cde',
|
|
84
82
|
cutoff: {
|
|
85
83
|
field: '${cutoffName}'
|
|
86
84
|
}
|
|
87
85
|
};
|
|
88
|
-
|
|
86
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
89
87
|
expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
|
|
90
88
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var CONFIG = {
|
|
89
|
+
it('Should handle an ignore value being specified', () => {
|
|
90
|
+
const CONFIG = {
|
|
94
91
|
target: 'arrayOfValues',
|
|
95
92
|
value: 'cde',
|
|
96
93
|
ignore: {
|
|
97
94
|
value: 2
|
|
98
95
|
}
|
|
99
96
|
};
|
|
100
|
-
|
|
97
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
101
98
|
expect(result).toEqual(null); // Should ignore the matching value.
|
|
102
99
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var CONFIG = {
|
|
100
|
+
it('Should handle an ignore field being specified', () => {
|
|
101
|
+
const CONFIG = {
|
|
106
102
|
target: 'arrayOfValues',
|
|
107
103
|
value: 'cde',
|
|
108
104
|
ignore: {
|
|
109
105
|
field: 'ignoreIndex'
|
|
110
106
|
}
|
|
111
107
|
};
|
|
112
|
-
|
|
108
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
113
109
|
expect(result).toEqual(null); // Should ignore the matching value.
|
|
114
110
|
});
|
|
115
|
-
|
|
116
|
-
it('Should handle interpolated string for ignore.field', function () {
|
|
111
|
+
it('Should handle interpolated string for ignore.field', () => {
|
|
117
112
|
// eslint-disable-next-line no-template-curly-in-string
|
|
118
|
-
|
|
113
|
+
const CONFIG = {
|
|
119
114
|
target: 'arrayOfValues',
|
|
120
115
|
value: 'cde',
|
|
121
116
|
ignore: {
|
|
122
117
|
field: '${ignoreName}'
|
|
123
118
|
}
|
|
124
119
|
};
|
|
125
|
-
|
|
120
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
126
121
|
expect(result).toEqual(null); // Should ignore the matching value.
|
|
127
122
|
});
|
|
128
|
-
|
|
129
|
-
it('Should handle interpolated string for target', function () {
|
|
123
|
+
it('Should handle interpolated string for target', () => {
|
|
130
124
|
// eslint-disable-next-line no-template-curly-in-string
|
|
131
|
-
|
|
125
|
+
const CONFIG = {
|
|
132
126
|
target: '${targetName}',
|
|
133
127
|
value: 'cde'
|
|
134
128
|
};
|
|
135
|
-
|
|
129
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
136
130
|
expect(result).toEqual('2');
|
|
137
131
|
});
|
|
138
|
-
it('Should return null when the target does not exist',
|
|
139
|
-
|
|
132
|
+
it('Should return null when the target does not exist', () => {
|
|
133
|
+
const CONFIG = {
|
|
140
134
|
target: 'notARealTarget',
|
|
141
135
|
value: 'cde'
|
|
142
136
|
};
|
|
143
|
-
|
|
137
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
144
138
|
expect(result).toEqual(null);
|
|
145
139
|
});
|
|
146
|
-
it('Should return null when config is missing fields',
|
|
147
|
-
|
|
148
|
-
|
|
140
|
+
it('Should return null when config is missing fields', () => {
|
|
141
|
+
const CONFIG = {};
|
|
142
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
|
|
149
143
|
expect(result).toEqual(null);
|
|
150
144
|
});
|
|
151
|
-
it('Should return null when config is invalid',
|
|
152
|
-
|
|
145
|
+
it('Should return null when config is invalid', () => {
|
|
146
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(null, DATA);
|
|
153
147
|
expect(result).toEqual(null);
|
|
154
148
|
});
|
|
155
|
-
it('Should return null when data is invalid',
|
|
156
|
-
|
|
149
|
+
it('Should return null when data is invalid', () => {
|
|
150
|
+
const CONFIG = {
|
|
157
151
|
target: 'arrayOfValues',
|
|
158
152
|
value: 'cde'
|
|
159
153
|
};
|
|
160
|
-
|
|
154
|
+
const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, null);
|
|
161
155
|
expect(result).toEqual(null);
|
|
162
156
|
});
|
|
163
157
|
});
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _getCollectionPageActiveIndex = _interopRequireDefault(require("../CollectionPage/getCollectionPageActiveIndex"));
|
|
9
9
|
var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
// Global imports.
|
|
12
12
|
|
|
13
13
|
// Local imports.
|
|
@@ -21,21 +21,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
21
21
|
* @param {object} data A page's formData.
|
|
22
22
|
* @returns The length of a field if found or 0
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
const getLength = (config, data) => {
|
|
25
25
|
if (!config || !data) {
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// Replace any instances of 'collectionName[]' with 'collectionName[activeIndex]'
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
pathParts.forEach(
|
|
30
|
+
const pathParts = config.target.split('.');
|
|
31
|
+
let updatedPath = '';
|
|
32
|
+
pathParts.forEach(part => {
|
|
33
33
|
if (updatedPath !== '') {
|
|
34
34
|
updatedPath += '.';
|
|
35
35
|
}
|
|
36
36
|
if (part.slice(-2) === '[]') {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const collectionName = part.slice(0, -2);
|
|
38
|
+
const activeIndex = (0, _getCollectionPageActiveIndex.default)(collectionName, data);
|
|
39
39
|
updatedPath += "".concat(collectionName, "[").concat(activeIndex, "]");
|
|
40
40
|
} else {
|
|
41
41
|
updatedPath += part;
|
|
@@ -43,8 +43,8 @@ var getLength = function getLength(config, data) {
|
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
// Get the field and return its length
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
const targetPath = _copReactComponents.Utils.interpolateString(updatedPath, data);
|
|
47
|
+
const target = (0, _getSourceData.default)(data, targetPath);
|
|
48
48
|
return (target === null || target === void 0 ? void 0 : target.length) || 0;
|
|
49
49
|
};
|
|
50
50
|
var _default = exports.default = getLength;
|