diff --git a/app/assets/javascripts/app/controllers/notes.js b/app/assets/javascripts/app/controllers/notes.js index b04444c04..027ef3540 100644 --- a/app/assets/javascripts/app/controllers/notes.js +++ b/app/assets/javascripts/app/controllers/notes.js @@ -31,7 +31,7 @@ angular.module('app') } } }) - .controller('NotesCtrl', function (authManager, $timeout, $rootScope, modelManager, storageManager) { + .controller('NotesCtrl', function (authManager, $timeout, $rootScope, modelManager, storageManager, desktopManager) { this.panelController = {}; @@ -225,6 +225,18 @@ angular.module('app') return note.visible; }.bind(this) + this.onFilterEnter = function() { + // For Desktop, performing a search right away causes input to lose focus. + // We wait until user explicity hits enter before highlighting desktop search results. + desktopManager.searchText(this.noteFilter.text); + } + + this.clearFilterText = function() { + this.noteFilter.text = ''; + this.onFilterEnter(); + this.filterTextChanged(); + } + this.filterTextChanged = function() { $timeout(function(){ if(!this.selectedNote.visible) { diff --git a/app/assets/javascripts/app/services/desktopManager.js b/app/assets/javascripts/app/services/desktopManager.js index 3044e6da2..677841042 100644 --- a/app/assets/javascripts/app/services/desktopManager.js +++ b/app/assets/javascripts/app/services/desktopManager.js @@ -57,10 +57,23 @@ class DesktopManager { return observer; } + searchText(text) { + if(!this.isDesktop) { + return; + } + this.searchHandler(text); + } + + deregisterUpdateObserver(observer) { _.pull(this.updateObservers, observer); } + // Pass null to cancel search + desktop_setSearchHandler(handler) { + this.searchHandler = handler; + } + desktop_onComponentInstallationComplete(componentData, error) { console.log("Web|Component Installation/Update Complete", componentData, error); diff --git a/app/assets/templates/notes.html.haml b/app/assets/templates/notes.html.haml index 7c44bee26..244982892 100644 --- a/app/assets/templates/notes.html.haml +++ b/app/assets/templates/notes.html.haml @@ -6,8 +6,9 @@ .title {{ctrl.panelTitle()}} .add-button#notes-add-button{"ng-click" => "ctrl.createNewNote()"} + .filter-section - %input.filter-bar#search-bar.mousetrap{"select-on-click" => "true", "ng-model" => "ctrl.noteFilter.text", "placeholder" => "Search", "ng-change" => "ctrl.filterTextChanged()", "lowercase" => "true"} - #search-clear-button{"ng-if" => "ctrl.noteFilter.text", "ng-click" => "ctrl.noteFilter.text = ''; ctrl.filterTextChanged()"} ✕ + %input.filter-bar#search-bar.mousetrap{"select-on-click" => "true", "ng-model" => "ctrl.noteFilter.text", "placeholder" => "Search", + "ng-change" => "ctrl.filterTextChanged()", "lowercase" => "true", "ng-blur" => "ctrl.onFilterEnter()", "ng-keyup" => "$event.keyCode == 13 && ctrl.onFilterEnter();"} + #search-clear-button{"ng-if" => "ctrl.noteFilter.text", "ng-click" => "ctrl.clearFilterText();"} ✕ .sn-component#notes-menu-bar .app-bar.no-edges .left