@@ -348,10 +348,16 @@ function MdAutocomplete ($$mdSvgRegistry) {
348
348
role="presentation">\
349
349
<ul class="md-autocomplete-suggestions"\
350
350
ng-class="::menuClass"\
351
- id="ul-{{$mdAutocompleteCtrl.id}}">\
351
+ id="ul-{{$mdAutocompleteCtrl.id}}"\
352
+ role="listbox">\
352
353
<li md-virtual-repeat="item in $mdAutocompleteCtrl.matches"\
353
354
ng-class="{ selected: $index === $mdAutocompleteCtrl.index }"\
355
+ ng-attr-id="{{$index === $mdAutocompleteCtrl.index ? \'selected_option\' : undefined}}"\
354
356
ng-click="$mdAutocompleteCtrl.select($index)"\
357
+ role="option"\
358
+ aria-setsize="{{$mdAutocompleteCtrl.matches.length}}"\
359
+ aria-posinset="{{$index+1}}"\
360
+ aria-selected="{{$index === $mdAutocompleteCtrl.index ? true : false}}" \
355
361
md-extra-name="$mdAutocompleteCtrl.itemName">\
356
362
' + itemTemplate + '\
357
363
</li>' + noItemsTemplate + '\
@@ -382,56 +388,56 @@ function MdAutocomplete ($$mdSvgRegistry) {
382
388
<md-input-container ng-if="floatingLabel">\
383
389
<label>{{floatingLabel}}</label>\
384
390
<input type="search"\
385
- ' + ( tabindex != null ? 'tabindex="' + tabindex + '"' : '' ) + '\
386
- id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}"\
387
- name="{{inputName}}"\
388
- ng-class="::inputClass"\
389
- autocomplete="off"\
390
- ng-required="$mdAutocompleteCtrl.isRequired"\
391
- ng-readonly="$mdAutocompleteCtrl.isReadonly"\
392
- ng-minlength="inputMinlength"\
393
- ng-maxlength="inputMaxlength"\
394
- ng-disabled="$mdAutocompleteCtrl.isDisabled"\
395
- ng-model="$mdAutocompleteCtrl.scope.searchText"\
396
- ng-model-options="{ allowInvalid: true }"\
397
- ng-keydown="$mdAutocompleteCtrl.keydown($event)"\
398
- ng-blur="$mdAutocompleteCtrl.blur($event)"\
399
- ng-focus="$mdAutocompleteCtrl.focus($event)"\
400
- aria-owns="ul-{{$mdAutocompleteCtrl.id}}"\
401
- aria-label="{{floatingLabel}}"\
402
- aria-autocomplete="list"\
403
- role="combobox"\
404
- aria-haspopup="true"\
405
- aria-activedescendant=""\
406
- aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>\
407
- <div md-autocomplete-parent-scope md-autocomplete-replace>' + leftover + '</div>\
408
- </md-input-container>' ;
409
- } else {
410
- return '\
411
- <input type="search"\
412
391
' + ( tabindex != null ? 'tabindex="' + tabindex + '"' : '' ) + '\
413
- id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}"\
392
+ id="{{ inputId || \'fl- input-\' + $mdAutocompleteCtrl.id }}"\
414
393
name="{{inputName}}"\
415
394
ng-class="::inputClass"\
416
- ng-if="!floatingLabel"\
417
395
autocomplete="off"\
418
396
ng-required="$mdAutocompleteCtrl.isRequired"\
419
- ng-disabled="$mdAutocompleteCtrl.isDisabled"\
420
397
ng-readonly="$mdAutocompleteCtrl.isReadonly"\
421
398
ng-minlength="inputMinlength"\
422
399
ng-maxlength="inputMaxlength"\
400
+ ng-disabled="$mdAutocompleteCtrl.isDisabled"\
423
401
ng-model="$mdAutocompleteCtrl.scope.searchText"\
402
+ ng-model-options="{ allowInvalid: true }"\
424
403
ng-keydown="$mdAutocompleteCtrl.keydown($event)"\
425
404
ng-blur="$mdAutocompleteCtrl.blur($event)"\
426
405
ng-focus="$mdAutocompleteCtrl.focus($event)"\
427
- placeholder="{{placeholder}}"\
428
- aria-owns="ul-{{$mdAutocompleteCtrl.id}}"\
429
- aria-label="{{placeholder}}"\
406
+ aria-label="{{floatingLabel}}"\
430
407
aria-autocomplete="list"\
431
408
role="combobox"\
432
409
aria-haspopup="true"\
433
- aria-activedescendant=""\
434
- aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>' ;
410
+ aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"\
411
+ aria-owns="ul-{{$mdAutocompleteCtrl.id}}"\
412
+ ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}">\
413
+ <div md-autocomplete-parent-scope md-autocomplete-replace>' + leftover + '</div>\
414
+ </md-input-container>' ;
415
+ } else {
416
+ return '\
417
+ <input type="search"\
418
+ ' + ( tabindex != null ? 'tabindex="' + tabindex + '"' : '' ) + '\
419
+ id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}"\
420
+ name="{{inputName}}"\
421
+ ng-class="::inputClass"\
422
+ ng-if="!floatingLabel"\
423
+ autocomplete="off"\
424
+ ng-required="$mdAutocompleteCtrl.isRequired"\
425
+ ng-disabled="$mdAutocompleteCtrl.isDisabled"\
426
+ ng-readonly="$mdAutocompleteCtrl.isReadonly"\
427
+ ng-minlength="inputMinlength"\
428
+ ng-maxlength="inputMaxlength"\
429
+ ng-model="$mdAutocompleteCtrl.scope.searchText"\
430
+ ng-keydown="$mdAutocompleteCtrl.keydown($event)"\
431
+ ng-blur="$mdAutocompleteCtrl.blur($event)"\
432
+ ng-focus="$mdAutocompleteCtrl.focus($event)"\
433
+ placeholder="{{placeholder}}"\
434
+ aria-label="{{placeholder}}"\
435
+ aria-autocomplete="list"\
436
+ role="combobox"\
437
+ aria-haspopup="true"\
438
+ aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"\
439
+ aria-owns="ul-{{$mdAutocompleteCtrl.id}}"\
440
+ ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}">' ;
435
441
}
436
442
}
437
443
0 commit comments