Changed Command autocomplete to pick a suggestion when space is pressed

Этот коммит содержится в:
hmhealey
2015-12-02 09:31:12 -05:00
родитель 07f0df6af4
Коммит 101c74d8b8
3 изменённых файлов: 16 добавлений и 2 удалений

Просмотреть файл

@@ -40,6 +40,7 @@ export default class CommandProvider {
handlePretextChanged(suggestionId, pretext) {
if (pretext.startsWith('/')) {
SuggestionStore.setMatchedPretext(suggestionId, pretext);
SuggestionStore.setCompleteOnSpace(suggestionId, false);
AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
}

Просмотреть файл

@@ -116,7 +116,7 @@ export default class SuggestionBox extends React.Component {
} else if (e.which === KeyCodes.DOWN) {
EventHelpers.emitSelectNextSuggestion(this.suggestionId);
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);
e.preventDefault();
} 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
// components: a list of react components that can be used to render their corresponding item
// selection: the term currently selected by the keyboard
// completeOnSpace: whether or not space will trigger the term to be autocompleted
this.suggestions = new Map();
}
@@ -78,7 +79,8 @@ class SuggestionStore extends EventEmitter {
terms: [],
items: [],
components: [],
selection: ''
selection: '',
completeOnSpace: true
});
}
@@ -93,6 +95,7 @@ class SuggestionStore extends EventEmitter {
suggestion.terms = [];
suggestion.items = [];
suggestion.components = [];
suggestion.completeOnSpace = true;
}
clearSelection(id) {
@@ -117,6 +120,12 @@ class SuggestionStore extends EventEmitter {
suggestion.matchedPretext = matchedPretext;
}
setCompleteOnSpace(id, completeOnSpace) {
const suggestion = this.suggestions.get(id);
suggestion.completeOnSpace = completeOnSpace;
}
addSuggestion(id, term, item, component) {
const suggestion = this.suggestions.get(id);
@@ -180,6 +189,10 @@ class SuggestionStore extends EventEmitter {
return this.suggestions.get(id).selection;
}
shouldCompleteOnSpace(id) {
return this.suggestions.get(id).completeOnSpace;
}
selectNext(id) {
this.setSelectionByDelta(id, 1);
}