Skip to content

Commit a66f861

Browse files
authored
fix: apply class to autocomplete popup for no suggestions state (#5522)
* fix: apply class to autocomplete popup for no suggestions state * fix comma dangle * improve test
1 parent 3e9a61f commit a66f861

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

src/autocomplete.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,8 @@ class Autocomplete {
574574
];
575575
this.completions = new FilteredList(completionsForEmpty);
576576
this.openPopup(this.editor, prefix, keepPopupPosition);
577-
this.popup.renderer.setStyle("ace_loading", false);
577+
this.popup.renderer.setStyle("ace_loading", false);
578+
this.popup.renderer.setStyle("ace_empty-message", true);
578579
return;
579580
}
580581
return this.detach();
@@ -598,6 +599,7 @@ class Autocomplete {
598599

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

602+
this.popup.renderer.setStyle("ace_empty-message", false);
601603
this.popup.renderer.setStyle("ace_loading", !finished);
602604
}.bind(this));
603605

src/autocomplete_test.js

+40
Original file line numberDiff line numberDiff line change
@@ -462,12 +462,52 @@ module.exports = {
462462
user.type("Ctrl-Space");
463463
assert.equal(editor.completer.popup.isOpen, true);
464464
assert.equal(editor.completer.popup.data[0].caption, emptyMessageText);
465+
assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));
465466

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

469470
done();
470471
},
472+
"test: no empty message class if suggestions available": function(done) {
473+
var editor = initEditor("");
474+
var emptyMessageText = "No suggestions.";
475+
var autocomplete = Autocomplete.for(editor);
476+
autocomplete.emptyMessage = () => emptyMessageText;
477+
478+
editor.completers = [
479+
{
480+
getCompletions: function (editor, session, pos, prefix, callback) {
481+
var completions = [
482+
{
483+
caption: "append",
484+
value: "append"
485+
}
486+
];
487+
callback(null, completions);
488+
}
489+
}
490+
];
491+
492+
user.type("b");
493+
494+
// Open autocompletion via key-binding and verify empty message class
495+
user.type("Ctrl-Space");
496+
assert.equal(editor.completer.popup.isOpen, true);
497+
assert.equal(editor.completer.popup.data[0].caption, emptyMessageText);
498+
assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));
499+
500+
user.type("Backspace");
501+
assert.equal(editor.completer.popup.isOpen, false);
502+
503+
// Open autocompletion via key-binding and verify no empty message class
504+
user.type("Ctrl-Space");
505+
assert.equal(editor.completer.popup.isOpen, true);
506+
assert.equal(editor.completer.popup.data[0].caption, "append");
507+
assert.ok(!editor.completer.popup.renderer.container.classList.contains("ace_empty-message"));
508+
509+
done();
510+
},
471511
"test: liveAutocompleteDelay": function(done) {
472512
var editor = initEditor("hello world ");
473513
editor.setOptions({

0 commit comments

Comments
 (0)