@ukhomeoffice/cop-react-form-renderer 6.7.0-alpha → 6.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CheckYourAnswers/Answer.js +22 -16
- package/dist/components/CheckYourAnswers/Answer.test.js +180 -92
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +137 -103
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +861 -463
- package/dist/components/CollectionPage/CollectionPage.js +63 -73
- package/dist/components/CollectionPage/CollectionPage.test.js +366 -316
- package/dist/components/CollectionSummary/BannerStrip.js +13 -13
- package/dist/components/CollectionSummary/BannerStrip.test.js +76 -80
- package/dist/components/CollectionSummary/CollectionSummary.js +126 -99
- package/dist/components/CollectionSummary/CollectionSummary.test.js +188 -152
- package/dist/components/CollectionSummary/Confirmation.js +12 -14
- package/dist/components/CollectionSummary/Confirmation.test.js +63 -68
- package/dist/components/CollectionSummary/RenderListView.js +52 -46
- package/dist/components/CollectionSummary/RenderListView.scss +1 -1
- package/dist/components/CollectionSummary/RenderListView.test.js +77 -78
- package/dist/components/CollectionSummary/SummaryCard.js +152 -110
- package/dist/components/CollectionSummary/SummaryCard.test.js +1018 -929
- package/dist/components/CollectionSummary/SummaryCardDetails.js +137 -94
- package/dist/components/CollectionSummary/SummaryCardDetails.scss +13 -4
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +331 -128
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +35 -30
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +74 -62
- package/dist/components/FormComponent/Collection.js +108 -74
- package/dist/components/FormComponent/Collection.test.js +1081 -909
- package/dist/components/FormComponent/Container.js +39 -40
- package/dist/components/FormComponent/Container.test.js +412 -312
- package/dist/components/FormComponent/FormComponent.js +72 -69
- package/dist/components/FormComponent/FormComponent.test.js +414 -353
- package/dist/components/FormComponent/helpers/addLabel.js +7 -4
- package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
- package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
- package/dist/components/FormComponent/helpers/getComponentError.js +5 -3
- package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +4 -3
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
- package/dist/components/FormComponent/helpers/index.js +4 -4
- package/dist/components/FormPage/FormPage.js +80 -65
- package/dist/components/FormPage/FormPage.test.js +163 -127
- package/dist/components/FormRenderer/FormRenderer.js +180 -143
- package/dist/components/FormRenderer/FormRenderer.test.js +1115 -730
- package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
- package/dist/components/FormRenderer/handlers/getPageId.js +3 -1
- package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
- package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
- package/dist/components/FormRenderer/handlers/index.js +1 -1
- package/dist/components/FormRenderer/handlers/navigate.js +3 -3
- 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 +15 -15
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -1
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +20 -16
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -17
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
- package/dist/components/FormRenderer/helpers/getCYA.js +5 -3
- package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getFormState.js +7 -5
- package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
- package/dist/components/FormRenderer/helpers/getNextPageId.js +24 -13
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
- package/dist/components/FormRenderer/helpers/getPage.js +4 -2
- package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -7
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +97 -103
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +60 -62
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +78 -71
- package/dist/components/FormRenderer/helpers/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +51 -59
- package/dist/components/FormRenderer/onCYAAction.test.js +152 -164
- package/dist/components/FormRenderer/onPageAction.js +39 -43
- package/dist/components/FormRenderer/onPageAction.test.js +208 -223
- package/dist/components/FormRenderer/onTaskAction.js +13 -9
- package/dist/components/FormRenderer/onTaskAction.test.js +88 -93
- package/dist/components/PageActions/ActionButton.js +15 -12
- package/dist/components/PageActions/ActionButton.test.js +78 -56
- package/dist/components/PageActions/PageActions.js +10 -10
- package/dist/components/PageActions/PageActions.test.js +115 -86
- package/dist/components/SummaryList/GroupAction.js +17 -9
- package/dist/components/SummaryList/GroupAction.test.js +33 -37
- package/dist/components/SummaryList/RowAction.js +16 -11
- package/dist/components/SummaryList/RowAction.test.js +33 -37
- package/dist/components/SummaryList/SummaryList.js +34 -21
- package/dist/components/SummaryList/SummaryList.scss +15 -0
- package/dist/components/SummaryList/SummaryList.test.js +226 -143
- package/dist/components/SummaryList/SummaryListHeadingRow.js +4 -6
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +53 -0
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.scss +38 -0
- package/dist/components/SummaryList/SummaryListRow.js +4 -6
- package/dist/components/SummaryList/SummaryListTitleRow.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -3
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -3
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/index.js +1 -1
- package/dist/components/TaskList/Task.js +29 -19
- package/dist/components/TaskList/Task.test.js +76 -83
- package/dist/components/TaskList/TaskList.js +92 -49
- package/dist/components/TaskList/TaskList.scss +24 -0
- package/dist/components/TaskList/TaskList.test.js +255 -113
- package/dist/components/TaskList/TaskState.js +5 -7
- package/dist/components/TaskList/TaskState.test.js +45 -52
- package/dist/components/index.js +7 -7
- package/dist/context/HooksContext/HooksContext.js +80 -57
- package/dist/context/HooksContext/HooksContext.test.js +35 -26
- package/dist/context/HooksContext/index.js +4 -3
- package/dist/context/ValidationContext/ValidationContext.js +94 -43
- package/dist/context/ValidationContext/ValidationContext.test.js +68 -56
- package/dist/context/ValidationContext/index.js +4 -3
- package/dist/context/index.js +2 -2
- package/dist/hooks/index.js +10 -9
- package/dist/hooks/useAxios.js +40 -14
- package/dist/hooks/useGetRequest.js +97 -61
- package/dist/hooks/useHooks.js +3 -1
- package/dist/hooks/useRefData.js +39 -26
- package/dist/hooks/useValidation.js +3 -1
- package/dist/index.js +14 -13
- 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 +38 -44
- package/dist/models/TaskStates.js +28 -29
- package/dist/models/index.js +9 -9
- package/dist/setupTests.js +31 -30
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +54 -52
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +25 -15
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +35 -33
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +31 -17
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +44 -42
- package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +24 -18
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -15
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +36 -33
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +61 -58
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +108 -87
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +281 -162
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +20 -25
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +97 -103
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +18 -13
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +76 -70
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +42 -0
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +56 -0
- package/dist/utils/CheckYourAnswers/index.js +1 -1
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -17
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +22 -12
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +38 -47
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +11 -7
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
- package/dist/utils/CollectionPage/getCollectionPageData.js +12 -8
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
- package/dist/utils/CollectionPage/getErrorsForCollection.js +24 -24
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +22 -20
- package/dist/utils/CollectionPage/getQuickEditPage.js +31 -35
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +27 -15
- package/dist/utils/CollectionPage/index.js +1 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.js +43 -31
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +26 -26
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +6 -4
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
- package/dist/utils/CollectionPage/setCollectionPageData.js +16 -10
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +24 -24
- package/dist/utils/Component/addShowWhen.js +8 -4
- package/dist/utils/Component/addShowWhen.test.js +37 -37
- package/dist/utils/Component/applyToComponentTree.js +18 -18
- package/dist/utils/Component/applyToComponentTree.test.js +32 -27
- package/dist/utils/Component/cleanAttributes.js +13 -10
- package/dist/utils/Component/cleanAttributes.test.js +18 -17
- package/dist/utils/Component/elevateNestedComponents.js +7 -6
- package/dist/utils/Component/elevateNestedComponents.test.js +68 -30
- package/dist/utils/Component/getComponent.js +94 -88
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +17 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +59 -46
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +48 -39
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -23
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +18 -20
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +25 -20
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +9 -10
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +8 -9
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +26 -22
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +175 -155
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +72 -57
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +38 -31
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +29 -20
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +8 -9
- package/dist/utils/Component/getDefaultValue.js +8 -6
- package/dist/utils/Component/getDefaultValue.test.js +12 -12
- package/dist/utils/Component/getDefaultValueFromConfig.js +21 -22
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
- package/dist/utils/Component/index.js +1 -1
- package/dist/utils/Component/isEditable.js +4 -2
- package/dist/utils/Component/isEditable.test.js +15 -14
- package/dist/utils/Component/optionIsSelected.js +6 -1
- package/dist/utils/Component/optionIsSelected.test.js +35 -9
- package/dist/utils/Component/setupContainerComponentsPath.js +29 -27
- package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
- package/dist/utils/Component/showComponent.js +1 -1
- package/dist/utils/Component/showComponent.test.js +28 -28
- package/dist/utils/Component/wrapInFormGroup.js +2 -2
- package/dist/utils/Condition/index.js +1 -1
- package/dist/utils/Condition/meetsAllConditions.js +8 -8
- package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
- package/dist/utils/Condition/meetsCondition.js +25 -16
- package/dist/utils/Condition/meetsCondition.test.js +402 -402
- package/dist/utils/Condition/meetsOneCondition.js +5 -5
- package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
- package/dist/utils/Condition/setupConditions.js +18 -13
- package/dist/utils/Condition/setupConditions.test.js +7 -7
- package/dist/utils/Container/getEditableComponents.js +5 -3
- package/dist/utils/Container/getEditableComponents.test.js +45 -43
- package/dist/utils/Container/index.js +1 -1
- package/dist/utils/Container/setupNesting.js +20 -16
- package/dist/utils/Container/setupNesting.test.js +30 -27
- package/dist/utils/Container/showContainer.js +7 -3
- package/dist/utils/Container/showContainer.test.js +30 -30
- package/dist/utils/Data/applyFormula.js +48 -38
- package/dist/utils/Data/applyFormula.test.js +20 -20
- package/dist/utils/Data/getAutocompleteSource.js +26 -18
- package/dist/utils/Data/getAutocompleteSource.test.js +86 -80
- package/dist/utils/Data/getDataPath.js +28 -18
- package/dist/utils/Data/getDataPath.test.js +12 -12
- package/dist/utils/Data/getOptions.js +30 -24
- package/dist/utils/Data/getOptions.test.js +27 -27
- package/dist/utils/Data/getSourceData.js +19 -6
- package/dist/utils/Data/getSourceData.test.js +80 -84
- package/dist/utils/Data/index.js +1 -1
- package/dist/utils/Data/nestInRefdataOptions.js +16 -9
- package/dist/utils/Data/nestInRefdataOptions.test.js +16 -16
- package/dist/utils/Data/refDataToOptions.js +13 -10
- package/dist/utils/Data/refDataToOptions.test.js +19 -19
- package/dist/utils/Data/setDataItem.js +8 -7
- package/dist/utils/Data/setDataItem.test.js +37 -37
- package/dist/utils/Data/setupFormData.js +21 -13
- package/dist/utils/Data/setupFormData.test.js +50 -51
- package/dist/utils/Data/setupRefDataUrlForComponent.js +26 -20
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
- package/dist/utils/FormPage/applyConditionalProperties.js +9 -5
- package/dist/utils/FormPage/applyConditionalProperties.test.js +18 -15
- package/dist/utils/FormPage/getConditionalText.js +3 -3
- package/dist/utils/FormPage/getConditionalText.test.js +29 -29
- package/dist/utils/FormPage/getFormPage.js +16 -15
- package/dist/utils/FormPage/getFormPage.test.js +46 -47
- package/dist/utils/FormPage/getFormPages.js +12 -7
- package/dist/utils/FormPage/getFormPages.test.js +23 -20
- package/dist/utils/FormPage/getPageActions.js +15 -9
- package/dist/utils/FormPage/getPageActions.test.js +32 -32
- package/dist/utils/FormPage/getParagraphFromText.js +7 -5
- package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
- package/dist/utils/FormPage/index.js +4 -2
- package/dist/utils/FormPage/showFormPage.js +7 -3
- package/dist/utils/FormPage/showFormPage.test.js +32 -32
- package/dist/utils/FormPage/showFormPageCYA.js +1 -1
- package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
- package/dist/utils/FormPage/useComponent.js +28 -21
- package/dist/utils/FormPage/useComponent.test.js +79 -77
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +18 -18
- package/dist/utils/Format/formatDataForComponent.js +6 -5
- package/dist/utils/Format/formatDataForComponent.test.js +78 -50
- package/dist/utils/Format/formatDataForForm.js +8 -6
- package/dist/utils/Format/formatDataForForm.test.js +16 -13
- package/dist/utils/Format/formatDataForPage.js +5 -4
- package/dist/utils/Format/formatDataForPage.test.js +25 -20
- package/dist/utils/Format/index.js +1 -1
- package/dist/utils/Hub/getFormHub.js +1 -1
- package/dist/utils/Hub/getFormHub.test.js +31 -28
- package/dist/utils/Hub/index.js +1 -1
- 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 +16 -24
- package/dist/utils/Meta/documents/index.js +1 -1
- package/dist/utils/Meta/documents/setDocumentsForField.js +16 -14
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +34 -68
- package/dist/utils/Meta/index.js +1 -1
- package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
- package/dist/utils/Operate/getFirstOf.js +5 -5
- package/dist/utils/Operate/getFirstOf.test.js +31 -31
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +52 -46
- package/dist/utils/Operate/getLength.js +50 -0
- package/dist/utils/Operate/getLength.test.js +89 -0
- package/dist/utils/Operate/index.js +1 -1
- package/dist/utils/Operate/persistValueInFormData.js +3 -3
- package/dist/utils/Operate/persistValueInFormData.test.js +20 -22
- package/dist/utils/Operate/runPageOperations.js +9 -7
- package/dist/utils/Operate/runPageOperations.test.js +36 -35
- package/dist/utils/Operate/setValueInFormData.js +2 -2
- package/dist/utils/Operate/setValueInFormData.test.js +16 -16
- package/dist/utils/Operate/shouldRun.js +6 -6
- package/dist/utils/Operate/shouldRun.test.js +27 -21
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
- package/dist/utils/Validate/additional/index.js +6 -6
- package/dist/utils/Validate/additional/index.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
- package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
- package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
- package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +11 -7
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +41 -37
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +4 -4
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +39 -35
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +16 -14
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
- package/dist/utils/Validate/additional/mustNotContainSql.js +4 -3
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +26 -28
- package/dist/utils/Validate/additional/utils.js +22 -9
- package/dist/utils/Validate/index.js +1 -1
- package/dist/utils/Validate/validateCollection.js +25 -19
- package/dist/utils/Validate/validateCollection.test.js +66 -74
- package/dist/utils/Validate/validateComponent.js +21 -18
- package/dist/utils/Validate/validateComponent.test.js +176 -166
- package/dist/utils/Validate/validateContainer.js +20 -15
- package/dist/utils/Validate/validateContainer.test.js +52 -58
- package/dist/utils/Validate/validateDate.js +21 -15
- package/dist/utils/Validate/validateDate.test.js +32 -31
- package/dist/utils/Validate/validateEmail.js +8 -6
- package/dist/utils/Validate/validateEmail.test.js +25 -25
- package/dist/utils/Validate/validateMultifile.js +7 -5
- package/dist/utils/Validate/validateMultifile.test.js +18 -17
- package/dist/utils/Validate/validatePage.js +22 -19
- package/dist/utils/Validate/validatePage.test.js +203 -215
- package/dist/utils/Validate/validateRegex.js +5 -3
- package/dist/utils/Validate/validateRegex.test.js +14 -14
- package/dist/utils/Validate/validateRequired.js +6 -4
- package/dist/utils/Validate/validateRequired.test.js +18 -18
- package/dist/utils/Validate/validateTextArea.js +6 -4
- package/dist/utils/Validate/validateTextArea.test.js +20 -20
- package/dist/utils/Validate/validateTime.js +26 -11
- package/dist/utils/Validate/validateTime.test.js +62 -16
- package/dist/utils/index.js +9 -7
- package/package.json +2 -2
- package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +0 -37
- package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +0 -41
|
@@ -2,21 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
var _persistValueInFormData = _interopRequireDefault(require("./persistValueInFormData"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('Utils.Operate.persistValueInFormData', ()
|
|
6
|
-
|
|
5
|
+
describe('Utils.Operate.persistValueInFormData', function () {
|
|
6
|
+
var DATA = {
|
|
7
7
|
alpha: 'abc',
|
|
8
8
|
beta: 'charlie',
|
|
9
9
|
charlie: '123'
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
target
|
|
15
|
-
} = _ref;
|
|
11
|
+
var ON_CHANGE_COUNT = 0;
|
|
12
|
+
var ON_CHANGE = function ON_CHANGE(_ref) {
|
|
13
|
+
var target = _ref.target;
|
|
16
14
|
DATA[target.name] = target.value;
|
|
17
15
|
ON_CHANGE_COUNT += 1;
|
|
18
16
|
};
|
|
19
|
-
beforeEach(()
|
|
17
|
+
beforeEach(function () {
|
|
20
18
|
DATA = {
|
|
21
19
|
alpha: 'abc',
|
|
22
20
|
beta: 'charlie',
|
|
@@ -24,8 +22,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
24
22
|
};
|
|
25
23
|
ON_CHANGE_COUNT = 0;
|
|
26
24
|
});
|
|
27
|
-
it('Should trigger a change correctly', ()
|
|
28
|
-
|
|
25
|
+
it('Should trigger a change correctly', function () {
|
|
26
|
+
var CONFIG = {
|
|
29
27
|
name: 'alpha',
|
|
30
28
|
value: 'bcd'
|
|
31
29
|
};
|
|
@@ -37,8 +35,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
37
35
|
});
|
|
38
36
|
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
39
37
|
});
|
|
40
|
-
it('Should trigger a change correctly with boolean false', ()
|
|
41
|
-
|
|
38
|
+
it('Should trigger a change correctly with boolean false', function () {
|
|
39
|
+
var CONFIG = {
|
|
42
40
|
name: 'alpha',
|
|
43
41
|
value: false
|
|
44
42
|
};
|
|
@@ -50,8 +48,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
50
48
|
});
|
|
51
49
|
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
52
50
|
});
|
|
53
|
-
it('Should not call onChange when value is unchanged', ()
|
|
54
|
-
|
|
51
|
+
it('Should not call onChange when value is unchanged', function () {
|
|
52
|
+
var CONFIG = {
|
|
55
53
|
name: 'alpha',
|
|
56
54
|
value: 'abc'
|
|
57
55
|
};
|
|
@@ -63,8 +61,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
63
61
|
});
|
|
64
62
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
65
63
|
});
|
|
66
|
-
it('Should not call onChange if no value or field is given', ()
|
|
67
|
-
|
|
64
|
+
it('Should not call onChange if no value or field is given', function () {
|
|
65
|
+
var CONFIG = {
|
|
68
66
|
name: 'alpha'
|
|
69
67
|
};
|
|
70
68
|
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
@@ -75,8 +73,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
75
73
|
});
|
|
76
74
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
77
75
|
});
|
|
78
|
-
it('Should not call onChange if no name is given', ()
|
|
79
|
-
|
|
76
|
+
it('Should not call onChange if no name is given', function () {
|
|
77
|
+
var CONFIG = {
|
|
80
78
|
field: 'charlie'
|
|
81
79
|
};
|
|
82
80
|
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
@@ -87,8 +85,8 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
87
85
|
});
|
|
88
86
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
89
87
|
});
|
|
90
|
-
it('Should not call onChange if field cannot be found', ()
|
|
91
|
-
|
|
88
|
+
it('Should not call onChange if field cannot be found', function () {
|
|
89
|
+
var CONFIG = {
|
|
92
90
|
name: 'alpha',
|
|
93
91
|
field: 'delta'
|
|
94
92
|
};
|
|
@@ -100,9 +98,9 @@ describe('Utils.Operate.persistValueInFormData', () => {
|
|
|
100
98
|
});
|
|
101
99
|
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
102
100
|
});
|
|
103
|
-
it('Should correctly interpolate a field value', ()
|
|
101
|
+
it('Should correctly interpolate a field value', function () {
|
|
104
102
|
// eslint-disable-next-line no-template-curly-in-string
|
|
105
|
-
|
|
103
|
+
var CONFIG = {
|
|
106
104
|
name: 'alpha',
|
|
107
105
|
field: '${beta}'
|
|
108
106
|
};
|
|
@@ -12,20 +12,22 @@ var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData")
|
|
|
12
12
|
var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
13
13
|
var _setDataItem = _interopRequireDefault(require("../Data/setDataItem"));
|
|
14
14
|
var _getFirstOf = _interopRequireDefault(require("./getFirstOf"));
|
|
15
|
+
var _getLength = _interopRequireDefault(require("./getLength"));
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
17
|
// Global imports.
|
|
17
18
|
|
|
18
19
|
// Local imports.
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
var functions = {
|
|
21
22
|
checkValueIsTruthy: _checkValueIsTruthy.default,
|
|
22
23
|
getIndexOfMatchingValueIn: _getIndexOfMatchingValueIn.default,
|
|
23
24
|
persistValueInFormData: _persistValueInFormData.default,
|
|
24
25
|
setValueInFormData: _setValueInFormData.default,
|
|
26
|
+
getLength: _getLength.default,
|
|
25
27
|
getFirstOf: _getFirstOf.default
|
|
26
28
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
var doOperation = function doOperation(config, data, onChange) {
|
|
30
|
+
var fn = functions[config.function];
|
|
29
31
|
if (typeof fn === 'function') {
|
|
30
32
|
return fn(config, data, onChange);
|
|
31
33
|
}
|
|
@@ -49,15 +51,15 @@ const doOperation = (config, data, onChange) => {
|
|
|
49
51
|
* @param {function} onChange The page's onChange handler.
|
|
50
52
|
* @returns data with the results of any operations included.
|
|
51
53
|
*/
|
|
52
|
-
|
|
54
|
+
var runPageOperations = function runPageOperations(config, data, onChange) {
|
|
53
55
|
if (config !== null && config !== void 0 && config.operations && data) {
|
|
54
|
-
config.operations.forEach(op
|
|
56
|
+
config.operations.forEach(function (op) {
|
|
55
57
|
if ((0, _shouldRun.default)(op.run_when, data)) {
|
|
56
|
-
|
|
58
|
+
var result = doOperation(op, data, onChange);
|
|
57
59
|
if (op.output) {
|
|
58
60
|
// Remove array indexers and replace them with dot separators. This ensures that outputPath will
|
|
59
61
|
// work with setDataItem.
|
|
60
|
-
|
|
62
|
+
var outputPath = _copReactComponents.Utils.interpolateString(op.output, data).replace('[', '.').replace(']', '');
|
|
61
63
|
(0, _setDataItem.default)(data, outputPath, result);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
@@ -2,35 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
var _runPageOperations = _interopRequireDefault(require("./runPageOperations"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
|
|
6
|
-
|
|
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); }
|
|
6
|
+
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
|
+
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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
11
|
+
describe('Utils.Operate.runPageOperations', function () {
|
|
12
|
+
var DATA = {
|
|
7
13
|
alpha: 'abc',
|
|
8
14
|
bravo: ['bcd', 'cde', 'charlie'],
|
|
9
15
|
charlie: 'def',
|
|
10
16
|
delta: 'root',
|
|
11
17
|
array: ['123', '234', '456']
|
|
12
18
|
};
|
|
13
|
-
it('Should return an empty object when no operations are specified', ()
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
it('Should return an empty object when no operations are specified', function () {
|
|
20
|
+
var PAGE = {};
|
|
21
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
16
22
|
expect(result).toEqual(DATA);
|
|
17
23
|
});
|
|
18
|
-
it('Should handle a single operation correctly', ()
|
|
19
|
-
|
|
24
|
+
it('Should handle a single operation correctly', function () {
|
|
25
|
+
var PAGE = {
|
|
20
26
|
operations: [{
|
|
21
27
|
output: 'firstOpResult',
|
|
22
28
|
function: 'setValueInFormData',
|
|
23
29
|
field: 'alpha'
|
|
24
30
|
}]
|
|
25
31
|
};
|
|
26
|
-
|
|
27
|
-
expect(result).toEqual({
|
|
28
|
-
...DATA,
|
|
32
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
33
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
29
34
|
firstOpResult: 'abc'
|
|
30
|
-
});
|
|
35
|
+
}));
|
|
31
36
|
});
|
|
32
|
-
it('Should handle a multiple operations correctly', ()
|
|
33
|
-
|
|
37
|
+
it('Should handle a multiple operations correctly', function () {
|
|
38
|
+
var PAGE = {
|
|
34
39
|
operations: [{
|
|
35
40
|
output: 'firstOpResult',
|
|
36
41
|
function: 'setValueInFormData',
|
|
@@ -41,15 +46,14 @@ describe('Utils.Operate.runPageOperations', () => {
|
|
|
41
46
|
field: 'bravo[1]'
|
|
42
47
|
}]
|
|
43
48
|
};
|
|
44
|
-
|
|
45
|
-
expect(result).toEqual({
|
|
46
|
-
...DATA,
|
|
49
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
50
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
47
51
|
firstOpResult: 'abc',
|
|
48
52
|
secondOpResult: 'cde'
|
|
49
|
-
});
|
|
53
|
+
}));
|
|
50
54
|
});
|
|
51
|
-
it('Should handle chained operations correctly', ()
|
|
52
|
-
|
|
55
|
+
it('Should handle chained operations correctly', function () {
|
|
56
|
+
var PAGE = {
|
|
53
57
|
operations: [{
|
|
54
58
|
output: 'firstOpResult',
|
|
55
59
|
function: 'setValueInFormData',
|
|
@@ -61,15 +65,14 @@ describe('Utils.Operate.runPageOperations', () => {
|
|
|
61
65
|
field: '${firstOpResult}'
|
|
62
66
|
}]
|
|
63
67
|
};
|
|
64
|
-
|
|
65
|
-
expect(result).toEqual({
|
|
66
|
-
...DATA,
|
|
68
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
69
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
67
70
|
firstOpResult: 'charlie',
|
|
68
71
|
secondOpResult: 'def'
|
|
69
|
-
});
|
|
72
|
+
}));
|
|
70
73
|
});
|
|
71
|
-
it('Should handle an interpolated output string correctly', ()
|
|
72
|
-
|
|
74
|
+
it('Should handle an interpolated output string correctly', function () {
|
|
75
|
+
var PAGE = {
|
|
73
76
|
operations: [{
|
|
74
77
|
function: 'setValueInFormData',
|
|
75
78
|
value: 'leaf',
|
|
@@ -77,28 +80,26 @@ describe('Utils.Operate.runPageOperations', () => {
|
|
|
77
80
|
output: '${delta}.trunk.branch'
|
|
78
81
|
}]
|
|
79
82
|
};
|
|
80
|
-
|
|
81
|
-
expect(result).toEqual({
|
|
82
|
-
...DATA,
|
|
83
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
84
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
83
85
|
root: {
|
|
84
86
|
trunk: {
|
|
85
87
|
branch: 'leaf'
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
|
-
});
|
|
90
|
+
}));
|
|
89
91
|
});
|
|
90
|
-
it('Should handle an output string with array indeces in', ()
|
|
91
|
-
|
|
92
|
+
it('Should handle an output string with array indeces in', function () {
|
|
93
|
+
var PAGE = {
|
|
92
94
|
operations: [{
|
|
93
95
|
function: 'setValueInFormData',
|
|
94
96
|
value: '000',
|
|
95
97
|
output: 'array[1]'
|
|
96
98
|
}]
|
|
97
99
|
};
|
|
98
|
-
|
|
99
|
-
expect(result).toEqual({
|
|
100
|
-
...DATA,
|
|
100
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
101
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
101
102
|
array: ['123', '000', '456']
|
|
102
|
-
});
|
|
103
|
+
}));
|
|
103
104
|
});
|
|
104
105
|
});
|
|
@@ -11,9 +11,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
11
11
|
|
|
12
12
|
// Local imports.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
var setValueInFormData = function setValueInFormData(config, data) {
|
|
15
15
|
if (config !== null && config !== void 0 && config.field) {
|
|
16
|
-
|
|
16
|
+
var 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;
|
|
@@ -2,43 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('Utils.Operate.setValueInFormData', ()
|
|
6
|
-
|
|
5
|
+
describe('Utils.Operate.setValueInFormData', function () {
|
|
6
|
+
var 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', function () {
|
|
12
|
+
var CONFIG = {
|
|
13
13
|
value: '2'
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
var 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', function () {
|
|
19
|
+
var CONFIG = {
|
|
20
20
|
field: 'a'
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
var 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', function () {
|
|
26
26
|
// eslint-disable-next-line no-template-curly-in-string
|
|
27
|
-
|
|
27
|
+
var CONFIG = {
|
|
28
28
|
field: 'b[${indexOfThree}]'
|
|
29
29
|
};
|
|
30
|
-
|
|
30
|
+
var 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', function () {
|
|
34
|
+
var 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', function () {
|
|
38
|
+
var CONFIG = {
|
|
39
39
|
field: 'a'
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
var result = (0, _setValueInFormData.default)(CONFIG, null);
|
|
42
42
|
expect(result).toEqual(null);
|
|
43
43
|
});
|
|
44
44
|
});
|
|
@@ -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
|
+
var shouldRun = function shouldRun(config, data) {
|
|
22
22
|
if (config !== null && config !== void 0 && config.condition) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
var configuration = config;
|
|
24
|
+
var fieldPath = _copReactComponents.Utils.interpolateString(configuration.field, data);
|
|
25
|
+
var 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
|
+
var lastPath = "".concat(fieldPath, "LastValue");
|
|
31
|
+
var 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.
|
|
@@ -2,59 +2,65 @@
|
|
|
2
2
|
|
|
3
3
|
var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
|
|
6
|
-
|
|
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); }
|
|
6
|
+
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
|
+
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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
11
|
+
describe('Utils.Operate.shouldRun', function () {
|
|
12
|
+
var DATA = {
|
|
7
13
|
alpha: 'abc',
|
|
8
14
|
bravo: ''
|
|
9
15
|
};
|
|
10
|
-
it('Should return true if the run_when config is invalid', ()
|
|
16
|
+
it('Should return true if the run_when config is invalid', function () {
|
|
11
17
|
expect((0, _shouldRun.default)(null, DATA)).toEqual(true);
|
|
12
18
|
});
|
|
13
|
-
it('Should return true when the condition is \'changes\' and target value has changed', ()
|
|
14
|
-
|
|
19
|
+
it('Should return true when the condition is \'changes\' and target value has changed', function () {
|
|
20
|
+
var CONFIG = {
|
|
15
21
|
condition: 'changes',
|
|
16
22
|
field: 'alpha'
|
|
17
23
|
};
|
|
18
|
-
|
|
24
|
+
var result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
19
25
|
expect(result).toEqual(false); // Expect false as this is the first render.
|
|
20
26
|
result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
21
27
|
expect(result).toEqual(false); // Expect false as the field hasn't changed.
|
|
22
|
-
result = (0, _shouldRun.default)(CONFIG, {
|
|
23
|
-
...DATA,
|
|
28
|
+
result = (0, _shouldRun.default)(CONFIG, _objectSpread(_objectSpread({}, DATA), {}, {
|
|
24
29
|
alpha: 'bcd'
|
|
25
|
-
});
|
|
30
|
+
}));
|
|
26
31
|
expect(result).toEqual(true); // Expect true as the field's value has been updated.
|
|
27
32
|
});
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
|
|
34
|
+
it('Should return true when the condition is \'isTruthy\' and target value is truthy', function () {
|
|
35
|
+
var CONFIG = {
|
|
30
36
|
condition: 'isTruthy',
|
|
31
37
|
field: 'alpha'
|
|
32
38
|
};
|
|
33
|
-
|
|
39
|
+
var result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
34
40
|
expect(result).toEqual(true);
|
|
35
41
|
});
|
|
36
|
-
it('Should return false when the condition is \'isTruthy\' and target value is falsy', ()
|
|
37
|
-
|
|
42
|
+
it('Should return false when the condition is \'isTruthy\' and target value is falsy', function () {
|
|
43
|
+
var CONFIG = {
|
|
38
44
|
condition: 'isTruthy',
|
|
39
45
|
field: 'bravo'
|
|
40
46
|
};
|
|
41
|
-
|
|
47
|
+
var result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
42
48
|
expect(result).toEqual(false);
|
|
43
49
|
});
|
|
44
|
-
it('Should return true when the condition is \'isFalsy\' and target value is falsy', ()
|
|
45
|
-
|
|
50
|
+
it('Should return true when the condition is \'isFalsy\' and target value is falsy', function () {
|
|
51
|
+
var CONFIG = {
|
|
46
52
|
condition: 'isFalsy',
|
|
47
53
|
field: 'bravo'
|
|
48
54
|
};
|
|
49
|
-
|
|
55
|
+
var result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
50
56
|
expect(result).toEqual(true);
|
|
51
57
|
});
|
|
52
|
-
it('Should return false when the condition is \'isFalsy\' and target value is truthy', ()
|
|
53
|
-
|
|
58
|
+
it('Should return false when the condition is \'isFalsy\' and target value is truthy', function () {
|
|
59
|
+
var CONFIG = {
|
|
54
60
|
condition: 'isFalsy',
|
|
55
61
|
field: 'alpha'
|
|
56
62
|
};
|
|
57
|
-
|
|
63
|
+
var result = (0, _shouldRun.default)(CONFIG, DATA);
|
|
58
64
|
expect(result).toEqual(false);
|
|
59
65
|
});
|
|
60
66
|
});
|
|
@@ -13,11 +13,11 @@ exports.default = void 0;
|
|
|
13
13
|
* @returns true if the user has entered data into the 'base' field or entered a value into the 'check' field to turn off the validation
|
|
14
14
|
* otherwise returns false
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
var conditionallyRequired = function conditionallyRequired(data, config, component) {
|
|
17
17
|
var _data$component$id, _data$component$id2;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
var conditional = (_data$component$id = data[component.id]) === null || _data$component$id === void 0 ? void 0 : _data$component$id[config.base];
|
|
19
|
+
var checkFieldvalue = (_data$component$id2 = data[component.id]) === null || _data$component$id2 === void 0 ? void 0 : _data$component$id2[config.check];
|
|
20
|
+
var checkHasValue = checkFieldvalue && (checkFieldvalue === null || checkFieldvalue === void 0 ? void 0 : checkFieldvalue.length) > 0;
|
|
21
21
|
return !!(conditional || checkHasValue);
|
|
22
22
|
};
|
|
23
23
|
var _default = exports.default = conditionallyRequired;
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
var _conditionallyRequired = _interopRequireDefault(require("./conditionallyRequired"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('utils', ()
|
|
6
|
-
describe('Validate', ()
|
|
7
|
-
describe('additional', ()
|
|
8
|
-
describe('conditionallyRequired', ()
|
|
9
|
-
|
|
5
|
+
describe('utils', function () {
|
|
6
|
+
describe('Validate', function () {
|
|
7
|
+
describe('additional', function () {
|
|
8
|
+
describe('conditionallyRequired', function () {
|
|
9
|
+
var CONFIG = {
|
|
10
10
|
base: 'componentOne',
|
|
11
11
|
check: 'componentTwo'
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
var COMPONENT = {
|
|
14
14
|
id: 'containerComponent',
|
|
15
15
|
fieldId: 'containerComponent',
|
|
16
16
|
type: 'container',
|
|
@@ -24,16 +24,16 @@ describe('utils', () => {
|
|
|
24
24
|
type: 'checkboxes'
|
|
25
25
|
}]
|
|
26
26
|
};
|
|
27
|
-
test('should pass if only the base field has a value', ()
|
|
28
|
-
|
|
27
|
+
test('should pass if only the base field has a value', function () {
|
|
28
|
+
var DATA = {
|
|
29
29
|
containerComponent: {
|
|
30
30
|
componentOne: 'value'
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(true);
|
|
34
34
|
});
|
|
35
|
-
test('should pass if the base and check fields have values', ()
|
|
36
|
-
|
|
35
|
+
test('should pass if the base and check fields have values', function () {
|
|
36
|
+
var DATA = {
|
|
37
37
|
containerComponent: {
|
|
38
38
|
componentOne: 'value',
|
|
39
39
|
componentTwo: 'value'
|
|
@@ -41,30 +41,30 @@ describe('utils', () => {
|
|
|
41
41
|
};
|
|
42
42
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(true);
|
|
43
43
|
});
|
|
44
|
-
test('should pass if only the check field has a value', ()
|
|
45
|
-
|
|
44
|
+
test('should pass if only the check field has a value', function () {
|
|
45
|
+
var DATA = {
|
|
46
46
|
containerComponent: {
|
|
47
47
|
componentTwo: 'value'
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(true);
|
|
51
51
|
});
|
|
52
|
-
test('should pass if only the check field has a value and that value is an array', ()
|
|
53
|
-
|
|
52
|
+
test('should pass if only the check field has a value and that value is an array', function () {
|
|
53
|
+
var DATA = {
|
|
54
54
|
containerComponent: {
|
|
55
55
|
componentTwo: ['value']
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(true);
|
|
59
59
|
});
|
|
60
|
-
test('should fail if neither field has a value', ()
|
|
61
|
-
|
|
60
|
+
test('should fail if neither field has a value', function () {
|
|
61
|
+
var DATA = {
|
|
62
62
|
containerComponent: {}
|
|
63
63
|
};
|
|
64
64
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(false);
|
|
65
65
|
});
|
|
66
|
-
test('should fail if there is no data', ()
|
|
67
|
-
|
|
66
|
+
test('should fail if there is no data', function () {
|
|
67
|
+
var DATA = {};
|
|
68
68
|
expect((0, _conditionallyRequired.default)(DATA, CONFIG, COMPONENT)).toEqual(false);
|
|
69
69
|
});
|
|
70
70
|
});
|
|
@@ -23,7 +23,7 @@ var _mustSelectOnlyOne = _interopRequireDefault(require("./mustSelectOnlyOne"));
|
|
|
23
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
24
|
// Local imports
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
var functions = {
|
|
27
27
|
conditionallyRequired: _conditionallyRequired.default,
|
|
28
28
|
mustBeAfter: _mustBeAfter.default,
|
|
29
29
|
mustBeBefore: _mustBeBefore.default,
|
|
@@ -41,20 +41,20 @@ const functions = {
|
|
|
41
41
|
mustNotContainSql: _mustNotContainSql.default,
|
|
42
42
|
mustSelectOnlyOne: _mustSelectOnlyOne.default
|
|
43
43
|
};
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
var additionalValidation = function additionalValidation(value, config, component, formData) {
|
|
45
|
+
var fn = functions[config.function];
|
|
46
46
|
if (typeof fn === 'function') {
|
|
47
47
|
return fn(value, config, component, formData) ? undefined : config.message;
|
|
48
48
|
}
|
|
49
49
|
return undefined;
|
|
50
50
|
};
|
|
51
|
-
|
|
51
|
+
var runAdditionalComponentValidation = function runAdditionalComponentValidation(component, value, formData) {
|
|
52
52
|
// We only care when we have a value - if we don't have one but want one, set `required: true`.
|
|
53
53
|
// eslint-disable-next-line no-extra-boolean-cast
|
|
54
54
|
if (!!value) {
|
|
55
55
|
if (Array.isArray(component.additionalValidation)) {
|
|
56
|
-
|
|
57
|
-
component.additionalValidation.forEach(config
|
|
56
|
+
var error;
|
|
57
|
+
component.additionalValidation.forEach(function (config) {
|
|
58
58
|
// If we've already encountered an error, don't run any more validators.
|
|
59
59
|
if (!error) {
|
|
60
60
|
error = additionalValidation(value, config, component, formData);
|