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:
		@@ -55,7 +55,8 @@ limitations under the License.
 | 
				
			|||||||
        bind-value="{{text}}"
 | 
					        bind-value="{{text}}"
 | 
				
			||||||
        placeholder="[[placeholder]]"
 | 
					        placeholder="[[placeholder]]"
 | 
				
			||||||
        on-keydown="_handleInputKeydown"
 | 
					        on-keydown="_handleInputKeydown"
 | 
				
			||||||
        on-focus="_updateSuggestions" />
 | 
					        on-focus="_updateSuggestions"
 | 
				
			||||||
 | 
					        autocomplete="off" />
 | 
				
			||||||
    <div
 | 
					    <div
 | 
				
			||||||
        id="suggestions"
 | 
					        id="suggestions"
 | 
				
			||||||
        hidden$="[[_computeSuggestionsHidden(_suggestions)]]">
 | 
					        hidden$="[[_computeSuggestionsHidden(_suggestions)]]">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,6 +64,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      text: {
 | 
					      text: {
 | 
				
			||||||
        type: String,
 | 
					        type: String,
 | 
				
			||||||
 | 
					        value: '',
 | 
				
			||||||
        observer: '_updateSuggestions',
 | 
					        observer: '_updateSuggestions',
 | 
				
			||||||
        notify: true,
 | 
					        notify: true,
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
@@ -131,7 +132,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _updateSuggestions: function() {
 | 
					    _updateSuggestions: function() {
 | 
				
			||||||
      if (this._disableSuggestions) { return; }
 | 
					      if (!this.text || this._disableSuggestions) { return; }
 | 
				
			||||||
      if (this.text.length < this.threshold) {
 | 
					      if (this.text.length < this.threshold) {
 | 
				
			||||||
        this._suggestions = [];
 | 
					        this._suggestions = [];
 | 
				
			||||||
        this.value = null;
 | 
					        this.value = null;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,6 +215,13 @@ limitations under the License.
 | 
				
			|||||||
      assert.equal(element._computeClass(true), 'borderless');
 | 
					      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) {
 | 
					    test('multi completes only the last part of the query', function(done) {
 | 
				
			||||||
      var promise;
 | 
					      var promise;
 | 
				
			||||||
      var queryStub = sinon.stub()
 | 
					      var queryStub = sinon.stub()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user