From e97e8caab8a84411f6ab50dcb19c72365566cda3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 13 Dec 2016 10:57:19 +0100 Subject: [PATCH 01/10] add umbDateTimePicker component --- .../components/umbdatetimepicker.directive.js | 143 ++++++++++++++++++ .../components/umb-date-time-picker.html | 6 + 2 files changed, 149 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/components/umb-date-time-picker.html diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js new file mode 100644 index 0000000000..2954e1791c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -0,0 +1,143 @@ +/** +@ngdoc directive +@name umbraco.directives.directive:umbDateTimePicker +@restrict E +@scope + +@description +Use this directive to render a date time picker + +

Markup example

+
+	
+ + + + +
+
+ +

Controller example

+
+	(function () {
+		"use strict";
+
+		function Controller() {
+
+            var vm = this;
+
+            vm.date = "";
+
+            vm.config = {
+                pickDate: true,
+                pickTime: true,
+                useSeconds: true,
+                format: "YYYY-MM-DD HH:mm:ss",
+                icons: {
+                    time: "icon-time",
+                    date: "icon-calendar",
+                    up: "icon-chevron-up",
+                    down: "icon-chevron-down"
+                }
+            };
+
+            vm.datePickerChange = datePickerChange;
+            vm.datePickerError = datePickerError;
+
+            function datePickerChange(event) {
+                // handle change
+            }
+
+            function datePickerError(event) {
+                // handle error
+            }
+
+        }
+
+		angular.module("umbraco").controller("My.Controller", Controller);
+
+	})();
+
+ +@param {object} options (binding): Config object for the date picker. +@param {string} ngModel (binding): Date value. +@param {callback} onChange (callback): Change callback. +@param {callback} onError (callback): Error callback. +**/ + +(function () { + 'use strict'; + + function DateTimePickerDirective(assetsService) { + + function link(scope, element, attrs, ctrl) { + + function onInit() { + // load css file for the date picker + assetsService.loadCss('lib/datetimepicker/bootstrap-datetimepicker.min.css').then(function () { + + }); + + // load the js file for the date picker + assetsService.loadJs('lib/datetimepicker/bootstrap-datetimepicker.js').then(function () { + // init date picker + initDatePicker(); + }); + } + + function onChange(event) { + if (scope.onChange && event.date && event.date.isValid()) { + scope.$apply(function(){ + // Update ngModel + scope.ngModel = event.date.format(scope.options.format); + // callback + scope.onChange({event: event}); + }); + } + } + + function onError(event) { + if (scope.onError) { + scope.$apply(function(){ + // callback + scope.onError({event:event}); + }); + } + } + + function initDatePicker() { + // Open the datepicker and add a changeDate eventlistener + element + .datetimepicker(angular.extend({ useCurrent: true }, scope.options)) + .on("dp.change", onChange) + .on("dp.error", onError); + } + + onInit(); + + } + + var directive = { + restrict: 'E', + replace: true, + templateUrl: 'views/components/umb-date-time-picker.html', + scope: { + ngModel: "=", + options: "=", + onChange: "&", + onError: "&" + }, + link: link + }; + + return directive; + + } + + angular.module('umbraco.directives').directive('umbDateTimePicker', DateTimePickerDirective); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-date-time-picker.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-date-time-picker.html new file mode 100644 index 0000000000..aaf8cfe62d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-date-time-picker.html @@ -0,0 +1,6 @@ +
+ + + + +
\ No newline at end of file From 7cbfe01c0bb6b9422eb5c5dd9139c0e268382d1e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 13 Dec 2016 10:58:24 +0100 Subject: [PATCH 02/10] use umbDateTimePicker component in query builder --- .../src/less/components/umb-querybuilder.less | 4 +++ .../querybuilder/querybuilder.controller.js | 27 +++++++++++++++---- .../overlays/querybuilder/querybuilder.html | 13 +++++++-- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less index fb6279608e..7c983760e1 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less @@ -23,4 +23,8 @@ .umb-querybuilder .row > div { padding: 20px 0; border-bottom: 1px solid @grayLighter; +} + +.umb-querybuilder .datepicker input { + width: 90px; } \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js index bc5bc10e13..5166de586e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js @@ -1,7 +1,7 @@ (function () { "use strict"; - function QueryBuilderOverlayController($scope, templateQueryResource) { + function QueryBuilderOverlayController($scope, $element, templateQueryResource, assetsService, angularHelper) { var vm = this; @@ -9,6 +9,18 @@ vm.contentTypes = []; vm.conditions = []; + vm.datePickerConfig = { + pickDate: true, + pickTime: false, + format: "YYYY-MM-DD", + icons: { + time: "icon-time", + date: "icon-calendar", + up: "icon-chevron-up", + down: "icon-chevron-down" + } + }; + vm.query = { contentType: { name: "Everything" @@ -41,6 +53,7 @@ vm.setFilterProperty = setFilterProperty; vm.setFilterTerm = setFilterTerm; vm.changeConstraintValue = changeConstraintValue; + vm.datePickerChange = datePickerChange; function onInit() { @@ -58,7 +71,7 @@ .then(function (conditions) { vm.conditions = conditions; }); - + throttledFunc(); } @@ -134,12 +147,10 @@ function setFilterProperty(filter, property) { filter.property = property; - throttledFunc(); } function setFilterTerm(filter, term) { filter.term = term; - throttledFunc(); } function changeConstraintValue() { @@ -154,7 +165,13 @@ }); }, 200); - + + function datePickerChange(event) { + templateQueryResource.postTemplateQuery(vm.query) + .then(function (response) { + $scope.model.result = response; + }); + } onInit(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html index 40fb909390..997855cd3c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html @@ -66,8 +66,17 @@ - - + + + + + + + + From 46c4f9d3a1dd3a61a3f8af895be07ea0efb4ba6a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 15 Dec 2016 14:39:40 +0100 Subject: [PATCH 03/10] add support for hide, show and update events --- .../components/umbdatetimepicker.directive.js | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js index 2954e1791c..8a0c9d4a06 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -5,6 +5,9 @@ @scope @description +This directive is a wrapper of the bootstrap datetime picker version 3.1.3. Use it to render a date time picker. +For extra details about settings and events take a look here: https://github.com/Eonasdan/bootstrap-datetimepicker + Use this directive to render a date time picker

Markup example

@@ -65,8 +68,11 @@ Use this directive to render a date time picker @param {object} options (binding): Config object for the date picker. @param {string} ngModel (binding): Date value. +@param {callback} onHide (callback): Hide callback. +@param {callback} onShow (callback): Show callback. @param {callback} onChange (callback): Change callback. @param {callback} onError (callback): Error callback. +@param {callback} onUpdate (callback): Update callback. **/ (function () { @@ -89,6 +95,24 @@ Use this directive to render a date time picker }); } + function onHide(event) { + if (scope.onChange) { + scope.$apply(function(){ + // callback + scope.onHide({event: event}); + }); + } + } + + function onShow() { + if (scope.onShow) { + scope.$apply(function(){ + // callback + scope.onShow(); + }); + } + } + function onChange(event) { if (scope.onChange && event.date && event.date.isValid()) { scope.$apply(function(){ @@ -109,12 +133,24 @@ Use this directive to render a date time picker } } + function onUpdate(event) { + if (scope.onShow) { + scope.$apply(function(){ + // callback + scope.onUpdate({event: event}); + }); + } + } + function initDatePicker() { // Open the datepicker and add a changeDate eventlistener element .datetimepicker(angular.extend({ useCurrent: true }, scope.options)) + .on("dp.hide", onHide) + .on("dp.show", onShow) .on("dp.change", onChange) - .on("dp.error", onError); + .on("dp.error", onError) + .on("dp.update", onUpdate); } onInit(); @@ -128,8 +164,11 @@ Use this directive to render a date time picker scope: { ngModel: "=", options: "=", + onHide: "&", + onShow: "&", onChange: "&", - onError: "&" + onError: "&", + onUpdate: "&" }, link: link }; From 219f855d86ac548ed42263db5c89380f32e95f6b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 15 Dec 2016 14:57:06 +0100 Subject: [PATCH 04/10] remove unused then from promise --- .../directives/components/umbdatetimepicker.directive.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js index 8a0c9d4a06..52c8840d68 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -84,9 +84,7 @@ Use this directive to render a date time picker function onInit() { // load css file for the date picker - assetsService.loadCss('lib/datetimepicker/bootstrap-datetimepicker.min.css').then(function () { - - }); + assetsService.loadCss('lib/datetimepicker/bootstrap-datetimepicker.min.css'); // load the js file for the date picker assetsService.loadJs('lib/datetimepicker/bootstrap-datetimepicker.js').then(function () { From aa5ad746eb16397366a2ecc38ca0d9f824b3e741 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 21 Dec 2016 13:00:45 +0100 Subject: [PATCH 05/10] fix issue with date not updating properly --- .../components/umbdatetimepicker.directive.js | 10 +++---- .../querybuilder/querybuilder.controller.js | 27 +++++++++---------- .../overlays/querybuilder/querybuilder.html | 3 +-- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js index 52c8840d68..1e11ccd95d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -16,7 +16,6 @@ Use this directive to render a date time picker @@ -53,6 +52,9 @@ Use this directive to render a date time picker function datePickerChange(event) { // handle change + if(event.date && event.date.isValid()) { + var date = event.date.format(vm.datePickerConfig.format); + } } function datePickerError(event) { @@ -67,7 +69,6 @@ Use this directive to render a date time picker @param {object} options (binding): Config object for the date picker. -@param {string} ngModel (binding): Date value. @param {callback} onHide (callback): Hide callback. @param {callback} onShow (callback): Show callback. @param {callback} onChange (callback): Change callback. @@ -114,8 +115,6 @@ Use this directive to render a date time picker function onChange(event) { if (scope.onChange && event.date && event.date.isValid()) { scope.$apply(function(){ - // Update ngModel - scope.ngModel = event.date.format(scope.options.format); // callback scope.onChange({event: event}); }); @@ -143,7 +142,7 @@ Use this directive to render a date time picker function initDatePicker() { // Open the datepicker and add a changeDate eventlistener element - .datetimepicker(angular.extend({ useCurrent: true }, scope.options)) + .datetimepicker(scope.options) .on("dp.hide", onHide) .on("dp.show", onShow) .on("dp.change", onChange) @@ -160,7 +159,6 @@ Use this directive to render a date time picker replace: true, templateUrl: 'views/components/umb-date-time-picker.html', scope: { - ngModel: "=", options: "=", onHide: "&", onShow: "&", diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js index 5166de586e..41da773146 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js @@ -12,13 +12,7 @@ vm.datePickerConfig = { pickDate: true, pickTime: false, - format: "YYYY-MM-DD", - icons: { - time: "icon-time", - date: "icon-calendar", - up: "icon-chevron-up", - down: "icon-chevron-down" - } + format: "YYYY-MM-DD" }; vm.query = { @@ -147,16 +141,28 @@ function setFilterProperty(filter, property) { filter.property = property; + filter.term = {}; + filter.constraintValue = ""; } function setFilterTerm(filter, term) { filter.term = term; + if(filter.constraintValue) { + throttledFunc(); + } } function changeConstraintValue() { throttledFunc(); } + function datePickerChange(event, filter) { + if(event.date && event.date.isValid()) { + filter.constraintValue = event.date.format(vm.datePickerConfig.format); + throttledFunc(); + } + } + var throttledFunc = _.throttle(function () { templateQueryResource.postTemplateQuery(vm.query) @@ -166,13 +172,6 @@ }, 200); - function datePickerChange(event) { - templateQueryResource.postTemplateQuery(vm.query) - .then(function (response) { - $scope.model.result = response; - }); - } - onInit(); } diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html index 997855cd3c..2db9931b56 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html @@ -72,8 +72,7 @@ + on-change="vm.datePickerChange(event, filter)"> From 4911c2718c5e1adf1fdf4dad3251cf5d228c8745 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 21 Dec 2016 13:51:01 +0100 Subject: [PATCH 06/10] add better spacing between filters --- .../src/less/components/umb-querybuilder.less | 11 +++++++++++ .../common/overlays/querybuilder/querybuilder.html | 11 ++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less index 7c983760e1..cf72c04b1b 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-querybuilder.less @@ -27,4 +27,15 @@ .umb-querybuilder .datepicker input { width: 90px; +} + +.umb-querybuilder .query-items { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +.umb-querybuilder .query-items > * { + flex: 0 1 auto; + margin: 5px; } \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html index 2db9931b56..906bf0f84d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.html @@ -3,8 +3,9 @@
-
- I want +
+ + I want
@@ -30,7 +31,7 @@
-
+
Where And @@ -87,9 +88,9 @@
-
+
- Order by + Order by
From 4101a1cb17c4cfb8a22d888a2990f92729df014d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 21 Dec 2016 14:04:59 +0100 Subject: [PATCH 07/10] add umbraco version number to umbdatepicker docs --- .../directives/components/umbdatetimepicker.directive.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js index 1e11ccd95d..6f5c5abe09 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -5,8 +5,9 @@ @scope @description +Added in Umbraco version 7.6 This directive is a wrapper of the bootstrap datetime picker version 3.1.3. Use it to render a date time picker. -For extra details about settings and events take a look here: https://github.com/Eonasdan/bootstrap-datetimepicker +For extra details about options and events take a look here: http://eonasdan.github.io/bootstrap-datetimepicker/ Use this directive to render a date time picker From 339957bd9171c1d61dfd94305a7adc9e1a3af6be Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 4 Jan 2017 10:43:56 +0100 Subject: [PATCH 08/10] remove unnecessary dependencies --- .../common/overlays/querybuilder/querybuilder.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js index 41da773146..d04b7f35a3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/querybuilder/querybuilder.controller.js @@ -1,7 +1,7 @@ (function () { "use strict"; - function QueryBuilderOverlayController($scope, $element, templateQueryResource, assetsService, angularHelper) { + function QueryBuilderOverlayController($scope, templateQueryResource) { var vm = this; From ddad642a880140aacc0aabb8270c3b3c520def00 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 4 Jan 2017 10:45:40 +0100 Subject: [PATCH 09/10] fix callbacks --- .../directives/components/umbdatetimepicker.directive.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js index 6f5c5abe09..d7e44df113 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbdatetimepicker.directive.js @@ -96,7 +96,7 @@ Use this directive to render a date time picker } function onHide(event) { - if (scope.onChange) { + if (scope.onHide) { scope.$apply(function(){ // callback scope.onHide({event: event}); @@ -132,7 +132,7 @@ Use this directive to render a date time picker } function onUpdate(event) { - if (scope.onShow) { + if (scope.onUpdate) { scope.$apply(function(){ // callback scope.onUpdate({event: event}); From 18d8223d7e6e8acff93c9cb1acd93fe5a70dee6d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 4 Jan 2017 13:04:48 +0100 Subject: [PATCH 10/10] fixes: U4-9338 Add focus to code editor on load and after closing dialogs --- .../src/views/templates/edit.controller.js | 48 ++++++++++++++++--- .../template-editor-controller.spec.js | 1 + 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js index beac32be95..3cf454c886 100644 --- a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js @@ -1,7 +1,7 @@ (function () { "use strict"; - function TemplatesEditController($scope, $routeParams, templateResource, assetsService, notificationsService, editorState, navigationService, appState, macroService, treeService, angularHelper) { + function TemplatesEditController($scope, $routeParams, templateResource, assetsService, notificationsService, editorState, navigationService, appState, macroService, treeService, angularHelper, $timeout) { var vm = this; var oldMasterTemplateAlias = null; @@ -104,6 +104,7 @@ // save state of master template to use for comparison when syncing the tree on save oldMasterTemplateAlias = angular.copy(template.masterTemplateAlias); + // ace configuration vm.aceOption = { mode: "razor", theme: "chrome", @@ -114,15 +115,23 @@ onLoad: function(_editor) { vm.editor = _editor; - //initial cursor placement - vm.editor.navigateFileEnd(); - persistCurrentLocation(); + // initial cursor placement + // Keep cursor in name field if we are create a new template + // else set the cursor at the bottom of the code editor + if(!$routeParams.create) { + $timeout(function(){ + vm.editor.navigateFileEnd(); + vm.editor.focus(); + persistCurrentLocation(); + }); + } //change on blur, focus vm.editor.on("blur", persistCurrentLocation); vm.editor.on("focus", persistCurrentLocation); } } + }; vm.openPageFieldOverlay = openPageFieldOverlay; @@ -174,8 +183,11 @@ }, close: function(oldModel) { + // close the dialog vm.insertOverlay.show = false; vm.insertOverlay = null; + // focus editor + vm.editor.focus(); } }; @@ -197,6 +209,13 @@ vm.macroPickerOverlay.show = false; vm.macroPickerOverlay = null; + }, + close: function(oldModel) { + // close the dialog + vm.macroPickerOverlay.show = false; + vm.macroPickerOverlay = null; + // focus editor + vm.editor.focus(); } }; } @@ -214,8 +233,11 @@ vm.pageFieldOverlay = null; }, close: function (model) { + // close the dialog vm.pageFieldOverlay.show = false; vm.pageFieldOverlay = null; + // focus editor + vm.editor.focus(); } }; } @@ -239,8 +261,11 @@ vm.dictionaryItemOverlay = null; }, close: function (model) { + // close dialog vm.dictionaryItemOverlay.show = false; vm.dictionaryItemOverlay = null; + // focus editor + vm.editor.focus(); } }; } @@ -263,8 +288,11 @@ vm.partialItemOverlay = null; }, close: function (model) { + // close dialog vm.partialItemOverlay.show = false; vm.partialItemOverlay = null; + // focus editor + vm.editor.focus(); } }; } @@ -293,8 +321,11 @@ }, close: function (model) { + // close dialog vm.queryBuilderOverlay.show = false; vm.queryBuilderOverlay = null; + // focus editor + vm.editor.focus(); } }; } @@ -326,10 +357,11 @@ }, close: function(model) { - + // close dialog vm.sectionsOverlay.show = false; vm.sectionsOverlay = null; - + // focus editor + vm.editor.focus(); } } } @@ -367,8 +399,11 @@ vm.masterTemplateOverlay = null; }, close: function(oldModel) { + // close dialog vm.masterTemplateOverlay.show = false; vm.masterTemplateOverlay = null; + // focus editor + vm.editor.focus(); } }; @@ -441,6 +476,7 @@ vm.editor.clearSelection(); vm.editor.navigateFileStart(); + vm.editor.focus(); // set form state to $dirty setFormState("dirty"); diff --git a/src/Umbraco.Web.UI.Client/test/unit/app/templates/template-editor-controller.spec.js b/src/Umbraco.Web.UI.Client/test/unit/app/templates/template-editor-controller.spec.js index aae0694876..7820beaf16 100644 --- a/src/Umbraco.Web.UI.Client/test/unit/app/templates/template-editor-controller.spec.js +++ b/src/Umbraco.Web.UI.Client/test/unit/app/templates/template-editor-controller.spec.js @@ -47,6 +47,7 @@ getCursorPosition: function() {}, getValue: function() {}, setValue: function() {}, + focus: function() {}, clearSelection: function() {}, navigateFileStart: function() {} };