From 06f59bed7cedc62d187cdb13d32c535eb4b09446 Mon Sep 17 00:00:00 2001 From: TheHollidayInn Date: Tue, 25 Aug 2015 16:11:18 -0500 Subject: [PATCH 1/7] Added test for task-focus directive --- test/spec/directives/task-focus.directives.js | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/spec/directives/task-focus.directives.js diff --git a/test/spec/directives/task-focus.directives.js b/test/spec/directives/task-focus.directives.js new file mode 100644 index 0000000000..9b4c214530 --- /dev/null +++ b/test/spec/directives/task-focus.directives.js @@ -0,0 +1,25 @@ +'use strict'; + +describe('taskFocus Directive', function() { + var elementToFocus, scope; + + beforeEach(module('habitrpg')); + + beforeEach(inject(function($rootScope, $compile) { + scope = $rootScope.$new(); + + scope.focusThisLink = false; + var element = ''; + + elementToFocus = $compile(element)(scope); + scope.$digest(); + })); + + it('places focus on the element it is applied to when the expression it binds to evaluates to true', function() { + elementToFocus.appendTo(document.body); + scope.focusThisLink = true; + scope.$digest(); + expect(document.activeElement).to.eql(elementToFocus) + }); + +}); From 42066be2cf4a2de111e25b582b74109fded91ccb Mon Sep 17 00:00:00 2001 From: TheHollidayInn Date: Mon, 31 Aug 2015 16:49:34 -0500 Subject: [PATCH 2/7] Fixed broken test by change element to a focusable element --- test/spec/directives/task-focus.directives.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/spec/directives/task-focus.directives.js b/test/spec/directives/task-focus.directives.js index 9b4c214530..691e03bb4d 100644 --- a/test/spec/directives/task-focus.directives.js +++ b/test/spec/directives/task-focus.directives.js @@ -9,17 +9,25 @@ describe('taskFocus Directive', function() { scope = $rootScope.$new(); scope.focusThisLink = false; - var element = ''; + var element = ''; elementToFocus = $compile(element)(scope); scope.$digest(); })); - it('places focus on the element it is applied to when the expression it binds to evaluates to true', function() { + it('places focus on the element it is applied to when the expression it binds to evaluates to true', + inject(function($timeout) { + var focusSpy = sandbox.spy(); + elementToFocus.appendTo(document.body); + elementToFocus.on('focus', focusSpy); scope.focusThisLink = true; scope.$digest(); - expect(document.activeElement).to.eql(elementToFocus) - }); + + $timeout.flush(); + expect(document.activeElement.dataset.taskFocus).to.eql("focusThisLink"); + expect(focusSpy).to.have.been.called; + }) + ); }); From 3e44c3a8cecd5dc25379d03b6c144e7adec0f8e8 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 31 Aug 2015 20:16:14 -0500 Subject: [PATCH 3/7] Change focus-me to use task-focus --- website/views/options/social/index.jade | 2 +- website/views/shared/modals/members.jade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/views/options/social/index.jade b/website/views/options/social/index.jade index 6fd7245503..d14950645d 100644 --- a/website/views/options/social/index.jade +++ b/website/views/options/social/index.jade @@ -127,7 +127,7 @@ script(type='text/ng-template', id='modals/copyChatToDo.html') .form-group input.form-control(type='text',ng-model='text', ng-model-options="{debounce: 1000}") .form-group - textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", focus-me) + textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", task-focus='true') hr diff --git a/website/views/shared/modals/members.jade b/website/views/shared/modals/members.jade index 40c395dfb6..225c594af3 100644 --- a/website/views/shared/modals/members.jade +++ b/website/views/shared/modals/members.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='modals/private-message.html') .modal-header h4=env.t('pmHeading', {name: "{{profile.profile.name}}"}) .modal-body - textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', focus-me) + textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', task-focus='true') include ../formatting-help .modal-footer //- Due to a quirk in Bootstrap UI, we need to wrap this so the tooltip can From c65ab56641a1c53d82b890351ee6a77593e6595f Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 31 Aug 2015 20:17:30 -0500 Subject: [PATCH 4/7] Remove focus-me directive --- .../directives/focus-me.directive.spec.js | 28 ------------------- .../js/directives/focus-me.directive.js | 25 ----------------- website/public/manifest.json | 1 - 3 files changed, 54 deletions(-) delete mode 100644 test/spec/directives/focus-me.directive.spec.js delete mode 100644 website/public/js/directives/focus-me.directive.js diff --git a/test/spec/directives/focus-me.directive.spec.js b/test/spec/directives/focus-me.directive.spec.js deleted file mode 100644 index c91b36a2f3..0000000000 --- a/test/spec/directives/focus-me.directive.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -describe('focusMe Directive', function() { - var element, scope; - - beforeEach(module('habitrpg')); - - beforeEach(inject(function($rootScope, $compile) { - scope = $rootScope.$new(); - - element = ""; - - element = $compile(element)(scope); - scope.$digest(); - })); - - it('focuses the element when appended to the DOM', function() { - inject(function($timeout) { - var focusSpy = sandbox.spy(); - - element.appendTo(document.body); - element.on('focus', focusSpy); - - $timeout.flush(); - expect(focusSpy).to.have.been.called; - }); - }); -}); diff --git a/website/public/js/directives/focus-me.directive.js b/website/public/js/directives/focus-me.directive.js deleted file mode 100644 index 0fdec0e390..0000000000 --- a/website/public/js/directives/focus-me.directive.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -(function(){ - angular - .module('habitrpg') - .directive('focusMe', focusMe); - - focusMe.$inject = [ - '$timeout', - '$parse' - ]; - - function focusMe($timeout, $parse) { - return { - link: function($scope, element, attrs) { - var model = $parse(attrs.focusMe); - $scope.$watch(model, function(value) { - $timeout(function() { - element[0].focus(); - }); - }); - } - } - } -}()); diff --git a/website/public/manifest.json b/website/public/manifest.json index 227d42c2e0..787a2f59d9 100644 --- a/website/public/manifest.json +++ b/website/public/manifest.json @@ -60,7 +60,6 @@ "js/directives/close-menu.directive.js", "js/directives/expand-menu.directive.js", - "js/directives/focus-me.directive.js", "js/directives/from-now.directive.js", "js/directives/habitrpg-tasks.directive.js", "js/directives/hrpg-sort-checklist.directive.js", From d5bd5f281c318a2698ecbada9b8fa09979ee5666 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 31 Aug 2015 20:21:01 -0500 Subject: [PATCH 5/7] Rename file names --- .../{task-focus.directives.js => focus-element.directive.js} | 0 .../{task-focus.directive.js => focus-element.directive.js} | 0 website/public/manifest.json | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename test/spec/directives/{task-focus.directives.js => focus-element.directive.js} (100%) rename website/public/js/directives/{task-focus.directive.js => focus-element.directive.js} (100%) diff --git a/test/spec/directives/task-focus.directives.js b/test/spec/directives/focus-element.directive.js similarity index 100% rename from test/spec/directives/task-focus.directives.js rename to test/spec/directives/focus-element.directive.js diff --git a/website/public/js/directives/task-focus.directive.js b/website/public/js/directives/focus-element.directive.js similarity index 100% rename from website/public/js/directives/task-focus.directive.js rename to website/public/js/directives/focus-element.directive.js diff --git a/website/public/manifest.json b/website/public/manifest.json index 787a2f59d9..f524198269 100644 --- a/website/public/manifest.json +++ b/website/public/manifest.json @@ -67,7 +67,7 @@ "js/directives/hrpg-sort-tasks.directive.js", "js/directives/popover-html-popup.directive.js", "js/directives/popover-html.directive.js", - "js/directives/task-focus.directive.js", + "js/directives/focus-element.directive.js", "js/directives/when-scrolled.directive.js", "js/controllers/authCtrl.js", From f4ca8bb78d67b011361e7fd37948d895430b0482 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 31 Aug 2015 20:31:03 -0500 Subject: [PATCH 6/7] Rename task-focus focus-element --- test/spec/directives/focus-element.directive.js | 6 +++--- website/public/js/directives/focus-element.directive.js | 8 ++++---- website/views/options/social/index.jade | 2 +- website/views/shared/modals/members.jade | 2 +- website/views/shared/tasks/task_view/add_new.jade | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/spec/directives/focus-element.directive.js b/test/spec/directives/focus-element.directive.js index 691e03bb4d..a67af9bc92 100644 --- a/test/spec/directives/focus-element.directive.js +++ b/test/spec/directives/focus-element.directive.js @@ -1,6 +1,6 @@ 'use strict'; -describe('taskFocus Directive', function() { +describe('focusElement Directive', function() { var elementToFocus, scope; beforeEach(module('habitrpg')); @@ -9,7 +9,7 @@ describe('taskFocus Directive', function() { scope = $rootScope.$new(); scope.focusThisLink = false; - var element = ''; + var element = ''; elementToFocus = $compile(element)(scope); scope.$digest(); @@ -25,7 +25,7 @@ describe('taskFocus Directive', function() { scope.$digest(); $timeout.flush(); - expect(document.activeElement.dataset.taskFocus).to.eql("focusThisLink"); + expect(document.activeElement.dataset.focusElement).to.eql("focusThisLink"); expect(focusSpy).to.have.been.called; }) ); diff --git a/website/public/js/directives/focus-element.directive.js b/website/public/js/directives/focus-element.directive.js index 00faf89259..bf9a52da4b 100644 --- a/website/public/js/directives/focus-element.directive.js +++ b/website/public/js/directives/focus-element.directive.js @@ -3,18 +3,18 @@ (function(){ angular .module('habitrpg') - .directive('taskFocus', taskFocus); + .directive('focusElement', focusElement); - taskFocus.$inject = ['$timeout']; + focusElement.$inject = ['$timeout']; /** * Directive that places focus on the element it is applied to when the * expression it binds to evaluates to true. */ - function taskFocus($timeout) { + function focusElement($timeout) { return function($scope, elem, attrs) { - $scope.$watch(attrs.taskFocus, function(newVal) { + $scope.$watch(attrs.focusElement, function(newVal) { if (newVal) { $timeout(function() { elem[0].focus(); diff --git a/website/views/options/social/index.jade b/website/views/options/social/index.jade index d14950645d..0b0c6b7693 100644 --- a/website/views/options/social/index.jade +++ b/website/views/options/social/index.jade @@ -127,7 +127,7 @@ script(type='text/ng-template', id='modals/copyChatToDo.html') .form-group input.form-control(type='text',ng-model='text', ng-model-options="{debounce: 1000}") .form-group - textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", task-focus='true') + textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", focus-element='true') hr diff --git a/website/views/shared/modals/members.jade b/website/views/shared/modals/members.jade index 225c594af3..c5e41bea68 100644 --- a/website/views/shared/modals/members.jade +++ b/website/views/shared/modals/members.jade @@ -47,7 +47,7 @@ script(type='text/ng-template', id='modals/private-message.html') .modal-header h4=env.t('pmHeading', {name: "{{profile.profile.name}}"}) .modal-body - textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', task-focus='true') + textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', focus-element='true') include ../formatting-help .modal-footer //- Due to a quirk in Bootstrap UI, we need to wrap this so the tooltip can diff --git a/website/views/shared/tasks/task_view/add_new.jade b/website/views/shared/tasks/task_view/add_new.jade index aee14a33b6..c3b06c886c 100644 --- a/website/views/shared/tasks/task_view/add_new.jade +++ b/website/views/shared/tasks/task_view/add_new.jade @@ -1,6 +1,6 @@ form.task-add(name='new{{list.type}}form', ng-hide='obj._locked', ng-submit='addTask(obj[list.type+"s"],list)', novalidate) - textarea(rows='6', task-focus='list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', ui-keydown='{"meta-enter ctrl-enter":"addTask(obj[list.type+\'s\'],list)"}', required) - input(type='text', task-focus='!list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required) + textarea(rows='6', focus-element='list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', ui-keydown='{"meta-enter ctrl-enter":"addTask(obj[list.type+\'s\'],list)"}', required) + input(type='text', focus-element='!list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required) button(type='submit', ng-disabled='new{{list.type}}form.$invalid') div.empty-task-notification( ng-show='new{{list.type}}form.$invalid', tooltip=env.t("emptyTask") ) span.glyphicon.glyphicon-plus From 1d8b10dc99eaf716a1efdc530654e94fe343214a Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 31 Aug 2015 20:35:23 -0500 Subject: [PATCH 7/7] Adjust formatting --- .../directives/focus-element.directive.js | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/test/spec/directives/focus-element.directive.js b/test/spec/directives/focus-element.directive.js index a67af9bc92..718d0efed4 100644 --- a/test/spec/directives/focus-element.directive.js +++ b/test/spec/directives/focus-element.directive.js @@ -15,19 +15,16 @@ describe('focusElement Directive', function() { scope.$digest(); })); - it('places focus on the element it is applied to when the expression it binds to evaluates to true', - inject(function($timeout) { - var focusSpy = sandbox.spy(); + it('places focus on the element it is applied to when the expression it binds to evaluates to true', inject(function($timeout) { + var focusSpy = sandbox.spy(); - elementToFocus.appendTo(document.body); - elementToFocus.on('focus', focusSpy); - scope.focusThisLink = true; - scope.$digest(); - - $timeout.flush(); - expect(document.activeElement.dataset.focusElement).to.eql("focusThisLink"); - expect(focusSpy).to.have.been.called; - }) - ); + elementToFocus.appendTo(document.body); + elementToFocus.on('focus', focusSpy); + scope.focusThisLink = true; + scope.$digest(); + $timeout.flush(); + expect(document.activeElement.dataset.focusElement).to.eql("focusThisLink"); + expect(focusSpy).to.have.been.called; + })); });