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) { 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);
} }