Fix text undefined error

This commit fixes the 'text is undefined' error in gr-autocomplete
by setting a default value for text, as well as catching the case
where text is set to undefined.

This commit also disables the built-in autocomplete on the input
element in the gr-autocomplete element to avoid redundancy.

Bug: Issue 4276
Change-Id: Ia4d084068da223d10273110a402690e3b0af2e94
This commit is contained in:
Kasper Nilsson 2016-08-17 11:50:29 -07:00
parent a979ab7281
commit 4e3c7ecc9a
3 changed files with 11 additions and 2 deletions

View File

@ -55,7 +55,8 @@ limitations under the License.
bind-value="{{text}}"
placeholder="[[placeholder]]"
on-keydown="_handleInputKeydown"
on-focus="_updateSuggestions" />
on-focus="_updateSuggestions"
autocomplete="off" />
<div
id="suggestions"
hidden$="[[_computeSuggestionsHidden(_suggestions)]]">

View File

@ -64,6 +64,7 @@
text: {
type: String,
value: '',
observer: '_updateSuggestions',
notify: true,
},
@ -131,7 +132,7 @@
},
_updateSuggestions: function() {
if (this._disableSuggestions) { return; }
if (!this.text || this._disableSuggestions) { return; }
if (this.text.length < this.threshold) {
this._suggestions = [];
this.value = null;

View File

@ -215,6 +215,13 @@ limitations under the License.
assert.equal(element._computeClass(true), 'borderless');
});
test('undefined or empty text results in no suggestions', function() {
sinon.spy(element, '_updateSuggestions');
element.text = undefined;
assert(element._updateSuggestions.calledOnce);
assert.equal(element._suggestions.length, 0);
});
test('multi completes only the last part of the query', function(done) {
var promise;
var queryStub = sinon.stub()