diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbselectwhen.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbselectwhen.directive.js new file mode 100644 index 0000000000..b8986c02d3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/umbselectwhen.directive.js @@ -0,0 +1,28 @@ +(function() { + 'use strict'; + + function SelectWhen($timeout) { + + function link(scope, el, attr, ctrl) { + + attr.$observe("umbSelectWhen", function(newValue) { + if (newValue === "true") { + $timeout(function() { + el.select(); + }); + } + }); + + } + + var directive = { + restrict: 'A', + link: link + }; + + return directive; + } + + angular.module('umbraco.directives').directive('umbSelectWhen', SelectWhen); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umblockedfield.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umblockedfield.directive.js index 870a7d45d6..b382fa1c32 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umblockedfield.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umblockedfield.directive.js @@ -24,12 +24,10 @@ // scope object, but that would mean we'd have to watch that value too in order to set the outer // ngModelCtrl.$modelValue. It's seems like less overhead to just do this and not have 2x watches. scope.lockedFieldForm.lockedField.$modelValue = undefined; - scope.lockedFieldForm.lockedField.$setViewValue(newValue); - scope.lockedFieldForm.lockedField.$render(); + scope.lockedFieldForm.lockedField.$render(); } + scope.lockedFieldForm.lockedField.$setViewValue(scope.lockedFieldForm.lockedField.$modelValue); }); - - var input = el.find('.umb-locked-field__input'); function activate() { @@ -57,36 +55,14 @@ scope.lock = function() { scope.locked = true; - input.unbind("blur"); }; scope.unlock = function() { scope.locked = false; - autoFocusField(); }; - function autoFocusField() { - - var onBlurHandler = function() { - scope.$apply(function(){ - scope.lock(); - }); - }; - - $timeout(function() { - input.focus(); - input.select(); - input.on("blur", onBlurHandler); - }); - - } - activate(); - scope.$on('$destroy', function() { - input.unbind('blur'); - }); - } var directive = { diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-locked-field.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-locked-field.html index 744e635f21..217d420a3a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/umb-locked-field.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-locked-field.html @@ -21,7 +21,10 @@ umb-auto-resize required val-server-field="{{serverValidationField}}" - title="{{ngModel}}" /> + title="{{ngModel}}" + focus-when="{{!locked}}" + umb-select-when="{{!locked}}" + on-blur="lock()" />