mirror of
https://github.com/discourse/discourse.git
synced 2025-02-08 04:18:23 +00:00
UX: tweak autocomplete to limit hijacking
- Stop eating up back arrow when you hit @ - Clicking anywhere closes autocomplete - Forward arrow no longer issues autocompletion, instead functions as right arrow
This commit is contained in:
parent
38983bc977
commit
b9e8732018
@ -47,7 +47,8 @@ export default function(options) {
|
|||||||
|
|
||||||
$(this).off('keypress.autocomplete')
|
$(this).off('keypress.autocomplete')
|
||||||
.off('keydown.autocomplete')
|
.off('keydown.autocomplete')
|
||||||
.off('paste.autocomplete');
|
.off('paste.autocomplete')
|
||||||
|
.off('click.autocomplete');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -276,6 +277,10 @@ export default function(options) {
|
|||||||
closeAutocomplete();
|
closeAutocomplete();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(this).on('click.autocomplete', function() {
|
||||||
|
closeAutocomplete();
|
||||||
|
});
|
||||||
|
|
||||||
$(this).on('paste.autocomplete', function() {
|
$(this).on('paste.autocomplete', function() {
|
||||||
_.delay(function(){
|
_.delay(function(){
|
||||||
me.trigger("keydown");
|
me.trigger("keydown");
|
||||||
@ -375,16 +380,21 @@ export default function(options) {
|
|||||||
if (completeStart !== null) {
|
if (completeStart !== null) {
|
||||||
caretPosition = Discourse.Utilities.caretPosition(me[0]);
|
caretPosition = Discourse.Utilities.caretPosition(me[0]);
|
||||||
|
|
||||||
|
// allow people to right arrow out of completion
|
||||||
|
if (e.which === keys.rightArrow && me[0].value[caretPosition] === ' ') {
|
||||||
|
closeAutocomplete();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// If we've backspaced past the beginning, cancel unless no key
|
// If we've backspaced past the beginning, cancel unless no key
|
||||||
if (caretPosition <= completeStart && options.key) {
|
if (caretPosition <= completeStart && options.key) {
|
||||||
closeAutocomplete();
|
closeAutocomplete();
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keyboard codes! So 80's.
|
// Keyboard codes! So 80's.
|
||||||
switch (e.which) {
|
switch (e.which) {
|
||||||
case keys.enter:
|
case keys.enter:
|
||||||
case keys.rightArrow:
|
|
||||||
case keys.tab:
|
case keys.tab:
|
||||||
if (!autocompleteOptions) return true;
|
if (!autocompleteOptions) return true;
|
||||||
if (selectedOption >= 0 && (userToComplete = autocompleteOptions[selectedOption])) {
|
if (selectedOption >= 0 && (userToComplete = autocompleteOptions[selectedOption])) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user