From 9ece55a71eef28ae9739c786a4bf5465be4caf05 Mon Sep 17 00:00:00 2001 From: poppahorse Date: Wed, 13 May 2015 11:22:23 +0100 Subject: [PATCH 1/4] Force single result If only a single result, emulate the user selecting that result, but keep autocomplete open so they can see the full result --- angucomplete.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/angucomplete.js b/angucomplete.js index 734e9a2..48fda40 100644 --- a/angucomplete.js +++ b/angucomplete.js @@ -95,6 +95,11 @@ angular.module('angucomplete', [] ) image: image, originalObject: responseData[i] } + + // if a single result, force the result incase user doesn't press the autocomplete + if (responseData.length == 1) { + $scope.selectResult(resultRow, true); // select result but keep autocomplete open + } $scope.results[$scope.results.length] = resultRow; } @@ -184,13 +189,13 @@ angular.module('angucomplete', [] ) } } - $scope.selectResult = function(result) { + $scope.selectResult = function(result, showDropdown) { if ($scope.matchClass) { result.title = result.title.toString().replace(/(<([^>]+)>)/ig, ''); } $scope.searchStr = $scope.lastSearchTerm = result.title; $scope.selectedObject = result; - $scope.showDropdown = false; + if (typeof showDropdown === 'undefined') { $scope.showDropdown = false; } // optionally keep autocomplete open $scope.results = []; //$scope.$apply(); } From 6c32cd4302ebbc8c2c80c76f2798d3d756328172 Mon Sep 17 00:00:00 2001 From: poppahorse Date: Fri, 15 May 2015 10:26:00 +0100 Subject: [PATCH 2/4] force single result on blur moved force single result selection to blur (unfocus) field --- angucomplete.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/angucomplete.js b/angucomplete.js index 48fda40..150cd55 100644 --- a/angucomplete.js +++ b/angucomplete.js @@ -95,11 +95,6 @@ angular.module('angucomplete', [] ) image: image, originalObject: responseData[i] } - - // if a single result, force the result incase user doesn't press the autocomplete - if (responseData.length == 1) { - $scope.selectResult(resultRow, true); // select result but keep autocomplete open - } $scope.results[$scope.results.length] = resultRow; } @@ -149,6 +144,12 @@ angular.module('angucomplete', [] ) $scope.hideResults = function() { $scope.hideTimer = $timeout(function() { + // if a single result, force the result incase user doesn't press the autocomplete + + if ($scope.results.length == 1) { + $scope.selectResult($scope.results[0], true); + } + $scope.showDropdown = false; }, $scope.pause); }; From 3397248d9b95d14f6b035579cca4e4ed4e8758d4 Mon Sep 17 00:00:00 2001 From: poppahorse Date: Sun, 17 May 2015 17:46:13 +0100 Subject: [PATCH 3/4] Improved blur options If nothing selected, get the top result --- angucomplete.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/angucomplete.js b/angucomplete.js index 150cd55..4f394b9 100644 --- a/angucomplete.js +++ b/angucomplete.js @@ -144,9 +144,9 @@ angular.module('angucomplete', [] ) $scope.hideResults = function() { $scope.hideTimer = $timeout(function() { - // if a single result, force the result incase user doesn't press the autocomplete + // if no object selected, on blur pick the top one from the list - if ($scope.results.length == 1) { + if ($scope.selectedObject == null) { $scope.selectResult($scope.results[0], true); } From a5bf85a707a48a3b89b2d7beab435b01ae31b880 Mon Sep 17 00:00:00 2001 From: poppahorse Date: Mon, 18 May 2015 11:23:20 +0100 Subject: [PATCH 4/4] enter selects top result --- angucomplete.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/angucomplete.js b/angucomplete.js index 4f394b9..01548fa 100644 --- a/angucomplete.js +++ b/angucomplete.js @@ -224,6 +224,9 @@ angular.module('angucomplete', [] ) } } else if (event.which == 13) { + if ($scope.currentIndex == -1 && $scope.results.length > 0) { + $scope.currentIndex = 0; + } if ($scope.results && $scope.currentIndex >= 0 && $scope.currentIndex < $scope.results.length) { $scope.selectResult($scope.results[$scope.currentIndex]); $scope.$apply();