From 504f95e4f4d0aaf16c2d4c49c50c477910cd3c6b Mon Sep 17 00:00:00 2001 From: Jasper van Merle Date: Sun, 25 Nov 2018 00:28:36 +0100 Subject: [PATCH 1/2] Fix single documentation search on Android --- assets/javascripts/views/search/search_scope.coffee | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/assets/javascripts/views/search/search_scope.coffee b/assets/javascripts/views/search/search_scope.coffee index 24de57ce..9be90dd2 100644 --- a/assets/javascripts/views/search/search_scope.coffee +++ b/assets/javascripts/views/search/search_scope.coffee @@ -7,6 +7,7 @@ class app.views.SearchScope extends app.View @events: keydown: 'onKeydown' + textInput: 'onTextInput' @routes: after: 'afterRoute' @@ -100,6 +101,12 @@ class app.views.SearchScope extends app.View $.stopEvent(event) if @doc return + onTextInput: (event) => + if event.data == ' ' and app.isMobile() + @search @input.value[0...@input.selectionStart] + $.stopEvent(event) if @doc + return + extractHashValue: -> if value = @getHashValue() newHash = $.urlDecode(location.hash).replace "##{SEARCH_PARAM}=#{value} ", "##{SEARCH_PARAM}=" From c6f0f1693fdcc952d47a9ed8035f4194e7f3cfee Mon Sep 17 00:00:00 2001 From: Jasper van Merle Date: Tue, 4 Dec 2018 00:10:28 +0100 Subject: [PATCH 2/2] Limit new event listener to Chrome for Android --- assets/javascripts/lib/util.coffee | 4 ++++ .../javascripts/views/search/search_scope.coffee | 16 ++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/assets/javascripts/lib/util.coffee b/assets/javascripts/lib/util.coffee index 058106fd..001b13de 100644 --- a/assets/javascripts/lib/util.coffee +++ b/assets/javascripts/lib/util.coffee @@ -352,6 +352,10 @@ isIE = null $.isIE = -> isIE ?= navigator.userAgent?.indexOf('MSIE') >= 0 || navigator.userAgent?.indexOf('rv:11.0') >= 0 +isChromeForAndroid = null +$.isChromeForAndroid = -> + isChromeForAndroid ?= navigator.userAgent?.indexOf('Android') >= 0 && /Chrome\/([.0-9])+ Mobile/.test(navigator.userAgent) + isAndroid = null $.isAndroid = -> isAndroid ?= navigator.userAgent?.indexOf('Android') >= 0 diff --git a/assets/javascripts/views/search/search_scope.coffee b/assets/javascripts/views/search/search_scope.coffee index 9be90dd2..8b104011 100644 --- a/assets/javascripts/views/search/search_scope.coffee +++ b/assets/javascripts/views/search/search_scope.coffee @@ -88,23 +88,27 @@ class app.views.SearchScope extends app.View @trigger 'change', null, previousDoc return + doScopeSearch: (event) => + @search @input.value[0...@input.selectionStart] + $.stopEvent(event) if @doc + return + onKeydown: (event) => if event.which is 8 # backspace if @doc and not @input.value $.stopEvent(event) @reset() - else if not @doc and @input.value + else if not @doc and @input.value and not $.isChromeForAndroid() return if event.ctrlKey or event.metaKey or event.altKey or event.shiftKey if event.which is 9 or # tab (event.which is 32 and app.isMobile()) # space - @search @input.value[0...@input.selectionStart] - $.stopEvent(event) if @doc + @doScopeSearch(event) return onTextInput: (event) => - if event.data == ' ' and app.isMobile() - @search @input.value[0...@input.selectionStart] - $.stopEvent(event) if @doc + return unless $.isChromeForAndroid() + if not @doc and @input.value and event.data == ' ' + @doScopeSearch(event) return extractHashValue: ->