Skip to content

Commit

Permalink
fix: apply class to autocomplete popup for no suggestions state (#5522)
Browse files Browse the repository at this point in the history
* fix: apply class to autocomplete popup for no suggestions state

* fix comma dangle

* improve test
  • Loading branch information
akoreman committed Mar 26, 2024
1 parent 3e9a61f commit a66f861
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/autocomplete.js
Expand Up @@ -574,7 +574,8 @@ class Autocomplete {
];
this.completions = new FilteredList(completionsForEmpty);
this.openPopup(this.editor, prefix, keepPopupPosition);
this.popup.renderer.setStyle("ace_loading", false);
this.popup.renderer.setStyle("ace_loading", false);
this.popup.renderer.setStyle("ace_empty-message", true);
return;
}
return this.detach();
Expand All @@ -598,6 +599,7 @@ class Autocomplete {

this.openPopup(this.editor, prefix, keepPopupPosition);

this.popup.renderer.setStyle("ace_empty-message", false);
this.popup.renderer.setStyle("ace_loading", !finished);
}.bind(this));

Expand Down
40 changes: 40 additions & 0 deletions src/autocomplete_test.js
Expand Up @@ -462,12 +462,52 @@ module.exports = {
user.type("Ctrl-Space");
assert.equal(editor.completer.popup.isOpen, true);
assert.equal(editor.completer.popup.data[0].caption, emptyMessageText);
assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));

user.type("Return");
assert.equal(editor.completer.popup.isOpen, false);

done();
},
"test: no empty message class if suggestions available": function(done) {
var editor = initEditor("");
var emptyMessageText = "No suggestions.";
var autocomplete = Autocomplete.for(editor);
autocomplete.emptyMessage = () => emptyMessageText;

editor.completers = [
{
getCompletions: function (editor, session, pos, prefix, callback) {
var completions = [
{
caption: "append",
value: "append"
}
];
callback(null, completions);
}
}
];

user.type("b");

// Open autocompletion via key-binding and verify empty message class
user.type("Ctrl-Space");
assert.equal(editor.completer.popup.isOpen, true);
assert.equal(editor.completer.popup.data[0].caption, emptyMessageText);
assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));

user.type("Backspace");
assert.equal(editor.completer.popup.isOpen, false);

// Open autocompletion via key-binding and verify no empty message class
user.type("Ctrl-Space");
assert.equal(editor.completer.popup.isOpen, true);
assert.equal(editor.completer.popup.data[0].caption, "append");
assert.ok(!editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));

done();
},
"test: liveAutocompleteDelay": function(done) {
var editor = initEditor("hello world ");
editor.setOptions({
Expand Down

0 comments on commit a66f861

Please sign in to comment.