Skip to content

Commit cff1fb2

Browse files
committed
Autocomplete: Add classes option
Ref #7053 Ref gh-1411
1 parent 7c6a7d7 commit cff1fb2

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

tests/unit/autocomplete/autocomplete.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<script src="../../../external/qunit/qunit.js"></script>
1010
<script src="../../../external/jquery-simulate/jquery.simulate.js"></script>
1111
<script src="../testsuite.js"></script>
12+
<script src="../../../external/qunit-assert-classes/qunit-assert-classes.js"></script>
1213
<script>
1314
TestHelpers.loadResources({
1415
css: [ "core", "menu", "autocomplete" ],

tests/unit/autocomplete/autocomplete_core.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
module( "autocomplete: core" );
44

5+
test( "markup structure", function( assert ) {
6+
expect( 2 );
7+
var element = $( "#autocomplete" ).autocomplete(),
8+
menu = element.autocomplete( "widget" );
9+
10+
assert.hasClasses( element, "ui-autocomplete-input" );
11+
assert.hasClasses( menu, "ui-autocomplete ui-widget ui-widget-content" );
12+
});
13+
514
test( "prevent form submit on enter when menu is active", function() {
615
expect( 2 );
716
var event,

ui/autocomplete.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ $.widget( "ui.autocomplete", {
4040
options: {
4141
appendTo: null,
4242
autoFocus: false,
43+
classes: {},
4344
delay: 300,
4445
minLength: 1,
4546
position: {
@@ -87,9 +88,8 @@ $.widget( "ui.autocomplete", {
8788
this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
8889
this.isNewMenu = true;
8990

90-
this.element
91-
.addClass( "ui-autocomplete-input" )
92-
.attr( "autocomplete", "off" );
91+
this._addClass( "ui-autocomplete-input" );
92+
this.element.attr( "autocomplete", "off" );
9393

9494
this._on( this.element, {
9595
keydown: function( event ) {
@@ -210,7 +210,6 @@ $.widget( "ui.autocomplete", {
210210

211211
this._initSource();
212212
this.menu = $( "<ul>" )
213-
.addClass( "ui-autocomplete ui-front" )
214213
.appendTo( this._appendTo() )
215214
.menu({
216215
// disable ARIA support, the live region takes care of that
@@ -219,6 +218,7 @@ $.widget( "ui.autocomplete", {
219218
.hide()
220219
.menu( "instance" );
221220

221+
this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
222222
this._on( this.menu.element, {
223223
mousedown: function( event ) {
224224
// prevent moving focus out of the text field
@@ -315,9 +315,10 @@ $.widget( "ui.autocomplete", {
315315
"aria-live": "assertive",
316316
"aria-relevant": "additions"
317317
})
318-
.addClass( "ui-helper-hidden-accessible" )
319318
.appendTo( this.document[ 0 ].body );
320319

320+
this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
321+
321322
// turning off autocomplete prevents the browser from remembering the
322323
// value when navigating through history, so we re-enable autocomplete
323324
// if the page is unloaded before the widget is destroyed. #7790
@@ -330,9 +331,7 @@ $.widget( "ui.autocomplete", {
330331

331332
_destroy: function() {
332333
clearTimeout( this.searching );
333-
this.element
334-
.removeClass( "ui-autocomplete-input" )
335-
.removeAttr( "autocomplete" );
334+
this.element.removeAttr( "autocomplete" );
336335
this.menu.element.remove();
337336
this.liveRegion.remove();
338337
},
@@ -436,7 +435,7 @@ $.widget( "ui.autocomplete", {
436435

437436
_search: function( value ) {
438437
this.pending++;
439-
this.element.addClass( "ui-autocomplete-loading" );
438+
this._addClass( "ui-autocomplete-loading" );
440439
this.cancelSearch = false;
441440

442441
this.source( { term: value }, this._response() );
@@ -452,7 +451,7 @@ $.widget( "ui.autocomplete", {
452451

453452
this.pending--;
454453
if ( !this.pending ) {
455-
this.element.removeClass( "ui-autocomplete-loading" );
454+
this._removeClass( "ui-autocomplete-loading" );
456455
}
457456
}, this );
458457
},

0 commit comments

Comments
 (0)