Skip to content
This repository was archived by the owner on Oct 2, 2019. It is now read-only.

Commit e902ffc

Browse files
edclementsaaronroberson
authored andcommitted
fix: only apply listbox role when open
This is a fix for a severe error found using the Google Accessibility Developer Tool audit: Elements with ARIA roles must ensure required owned elements are present
1 parent e3be4d1 commit e902ffc

File tree

4 files changed

+10
-3
lines changed

4 files changed

+10
-3
lines changed

src/bootstrap/choices.tpl.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<ul class="ui-select-choices ui-select-choices-content ui-select-dropdown dropdown-menu"
2-
role="listbox"
32
ng-show="$select.open && $select.items.length > 0">
43
<li class="ui-select-choices-group" id="ui-select-choices-{{ $select.generatedId }}" >
54
<div class="divider" ng-show="$select.isGrouped && $index > 0"></div>

src/select2/choices.tpl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ul tabindex="-1" class="ui-select-choices ui-select-choices-content select2-results">
22
<li class="ui-select-choices-group" ng-class="{'select2-result-with-children': $select.choiceGrouped($group) }">
33
<div ng-show="$select.choiceGrouped($group)" class="ui-select-choices-group-label select2-result-label" ng-bind="$group.name"></div>
4-
<ul role="listbox"
4+
<ul
55
id="ui-select-choices-{{ $select.generatedId }}" ng-class="{'select2-result-sub': $select.choiceGrouped($group), 'select2-result-single': !$select.choiceGrouped($group) }">
66
<li role="option" ng-attr-id="ui-select-choices-row-{{ $select.generatedId }}-{{$index}}" class="ui-select-choices-row" ng-class="{'select2-highlighted': $select.isActive(this), 'select2-disabled': $select.isDisabled(this)}">
77
<div class="select2-result-label ui-select-choices-row-inner"></div>

src/selectize/choices.tpl.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div ng-show="$select.open" class="ui-select-choices ui-select-dropdown selectize-dropdown"
22
ng-class="{'single': !$select.multiple, 'multi': $select.multiple}">
33
<div class="ui-select-choices-content selectize-dropdown-content">
4-
<div class="ui-select-choices-group optgroup" role="listbox">
4+
<div class="ui-select-choices-group optgroup">
55
<div ng-show="$select.isGrouped" class="ui-select-choices-group-label optgroup-header" ng-bind="$group.name"></div>
66
<div role="option" class="ui-select-choices-row" ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}">
77
<div class="option ui-select-choices-row-inner" data-selectable></div>

src/uiSelectChoicesDirective.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ uis.directive('uiSelectChoices',
8080
var refreshDelay = scope.$eval(attrs.refreshDelay);
8181
$select.refreshDelay = refreshDelay !== undefined ? refreshDelay : uiSelectConfig.refreshDelay;
8282
});
83+
84+
scope.$watch('$select.open', function(open) {
85+
if (open) {
86+
tElement.attr('role', 'listbox');
87+
} else {
88+
tElement.removeAttr('role');
89+
}
90+
});
8391
};
8492
}
8593
};

0 commit comments

Comments
 (0)