Changed Command autocomplete to pick a suggestion when space is pressed
Этот коммит содержится в:
@@ -40,6 +40,7 @@ export default class CommandProvider {
|
|||||||
handlePretextChanged(suggestionId, pretext) {
|
handlePretextChanged(suggestionId, pretext) {
|
||||||
if (pretext.startsWith('/')) {
|
if (pretext.startsWith('/')) {
|
||||||
SuggestionStore.setMatchedPretext(suggestionId, pretext);
|
SuggestionStore.setMatchedPretext(suggestionId, pretext);
|
||||||
|
SuggestionStore.setCompleteOnSpace(suggestionId, false);
|
||||||
|
|
||||||
AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
|
AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ export default class SuggestionBox extends React.Component {
|
|||||||
} else if (e.which === KeyCodes.DOWN) {
|
} else if (e.which === KeyCodes.DOWN) {
|
||||||
EventHelpers.emitSelectNextSuggestion(this.suggestionId);
|
EventHelpers.emitSelectNextSuggestion(this.suggestionId);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
} else if (e.which === KeyCodes.SPACE || e.which === KeyCodes.ENTER) {
|
} else if (e.which === KeyCodes.ENTER || (e.which === KeyCodes.SPACE && SuggestionStore.shouldCompleteOnSpace(this.suggestionId))) {
|
||||||
EventHelpers.emitCompleteWordSuggestion(this.suggestionId);
|
EventHelpers.emitCompleteWordSuggestion(this.suggestionId);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
} else if (this.props.onKeyDown) {
|
} else if (this.props.onKeyDown) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class SuggestionStore extends EventEmitter {
|
|||||||
// items: a list of objects backing the terms which may be used in rendering
|
// items: a list of objects backing the terms which may be used in rendering
|
||||||
// components: a list of react components that can be used to render their corresponding item
|
// components: a list of react components that can be used to render their corresponding item
|
||||||
// selection: the term currently selected by the keyboard
|
// selection: the term currently selected by the keyboard
|
||||||
|
// completeOnSpace: whether or not space will trigger the term to be autocompleted
|
||||||
this.suggestions = new Map();
|
this.suggestions = new Map();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +79,8 @@ class SuggestionStore extends EventEmitter {
|
|||||||
terms: [],
|
terms: [],
|
||||||
items: [],
|
items: [],
|
||||||
components: [],
|
components: [],
|
||||||
selection: ''
|
selection: '',
|
||||||
|
completeOnSpace: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +95,7 @@ class SuggestionStore extends EventEmitter {
|
|||||||
suggestion.terms = [];
|
suggestion.terms = [];
|
||||||
suggestion.items = [];
|
suggestion.items = [];
|
||||||
suggestion.components = [];
|
suggestion.components = [];
|
||||||
|
suggestion.completeOnSpace = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
clearSelection(id) {
|
clearSelection(id) {
|
||||||
@@ -117,6 +120,12 @@ class SuggestionStore extends EventEmitter {
|
|||||||
suggestion.matchedPretext = matchedPretext;
|
suggestion.matchedPretext = matchedPretext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setCompleteOnSpace(id, completeOnSpace) {
|
||||||
|
const suggestion = this.suggestions.get(id);
|
||||||
|
|
||||||
|
suggestion.completeOnSpace = completeOnSpace;
|
||||||
|
}
|
||||||
|
|
||||||
addSuggestion(id, term, item, component) {
|
addSuggestion(id, term, item, component) {
|
||||||
const suggestion = this.suggestions.get(id);
|
const suggestion = this.suggestions.get(id);
|
||||||
|
|
||||||
@@ -180,6 +189,10 @@ class SuggestionStore extends EventEmitter {
|
|||||||
return this.suggestions.get(id).selection;
|
return this.suggestions.get(id).selection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shouldCompleteOnSpace(id) {
|
||||||
|
return this.suggestions.get(id).completeOnSpace;
|
||||||
|
}
|
||||||
|
|
||||||
selectNext(id) {
|
selectNext(id) {
|
||||||
this.setSelectionByDelta(id, 1);
|
this.setSelectionByDelta(id, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user