diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js index 717cefbb0a..a4508c8879 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbcheckbox.directive.js @@ -41,7 +41,7 @@ (function () { 'use strict'; - function UmbCheckboxController($timeout, localizationService) { + function UmbCheckboxController($timeout, $attrs, localizationService) { var vm = this; @@ -50,7 +50,12 @@ function onInit() { vm.inputId = vm.inputId || "umb-check_" + String.CreateGuid(); - + vm.disableDirtyCheck = + $attrs.hasOwnProperty("disableDirtyCheck") && + vm.disableDirtyCheck !== '0' && + vm.disableDirtyCheck !== 0 && + vm.disableDirtyCheck !== 'false' && + vm.disableDirtyCheck !== false; vm.icon = vm.icon || vm.iconClass || null; // If a labelKey is passed let's update the returned text if it's does not contain an opening square bracket [ diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbradiobutton.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbradiobutton.directive.js index 8c7157c414..dd0d2fc31b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbradiobutton.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbradiobutton.directive.js @@ -40,7 +40,7 @@ (function () { 'use strict'; - function UmbRadiobuttonController($timeout, localizationService) { + function UmbRadiobuttonController($timeout, $attrs, localizationService) { var vm = this; @@ -49,7 +49,12 @@ function onInit() { vm.inputId = vm.inputId || "umb-radio_" + String.CreateGuid(); - + vm.disableDirtyCheck = + $attrs.hasOwnProperty("disableDirtyCheck") && + vm.disableDirtyCheck !== '0' && + vm.disableDirtyCheck !== 0 && + vm.disableDirtyCheck !== 'false' && + vm.disableDirtyCheck !== false; vm.icon = vm.icon || vm.iconClass || null; // If a labelKey is passed let's update the returned text if it's does not contain an opening square bracket [ diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/validation/nodirtycheck.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/validation/nodirtycheck.directive.js index 800ac87480..31ef125511 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/validation/nodirtycheck.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/validation/nodirtycheck.directive.js @@ -10,13 +10,18 @@ function noDirtyCheck() { require: 'ngModel', link: function (scope, elm, attrs, ctrl) { + // if "no-dirty-check" attribute is explicitly falsy, then skip and use default behaviour. In all other cases we consider it truthy + var skipNoDirtyCheck = attrs.noDirtyCheck === '0' || attrs.noDirtyCheck === 0 || attrs.noDirtyCheck.toString().toLowerCase() === 'false'; + if (skipNoDirtyCheck) + return; + var alwaysFalse = { - get: function () { return false; }, - set: function () { } - }; + get: function () { return false; }, + set: function () { } + }; + Object.defineProperty(ctrl, '$pristine', alwaysFalse); Object.defineProperty(ctrl, '$dirty', alwaysFalse); - } }; } diff --git a/src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html b/src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html index 9056963c9d..a093e66b61 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/forms/umb-checkbox.html @@ -1,29 +1,17 @@