@ukhomeoffice/cop-react-form-renderer 5.44.1-alpha → 5.45.2-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CheckYourAnswers/Answer.js +12 -12
- package/dist/components/CheckYourAnswers/Answer.test.js +92 -127
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +101 -131
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +464 -769
- package/dist/components/CollectionPage/CollectionPage.js +66 -58
- package/dist/components/CollectionPage/CollectionPage.test.js +300 -342
- package/dist/components/CollectionSummary/BannerStrip.js +12 -12
- package/dist/components/CollectionSummary/BannerStrip.test.js +63 -59
- package/dist/components/CollectionSummary/CollectionSummary.js +104 -77
- package/dist/components/CollectionSummary/CollectionSummary.test.js +126 -81
- package/dist/components/CollectionSummary/Confirmation.js +14 -12
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/SummaryCard.js +96 -131
- package/dist/components/CollectionSummary/SummaryCard.test.js +959 -810
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +66 -0
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +86 -0
- package/dist/components/FormComponent/Collection.js +73 -107
- package/dist/components/FormComponent/Collection.test.js +809 -945
- package/dist/components/FormComponent/Container.js +40 -38
- package/dist/components/FormComponent/Container.test.js +314 -345
- package/dist/components/FormComponent/FormComponent.js +67 -70
- package/dist/components/FormComponent/FormComponent.test.js +284 -342
- 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 +7 -7
- package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
- package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
- 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 +65 -80
- package/dist/components/FormPage/FormPage.test.js +127 -163
- package/dist/components/FormRenderer/FormRenderer.js +142 -178
- package/dist/components/FormRenderer/FormRenderer.test.js +730 -1115
- package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
- package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
- package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
- package/dist/components/FormRenderer/handlers/index.js +1 -1
- package/dist/components/FormRenderer/handlers/navigate.js +3 -3
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +9 -9
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +16 -20
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +17 -22
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
- package/dist/components/FormRenderer/helpers/getCYA.js +3 -5
- package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getFormState.js +5 -7
- package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
- package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -24
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
- package/dist/components/FormRenderer/helpers/getPage.js +2 -4
- package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +6 -7
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +96 -110
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +62 -60
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +71 -73
- package/dist/components/FormRenderer/helpers/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +59 -51
- package/dist/components/FormRenderer/onCYAAction.test.js +164 -152
- package/dist/components/FormRenderer/onPageAction.js +43 -39
- package/dist/components/FormRenderer/onPageAction.test.js +223 -206
- package/dist/components/FormRenderer/onTaskAction.js +9 -13
- package/dist/components/FormRenderer/onTaskAction.test.js +93 -88
- package/dist/components/PageActions/ActionButton.js +12 -15
- package/dist/components/PageActions/ActionButton.test.js +56 -78
- package/dist/components/PageActions/PageActions.js +10 -10
- package/dist/components/PageActions/PageActions.test.js +86 -115
- package/dist/components/SummaryList/GroupAction.js +9 -17
- package/dist/components/SummaryList/GroupAction.test.js +37 -33
- package/dist/components/SummaryList/RowAction.js +11 -16
- package/dist/components/SummaryList/RowAction.test.js +37 -33
- package/dist/components/SummaryList/SummaryList.js +21 -26
- package/dist/components/SummaryList/SummaryList.test.js +143 -166
- package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -4
- package/dist/components/SummaryList/SummaryListRow.js +6 -4
- package/dist/components/SummaryList/SummaryListTitleRow.js +5 -3
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
- 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 +19 -29
- package/dist/components/TaskList/Task.test.js +83 -76
- package/dist/components/TaskList/TaskList.js +45 -71
- package/dist/components/TaskList/TaskList.test.js +113 -111
- package/dist/components/TaskList/TaskState.js +7 -5
- package/dist/components/TaskList/TaskState.test.js +52 -45
- package/dist/components/index.js +7 -7
- package/dist/context/HooksContext/HooksContext.js +58 -79
- package/dist/context/HooksContext/HooksContext.test.js +26 -35
- package/dist/context/HooksContext/index.js +3 -4
- package/dist/context/ValidationContext/ValidationContext.js +32 -72
- package/dist/context/ValidationContext/ValidationContext.test.js +47 -59
- package/dist/context/ValidationContext/index.js +3 -4
- package/dist/context/index.js +2 -2
- package/dist/hooks/index.js +9 -10
- package/dist/hooks/useAxios.js +14 -40
- package/dist/hooks/useGetRequest.js +61 -97
- package/dist/hooks/useHooks.js +1 -3
- package/dist/hooks/useRefData.js +26 -39
- package/dist/hooks/useValidation.js +1 -3
- package/dist/index.js +13 -14
- 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 +30 -28
- package/dist/models/index.js +9 -9
- package/dist/setupTests.js +30 -31
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +52 -54
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +15 -25
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +33 -35
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -31
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +42 -44
- package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +18 -24
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +15 -16
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +33 -36
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +58 -60
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +79 -88
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +146 -124
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +25 -20
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +103 -97
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +13 -18
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +70 -76
- 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 +9 -18
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +27 -22
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
- package/dist/utils/CollectionPage/getQuickEditPage.js +19 -19
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +12 -16
- package/dist/utils/CollectionPage/index.js +1 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.js +29 -30
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +17 -17
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +4 -6
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
- package/dist/utils/CollectionPage/setCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +17 -17
- package/dist/utils/Component/addShowWhen.js +4 -8
- package/dist/utils/Component/addShowWhen.test.js +37 -37
- package/dist/utils/Component/applyToComponentTree.js +18 -18
- package/dist/utils/Component/applyToComponentTree.test.js +27 -32
- package/dist/utils/Component/cleanAttributes.js +10 -13
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +5 -5
- package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
- package/dist/utils/Component/getComponent.js +88 -94
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +18 -17
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +46 -59
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +39 -48
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +23 -33
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +20 -18
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +20 -25
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +10 -9
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +9 -8
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +22 -26
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +57 -70
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +31 -38
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +20 -29
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +9 -8
- package/dist/utils/Component/getDefaultValue.js +6 -8
- package/dist/utils/Component/getDefaultValue.test.js +12 -12
- package/dist/utils/Component/getDefaultValueFromConfig.js +22 -21
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
- package/dist/utils/Component/index.js +1 -1
- package/dist/utils/Component/isEditable.js +2 -4
- package/dist/utils/Component/isEditable.test.js +14 -15
- package/dist/utils/Component/optionIsSelected.js +1 -1
- package/dist/utils/Component/optionIsSelected.test.js +9 -9
- package/dist/utils/Component/setupContainerComponentsPath.js +27 -29
- 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 +14 -17
- 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 +13 -18
- package/dist/utils/Condition/setupConditions.test.js +7 -7
- package/dist/utils/Container/getEditableComponents.js +3 -5
- package/dist/utils/Container/getEditableComponents.test.js +43 -45
- package/dist/utils/Container/index.js +1 -1
- package/dist/utils/Container/setupNesting.js +16 -20
- package/dist/utils/Container/setupNesting.test.js +27 -30
- package/dist/utils/Container/showContainer.js +3 -7
- package/dist/utils/Container/showContainer.test.js +30 -30
- package/dist/utils/Data/applyFormula.js +38 -48
- package/dist/utils/Data/applyFormula.test.js +20 -20
- package/dist/utils/Data/getAutocompleteSource.js +18 -26
- package/dist/utils/Data/getAutocompleteSource.test.js +80 -86
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +12 -12
- package/dist/utils/Data/getOptions.js +19 -25
- package/dist/utils/Data/getOptions.test.js +20 -20
- package/dist/utils/Data/getSourceData.js +6 -19
- package/dist/utils/Data/getSourceData.test.js +84 -80
- package/dist/utils/Data/index.js +1 -1
- package/dist/utils/Data/refDataToOptions.js +10 -13
- package/dist/utils/Data/refDataToOptions.test.js +19 -19
- package/dist/utils/Data/setDataItem.js +7 -8
- package/dist/utils/Data/setDataItem.test.js +37 -37
- package/dist/utils/Data/setupFormData.js +13 -21
- package/dist/utils/Data/setupFormData.test.js +51 -50
- package/dist/utils/Data/setupRefDataUrlForComponent.js +20 -26
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
- package/dist/utils/FormPage/applyConditionalProperties.js +5 -9
- package/dist/utils/FormPage/applyConditionalProperties.test.js +15 -18
- package/dist/utils/FormPage/getFormPage.js +15 -16
- package/dist/utils/FormPage/getFormPage.test.js +47 -46
- package/dist/utils/FormPage/getFormPages.js +7 -12
- package/dist/utils/FormPage/getFormPages.test.js +20 -23
- package/dist/utils/FormPage/getPageActions.js +9 -15
- 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 +5 -7
- package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
- package/dist/utils/FormPage/index.js +1 -1
- package/dist/utils/FormPage/showFormPage.js +3 -7
- 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 +21 -28
- package/dist/utils/FormPage/useComponent.test.js +78 -79
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +18 -18
- package/dist/utils/Format/formatDataForComponent.js +5 -6
- package/dist/utils/Format/formatDataForComponent.test.js +50 -77
- package/dist/utils/Format/formatDataForForm.js +6 -8
- package/dist/utils/Format/formatDataForForm.test.js +13 -15
- package/dist/utils/Format/formatDataForPage.js +4 -5
- package/dist/utils/Format/formatDataForPage.test.js +20 -23
- package/dist/utils/Format/index.js +1 -1
- package/dist/utils/Hub/getFormHub.js +1 -1
- package/dist/utils/Hub/getFormHub.test.js +28 -31
- 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 +24 -16
- package/dist/utils/Meta/documents/index.js +1 -1
- package/dist/utils/Meta/documents/setDocumentsForField.js +14 -16
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +68 -34
- 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 +22 -20
- package/dist/utils/Operate/runPageOperations.js +7 -7
- package/dist/utils/Operate/runPageOperations.test.js +35 -36
- 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 +21 -26
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
- package/dist/utils/Validate/additional/index.js +6 -6
- package/dist/utils/Validate/additional/index.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
- package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
- package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
- package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +7 -11
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -41
- 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/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +14 -16
- 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 +3 -4
- 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 +28 -26
- package/dist/utils/Validate/additional/utils.js +9 -22
- package/dist/utils/Validate/index.js +1 -1
- package/dist/utils/Validate/validateCollection.js +19 -25
- package/dist/utils/Validate/validateCollection.test.js +74 -66
- package/dist/utils/Validate/validateComponent.js +17 -15
- package/dist/utils/Validate/validateComponent.test.js +167 -146
- package/dist/utils/Validate/validateContainer.js +14 -19
- package/dist/utils/Validate/validateContainer.test.js +49 -45
- package/dist/utils/Validate/validateDate.js +11 -17
- package/dist/utils/Validate/validateDate.test.js +28 -29
- package/dist/utils/Validate/validateEmail.js +6 -8
- package/dist/utils/Validate/validateEmail.test.js +25 -25
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +17 -18
- package/dist/utils/Validate/validatePage.test.js +185 -182
- package/dist/utils/Validate/validateRegex.js +3 -5
- package/dist/utils/Validate/validateRegex.test.js +14 -14
- package/dist/utils/Validate/validateRequired.js +4 -6
- package/dist/utils/Validate/validateRequired.test.js +18 -18
- package/dist/utils/Validate/validateTextArea.js +4 -6
- package/dist/utils/Validate/validateTextArea.test.js +20 -20
- package/dist/utils/Validate/validateTime.js +7 -14
- package/dist/utils/Validate/validateTime.test.js +14 -14
- package/dist/utils/index.js +7 -9
- package/package.json +2 -2
|
@@ -16,21 +16,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
16
16
|
|
|
17
17
|
// Styles.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
const DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form-banner-strip';
|
|
20
|
+
const BannerStrip = _ref => {
|
|
21
|
+
let {
|
|
22
|
+
id,
|
|
23
|
+
banners,
|
|
24
|
+
formData,
|
|
25
|
+
classModifiers
|
|
26
|
+
} = _ref;
|
|
27
|
+
const classes = _utils.default.classBuilder(DEFAULT_CLASS, classModifiers, '');
|
|
28
|
+
const filteredBanners = banners.filter(banner => _utils.default.Component.show(banner, formData));
|
|
29
29
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
30
30
|
id: id,
|
|
31
31
|
className: classes()
|
|
32
|
-
}, filteredBanners.map(
|
|
33
|
-
|
|
32
|
+
}, filteredBanners.map((banner, index) => {
|
|
33
|
+
const bannerId = "".concat(id, "-banner-").concat(index);
|
|
34
34
|
if (typeof banner === 'string') {
|
|
35
35
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
36
36
|
id: bannerId,
|
|
@@ -1,124 +1,128 @@
|
|
|
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
|
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
5
4
|
var _react = _interopRequireDefault(require("react"));
|
|
6
5
|
var _setupTests = require("../../setupTests");
|
|
7
6
|
var _BannerStrip = _interopRequireWildcard(require("./BannerStrip"));
|
|
8
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
9
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
7
|
+
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); }
|
|
8
|
+
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 && Object.prototype.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; }
|
|
10
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
10
|
// Global imports.
|
|
12
11
|
|
|
13
12
|
// Local imports.
|
|
14
13
|
|
|
15
|
-
describe('components.CollectionSummary.BannerStrip',
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
describe('components.CollectionSummary.BannerStrip', () => {
|
|
15
|
+
const ID = 'testBanner';
|
|
16
|
+
const BANNERS = ['Banner 1', 'Banner 2'];
|
|
17
|
+
const FORM_DATA = {
|
|
19
18
|
textField: 'banner'
|
|
20
19
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const classes = _copReactComponents.Utils.classBuilder(_BannerStrip.DEFAULT_CLASS, [], '');
|
|
21
|
+
const checkSetup = container => {
|
|
22
|
+
const bannerStripDiv = container.children[0];
|
|
24
23
|
expect(bannerStripDiv.tagName).toEqual('DIV');
|
|
25
24
|
expect(bannerStripDiv.id).toEqual(ID);
|
|
26
25
|
return bannerStripDiv;
|
|
27
26
|
};
|
|
28
|
-
it('should correctly render a BannerStrip component with plain-text banners',
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
it('should correctly render a BannerStrip component with plain-text banners', () => {
|
|
28
|
+
const {
|
|
29
|
+
container
|
|
30
|
+
} = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
31
|
+
id: ID,
|
|
32
|
+
banners: BANNERS,
|
|
33
|
+
formData: FORM_DATA
|
|
34
|
+
}));
|
|
35
|
+
const bannerStripDiv = checkSetup(container);
|
|
36
36
|
expect(bannerStripDiv.tagName).toEqual('DIV');
|
|
37
37
|
expect(bannerStripDiv.classList).toContain(_BannerStrip.DEFAULT_CLASS);
|
|
38
38
|
expect(bannerStripDiv.children.length).toEqual(2); // One for each banner provided.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
const firstBanner = bannerStripDiv.children[0];
|
|
41
41
|
expect(firstBanner.tagName).toEqual('DIV');
|
|
42
42
|
expect(firstBanner.classList).toContain(classes('banner'));
|
|
43
43
|
expect(firstBanner.textContent).toEqual(BANNERS[0]);
|
|
44
|
-
|
|
44
|
+
const secondBanner = bannerStripDiv.children[1];
|
|
45
45
|
expect(secondBanner.tagName).toEqual('DIV');
|
|
46
46
|
expect(secondBanner.classList).toContain(classes('banner'));
|
|
47
47
|
expect(secondBanner.textContent).toEqual(BANNERS[1]);
|
|
48
48
|
});
|
|
49
|
-
it('should correctly render a BannerStrip component with tag banners',
|
|
50
|
-
|
|
49
|
+
it('should correctly render a BannerStrip component with tag banners', () => {
|
|
50
|
+
const TAG_BANNERS = [{
|
|
51
51
|
text: 'Banner 1'
|
|
52
52
|
}, {
|
|
53
53
|
text: 'Banner 2'
|
|
54
54
|
}];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
const {
|
|
56
|
+
container
|
|
57
|
+
} = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
58
|
+
id: ID,
|
|
59
|
+
banners: TAG_BANNERS,
|
|
60
|
+
formData: FORM_DATA
|
|
61
|
+
}));
|
|
62
|
+
const bannerStripDiv = checkSetup(container);
|
|
62
63
|
expect(bannerStripDiv.tagName).toEqual('DIV');
|
|
63
64
|
expect(bannerStripDiv.classList).toContain(_BannerStrip.DEFAULT_CLASS);
|
|
64
65
|
expect(bannerStripDiv.children.length).toEqual(2); // One for each banner provided.
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
const firstBanner = bannerStripDiv.children[0];
|
|
67
68
|
expect(firstBanner.tagName).toEqual('STRONG');
|
|
68
69
|
expect(firstBanner.classList).toContain(classes('tag'));
|
|
69
70
|
expect(firstBanner.textContent).toEqual(BANNERS[0]);
|
|
70
|
-
|
|
71
|
+
const secondBanner = bannerStripDiv.children[1];
|
|
71
72
|
expect(secondBanner.tagName).toEqual('STRONG');
|
|
72
73
|
expect(secondBanner.classList).toContain(classes('tag'));
|
|
73
74
|
expect(secondBanner.textContent).toEqual(BANNERS[1]);
|
|
74
75
|
});
|
|
75
|
-
it('should correctly interpolate banners',
|
|
76
|
-
|
|
76
|
+
it('should correctly interpolate banners', () => {
|
|
77
|
+
const INTERPOLATED_BANNERS = [{
|
|
77
78
|
// eslint-disable-next-line no-template-curly-in-string
|
|
78
79
|
text: 'An interpolated ${textField}'
|
|
79
80
|
},
|
|
80
81
|
// eslint-disable-next-line no-template-curly-in-string
|
|
81
82
|
'Another interpolated ${textField}'];
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
const {
|
|
84
|
+
container
|
|
85
|
+
} = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
86
|
+
id: ID,
|
|
87
|
+
banners: INTERPOLATED_BANNERS,
|
|
88
|
+
formData: FORM_DATA
|
|
89
|
+
}));
|
|
90
|
+
const bannerStripDiv = checkSetup(container);
|
|
89
91
|
expect(bannerStripDiv.children.length).toEqual(2); // One for each banner provided.
|
|
90
92
|
|
|
91
|
-
|
|
93
|
+
const firstBanner = bannerStripDiv.children[0];
|
|
92
94
|
expect(firstBanner.tagName).toEqual('STRONG');
|
|
93
95
|
expect(firstBanner.classList).toContain(classes('tag'));
|
|
94
96
|
expect(firstBanner.textContent).toEqual("An interpolated ".concat(FORM_DATA.textField));
|
|
95
|
-
|
|
97
|
+
const secondBanner = bannerStripDiv.children[1];
|
|
96
98
|
expect(secondBanner.tagName).toEqual('DIV');
|
|
97
99
|
expect(secondBanner.classList).toContain(classes('banner'));
|
|
98
100
|
expect(secondBanner.textContent).toEqual("Another interpolated ".concat(FORM_DATA.textField));
|
|
99
101
|
});
|
|
100
|
-
it('should render no banners if none are provided',
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
it('should render no banners if none are provided', () => {
|
|
103
|
+
const {
|
|
104
|
+
container
|
|
105
|
+
} = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
106
|
+
id: ID,
|
|
107
|
+
formData: FORM_DATA
|
|
108
|
+
}));
|
|
109
|
+
const bannerStripDiv = checkSetup(container);
|
|
107
110
|
expect(bannerStripDiv.tagName).toEqual('DIV');
|
|
108
111
|
expect(bannerStripDiv.classList).toContain(_BannerStrip.DEFAULT_CLASS);
|
|
109
112
|
expect(bannerStripDiv.children.length).toEqual(0);
|
|
110
113
|
});
|
|
111
|
-
it('should correctly render a BannerStrip component with a plain string banner',
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
it('should correctly render a BannerStrip component with a plain string banner', () => {
|
|
115
|
+
const PLAIN_STRING_BANNER = 'banner';
|
|
116
|
+
const {
|
|
117
|
+
container
|
|
118
|
+
} = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_BannerStrip.default, {
|
|
119
|
+
id: ID,
|
|
120
|
+
banners: [PLAIN_STRING_BANNER],
|
|
121
|
+
formData: FORM_DATA
|
|
122
|
+
}));
|
|
123
|
+
const bannerStripDiv = checkSetup(container);
|
|
120
124
|
expect(bannerStripDiv.children.length).toEqual(1); // One banner provided.
|
|
121
|
-
|
|
125
|
+
const plainStringBanner = bannerStripDiv.children[0];
|
|
122
126
|
expect(plainStringBanner.tagName).toEqual('DIV');
|
|
123
127
|
expect(plainStringBanner.classList.contains(classes('banner'))).toBe(true);
|
|
124
128
|
expect(plainStringBanner.textContent).toEqual(PLAIN_STRING_BANNER);
|
|
@@ -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
|
});
|
|
@@ -10,87 +9,112 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
9
|
var _PageAction = require("../../models/PageAction");
|
|
11
10
|
var _utils = _interopRequireDefault(require("../../utils"));
|
|
12
11
|
var _ActionButton = _interopRequireDefault(require("../PageActions/ActionButton"));
|
|
12
|
+
var _hooks = require("../../hooks");
|
|
13
13
|
var _Confirmation = _interopRequireDefault(require("./Confirmation"));
|
|
14
14
|
var _SummaryCard = _interopRequireDefault(require("./SummaryCard"));
|
|
15
|
+
var _SummaryCardValidationContext = _interopRequireDefault(require("./SummaryCardValidationContext"));
|
|
15
16
|
require("./CollectionSummary.scss");
|
|
16
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
17
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
17
|
+
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); }
|
|
18
|
+
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 && Object.prototype.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; }
|
|
18
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
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; }
|
|
22
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
23
|
-
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); }
|
|
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
|
+
// Global imports.
|
|
21
|
+
|
|
30
22
|
// Local imports.
|
|
23
|
+
|
|
31
24
|
// Styles.
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
|
|
26
|
+
const DEFAULT_ADD_BUTTON_LABEL = exports.DEFAULT_ADD_BUTTON_LABEL = 'Add';
|
|
27
|
+
|
|
28
|
+
// A note about validation.
|
|
29
|
+
//
|
|
30
|
+
// A Collection Summary validates each entry whenever the list of entries changes
|
|
31
|
+
// in any way. This was required as duplicating entries can lead to entries being
|
|
32
|
+
// invalid as soon as they are created - something that is impossible to flag
|
|
33
|
+
// to the user given that validation currently only occurs in onPageAction.
|
|
34
|
+
//
|
|
35
|
+
// The Summary Cards themselves are wrapped in their own custom Validation Contexts,
|
|
36
|
+
// see (SummaryCardValidationContext.jsx). These contexts are provided with any
|
|
37
|
+
// errors found by the summary and allow the Summary Card to keep any Quick Edit
|
|
38
|
+
// errors local to the Quick Edit page.
|
|
39
|
+
|
|
40
|
+
const CollectionSummary = _ref => {
|
|
34
41
|
var _config$confirmation, _config$confirmation2;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
var newMasterPages = _utils.default.CollectionPage.mergePages(pages || []) || [];
|
|
53
|
-
return newMasterPages.find(function (page) {
|
|
42
|
+
let {
|
|
43
|
+
config,
|
|
44
|
+
formData,
|
|
45
|
+
onAction,
|
|
46
|
+
onChange,
|
|
47
|
+
pages
|
|
48
|
+
} = _ref;
|
|
49
|
+
const {
|
|
50
|
+
errors,
|
|
51
|
+
addErrors,
|
|
52
|
+
clearErrors
|
|
53
|
+
} = (0, _hooks.useValidation)();
|
|
54
|
+
const [entryToDelete, setEntryToDelete] = (0, _react.useState)(null);
|
|
55
|
+
const data = (0, _react.useMemo)(() => _utils.default.CollectionPage.getData(config.collectionName, formData) || [], [formData]);
|
|
56
|
+
const masterPage = (0, _react.useMemo)(() => {
|
|
57
|
+
const newMasterPages = _utils.default.CollectionPage.mergePages(pages || []) || [];
|
|
58
|
+
return newMasterPages.find(page => {
|
|
54
59
|
var _page$collection;
|
|
55
60
|
return ((_page$collection = page.collection) === null || _page$collection === void 0 ? void 0 : _page$collection.name) === config.collectionName;
|
|
56
61
|
});
|
|
57
62
|
}, [pages]);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
const validateEntries = () => {
|
|
64
|
+
// We only clear errors if it's not empty to avoid
|
|
65
|
+
// triggering a race condition with the 'data' memo
|
|
66
|
+
// above.
|
|
67
|
+
if (errors.length > 0) {
|
|
68
|
+
clearErrors();
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
let allErrors = [];
|
|
71
|
+
data.forEach(entry => {
|
|
72
|
+
// Validation of a collection page uses the data from the
|
|
73
|
+
// active entry, so here we have to set the active ID before
|
|
74
|
+
// validating.
|
|
75
|
+
const childPages = masterPage === null || masterPage === void 0 ? void 0 : masterPage.childPages.map(page => ({
|
|
76
|
+
...page,
|
|
77
|
+
formData: {
|
|
78
|
+
...masterPage.formData,
|
|
79
|
+
["".concat(config.collectionName, "ActiveId")]: entry.id
|
|
80
|
+
}
|
|
81
|
+
}));
|
|
82
|
+
const allPagesErrors = (childPages === null || childPages === void 0 ? void 0 : childPages.flatMap(page => _utils.default.Validate.page(page))) || [];
|
|
83
|
+
// For each error we found, add the entryId so we know what Summary Card
|
|
84
|
+
// we have to pass it to.
|
|
85
|
+
const entryErrors = allPagesErrors.map(e => ({
|
|
86
|
+
...e,
|
|
87
|
+
entryId: entry.id
|
|
88
|
+
}));
|
|
89
|
+
allErrors = allErrors.concat(entryErrors);
|
|
67
90
|
});
|
|
68
|
-
|
|
69
|
-
|
|
91
|
+
// We only add allErrors if it's not empty to avoid
|
|
92
|
+
// triggering a race condition with the 'data' memo
|
|
93
|
+
// above.
|
|
94
|
+
if (allErrors.length > 0) {
|
|
95
|
+
addErrors(allErrors);
|
|
96
|
+
}
|
|
70
97
|
};
|
|
71
|
-
|
|
72
|
-
|
|
98
|
+
(0, _react.useEffect)(() => {
|
|
99
|
+
validateEntries();
|
|
100
|
+
}, [data]);
|
|
101
|
+
const onSummaryCardChange = (page, entryId) => {
|
|
73
102
|
if (typeof onAction !== 'function') {
|
|
74
103
|
return;
|
|
75
104
|
}
|
|
76
105
|
onAction({
|
|
77
106
|
type: _PageAction.PageActionTypes.SAVE_AND_NAVIGATE,
|
|
78
|
-
page
|
|
107
|
+
page,
|
|
79
108
|
addToFormData: {
|
|
80
109
|
field: "".concat(config.collectionName.split('.').pop(), "ActiveId"),
|
|
81
110
|
value: entryId
|
|
82
111
|
}
|
|
83
112
|
});
|
|
84
113
|
};
|
|
85
|
-
|
|
114
|
+
const onDuplicate = entry => {
|
|
86
115
|
var _config$card;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
var newData = [].concat(duplicatedEntries, [newEntryId]);
|
|
90
|
-
localStorage.setItem('duplicatedEntries', JSON.stringify(newData));
|
|
91
|
-
setDuplicatedEntries(newData);
|
|
92
|
-
}
|
|
93
|
-
var parentCollection = config.collectionName.split('.').shift();
|
|
116
|
+
_utils.default.CollectionPage.duplicateEntry(config.collectionName, formData, entry.id, ((_config$card = config.card) === null || _config$card === void 0 || (_config$card = _config$card.duplicateAction) === null || _config$card === void 0 ? void 0 : _config$card.fieldsToIgnore) || []);
|
|
117
|
+
const parentCollection = config.collectionName.split('.').shift();
|
|
94
118
|
// Report the whole top-level collection as being changed. We have to do this
|
|
95
119
|
// because of how patch is applied to formData on a page submission.
|
|
96
120
|
if (typeof onChange === 'function') {
|
|
@@ -100,14 +124,15 @@ var CollectionSummary = function CollectionSummary(_ref) {
|
|
|
100
124
|
value: _utils.default.CollectionPage.getData(parentCollection, formData)
|
|
101
125
|
}
|
|
102
126
|
});
|
|
127
|
+
validateEntries();
|
|
103
128
|
}
|
|
104
129
|
};
|
|
105
|
-
|
|
130
|
+
const onDeleteConfirm = () => {
|
|
106
131
|
if (!entryToDelete) {
|
|
107
132
|
return;
|
|
108
133
|
}
|
|
109
134
|
_utils.default.CollectionPage.removeEntry(config.collectionName, formData, entryToDelete.id);
|
|
110
|
-
|
|
135
|
+
const parentCollection = config.collectionName.split('.').shift();
|
|
111
136
|
// Report the whole top-level collection as being changed. We have to do this
|
|
112
137
|
// because of how patch is applied to formData on a page submission.
|
|
113
138
|
if (typeof onChange === 'function') {
|
|
@@ -119,6 +144,7 @@ var CollectionSummary = function CollectionSummary(_ref) {
|
|
|
119
144
|
});
|
|
120
145
|
}
|
|
121
146
|
setEntryToDelete(null);
|
|
147
|
+
validateEntries();
|
|
122
148
|
};
|
|
123
149
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
124
150
|
id: config.fieldId
|
|
@@ -127,15 +153,14 @@ var CollectionSummary = function CollectionSummary(_ref) {
|
|
|
127
153
|
message: _utils.default.interpolateString((_config$confirmation = config.confirmation) === null || _config$confirmation === void 0 ? void 0 : _config$confirmation.message, entryToDelete) || null,
|
|
128
154
|
confirmLabel: _utils.default.interpolateString((_config$confirmation2 = config.confirmation) === null || _config$confirmation2 === void 0 ? void 0 : _config$confirmation2.label, entryToDelete) || null,
|
|
129
155
|
onConfirm: onDeleteConfirm,
|
|
130
|
-
onCancel:
|
|
131
|
-
return setEntryToDelete(null);
|
|
132
|
-
}
|
|
156
|
+
onCancel: () => setEntryToDelete(null)
|
|
133
157
|
}, /*#__PURE__*/_react.default.createElement(_SummaryCard.default, {
|
|
134
158
|
id: "".concat(config.fieldId, ".confirmationChild"),
|
|
135
159
|
entryData: entryToDelete,
|
|
136
|
-
config: config.card ?
|
|
160
|
+
config: config.card ? {
|
|
161
|
+
...config.card,
|
|
137
162
|
quickEdit: null
|
|
138
|
-
}
|
|
163
|
+
} : {},
|
|
139
164
|
masterPage: masterPage,
|
|
140
165
|
classModifiers: "nested",
|
|
141
166
|
hideDetails: true
|
|
@@ -149,31 +174,33 @@ var CollectionSummary = function CollectionSummary(_ref) {
|
|
|
149
174
|
classModifiers: ['secondary']
|
|
150
175
|
},
|
|
151
176
|
onAction: onAction
|
|
152
|
-
}), data.map(
|
|
153
|
-
|
|
154
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
177
|
+
}), data.map((entry, index) => {
|
|
178
|
+
const key = "".concat(config.fieldId, ".summaryCard").concat(entry.id);
|
|
179
|
+
return /*#__PURE__*/_react.default.createElement(_SummaryCardValidationContext.default, {
|
|
180
|
+
entryId: entry.id,
|
|
181
|
+
topLevelErrors: errors
|
|
182
|
+
}, /*#__PURE__*/_react.default.createElement(_SummaryCard.default, {
|
|
155
183
|
id: key,
|
|
156
184
|
key: key,
|
|
157
|
-
entryData:
|
|
158
|
-
|
|
159
|
-
|
|
185
|
+
entryData: {
|
|
186
|
+
...entry,
|
|
187
|
+
index
|
|
188
|
+
},
|
|
160
189
|
masterPage: masterPage,
|
|
161
190
|
config: config.card || {},
|
|
162
191
|
onChange: onSummaryCardChange,
|
|
163
192
|
onDuplicate: onDuplicate,
|
|
164
|
-
onDelete:
|
|
165
|
-
return setEntryToDelete(entry);
|
|
166
|
-
},
|
|
193
|
+
onDelete: () => setEntryToDelete(entry),
|
|
167
194
|
pages: pages,
|
|
168
|
-
onQuickEdit:
|
|
169
|
-
|
|
170
|
-
onChange(target);
|
|
195
|
+
onQuickEdit: target => {
|
|
196
|
+
validateEntries();
|
|
197
|
+
return onChange(target);
|
|
171
198
|
},
|
|
172
199
|
parentCollectionName: config.collectionName.split('.').shift(),
|
|
173
200
|
formData: formData,
|
|
174
201
|
classModifiers: entry === entryToDelete ? ['deleting-summary-card'] : [''],
|
|
175
|
-
|
|
176
|
-
});
|
|
202
|
+
inError: errors.filter(e => e.entryId === entry.id).length > 0
|
|
203
|
+
}));
|
|
177
204
|
}));
|
|
178
205
|
};
|
|
179
206
|
CollectionSummary.propTypes = {
|