@ukhomeoffice/cop-react-form-renderer 5.45.2-alpha → 5.48.1-bravo
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 +12 -12
- package/dist/components/CheckYourAnswers/Answer.test.js +127 -92
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +131 -101
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +769 -464
- package/dist/components/CollectionPage/CollectionPage.js +58 -66
- package/dist/components/CollectionPage/CollectionPage.test.js +342 -300
- package/dist/components/CollectionSummary/BannerStrip.js +12 -12
- package/dist/components/CollectionSummary/BannerStrip.test.js +59 -63
- package/dist/components/CollectionSummary/CollectionSummary.js +88 -61
- package/dist/components/CollectionSummary/CollectionSummary.test.js +96 -102
- package/dist/components/CollectionSummary/Confirmation.js +12 -14
- package/dist/components/CollectionSummary/Confirmation.test.js +63 -68
- package/dist/components/CollectionSummary/SummaryCard.js +148 -109
- package/dist/components/CollectionSummary/SummaryCard.scss +1 -1
- package/dist/components/CollectionSummary/SummaryCard.test.js +927 -905
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +29 -23
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +73 -61
- package/dist/components/FormComponent/Collection.js +107 -73
- package/dist/components/FormComponent/Collection.test.js +945 -809
- package/dist/components/FormComponent/Container.js +38 -40
- package/dist/components/FormComponent/Container.test.js +345 -314
- package/dist/components/FormComponent/FormComponent.js +70 -67
- package/dist/components/FormComponent/FormComponent.test.js +342 -284
- 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 +181 -144
- 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 +5 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +47 -11
- 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 +91 -97
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +60 -62
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +73 -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 +40 -44
- package/dist/components/FormRenderer/onPageAction.test.js +206 -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 +26 -21
- package/dist/components/SummaryList/SummaryList.test.js +166 -143
- package/dist/components/SummaryList/SummaryListHeadingRow.js +4 -6
- 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 +71 -45
- package/dist/components/TaskList/TaskList.test.js +111 -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 +79 -58
- package/dist/context/HooksContext/HooksContext.test.js +35 -26
- package/dist/context/HooksContext/index.js +4 -3
- package/dist/context/ValidationContext/ValidationContext.js +72 -32
- package/dist/context/ValidationContext/ValidationContext.test.js +59 -47
- 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 -30
- 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 +60 -58
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +88 -79
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +124 -146
- 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/index.js +1 -1
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +24 -24
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +1 -1
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -17
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +18 -9
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +22 -27
- 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/getQuickEditPage.js +19 -19
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +16 -12
- package/dist/utils/CollectionPage/index.js +1 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.js +30 -29
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +17 -17
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +6 -4
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
- package/dist/utils/CollectionPage/setCollectionPageData.js +12 -8
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +17 -17
- 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 +5 -5
- package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
- package/dist/utils/Component/getComponent.js +95 -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 +70 -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 +22 -23
- 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 +1 -1
- package/dist/utils/Component/optionIsSelected.test.js +9 -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 +7 -7
- package/dist/utils/Condition/meetsAllConditions.test.js +17 -17
- package/dist/utils/Condition/meetsCondition.js +17 -14
- package/dist/utils/Condition/meetsCondition.test.js +376 -376
- 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 +25 -19
- package/dist/utils/Data/getOptions.test.js +20 -20
- 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/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/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/getPageTitle.js +2 -2
- package/dist/utils/FormPage/getPageTitle.test.js +22 -22
- package/dist/utils/FormPage/getParagraphFromText.js +7 -5
- package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
- package/dist/utils/FormPage/index.js +1 -1
- 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 -78
- 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 +77 -50
- package/dist/utils/Format/formatDataForForm.js +8 -6
- package/dist/utils/Format/formatDataForForm.test.js +15 -13
- package/dist/utils/Format/formatDataForPage.js +5 -4
- package/dist/utils/Format/formatDataForPage.test.js +23 -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 +46 -46
- 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 +7 -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 +26 -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 +10 -8
- 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 +35 -0
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +127 -0
- 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 +16 -18
- package/dist/utils/Validate/validateComponent.test.js +146 -167
- package/dist/utils/Validate/validateContainer.js +19 -14
- package/dist/utils/Validate/validateContainer.test.js +45 -49
- package/dist/utils/Validate/validateDate.js +17 -11
- package/dist/utils/Validate/validateDate.test.js +29 -28
- 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 +18 -17
- package/dist/utils/Validate/validatePage.test.js +182 -185
- 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 +14 -7
- package/dist/utils/Validate/validateTime.test.js +14 -14
- package/dist/utils/index.js +9 -7
- package/package.json +1 -1
|
@@ -2,42 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
var _mustBeShorterThan = _interopRequireDefault(require("./mustBeShorterThan"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('utils', ()
|
|
6
|
-
describe('Validate', ()
|
|
7
|
-
describe('additional', ()
|
|
8
|
-
describe('mustBeShorterThan', ()
|
|
9
|
-
test('should return true given a string shorter than the given length', ()
|
|
10
|
-
|
|
5
|
+
describe('utils', function () {
|
|
6
|
+
describe('Validate', function () {
|
|
7
|
+
describe('additional', function () {
|
|
8
|
+
describe('mustBeShorterThan', function () {
|
|
9
|
+
test('should return true given a string shorter than the given length', function () {
|
|
10
|
+
var result = (0, _mustBeShorterThan.default)('to', {
|
|
11
11
|
value: 3
|
|
12
12
|
});
|
|
13
13
|
expect(result).toEqual(true);
|
|
14
14
|
});
|
|
15
|
-
test('should return false given a string longer than the given length', ()
|
|
16
|
-
|
|
15
|
+
test('should return false given a string longer than the given length', function () {
|
|
16
|
+
var result = (0, _mustBeShorterThan.default)('test', {
|
|
17
17
|
value: 3
|
|
18
18
|
});
|
|
19
19
|
expect(result).toEqual(false);
|
|
20
20
|
});
|
|
21
|
-
test('should return false given a string equal to the given length', ()
|
|
22
|
-
|
|
21
|
+
test('should return false given a string equal to the given length', function () {
|
|
22
|
+
var result = (0, _mustBeShorterThan.default)('dog', {
|
|
23
23
|
value: 3
|
|
24
24
|
});
|
|
25
25
|
expect(result).toEqual(false);
|
|
26
26
|
});
|
|
27
|
-
test('should return true when string is undefined', ()
|
|
28
|
-
|
|
27
|
+
test('should return true when string is undefined', function () {
|
|
28
|
+
var result = (0, _mustBeShorterThan.default)(undefined, {
|
|
29
29
|
value: 3
|
|
30
30
|
});
|
|
31
31
|
expect(result).toEqual(true);
|
|
32
32
|
});
|
|
33
|
-
test('should return true when string is empty', ()
|
|
34
|
-
|
|
33
|
+
test('should return true when string is empty', function () {
|
|
34
|
+
var result = (0, _mustBeShorterThan.default)('', {
|
|
35
35
|
value: 3
|
|
36
36
|
});
|
|
37
37
|
expect(result).toEqual(true);
|
|
38
38
|
});
|
|
39
|
-
test('should return true when string is null', ()
|
|
40
|
-
|
|
39
|
+
test('should return true when string is null', function () {
|
|
40
|
+
var result = (0, _mustBeShorterThan.default)(null, {
|
|
41
41
|
value: 3
|
|
42
42
|
});
|
|
43
43
|
expect(result).toEqual(true);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _getCollectionPageActiveId = _interopRequireDefault(require("../../CollectionPage/getCollectionPageActiveId"));
|
|
8
|
+
var _getCollectionPageData = _interopRequireDefault(require("../../CollectionPage/getCollectionPageData"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
/**
|
|
11
|
+
* @param {*} value - the value to check.
|
|
12
|
+
* @param {string} config.collectionPath - the path to the collection within formData
|
|
13
|
+
* @param {object} component - the component definition
|
|
14
|
+
* @param {object} formData - the current form data
|
|
15
|
+
* @returns true if components value is not the same in any other entry in the collection
|
|
16
|
+
*/
|
|
17
|
+
var mustBeUniqueInCollection = function mustBeUniqueInCollection(value, config, component, formData) {
|
|
18
|
+
if (!value || !formData) {
|
|
19
|
+
// null, undefined and empty strings should be picked up by the required flag
|
|
20
|
+
// and not considered here as they would be valid for optional fields.
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
var activeId = (0, _getCollectionPageActiveId.default)(config.collectionPath, formData);
|
|
24
|
+
var collectionData = (0, _getCollectionPageData.default)(config.collectionPath, formData);
|
|
25
|
+
var result = collectionData === null || collectionData === void 0 ? void 0 : collectionData.some(function (entry) {
|
|
26
|
+
// Don't compare it to itself
|
|
27
|
+
if (entry.id === activeId) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
|
+
return entry[component.id] === value;
|
|
32
|
+
});
|
|
33
|
+
return !result;
|
|
34
|
+
};
|
|
35
|
+
var _default = exports.default = mustBeUniqueInCollection;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _mustBeUniqueInCollection = _interopRequireDefault(require("./mustBeUniqueInCollection"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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', function () {
|
|
12
|
+
describe('Validate', function () {
|
|
13
|
+
describe('additional', function () {
|
|
14
|
+
describe('mustBeUniqueInCollection', function () {
|
|
15
|
+
var COMPONENT = {
|
|
16
|
+
id: 'firstName',
|
|
17
|
+
type: 'text',
|
|
18
|
+
label: 'First name',
|
|
19
|
+
fieldId: 'firstName',
|
|
20
|
+
additionalValidation: [{
|
|
21
|
+
function: 'mustBeUniqueInCollection',
|
|
22
|
+
collectionPath: 'names',
|
|
23
|
+
message: 'Should be unique'
|
|
24
|
+
}]
|
|
25
|
+
};
|
|
26
|
+
var CONFIG = {
|
|
27
|
+
function: 'mustBeUniqueInCollection',
|
|
28
|
+
collectionPath: 'names',
|
|
29
|
+
message: 'Should be unique'
|
|
30
|
+
};
|
|
31
|
+
var VALUE = 'NAME';
|
|
32
|
+
test('should return true given no value', function () {
|
|
33
|
+
var result = (0, _mustBeUniqueInCollection.default)(undefined, CONFIG, COMPONENT, {});
|
|
34
|
+
expect(result).toBeTruthy();
|
|
35
|
+
});
|
|
36
|
+
test('should return true given no formData', function () {
|
|
37
|
+
var result = (0, _mustBeUniqueInCollection.default)(1, CONFIG, COMPONENT, undefined);
|
|
38
|
+
expect(result).toBeTruthy();
|
|
39
|
+
});
|
|
40
|
+
test('should return true for first entry in a collection', function () {
|
|
41
|
+
var FORM_DATA = {
|
|
42
|
+
namesActiveId: 1,
|
|
43
|
+
names: [{
|
|
44
|
+
id: 1,
|
|
45
|
+
firstName: VALUE
|
|
46
|
+
}]
|
|
47
|
+
};
|
|
48
|
+
var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
|
|
49
|
+
expect(result).toBeTruthy();
|
|
50
|
+
});
|
|
51
|
+
test('should return true if other entries do not have the same value for this field', function () {
|
|
52
|
+
var FORM_DATA = {
|
|
53
|
+
namesActiveId: 3,
|
|
54
|
+
names: [{
|
|
55
|
+
id: 1,
|
|
56
|
+
firstName: 'alpha'
|
|
57
|
+
}, {
|
|
58
|
+
id: 2,
|
|
59
|
+
firstName: 'bravo'
|
|
60
|
+
}, {
|
|
61
|
+
id: 3,
|
|
62
|
+
firstName: VALUE
|
|
63
|
+
}]
|
|
64
|
+
};
|
|
65
|
+
var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
|
|
66
|
+
expect(result).toBeTruthy();
|
|
67
|
+
});
|
|
68
|
+
test('should return false if other entries do have the same value for this field', function () {
|
|
69
|
+
var FORM_DATA = {
|
|
70
|
+
namesActiveId: 3,
|
|
71
|
+
names: [{
|
|
72
|
+
id: 1,
|
|
73
|
+
firstName: VALUE
|
|
74
|
+
}, {
|
|
75
|
+
id: 2,
|
|
76
|
+
firstName: 'bravo'
|
|
77
|
+
}, {
|
|
78
|
+
id: 3,
|
|
79
|
+
firstName: VALUE
|
|
80
|
+
}]
|
|
81
|
+
};
|
|
82
|
+
var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
|
|
83
|
+
expect(result).toBeFalsy();
|
|
84
|
+
});
|
|
85
|
+
test('should return false if other entries do have the same value for this field within a nested collection', function () {
|
|
86
|
+
var NESTED_VALUE = 'delta';
|
|
87
|
+
var FORM_DATA = {
|
|
88
|
+
namesActiveId: 3,
|
|
89
|
+
names: [{
|
|
90
|
+
id: 1,
|
|
91
|
+
firstName: 'alpha'
|
|
92
|
+
}, {
|
|
93
|
+
id: 2,
|
|
94
|
+
firstName: 'bravo'
|
|
95
|
+
}, {
|
|
96
|
+
id: 3,
|
|
97
|
+
firstName: VALUE,
|
|
98
|
+
surnamesActiveId: 2,
|
|
99
|
+
surnames: [{
|
|
100
|
+
id: 1,
|
|
101
|
+
surname: 'delta'
|
|
102
|
+
}, {
|
|
103
|
+
id: 2,
|
|
104
|
+
surname: 'delta'
|
|
105
|
+
}]
|
|
106
|
+
}]
|
|
107
|
+
};
|
|
108
|
+
var COMPONENT_NESTED = {
|
|
109
|
+
id: 'surname',
|
|
110
|
+
type: 'text',
|
|
111
|
+
label: 'Surname',
|
|
112
|
+
fieldId: 'surname',
|
|
113
|
+
additionalValidation: [{
|
|
114
|
+
function: 'mustBeUniqueInCollection',
|
|
115
|
+
collectionPath: 'names.surname',
|
|
116
|
+
message: 'Should be unique'
|
|
117
|
+
}]
|
|
118
|
+
};
|
|
119
|
+
var result = (0, _mustBeUniqueInCollection.default)(NESTED_VALUE, _objectSpread(_objectSpread({}, CONFIG), {}, {
|
|
120
|
+
collectionPath: 'names.surnames'
|
|
121
|
+
}), COMPONENT_NESTED, FORM_DATA);
|
|
122
|
+
expect(result).toBeFalsy();
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
});
|
|
@@ -12,9 +12,9 @@ exports.default = void 0;
|
|
|
12
12
|
* otherwise returns false
|
|
13
13
|
*/
|
|
14
14
|
// eslint-disable-next-line arrow-body-style
|
|
15
|
-
|
|
15
|
+
var mustEnterAtLeastOne = function mustEnterAtLeastOne(data, _, component) {
|
|
16
16
|
var _component$components;
|
|
17
|
-
return (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.some(inner
|
|
17
|
+
return (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.some(function (inner) {
|
|
18
18
|
var _data$component$id;
|
|
19
19
|
if ((_data$component$id = data[component.id]) !== null && _data$component$id !== void 0 && _data$component$id[inner.id]) {
|
|
20
20
|
return true;
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
var _mustEnterAtLeastOne = _interopRequireDefault(require("./mustEnterAtLeastOne"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 _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; }
|
|
7
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
8
|
+
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); }
|
|
9
|
+
describe('utils', function () {
|
|
10
|
+
describe('Validate', function () {
|
|
11
|
+
describe('additional', function () {
|
|
12
|
+
describe('mustEnterAtLeastOne', function () {
|
|
13
|
+
var CONTAINER_ID = 'containerId';
|
|
14
|
+
var COMPONENT = {
|
|
11
15
|
id: CONTAINER_ID,
|
|
12
16
|
type: 'container',
|
|
13
17
|
components: [{
|
|
@@ -18,16 +22,14 @@ describe('utils', () => {
|
|
|
18
22
|
id: 'charlie'
|
|
19
23
|
}]
|
|
20
24
|
};
|
|
21
|
-
test('should return false if all components are empty', ()
|
|
22
|
-
|
|
25
|
+
test('should return false if all components are empty', function () {
|
|
26
|
+
var DATA = {};
|
|
23
27
|
expect((0, _mustEnterAtLeastOne.default)(DATA, {}, COMPONENT)).toEqual(false);
|
|
24
28
|
});
|
|
25
|
-
test('should return true if one component has data', ()
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
};
|
|
29
|
+
test('should return true if one component has data', function () {
|
|
30
|
+
var DATA = _defineProperty({}, CONTAINER_ID, {
|
|
31
|
+
alpha: 'text'
|
|
32
|
+
});
|
|
31
33
|
expect((0, _mustEnterAtLeastOne.default)(DATA, {}, COMPONENT)).toEqual(true);
|
|
32
34
|
});
|
|
33
35
|
});
|
|
@@ -9,7 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
* @param {number} config.maxDecimals - the maximum amount of decimal places to allow
|
|
10
10
|
* @returns true if string has less than maxDecimals decimal places else returns false
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
var mustHaveLessThanDecimalPlaces = function mustHaveLessThanDecimalPlaces(string, config) {
|
|
13
13
|
if (!string || !string.includes('.')) {
|
|
14
14
|
return true;
|
|
15
15
|
}
|
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
var _mustHaveLessThanDecimalPlaces = _interopRequireDefault(require("./mustHaveLessThanDecimalPlaces"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('utils', ()
|
|
6
|
-
describe('Validate', ()
|
|
7
|
-
describe('additional', ()
|
|
8
|
-
describe('mustHaveLessThanDecimalPlaces', ()
|
|
9
|
-
test('should return false given a number with more than the allowed number of decimal places', ()
|
|
10
|
-
|
|
5
|
+
describe('utils', function () {
|
|
6
|
+
describe('Validate', function () {
|
|
7
|
+
describe('additional', function () {
|
|
8
|
+
describe('mustHaveLessThanDecimalPlaces', function () {
|
|
9
|
+
test('should return false given a number with more than the allowed number of decimal places', function () {
|
|
10
|
+
var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.9999', {
|
|
11
11
|
maxDecimals: 3
|
|
12
12
|
});
|
|
13
13
|
expect(result).toEqual(false);
|
|
14
14
|
});
|
|
15
|
-
test('should return true given a number with less than the allowed number of decimal places', ()
|
|
16
|
-
|
|
15
|
+
test('should return true given a number with less than the allowed number of decimal places', function () {
|
|
16
|
+
var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.99', {
|
|
17
17
|
maxDecimals: 3
|
|
18
18
|
});
|
|
19
19
|
expect(result).toEqual(true);
|
|
20
20
|
});
|
|
21
|
-
test('should return true given a number with no decimal places', ()
|
|
22
|
-
|
|
21
|
+
test('should return true given a number with no decimal places', function () {
|
|
22
|
+
var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999', {
|
|
23
23
|
maxDecimals: 3
|
|
24
24
|
});
|
|
25
25
|
expect(result).toEqual(true);
|
|
26
26
|
});
|
|
27
|
-
test('should return true given nothing', ()
|
|
28
|
-
|
|
27
|
+
test('should return true given nothing', function () {
|
|
28
|
+
var result = (0, _mustHaveLessThanDecimalPlaces.default)(undefined, {
|
|
29
29
|
maxDecimals: 3
|
|
30
30
|
});
|
|
31
31
|
expect(result).toEqual(true);
|
|
@@ -4,13 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
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); }
|
|
7
8
|
// NOTE: SQL RegEx reference:
|
|
8
9
|
// http://www.symantec.com/connect/articles/detection-sql-injection-and-cross-site-scripting-attacks
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
var SQL_COMBINED = /(%27)|(')|(--)|(%23)|(#)|((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))|w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))|((%27)|('))union/i;
|
|
11
|
+
var mustNotContainSql = function mustNotContainSql(value) {
|
|
11
12
|
// eslint-disable-next-line no-extra-boolean-cast
|
|
12
13
|
if (!!value) {
|
|
13
|
-
|
|
14
|
+
var string = _typeof(value) === 'object' ? JSON.stringify(value) : String(value);
|
|
14
15
|
return !SQL_COMBINED.test(string);
|
|
15
16
|
}
|
|
16
17
|
return false;
|
|
@@ -2,28 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
var _mustNotContainSql = _interopRequireDefault(require("./mustNotContainSql"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
describe('utils', ()
|
|
6
|
-
describe('Validate', ()
|
|
7
|
-
describe('additional', ()
|
|
8
|
-
describe('mustNotContainSql', ()
|
|
9
|
-
test('should return true given a string not containing sql characters', ()
|
|
10
|
-
|
|
5
|
+
describe('utils', function () {
|
|
6
|
+
describe('Validate', function () {
|
|
7
|
+
describe('additional', function () {
|
|
8
|
+
describe('mustNotContainSql', function () {
|
|
9
|
+
test('should return true given a string not containing sql characters', function () {
|
|
10
|
+
var result = (0, _mustNotContainSql.default)('test');
|
|
11
11
|
expect(result).toEqual(true);
|
|
12
12
|
});
|
|
13
|
-
test('should return true given non-string datatype is converted to string', ()
|
|
14
|
-
|
|
13
|
+
test('should return true given non-string datatype is converted to string', function () {
|
|
14
|
+
var result = (0, _mustNotContainSql.default)(123);
|
|
15
15
|
expect(result).toEqual(true);
|
|
16
16
|
});
|
|
17
|
-
test('should return false given a string containing sql characters', ()
|
|
18
|
-
|
|
17
|
+
test('should return false given a string containing sql characters', function () {
|
|
18
|
+
var result = (0, _mustNotContainSql.default)("test' OR '1'='1'");
|
|
19
19
|
expect(result).toEqual(false);
|
|
20
20
|
});
|
|
21
|
-
test('should return false given string is null', ()
|
|
22
|
-
|
|
21
|
+
test('should return false given string is null', function () {
|
|
22
|
+
var result = (0, _mustNotContainSql.default)(null);
|
|
23
23
|
expect(result).toEqual(false);
|
|
24
24
|
});
|
|
25
|
-
test('should return false given string is not defined', ()
|
|
26
|
-
|
|
25
|
+
test('should return false given string is not defined', function () {
|
|
26
|
+
var result = (0, _mustNotContainSql.default)(undefined);
|
|
27
27
|
expect(result).toEqual(false);
|
|
28
28
|
});
|
|
29
29
|
});
|
|
@@ -10,9 +10,9 @@ exports.default = void 0;
|
|
|
10
10
|
* @param {object} component the container component
|
|
11
11
|
* @returns true if the user has only provided a value for one of the components in the container, otherwise false.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
var mustSelectOnlyOne = function mustSelectOnlyOne(data, _, component) {
|
|
14
14
|
var _component$components;
|
|
15
|
-
|
|
15
|
+
var valueCount = (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.reduce(function (acc, inner) {
|
|
16
16
|
var _data$component$id;
|
|
17
17
|
if ((_data$component$id = data[component.id]) !== null && _data$component$id !== void 0 && _data$component$id[inner.id]) {
|
|
18
18
|
// Account for checkboxes that the user may have unselected
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
var _mustSelectOnlyOne = _interopRequireDefault(require("./mustSelectOnlyOne"));
|
|
4
4
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 _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; }
|
|
7
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
8
|
+
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); }
|
|
9
|
+
describe('utils', function () {
|
|
10
|
+
describe('Validate', function () {
|
|
11
|
+
describe('additional', function () {
|
|
12
|
+
describe('mustSelectOnlyOne', function () {
|
|
13
|
+
var CONTAINER_ID = 'containerId';
|
|
14
|
+
var COMPONENT = {
|
|
11
15
|
id: CONTAINER_ID,
|
|
12
16
|
type: 'container',
|
|
13
17
|
components: [{
|
|
@@ -18,34 +22,28 @@ describe('utils', () => {
|
|
|
18
22
|
id: 'charlie'
|
|
19
23
|
}]
|
|
20
24
|
};
|
|
21
|
-
test('should return true if all components are empty', ()
|
|
22
|
-
|
|
25
|
+
test('should return true if all components are empty', function () {
|
|
26
|
+
var DATA = {};
|
|
23
27
|
expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
|
|
24
28
|
});
|
|
25
|
-
test('should return true if one component has data', ()
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
};
|
|
29
|
+
test('should return true if one component has data', function () {
|
|
30
|
+
var DATA = _defineProperty({}, CONTAINER_ID, {
|
|
31
|
+
alpha: 'text'
|
|
32
|
+
});
|
|
31
33
|
expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
|
|
32
34
|
});
|
|
33
|
-
test('should return false if more than one component has data', ()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
};
|
|
35
|
+
test('should return false if more than one component has data', function () {
|
|
36
|
+
var DATA = _defineProperty({}, CONTAINER_ID, {
|
|
37
|
+
alpha: 'text',
|
|
38
|
+
bravo: 'test'
|
|
39
|
+
});
|
|
40
40
|
expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(false);
|
|
41
41
|
});
|
|
42
|
-
test('should return true if more than one component has data but one is an empty array', ()
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
};
|
|
42
|
+
test('should return true if more than one component has data but one is an empty array', function () {
|
|
43
|
+
var DATA = _defineProperty({}, CONTAINER_ID, {
|
|
44
|
+
alpha: 'text',
|
|
45
|
+
bravo: []
|
|
46
|
+
});
|
|
49
47
|
expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
|
|
50
48
|
});
|
|
51
49
|
});
|
|
@@ -4,7 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.formattedTime = exports.formatString = exports.DATE_FORMAT = void 0;
|
|
7
|
-
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
+
var isNumeric = function isNumeric(value) {
|
|
14
|
+
return /^-?\d+$/.test(value);
|
|
15
|
+
};
|
|
8
16
|
|
|
9
17
|
/**
|
|
10
18
|
|
|
@@ -15,20 +23,25 @@ const isNumeric = value => /^-?\d+$/.test(value);
|
|
|
15
23
|
* @param {string} dateComponent - the value representing a day or month.
|
|
16
24
|
* @returns the value (appended with a leading zero, if the value passed in was a single digit)
|
|
17
25
|
*/
|
|
18
|
-
|
|
26
|
+
var formatInTwoDigits = function formatInTwoDigits(dateComponent) {
|
|
19
27
|
if (isNumeric(dateComponent)) {
|
|
20
28
|
return dateComponent.padStart(2, '0');
|
|
21
29
|
}
|
|
22
30
|
return '';
|
|
23
31
|
};
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
var formatString = exports.formatString = function formatString(date) {
|
|
33
|
+
var _date$split = date.split('-'),
|
|
34
|
+
_date$split2 = _slicedToArray(_date$split, 3),
|
|
35
|
+
day = _date$split2[0],
|
|
36
|
+
month = _date$split2[1],
|
|
37
|
+
year = _date$split2[2];
|
|
26
38
|
return "".concat(formatInTwoDigits(day), "-").concat(formatInTwoDigits(month), "-").concat(year);
|
|
27
39
|
};
|
|
28
|
-
exports.
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
var formattedTime = exports.formattedTime = function formattedTime(time) {
|
|
41
|
+
var _time$split = time.split(':'),
|
|
42
|
+
_time$split2 = _slicedToArray(_time$split, 2),
|
|
43
|
+
hour = _time$split2[0],
|
|
44
|
+
minute = _time$split2[1];
|
|
31
45
|
return "".concat(formatInTwoDigits(hour), ":").concat(formatInTwoDigits(minute));
|
|
32
46
|
};
|
|
33
|
-
exports.
|
|
34
|
-
const DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
|
|
47
|
+
var DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
|
|
@@ -17,7 +17,7 @@ var _validateTime = _interopRequireDefault(require("./validateTime"));
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
// Local imports
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
var Validate = {
|
|
21
21
|
component: _validateComponent.default,
|
|
22
22
|
container: _validateContainer.default,
|
|
23
23
|
email: _validateEmail.default,
|
|
@@ -7,8 +7,12 @@ exports.default = void 0;
|
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
8
|
var _validateContainer = _interopRequireDefault(require("./validateContainer"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
|
+
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); } // Local imports
|
|
12
16
|
/**
|
|
13
17
|
* Validates all of the items within a collection.
|
|
14
18
|
* @param {object} collection The collection to validate.
|
|
@@ -16,26 +20,26 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
16
20
|
* @param {object} formData The data at the top level of the form.
|
|
17
21
|
* @returns Errors for all components for all items within the collection.
|
|
18
22
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
var validateCollection = function validateCollection(collection, items, formData) {
|
|
24
|
+
var errors = [];
|
|
21
25
|
if (collection && Array.isArray(collection.item) && Array.isArray(items)) {
|
|
22
|
-
items.forEach((item, index)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
items.forEach(function (item, index) {
|
|
27
|
+
var labelCount = (collection.countOffset || 0) + index + 1;
|
|
28
|
+
var fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
|
|
29
|
+
var container = {
|
|
26
30
|
full_path: fullPath,
|
|
27
|
-
components: collection.item.map(component
|
|
28
|
-
|
|
29
|
-
...component,
|
|
31
|
+
components: collection.item.map(function (component) {
|
|
32
|
+
var newComponent = _objectSpread(_objectSpread({}, component), {}, {
|
|
30
33
|
full_path: "".concat(fullPath, ".").concat(component.fieldId)
|
|
31
|
-
};
|
|
34
|
+
});
|
|
32
35
|
if (component.custom_errors && Array.isArray(component.custom_errors)) {
|
|
33
|
-
newComponent.custom_errors = component.custom_errors.map(error
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
newComponent.custom_errors = component.custom_errors.map(function (error) {
|
|
37
|
+
return _objectSpread(_objectSpread({}, error), {}, {
|
|
38
|
+
message: _copReactComponents.Utils.interpolateString(index === 0 && error.firstOnlyMessage ? error.firstOnlyMessage : error.message, {
|
|
39
|
+
index: labelCount
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
});
|
|
39
43
|
}
|
|
40
44
|
return newComponent;
|
|
41
45
|
})
|
|
@@ -43,6 +47,8 @@ const validateCollection = (collection, items, formData) => {
|
|
|
43
47
|
errors.push((0, _validateContainer.default)(container, item, formData));
|
|
44
48
|
});
|
|
45
49
|
}
|
|
46
|
-
return errors.filter(
|
|
50
|
+
return errors.filter(function (e) {
|
|
51
|
+
return !!e;
|
|
52
|
+
}).flat();
|
|
47
53
|
};
|
|
48
54
|
var _default = exports.default = validateCollection;
|