From c86b63f7fd98c579b66d686f8ae62e205ff046de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 30 Oct 2019 10:49:34 +0100 Subject: [PATCH] Changed validation for NestedContent, allow for pasting many items, but do not allow to save them. --- .../less/components/umb-nested-content.less | 2 +- .../nestedcontent/nestedcontent.controller.js | 31 +++++++++++++++---- .../nestedcontent/nestedcontent.html | 26 +++++++++++++--- src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 2 ++ src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 4 ++- .../Umbraco/config/lang/en_us.xml | 4 ++- 6 files changed, 55 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less index 56b4e19122..455a147395 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less @@ -1,5 +1,4 @@ .umb-nested-content { - text-align: center; position: relative; } @@ -170,6 +169,7 @@ .umb-nested-content__add-content { display: flex; + width: 100%; align-items: center; justify-content: center; border: 1px dashed @ui-action-discreet-border; diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js index f0ed98d8bc..f2a2fc0cc2 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js @@ -367,10 +367,6 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop updateModel(); }; $scope.requestDeleteNode = function (idx) { - if ($scope.nodes.length <= $scope.model.config.minItems) { - return; - } - if ($scope.model.config.confirmDeletes === true) { localizationService.localizeMany(["content_nestedContentDeleteItem", "general_delete", "general_cancel", "contentTypeEditor_yesDelete"]).then(function (data) { const overlay = { @@ -599,8 +595,8 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop } } - // Enforce min items - if ($scope.nodes.length < $scope.model.config.minItems) { + // Auto-fill with elementTypes, but only if we have one type to choose from, and if this property is empty. + if ($scope.singleMode === true && $scope.nodes.length === 0 && $scope.model.config.minItems > 0) { for (var i = $scope.nodes.length; i < $scope.model.config.minItems; i++) { $scope.addNode($scope.scaffolds[0].contentTypeAlias); } @@ -714,8 +710,31 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop updateModel(); }); + var watcher = $scope.$watch( + function () { + return $scope.nodes.length; + }, + function () { + //Validate! + if ($scope.nodes.length < $scope.minItems) { + $scope.nestedContentForm.minCount.$setValidity("minCount", false); + } + else { + $scope.nestedContentForm.minCount.$setValidity("minCount", true); + } + + if ($scope.nodes.length > $scope.maxItems) { + $scope.nestedContentForm.maxCount.$setValidity("maxCount", false); + } + else { + $scope.nestedContentForm.maxCount.$setValidity("maxCount", true); + } + } + ); + $scope.$on("$destroy", function () { unsubscribe(); + watcher(); }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html index 12c60c3788..2c1ff33e17 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html @@ -4,7 +4,7 @@ - +
@@ -18,7 +18,7 @@ - +
@@ -38,10 +38,26 @@ -