From bfea105b12f710a01d56e9c048c5fee906f6489f Mon Sep 17 00:00:00 2001 From: Jack Lukic Date: Thu, 29 Dec 2016 14:13:55 -0500 Subject: [PATCH] Update escape key for search --- RELEASE-NOTES.md | 2 + src/definitions/modules/search.js | 67 +++++++++++++------------------ 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index f775d874a..e23bc5294 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -10,8 +10,10 @@ **Enhancements** - **Search** - Added callback as a parameter to behaviors `query`, `show results`, `hide results`, and `search remote`. +- **Search** - `escape` key now prevents search results from displaying until input is blurred **Critical Bugs** +- **Dropdown/Search/Checkbox** - Removes use of deprecated - **Dropdown** - `forceSelection` will no longer select value in `multiple selection dropdown` #4041 #4516 - **Search** - Fixes issue where search will re-appear with incorrect results when using `show `showNoResults: false` to hide no results messages. #4616 diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js index 97ccb93d8..e2b8615e1 100644 --- a/src/definitions/modules/search.js +++ b/src/definitions/modules/search.js @@ -39,28 +39,29 @@ $.fn.search = function(parameters) { ? $.extend(true, {}, $.fn.search.settings, parameters) : $.extend({}, $.fn.search.settings), - className = settings.className, - metadata = settings.metadata, - regExp = settings.regExp, - fields = settings.fields, - selector = settings.selector, - error = settings.error, - namespace = settings.namespace, - - eventNamespace = '.' + namespace, - moduleNamespace = namespace + '-module', - - $module = $(this), - $prompt = $module.find(selector.prompt), - $searchButton = $module.find(selector.searchButton), - $results = $module.find(selector.results), - $result = $module.find(selector.result), - $category = $module.find(selector.category), - - element = this, - instance = $module.data(moduleNamespace), - - disabledBubbled = false, + className = settings.className, + metadata = settings.metadata, + regExp = settings.regExp, + fields = settings.fields, + selector = settings.selector, + error = settings.error, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', + + $module = $(this), + $prompt = $module.find(selector.prompt), + $searchButton = $module.find(selector.searchButton), + $results = $module.find(selector.results), + $result = $module.find(selector.result), + $category = $module.find(selector.category), + + element = this, + instance = $module.data(moduleNamespace), + + disabledBubbled = false, + resultsDismissed = false, module ; @@ -167,6 +168,7 @@ $.fn.search = function(parameters) { if(pageLostFocus) { return; } + resultsDismissed = false; if(module.resultsClicked) { module.debug('Determining if user action caused search to close'); $module @@ -259,7 +261,8 @@ $.fn.search = function(parameters) { // search shortcuts if(keyCode == keys.escape) { module.verbose('Escape key pressed, blurring search field'); - module.trigger.blur(); + module.hideResults(); + resultsDismissed = true; } if( module.is.visible() ) { if(keyCode == keys.enter) { @@ -389,21 +392,6 @@ $.fn.search = function(parameters) { } }, - trigger: { - blur: function() { - var - events = document.createEvent('HTMLEvents'), - promptElement = $prompt[0] - ; - if(promptElement) { - module.verbose('Triggering native blur event'); - events.initEvent('blur', false, false); - promptElement.dispatchEvent(events); - promptElement.blur(); - } - } - }, - get: { inputEvent: function() { var @@ -882,6 +870,9 @@ $.fn.search = function(parameters) { ? callback : function(){} ; + if(resultsDismissed) { + return; + } if(!module.is.visible() && module.has.results()) { if( module.can.transition() ) { module.debug('Showing results with css animations');