From 5f81e7b87f73ba2c8a43a90357052443d12fef71 Mon Sep 17 00:00:00 2001 From: Daniel Ivanov Date: Wed, 12 Oct 2022 17:03:30 +0300 Subject: [PATCH 1/5] Updated search box shortcut and made it visible. --- djangoproject/static/js/mod/search-key.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/djangoproject/static/js/mod/search-key.js b/djangoproject/static/js/mod/search-key.js index 578092e890..fbc66968ac 100644 --- a/djangoproject/static/js/mod/search-key.js +++ b/djangoproject/static/js/mod/search-key.js @@ -11,9 +11,8 @@ define([ init: function(){ var self = this; $(document).ready(function () { - $(window).keypress(function(e) { - if ($('input:focus, textarea:focus').length === 0 && - e.which === 47) { // The slash is 47. + $(window).keydown(function(e) { + if ($('input:focus, textarea:focus').length === 0 && e.key === 'k' && e.ctrlKey) { self.search_form.find('input').focus().select(); return false; } From 79c46385b1b3646adebcc79e6bbf57a350d43d84 Mon Sep 17 00:00:00 2001 From: Daniel Ivanov Date: Wed, 12 Oct 2022 18:01:45 +0300 Subject: [PATCH 2/5] Rearranged checks to do cheaper ones first. Co-authored-by: Adam Johnson --- djangoproject/static/js/mod/search-key.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangoproject/static/js/mod/search-key.js b/djangoproject/static/js/mod/search-key.js index fbc66968ac..d1a65fb63d 100644 --- a/djangoproject/static/js/mod/search-key.js +++ b/djangoproject/static/js/mod/search-key.js @@ -12,7 +12,7 @@ define([ var self = this; $(document).ready(function () { $(window).keydown(function(e) { - if ($('input:focus, textarea:focus').length === 0 && e.key === 'k' && e.ctrlKey) { + if (e.key === 'k' && e.ctrlKey && $('input:focus, textarea:focus').length === 0) { self.search_form.find('input').focus().select(); return false; } From f61b8f737ddd0792819b9c0468b41bbd317d5c45 Mon Sep 17 00:00:00 2001 From: Daniel Ivanov Date: Wed, 12 Oct 2022 22:23:00 +0300 Subject: [PATCH 3/5] Adding platform-specific shortcut to input placeholder client side. --- djangoproject/static/js/mod/search-key.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/djangoproject/static/js/mod/search-key.js b/djangoproject/static/js/mod/search-key.js index d1a65fb63d..4123d3bf7b 100644 --- a/djangoproject/static/js/mod/search-key.js +++ b/djangoproject/static/js/mod/search-key.js @@ -11,9 +11,15 @@ define([ init: function(){ var self = this; $(document).ready(function () { + var search_form_input = self.search_form.find('input'); + var raw_placeholder = search_form_input.attr('placeholder'); + var kbd_shortcut_suffix = "Ctrl + K"; + if (navigator.userAgent.indexOf("Mac") !== -1) kbd_shortcut_suffix = "⌘ + K"; + search_form_input.attr('placeholder', `${raw_placeholder} (${kbd_shortcut_suffix})`); + $(window).keydown(function(e) { if (e.key === 'k' && e.ctrlKey && $('input:focus, textarea:focus').length === 0) { - self.search_form.find('input').focus().select(); + search_form_input.focus().select(); return false; } }); From 144731adc4ad86706128bbfd85e00a0d25e4e071 Mon Sep 17 00:00:00 2001 From: Daniel Ivanov Date: Wed, 12 Oct 2022 22:24:45 +0300 Subject: [PATCH 4/5] Fixed whitespace. --- djangoproject/static/js/mod/search-key.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/djangoproject/static/js/mod/search-key.js b/djangoproject/static/js/mod/search-key.js index 4123d3bf7b..2b5bd82a1f 100644 --- a/djangoproject/static/js/mod/search-key.js +++ b/djangoproject/static/js/mod/search-key.js @@ -11,11 +11,11 @@ define([ init: function(){ var self = this; $(document).ready(function () { - var search_form_input = self.search_form.find('input'); - var raw_placeholder = search_form_input.attr('placeholder'); - var kbd_shortcut_suffix = "Ctrl + K"; - if (navigator.userAgent.indexOf("Mac") !== -1) kbd_shortcut_suffix = "⌘ + K"; - search_form_input.attr('placeholder', `${raw_placeholder} (${kbd_shortcut_suffix})`); + var search_form_input = self.search_form.find('input'); + var raw_placeholder = search_form_input.attr('placeholder'); + var kbd_shortcut_suffix = "Ctrl + K"; + if (navigator.userAgent.indexOf("Mac") !== -1) kbd_shortcut_suffix = "⌘ + K"; + search_form_input.attr('placeholder', `${raw_placeholder} (${kbd_shortcut_suffix})`); $(window).keydown(function(e) { if (e.key === 'k' && e.ctrlKey && $('input:focus, textarea:focus').length === 0) { From 633dfd004ddfb911640777d09d1405765b9c758a Mon Sep 17 00:00:00 2001 From: Daniel Ivanov Date: Thu, 13 Oct 2022 11:54:35 +0300 Subject: [PATCH 5/5] A few minor tweaks. --- djangoproject/static/js/mod/search-key.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/djangoproject/static/js/mod/search-key.js b/djangoproject/static/js/mod/search-key.js index 2b5bd82a1f..a131d22f59 100644 --- a/djangoproject/static/js/mod/search-key.js +++ b/djangoproject/static/js/mod/search-key.js @@ -1,25 +1,24 @@ define([ 'jquery' //requires jquery ], function( $ ) { - - var SearchForm = function(search_form) { + const SearchForm = function(search_form) { this.search_form = $(search_form); // the search form this.init(); }; SearchForm.prototype = { init: function(){ - var self = this; + const self = this; $(document).ready(function () { - var search_form_input = self.search_form.find('input'); - var raw_placeholder = search_form_input.attr('placeholder'); - var kbd_shortcut_suffix = "Ctrl + K"; - if (navigator.userAgent.indexOf("Mac") !== -1) kbd_shortcut_suffix = "⌘ + K"; - search_form_input.attr('placeholder', `${raw_placeholder} (${kbd_shortcut_suffix})`); + const search_form_input = self.search_form.find('input'); + const raw_placeholder = search_form_input.attr('placeholder'); + const shortcut = navigator.userAgent.indexOf("Mac") === -1 ? "⌘ + K" : "Ctrl + K"; + search_form_input.attr('placeholder', `${raw_placeholder} (${shortcut})`); $(window).keydown(function(e) { - if (e.key === 'k' && e.ctrlKey && $('input:focus, textarea:focus').length === 0) { + if ((e.metaKey || e.ctrlKey) && e.key === 'k' && $('input:focus, textarea:focus').length === 0) { search_form_input.focus().select(); + search_form_input[0].scrollIntoView({ behavior: "smooth", block: "start" }); return false; } });