@ukhomeoffice/cop-react-form-renderer 6.13.2 → 6.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/components/CheckYourAnswers/Answer.js +12 -11
- package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +98 -133
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +544 -939
- package/dist/components/CheckYourAnswers/index.js +1 -1
- package/dist/components/CollectionPage/CollectionPage.js +62 -60
- package/dist/components/CollectionPage/CollectionPage.test.js +315 -365
- package/dist/components/CollectionPage/index.js +1 -1
- package/dist/components/CollectionSummary/BannerStrip.js +14 -14
- package/dist/components/CollectionSummary/BannerStrip.test.js +79 -74
- package/dist/components/CollectionSummary/CollectionSummary.js +81 -99
- package/dist/components/CollectionSummary/CollectionSummary.test.js +182 -166
- package/dist/components/CollectionSummary/Confirmation.js +15 -13
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/RenderListView.js +47 -48
- package/dist/components/CollectionSummary/RenderListView.scss +4 -0
- package/dist/components/CollectionSummary/RenderListView.test.js +133 -98
- package/dist/components/CollectionSummary/SummaryCard.js +110 -148
- package/dist/components/CollectionSummary/SummaryCard.test.js +961 -993
- package/dist/components/CollectionSummary/SummaryCardButtons.js +71 -0
- package/dist/components/CollectionSummary/SummaryCardButtons.test.js +85 -0
- package/dist/components/CollectionSummary/SummaryCardDetails.js +59 -76
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +170 -180
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +63 -75
- package/dist/components/CollectionSummary/index.js +1 -1
- package/dist/components/FormComponent/Collection.js +67 -102
- package/dist/components/FormComponent/Collection.test.js +907 -1080
- package/dist/components/FormComponent/Container.js +35 -29
- package/dist/components/FormComponent/Container.test.js +378 -409
- package/dist/components/FormComponent/FormComponent.js +59 -63
- package/dist/components/FormComponent/FormComponent.test.js +354 -415
- package/dist/components/FormComponent/helpers/addLabel.js +4 -7
- package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
- package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
- package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
- package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
- package/dist/components/FormComponent/helpers/index.js +5 -5
- package/dist/components/FormComponent/index.js +1 -1
- package/dist/components/FormPage/FormPage.js +99 -88
- package/dist/components/FormPage/FormPage.test.js +173 -164
- package/dist/components/FormPage/index.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +138 -174
- package/dist/components/FormRenderer/FormRenderer.test.js +732 -1114
- package/dist/components/FormRenderer/handlers/cyaAction.js +3 -3
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
- package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
- package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
- package/dist/components/FormRenderer/handlers/index.js +2 -2
- package/dist/components/FormRenderer/handlers/navigate.js +4 -4
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +16 -16
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -25
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
- package/dist/components/FormRenderer/helpers/getCYA.js +4 -6
- package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getFormState.js +6 -8
- package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getNextPageId.js +14 -25
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
- package/dist/components/FormRenderer/helpers/getPage.js +2 -4
- package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +6 -6
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +44 -51
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +68 -74
- package/dist/components/FormRenderer/helpers/index.js +2 -2
- package/dist/components/FormRenderer/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +43 -44
- package/dist/components/FormRenderer/onCYAAction.test.js +126 -133
- package/dist/components/FormRenderer/onPageAction.js +26 -35
- package/dist/components/FormRenderer/onPageAction.test.js +177 -186
- package/dist/components/FormRenderer/onTaskAction.js +11 -12
- package/dist/components/FormRenderer/onTaskAction.test.js +63 -68
- package/dist/components/PageActions/ActionButton.js +14 -14
- package/dist/components/PageActions/ActionButton.test.js +57 -79
- package/dist/components/PageActions/PageActions.js +11 -11
- package/dist/components/PageActions/PageActions.test.js +87 -116
- package/dist/components/PageActions/index.js +1 -1
- package/dist/components/SummaryList/GroupAction.js +10 -18
- package/dist/components/SummaryList/GroupAction.test.js +38 -34
- package/dist/components/SummaryList/RowAction.js +12 -17
- package/dist/components/SummaryList/RowAction.test.js +38 -34
- package/dist/components/SummaryList/SummaryList.js +23 -25
- package/dist/components/SummaryList/SummaryList.test.js +162 -189
- package/dist/components/SummaryList/SummaryListHeadingRow.js +7 -5
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
- package/dist/components/SummaryList/SummaryListRow.js +7 -5
- package/dist/components/SummaryList/SummaryListTitleRow.js +6 -4
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +23 -23
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +23 -23
- package/dist/components/SummaryList/helpers/index.js +2 -2
- package/dist/components/SummaryList/index.js +1 -1
- package/dist/components/TaskList/Task.js +20 -30
- package/dist/components/TaskList/Task.test.js +84 -77
- package/dist/components/TaskList/TaskList.js +56 -79
- package/dist/components/TaskList/TaskList.test.js +149 -149
- package/dist/components/TaskList/TaskState.js +8 -6
- package/dist/components/TaskList/TaskState.test.js +53 -46
- package/dist/components/TaskList/index.js +1 -1
- package/dist/components/index.js +8 -8
- package/dist/context/HooksContext/HooksContext.js +56 -79
- package/dist/context/HooksContext/HooksContext.test.js +27 -36
- package/dist/context/HooksContext/index.js +3 -4
- package/dist/context/ValidationContext/ValidationContext.js +44 -95
- package/dist/context/ValidationContext/ValidationContext.test.js +57 -69
- package/dist/context/ValidationContext/index.js +3 -4
- package/dist/context/index.js +3 -3
- package/dist/hooks/index.js +10 -11
- package/dist/hooks/useAxios.js +15 -41
- package/dist/hooks/useGetRequest.js +62 -98
- package/dist/hooks/useHooks.js +1 -3
- package/dist/hooks/useRefData.js +25 -37
- package/dist/hooks/useValidation.js +1 -3
- package/dist/index.js +14 -15
- package/dist/models/CollectionLabels.js +1 -1
- package/dist/models/ComponentTypes.js +25 -25
- package/dist/models/EventTypes.js +4 -4
- package/dist/models/FormPages.js +4 -4
- package/dist/models/FormTypes.js +8 -8
- package/dist/models/HubFormats.js +3 -3
- package/dist/models/PageAction.js +44 -38
- package/dist/models/TaskStates.js +29 -28
- package/dist/models/index.js +10 -10
- package/dist/setupTests.js +30 -31
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +12 -21
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +32 -33
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +15 -28
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +41 -42
- package/dist/utils/CheckYourAnswers/getCYARow.js +7 -7
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -21
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +27 -34
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +48 -52
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +79 -93
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +110 -115
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +11 -14
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +146 -98
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +14 -19
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +69 -73
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +7 -8
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +15 -16
- package/dist/utils/CheckYourAnswers/index.js +2 -2
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +5 -5
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -19
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +13 -20
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +48 -39
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
- package/dist/utils/CollectionPage/getErrorsForCollection.js +20 -21
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
- package/dist/utils/CollectionPage/getQuickEditPage.js +22 -23
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +17 -18
- package/dist/utils/CollectionPage/index.js +2 -2
- package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -35
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +18 -18
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
- package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +25 -25
- package/dist/utils/Component/addShowWhen.js +5 -6
- package/dist/utils/Component/addShowWhen.test.js +38 -38
- package/dist/utils/Component/applyToComponentTree.js +12 -15
- package/dist/utils/Component/applyToComponentTree.test.js +28 -31
- package/dist/utils/Component/cleanAttributes.js +12 -11
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +6 -6
- package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
- package/dist/utils/Component/getComponent.js +81 -83
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +41 -58
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +24 -34
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +21 -26
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +11 -10
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +23 -27
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +201 -174
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +58 -73
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +32 -39
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +21 -30
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
- package/dist/utils/Component/getDefaultValue.js +7 -9
- package/dist/utils/Component/getDefaultValue.test.js +13 -13
- package/dist/utils/Component/getDefaultValueFromConfig.js +16 -20
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +32 -32
- package/dist/utils/Component/index.js +2 -2
- package/dist/utils/Component/isEditable.js +2 -4
- package/dist/utils/Component/isEditable.test.js +14 -15
- package/dist/utils/Component/optionIsSelected.js +2 -4
- package/dist/utils/Component/optionIsSelected.test.js +12 -12
- package/dist/utils/Component/setupContainerComponentsPath.js +23 -28
- package/dist/utils/Component/setupContainerComponentsPath.test.js +12 -12
- package/dist/utils/Component/showComponent.js +2 -2
- package/dist/utils/Component/showComponent.test.js +29 -29
- package/dist/utils/Component/wrapInFormGroup.js +4 -4
- package/dist/utils/Condition/index.js +2 -2
- package/dist/utils/Condition/meetsAllConditions.js +9 -9
- package/dist/utils/Condition/meetsAllConditions.test.js +21 -21
- package/dist/utils/Condition/meetsCondition.js +17 -26
- package/dist/utils/Condition/meetsCondition.test.js +403 -403
- package/dist/utils/Condition/meetsOneCondition.js +6 -6
- package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
- package/dist/utils/Condition/setupConditions.js +12 -15
- package/dist/utils/Condition/setupConditions.test.js +8 -8
- package/dist/utils/Container/getEditableComponents.js +4 -6
- package/dist/utils/Container/getEditableComponents.test.js +44 -46
- package/dist/utils/Container/index.js +2 -2
- package/dist/utils/Container/setupNesting.js +14 -15
- package/dist/utils/Container/setupNesting.test.js +20 -23
- package/dist/utils/Container/showContainer.js +4 -8
- package/dist/utils/Container/showContainer.test.js +31 -31
- package/dist/utils/Data/applyFormula.js +30 -44
- package/dist/utils/Data/applyFormula.test.js +21 -21
- package/dist/utils/Data/deleteValues.js +4 -8
- package/dist/utils/Data/deleteValues.test.js +11 -11
- package/dist/utils/Data/getAutocompleteSource.js +19 -27
- package/dist/utils/Data/getAutocompleteSource.test.js +76 -81
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +13 -13
- package/dist/utils/Data/getOptions.js +57 -30
- package/dist/utils/Data/getOptions.test.js +75 -28
- package/dist/utils/Data/getSourceData.js +6 -19
- package/dist/utils/Data/getSourceData.test.js +85 -81
- package/dist/utils/Data/index.js +2 -2
- package/dist/utils/Data/nestInRefdataOptions.js +9 -12
- package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
- package/dist/utils/Data/refDataToOptions.js +9 -10
- package/dist/utils/Data/refDataToOptions.test.js +20 -20
- package/dist/utils/Data/setDataItem.js +7 -8
- package/dist/utils/Data/setDataItem.test.js +38 -38
- package/dist/utils/Data/setupFormData.js +13 -20
- package/dist/utils/Data/setupFormData.test.js +48 -47
- package/dist/utils/Data/setupRefDataUrlForComponent.js +11 -20
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +25 -25
- package/dist/utils/FormPage/applyConditionalProperties.js +7 -8
- package/dist/utils/FormPage/applyConditionalProperties.test.js +14 -15
- package/dist/utils/FormPage/getConditionalText.js +4 -4
- package/dist/utils/FormPage/getConditionalText.test.js +30 -30
- package/dist/utils/FormPage/getFormPage.js +16 -12
- package/dist/utils/FormPage/getFormPage.test.js +23 -24
- package/dist/utils/FormPage/getFormPages.js +8 -11
- package/dist/utils/FormPage/getFormPages.test.js +15 -16
- package/dist/utils/FormPage/getPageActions.js +10 -13
- package/dist/utils/FormPage/getPageActions.test.js +33 -33
- package/dist/utils/FormPage/getParagraphFromText.js +5 -7
- package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
- package/dist/utils/FormPage/index.js +3 -5
- package/dist/utils/FormPage/showFormPage.js +4 -8
- package/dist/utils/FormPage/showFormPage.test.js +33 -33
- package/dist/utils/FormPage/showFormPageCYA.js +2 -2
- package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
- package/dist/utils/FormPage/useComponent.js +25 -22
- package/dist/utils/FormPage/useComponent.test.js +79 -44
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +19 -19
- package/dist/utils/Format/formatDataForComponent.js +6 -7
- package/dist/utils/Format/formatDataForComponent.test.js +50 -78
- package/dist/utils/Format/formatDataForForm.js +5 -6
- package/dist/utils/Format/formatDataForForm.test.js +14 -17
- package/dist/utils/Format/formatDataForPage.js +4 -5
- package/dist/utils/Format/formatDataForPage.test.js +20 -25
- package/dist/utils/Format/index.js +2 -2
- package/dist/utils/Hub/getFormHub.js +2 -2
- package/dist/utils/Hub/getFormHub.test.js +23 -24
- package/dist/utils/Hub/index.js +2 -2
- package/dist/utils/Meta/constants.js +2 -2
- package/dist/utils/Meta/documents/getDocuments.js +1 -1
- package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
- package/dist/utils/Meta/documents/index.js +2 -2
- package/dist/utils/Meta/documents/setDocumentsForField.js +12 -13
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +70 -33
- package/dist/utils/Meta/index.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.js +3 -3
- package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
- package/dist/utils/Operate/deleteValueInFormData.js +2 -2
- package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
- package/dist/utils/Operate/getFirstOf.js +6 -6
- package/dist/utils/Operate/getFirstOf.test.js +32 -32
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +11 -11
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
- package/dist/utils/Operate/getLength.js +9 -9
- package/dist/utils/Operate/getLength.test.js +19 -19
- package/dist/utils/Operate/index.js +2 -2
- package/dist/utils/Operate/persistValueInFormData.js +4 -4
- package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
- package/dist/utils/Operate/runPageOperations.js +8 -8
- package/dist/utils/Operate/runPageOperations.test.js +24 -25
- package/dist/utils/Operate/setValueInFormData.js +3 -3
- package/dist/utils/Operate/setValueInFormData.test.js +17 -17
- package/dist/utils/Operate/shouldRun.js +7 -7
- package/dist/utils/Operate/shouldRun.test.js +22 -24
- package/dist/utils/Validate/additional/conditionallyPermittedChange.js +1 -1
- package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +15 -15
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
- package/dist/utils/Validate/additional/index.js +8 -8
- package/dist/utils/Validate/additional/index.test.js +22 -22
- package/dist/utils/Validate/additional/mustBeAfter.js +3 -3
- package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
- package/dist/utils/Validate/additional/mustBeBefore.js +3 -3
- package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +8 -12
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -38
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +3 -3
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeInThePast.js +4 -4
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
- package/dist/utils/Validate/additional/mustBeOneOf.js +1 -1
- package/dist/utils/Validate/additional/mustBeOneOf.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +5 -5
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +35 -36
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
- package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +15 -15
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
- package/dist/utils/Validate/additional/utils.js +9 -22
- package/dist/utils/Validate/index.js +2 -2
- package/dist/utils/Validate/validateCollection.js +18 -23
- package/dist/utils/Validate/validateCollection.test.js +75 -67
- package/dist/utils/Validate/validateComponent.js +19 -19
- package/dist/utils/Validate/validateComponent.test.js +179 -154
- package/dist/utils/Validate/validateContainer.js +14 -17
- package/dist/utils/Validate/validateContainer.test.js +59 -53
- package/dist/utils/Validate/validateDate.js +16 -22
- package/dist/utils/Validate/validateDate.test.js +31 -32
- package/dist/utils/Validate/validateEmail.js +8 -9
- package/dist/utils/Validate/validateEmail.test.js +29 -26
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +13 -18
- package/dist/utils/Validate/validatePage.test.js +198 -195
- package/dist/utils/Validate/validateRegex.js +3 -5
- package/dist/utils/Validate/validateRegex.test.js +15 -15
- package/dist/utils/Validate/validateRequired.js +4 -6
- package/dist/utils/Validate/validateRequired.test.js +19 -19
- package/dist/utils/Validate/validateTextArea.js +4 -6
- package/dist/utils/Validate/validateTextArea.test.js +21 -21
- package/dist/utils/Validate/validateTime.js +12 -19
- package/dist/utils/Validate/validateTime.test.js +27 -27
- package/dist/utils/index.js +5 -6
- package/package.json +5 -5
|
@@ -4,20 +4,17 @@ 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); }
|
|
8
7
|
/**
|
|
9
8
|
* Adds label to target for given value.
|
|
10
9
|
* @param {object} target The target to be updated.
|
|
11
10
|
* @returns The updated target.
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const addLabel = (paramTarget, component, data) => {
|
|
13
|
+
const target = paramTarget;
|
|
15
14
|
// target.value can be an object in which case use value in object attribute
|
|
16
|
-
|
|
15
|
+
const value = typeof target.value === 'object' ? target.value.value : target.value;
|
|
17
16
|
// find the reference data item using the value
|
|
18
|
-
|
|
19
|
-
return String(e.id) === value;
|
|
20
|
-
});
|
|
17
|
+
const item = data.find(e => String(e.id) === value);
|
|
21
18
|
// if item is null it means that the target.value can be used as a label otherwise use item.label
|
|
22
19
|
target.label = item === undefined ? target.value : item.label;
|
|
23
20
|
target.component = component.cya_label;
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
8
|
-
|
|
8
|
+
const getComponentDisabled = (disabled, formData) => {
|
|
9
9
|
if (typeof disabled === 'string') {
|
|
10
10
|
return !!_copReactComponents.Utils.interpolateString(disabled, formData);
|
|
11
11
|
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getComponentDisabled = _interopRequireDefault(require("./getComponentDisabled"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('components.FormComponent.helpers.getComponentDisabled',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('components.FormComponent.helpers.getComponentDisabled', () => {
|
|
6
|
+
const DATA = {
|
|
7
7
|
shouldDisable: true
|
|
8
8
|
};
|
|
9
|
-
it('should return false if disabled is undefined',
|
|
9
|
+
it('should return false if disabled is undefined', () => {
|
|
10
10
|
expect((0, _getComponentDisabled.default)(undefined, DATA)).toEqual(false);
|
|
11
11
|
});
|
|
12
|
-
it('should return false if disabled is boolean false',
|
|
12
|
+
it('should return false if disabled is boolean false', () => {
|
|
13
13
|
expect((0, _getComponentDisabled.default)(false, DATA)).toEqual(false);
|
|
14
14
|
});
|
|
15
|
-
it('should return true if disabled is boolean true',
|
|
15
|
+
it('should return true if disabled is boolean true', () => {
|
|
16
16
|
expect((0, _getComponentDisabled.default)(true, DATA)).toEqual(true);
|
|
17
17
|
});
|
|
18
|
-
it('should interpolate correctly if disabled is a field path',
|
|
18
|
+
it('should interpolate correctly if disabled is a field path', () => {
|
|
19
19
|
// eslint-disable-next-line no-template-curly-in-string
|
|
20
20
|
expect((0, _getComponentDisabled.default)('${shouldDisable}', DATA)).toEqual(true);
|
|
21
21
|
});
|
|
22
|
-
it('should return false if interpolating a field that does not exist',
|
|
22
|
+
it('should return false if interpolating a field that does not exist', () => {
|
|
23
23
|
// eslint-disable-next-line no-template-curly-in-string
|
|
24
24
|
expect((0, _getComponentDisabled.default)('${notARealField}', DATA)).toEqual(false);
|
|
25
25
|
});
|
|
@@ -4,13 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
7
|
+
const getComponentError = (component, errors) => {
|
|
8
8
|
if (Array.isArray(errors)) {
|
|
9
|
-
|
|
10
|
-
return err.id === (component.full_path || component.id);
|
|
11
|
-
});
|
|
9
|
+
const error = errors.find(err => err.id === (component.full_path || component.id));
|
|
12
10
|
if (error) {
|
|
13
|
-
|
|
11
|
+
const props = {
|
|
14
12
|
error: error.error
|
|
15
13
|
};
|
|
16
14
|
if (error.properties) {
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getComponentError = _interopRequireDefault(require("./getComponentError"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('components.FormComponent.helpers.getComponentError',
|
|
6
|
-
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('components.FormComponent.helpers.getComponentError', () => {
|
|
6
|
+
const ALPHA = {
|
|
7
7
|
id: 'alpha'
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
const BETA = {
|
|
10
10
|
id: 'beta',
|
|
11
11
|
full_path: 'beta'
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
const ALPHA_ERROR = {
|
|
14
14
|
id: ALPHA.id,
|
|
15
15
|
error: 'Alpha is required'
|
|
16
16
|
};
|
|
17
|
-
|
|
17
|
+
const BETA_ERROR = {
|
|
18
18
|
id: BETA.id,
|
|
19
19
|
error: 'Year is required',
|
|
20
20
|
properties: {
|
|
21
21
|
year: true
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
it('should return undefined if the errors array is undefined',
|
|
24
|
+
it('should return undefined if the errors array is undefined', () => {
|
|
25
25
|
expect((0, _getComponentError.default)(ALPHA, undefined)).toBeUndefined();
|
|
26
26
|
});
|
|
27
|
-
it('should return undefined if the errors array is null',
|
|
27
|
+
it('should return undefined if the errors array is null', () => {
|
|
28
28
|
expect((0, _getComponentError.default)(ALPHA, null)).toBeUndefined();
|
|
29
29
|
});
|
|
30
|
-
it('should return undefined if the errors array is empty',
|
|
30
|
+
it('should return undefined if the errors array is empty', () => {
|
|
31
31
|
expect((0, _getComponentError.default)(ALPHA, [])).toBeUndefined();
|
|
32
32
|
});
|
|
33
|
-
it('should return undefined if the errors array does not contain an error for the component',
|
|
34
|
-
|
|
33
|
+
it('should return undefined if the errors array does not contain an error for the component', () => {
|
|
34
|
+
const ERRORS = [BETA_ERROR];
|
|
35
35
|
expect((0, _getComponentError.default)(ALPHA, ERRORS)).toBeUndefined();
|
|
36
36
|
});
|
|
37
|
-
it('should return an appropriate response if the errors array contains an error for the component',
|
|
38
|
-
|
|
37
|
+
it('should return an appropriate response if the errors array contains an error for the component', () => {
|
|
38
|
+
const ERRORS = [ALPHA_ERROR];
|
|
39
39
|
expect((0, _getComponentError.default)(ALPHA, ERRORS)).toEqual({
|
|
40
40
|
error: ALPHA_ERROR.error
|
|
41
41
|
});
|
|
42
42
|
});
|
|
43
|
-
it('should return an appropriate response if the errors array contains an error with properties for the component',
|
|
44
|
-
|
|
43
|
+
it('should return an appropriate response if the errors array contains an error with properties for the component', () => {
|
|
44
|
+
const ERRORS = [BETA_ERROR];
|
|
45
45
|
expect((0, _getComponentError.default)(BETA, ERRORS)).toEqual({
|
|
46
46
|
error: BETA_ERROR.error,
|
|
47
47
|
propsInError: BETA_ERROR.properties
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _models = require("../../../models");
|
|
8
|
-
|
|
9
|
-
var _default =
|
|
10
|
-
|
|
11
|
-
};
|
|
8
|
+
const SHOULD_HAVE_FIELDSET = [_models.ComponentTypes.RADIOS, _models.ComponentTypes.CHECKBOXES, _models.ComponentTypes.DATE, _models.ComponentTypes.TIME];
|
|
9
|
+
var _default = component => component.fieldset || SHOULD_HAVE_FIELDSET.includes(component.type);
|
|
10
|
+
exports.default = _default;
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _getComponentFieldSet = _interopRequireDefault(require("./getComponentFieldSet"));
|
|
4
|
-
function _interopRequireDefault(
|
|
5
|
-
describe('components.FormComponent.helpers.getComponentFieldSet',
|
|
6
|
-
it('should return true for component type radios',
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('components.FormComponent.helpers.getComponentFieldSet', () => {
|
|
6
|
+
it('should return true for component type radios', () => {
|
|
7
7
|
expect((0, _getComponentFieldSet.default)({
|
|
8
8
|
type: 'radios'
|
|
9
9
|
})).toEqual(true);
|
|
10
10
|
});
|
|
11
|
-
it('should return true for component type checkboxes',
|
|
11
|
+
it('should return true for component type checkboxes', () => {
|
|
12
12
|
expect((0, _getComponentFieldSet.default)({
|
|
13
13
|
type: 'checkboxes'
|
|
14
14
|
})).toEqual(true);
|
|
15
15
|
});
|
|
16
|
-
it('should return true for component type date',
|
|
16
|
+
it('should return true for component type date', () => {
|
|
17
17
|
expect((0, _getComponentFieldSet.default)({
|
|
18
18
|
type: 'date'
|
|
19
19
|
})).toEqual(true);
|
|
20
20
|
});
|
|
21
|
-
it('should return false for component type text',
|
|
21
|
+
it('should return false for component type text', () => {
|
|
22
22
|
expect((0, _getComponentFieldSet.default)({
|
|
23
23
|
type: 'text'
|
|
24
24
|
})).toEqual(false);
|
|
25
25
|
});
|
|
26
|
-
it('should return false when component type missing',
|
|
26
|
+
it('should return false when component type missing', () => {
|
|
27
27
|
expect((0, _getComponentFieldSet.default)({})).toEqual(false);
|
|
28
28
|
});
|
|
29
29
|
});
|
|
@@ -5,25 +5,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "addLabel", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: function
|
|
8
|
+
get: function () {
|
|
9
9
|
return _addLabel.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "getComponentDisabled", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function
|
|
14
|
+
get: function () {
|
|
15
15
|
return _getComponentDisabled.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "getComponentError", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function
|
|
20
|
+
get: function () {
|
|
21
21
|
return _getComponentError.default;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "getComponentFieldSet", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function
|
|
26
|
+
get: function () {
|
|
27
27
|
return _getComponentFieldSet.default;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
@@ -31,4 +31,4 @@ var _addLabel = _interopRequireDefault(require("./addLabel"));
|
|
|
31
31
|
var _getComponentDisabled = _interopRequireDefault(require("./getComponentDisabled"));
|
|
32
32
|
var _getComponentError = _interopRequireDefault(require("./getComponentError"));
|
|
33
33
|
var _getComponentFieldSet = _interopRequireDefault(require("./getComponentFieldSet"));
|
|
34
|
-
function _interopRequireDefault(
|
|
34
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -5,5 +5,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _FormComponent = _interopRequireDefault(require("./FormComponent"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
var _default = exports.default = _FormComponent.default;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -13,131 +12,134 @@ var _utils = _interopRequireDefault(require("../../utils"));
|
|
|
13
12
|
var _FormComponent = _interopRequireDefault(require("../FormComponent"));
|
|
14
13
|
var _PageActions = _interopRequireDefault(require("../PageActions"));
|
|
15
14
|
require("./FormPage.scss");
|
|
16
|
-
function _interopRequireDefault(
|
|
17
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
18
|
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; }
|
|
20
19
|
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; }
|
|
21
|
-
function _defineProperty(
|
|
22
|
-
function _toPropertyKey(
|
|
23
|
-
function _toPrimitive(
|
|
24
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
-
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."); }
|
|
26
|
-
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); }
|
|
27
|
-
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; }
|
|
28
|
-
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; } }
|
|
29
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // Global imports
|
|
20
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
21
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
22
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Global imports
|
|
30
23
|
// Local imports.
|
|
31
24
|
// Styles
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var _formPage$actions, _page$actions;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
25
|
+
const DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form__page';
|
|
26
|
+
const FormPage = _ref => {
|
|
27
|
+
var _page$customValidatio, _formPage$actions, _page$actions;
|
|
28
|
+
let {
|
|
29
|
+
page,
|
|
30
|
+
pages,
|
|
31
|
+
onAction,
|
|
32
|
+
onWrapperChange,
|
|
33
|
+
onTopLevelChange,
|
|
34
|
+
onChange,
|
|
35
|
+
hashLink,
|
|
36
|
+
classBlock,
|
|
37
|
+
classModifiers,
|
|
38
|
+
className,
|
|
39
|
+
submitting,
|
|
40
|
+
pageId,
|
|
41
|
+
fromTarget
|
|
42
|
+
} = _ref;
|
|
43
|
+
const [patch, setPatch] = (0, _react.useState)({});
|
|
44
|
+
const {
|
|
45
|
+
errors,
|
|
46
|
+
validate
|
|
47
|
+
} = (0, _hooks.useValidation)();
|
|
48
|
+
const [patchLabel, setPatchLabel] = (0, _react.useState)({});
|
|
49
|
+
const [isPageRendered, setIsPageRendered] = (0, _react.useState)(false);
|
|
50
|
+
const runOnLoad = Array.isArray(page === null || page === void 0 ? void 0 : page.customValidation) && page.customValidation.length > 0 ? ((_page$customValidatio = page.customValidation[0]) === null || _page$customValidatio === void 0 || (_page$customValidatio = _page$customValidatio.runWhen) === null || _page$customValidatio === void 0 ? void 0 : _page$customValidatio.onLoad) === true : false;
|
|
51
|
+
(0, _react.useEffect)(() => {
|
|
52
|
+
setIsPageRendered(true);
|
|
53
|
+
}, []);
|
|
54
|
+
(0, _react.useEffect)(() => {
|
|
55
|
+
if (isPageRendered && fromTarget && runOnLoad) {
|
|
56
|
+
validate.page(page);
|
|
57
|
+
}
|
|
58
|
+
}, [pageId, isPageRendered]);
|
|
56
59
|
|
|
57
60
|
/**
|
|
58
61
|
* Handle the state of the data directly within the page.
|
|
59
62
|
* This is so that the overall form data isn't affected until such
|
|
60
63
|
* time as the onAction handler is invoked.
|
|
61
64
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
const onPageChange = _ref2 => {
|
|
66
|
+
let {
|
|
67
|
+
target
|
|
68
|
+
} = _ref2;
|
|
69
|
+
const formPage = page;
|
|
65
70
|
if (target.value == null) {
|
|
66
71
|
delete formPage.formData[target.name];
|
|
67
|
-
setPatch(
|
|
68
|
-
|
|
72
|
+
setPatch(prev => {
|
|
73
|
+
const data = prev;
|
|
69
74
|
return delete data[target.name];
|
|
70
75
|
});
|
|
71
|
-
setPatchLabel(
|
|
72
|
-
|
|
76
|
+
setPatchLabel(prev => {
|
|
77
|
+
const data = prev;
|
|
73
78
|
return delete data[target.component];
|
|
74
79
|
});
|
|
75
80
|
} else {
|
|
76
81
|
formPage.formData[target.name] = target.value;
|
|
77
|
-
setPatch(
|
|
78
|
-
|
|
79
|
-
});
|
|
80
|
-
setPatchLabel(
|
|
81
|
-
|
|
82
|
-
});
|
|
82
|
+
setPatch(prev => _objectSpread(_objectSpread({}, prev), {}, {
|
|
83
|
+
[target.name]: target.value
|
|
84
|
+
}));
|
|
85
|
+
setPatchLabel(prev => _objectSpread(_objectSpread({}, prev), {}, {
|
|
86
|
+
[target.component]: target.label
|
|
87
|
+
}));
|
|
83
88
|
}
|
|
84
89
|
if (typeof onChange === 'function') {
|
|
85
90
|
onChange(page.formData);
|
|
86
91
|
}
|
|
87
92
|
};
|
|
88
|
-
(0, _react.useEffect)(
|
|
93
|
+
(0, _react.useEffect)(() => {
|
|
89
94
|
// eslint-disable-next-line no-useless-concat
|
|
90
|
-
|
|
95
|
+
const coreDocTitle = document.title.replace('Error: ', '');
|
|
91
96
|
// eslint-disable-next-line prefer-template
|
|
92
97
|
document.title = errors.length > 0 ? 'Error: ' + coreDocTitle : coreDocTitle;
|
|
93
98
|
}, [errors]);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
formPage.actions = (_formPage$actions = formPage.actions) === null || _formPage$actions === void 0 ? void 0 : _formPage$actions.map(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}) : action;
|
|
100
|
-
});
|
|
99
|
+
const classes = _utils.default.classBuilder(classBlock, classModifiers, className);
|
|
100
|
+
const formPage = page;
|
|
101
|
+
formPage.actions = (_formPage$actions = formPage.actions) === null || _formPage$actions === void 0 ? void 0 : _formPage$actions.map(action => action.label ? _objectSpread(_objectSpread({}, action), {}, {
|
|
102
|
+
label: _utils.default.interpolateString(action.label, formPage.formData)
|
|
103
|
+
}) : action);
|
|
101
104
|
formPage.formData = _utils.default.Operate.runPageOperations(formPage, _objectSpread(_objectSpread({}, formPage.formData), patch), onWrapperChange || onPageChange);
|
|
102
|
-
|
|
105
|
+
const headingContent = page.title ? /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, _utils.default.FormPage.getTitle(page.title, page.formData)) : /*#__PURE__*/_react.default.createElement(_copReactComponents.Label, {
|
|
103
106
|
id: page.id,
|
|
104
107
|
required: page.required,
|
|
105
108
|
hideOptionalSuffix: page.hideOptionalSuffix
|
|
106
109
|
}, page.label);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
110
|
+
const formComponentContent = page.components.filter(c => _utils.default.Component.show(c, page.formData)).map((component, index) => /*#__PURE__*/_react.default.createElement(_FormComponent.default, {
|
|
111
|
+
key: index,
|
|
112
|
+
component: component,
|
|
113
|
+
onAction: action => onAction(action, patch, patchLabel),
|
|
114
|
+
onChange: onWrapperChange || onPageChange,
|
|
115
|
+
onTopLevelChange: onTopLevelChange || onPageChange,
|
|
116
|
+
value: page.formData[component.fieldId] || patch[component.fieldId],
|
|
117
|
+
formData: page.formData,
|
|
118
|
+
pages: pages,
|
|
119
|
+
submitting: submitting
|
|
120
|
+
}));
|
|
121
|
+
let errorMessages = null;
|
|
122
|
+
if (runOnLoad && (errors === null || errors === void 0 ? void 0 : errors.length) > 0) {
|
|
123
|
+
var _page$customValidatio2;
|
|
124
|
+
errorMessages = [{
|
|
125
|
+
error: page === null || page === void 0 || (_page$customValidatio2 = page.customValidation) === null || _page$customValidatio2 === void 0 || (_page$customValidatio2 = _page$customValidatio2[0]) === null || _page$customValidatio2 === void 0 ? void 0 : _page$customValidatio2.message
|
|
126
|
+
}];
|
|
127
|
+
} else if ((errors === null || errors === void 0 ? void 0 : errors.length) > 0 && !runOnLoad) {
|
|
128
|
+
errorMessages = errors;
|
|
129
|
+
}
|
|
124
130
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
125
131
|
className: classes(),
|
|
126
132
|
key: page.id
|
|
127
|
-
},
|
|
128
|
-
errors:
|
|
133
|
+
}, errorMessages && /*#__PURE__*/_react.default.createElement(_copReactComponents.ErrorSummary, {
|
|
134
|
+
errors: errorMessages,
|
|
129
135
|
hashLink: hashLink
|
|
130
136
|
}), page.fieldset && /*#__PURE__*/_react.default.createElement("fieldset", {
|
|
131
137
|
className: "govuk-fieldset"
|
|
132
138
|
}, /*#__PURE__*/_react.default.createElement("legend", {
|
|
133
139
|
className: "govuk-fieldset__legend"
|
|
134
140
|
}, headingContent), formComponentContent), !page.fieldset && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, headingContent, formComponentContent), /*#__PURE__*/_react.default.createElement(_PageActions.default, {
|
|
135
|
-
actions: (_page$actions = page.actions) === null || _page$actions === void 0 ? void 0 : _page$actions.filter(
|
|
136
|
-
|
|
137
|
-
}),
|
|
138
|
-
onAction: function onAction(action) {
|
|
139
|
-
return _onAction(action, patch, patchLabel);
|
|
140
|
-
}
|
|
141
|
+
actions: (_page$actions = page.actions) === null || _page$actions === void 0 ? void 0 : _page$actions.filter(action => _utils.default.Component.show(action, page.formData)),
|
|
142
|
+
onAction: action => onAction(action, patch, patchLabel)
|
|
141
143
|
}));
|
|
142
144
|
};
|
|
143
145
|
FormPage.propTypes = {
|
|
@@ -162,10 +164,18 @@ FormPage.propTypes = {
|
|
|
162
164
|
label: _propTypes.default.string,
|
|
163
165
|
required: _propTypes.default.bool,
|
|
164
166
|
actions: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({}), _propTypes.default.string])),
|
|
165
|
-
formData: _propTypes.default.shape({}).isRequired
|
|
167
|
+
formData: _propTypes.default.shape({}).isRequired,
|
|
168
|
+
customValidation: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
169
|
+
runWhen: _propTypes.default.shape({
|
|
170
|
+
onLoad: _propTypes.default.bool
|
|
171
|
+
}).isRequired,
|
|
172
|
+
message: _propTypes.default.string.isRequired
|
|
173
|
+
}))
|
|
166
174
|
}).isRequired,
|
|
167
175
|
pages: _propTypes.default.arrayOf(_propTypes.default.shape({})),
|
|
168
|
-
submitting: _propTypes.default.bool
|
|
176
|
+
submitting: _propTypes.default.bool,
|
|
177
|
+
fromTarget: _propTypes.default.bool,
|
|
178
|
+
pageId: _propTypes.default.string.isRequired
|
|
169
179
|
};
|
|
170
180
|
FormPage.defaultProps = {
|
|
171
181
|
classBlock: DEFAULT_CLASS,
|
|
@@ -176,6 +186,7 @@ FormPage.defaultProps = {
|
|
|
176
186
|
onTopLevelChange: undefined,
|
|
177
187
|
onWrapperChange: undefined,
|
|
178
188
|
pages: [],
|
|
179
|
-
submitting: false
|
|
189
|
+
submitting: false,
|
|
190
|
+
fromTarget: false
|
|
180
191
|
};
|
|
181
192
|
var _default = exports.default = FormPage;
|