|
@@ -99,9 +99,9 @@ define([
|
|
|
|
|
|
Results.prototype.highlightFirstItem = function () {
|
|
Results.prototype.highlightFirstItem = function () {
|
|
var $options = this.$results
|
|
var $options = this.$results
|
|
- .find('.select2-results__option[aria-selected]');
|
|
|
|
|
|
+ .find('.select2-results__option--selectable');
|
|
|
|
|
|
- var $selected = $options.filter('[aria-selected=true]');
|
|
|
|
|
|
+ var $selected = $options.filter('.select2-results__option--selected');
|
|
|
|
|
|
// Check if there are any selected options
|
|
// Check if there are any selected options
|
|
if ($selected.length > 0) {
|
|
if ($selected.length > 0) {
|
|
@@ -125,7 +125,7 @@ define([
|
|
});
|
|
});
|
|
|
|
|
|
var $options = self.$results
|
|
var $options = self.$results
|
|
- .find('.select2-results__option[aria-selected]');
|
|
|
|
|
|
+ .find('.select2-results__option--selectable');
|
|
|
|
|
|
$options.each(function () {
|
|
$options.each(function () {
|
|
var $option = $(this);
|
|
var $option = $(this);
|
|
@@ -137,8 +137,10 @@ define([
|
|
|
|
|
|
if ((item.element != null && item.element.selected) ||
|
|
if ((item.element != null && item.element.selected) ||
|
|
(item.element == null && selectedIds.indexOf(id) > -1)) {
|
|
(item.element == null && selectedIds.indexOf(id) > -1)) {
|
|
|
|
+ this.classList.add('select2-results__option--selected');
|
|
$option.attr('aria-selected', 'true');
|
|
$option.attr('aria-selected', 'true');
|
|
} else {
|
|
} else {
|
|
|
|
+ this.classList.remove('select2-results__option--selected');
|
|
$option.attr('aria-selected', 'false');
|
|
$option.attr('aria-selected', 'false');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -168,11 +170,11 @@ define([
|
|
|
|
|
|
Results.prototype.option = function (data) {
|
|
Results.prototype.option = function (data) {
|
|
var option = document.createElement('li');
|
|
var option = document.createElement('li');
|
|
- option.className = 'select2-results__option';
|
|
|
|
|
|
+ option.classList.add('select2-results__option');
|
|
|
|
+ option.classList.add('select2-results__option--selectable');
|
|
|
|
|
|
var attrs = {
|
|
var attrs = {
|
|
- 'role': 'option',
|
|
|
|
- 'aria-selected': 'false'
|
|
|
|
|
|
+ 'role': 'option'
|
|
};
|
|
};
|
|
|
|
|
|
var matches = window.Element.prototype.matches ||
|
|
var matches = window.Element.prototype.matches ||
|
|
@@ -181,12 +183,14 @@ define([
|
|
|
|
|
|
if ((data.element != null && matches.call(data.element, ':disabled')) ||
|
|
if ((data.element != null && matches.call(data.element, ':disabled')) ||
|
|
(data.element == null && data.disabled)) {
|
|
(data.element == null && data.disabled)) {
|
|
- delete attrs['aria-selected'];
|
|
|
|
attrs['aria-disabled'] = 'true';
|
|
attrs['aria-disabled'] = 'true';
|
|
|
|
+
|
|
|
|
+ option.classList.remove('select2-results__option--selectable');
|
|
|
|
+ option.classList.add('select2-results__option--disabled');
|
|
}
|
|
}
|
|
|
|
|
|
if (data.id == null) {
|
|
if (data.id == null) {
|
|
- delete attrs['aria-selected'];
|
|
|
|
|
|
+ option.classList.remove('select2-results__option--selectable');
|
|
}
|
|
}
|
|
|
|
|
|
if (data._resultId != null) {
|
|
if (data._resultId != null) {
|
|
@@ -200,7 +204,9 @@ define([
|
|
if (data.children) {
|
|
if (data.children) {
|
|
attrs.role = 'group';
|
|
attrs.role = 'group';
|
|
attrs['aria-label'] = data.text;
|
|
attrs['aria-label'] = data.text;
|
|
- delete attrs['aria-selected'];
|
|
|
|
|
|
+
|
|
|
|
+ option.classList.remove('select2-results__option--selectable');
|
|
|
|
+ option.classList.add('select2-results__option--group');
|
|
}
|
|
}
|
|
|
|
|
|
for (var attr in attrs) {
|
|
for (var attr in attrs) {
|
|
@@ -215,7 +221,6 @@ define([
|
|
var label = document.createElement('strong');
|
|
var label = document.createElement('strong');
|
|
label.className = 'select2-results__group';
|
|
label.className = 'select2-results__group';
|
|
|
|
|
|
- var $label = $(label);
|
|
|
|
this.template(data, label);
|
|
this.template(data, label);
|
|
|
|
|
|
var $children = [];
|
|
var $children = [];
|
|
@@ -334,7 +339,7 @@ define([
|
|
|
|
|
|
var data = Utils.GetData($highlighted[0], 'data');
|
|
var data = Utils.GetData($highlighted[0], 'data');
|
|
|
|
|
|
- if ($highlighted.attr('aria-selected') == 'true') {
|
|
|
|
|
|
+ if ($highlighted.hasClass('select2-results__option--selected')) {
|
|
self.trigger('close', {});
|
|
self.trigger('close', {});
|
|
} else {
|
|
} else {
|
|
self.trigger('select', {
|
|
self.trigger('select', {
|
|
@@ -346,7 +351,7 @@ define([
|
|
container.on('results:previous', function () {
|
|
container.on('results:previous', function () {
|
|
var $highlighted = self.getHighlightedResults();
|
|
var $highlighted = self.getHighlightedResults();
|
|
|
|
|
|
- var $options = self.$results.find('[aria-selected]');
|
|
|
|
|
|
+ var $options = self.$results.find('.select2-results__option--selectable');
|
|
|
|
|
|
var currentIndex = $options.index($highlighted);
|
|
var currentIndex = $options.index($highlighted);
|
|
|
|
|
|
@@ -381,7 +386,7 @@ define([
|
|
container.on('results:next', function () {
|
|
container.on('results:next', function () {
|
|
var $highlighted = self.getHighlightedResults();
|
|
var $highlighted = self.getHighlightedResults();
|
|
|
|
|
|
- var $options = self.$results.find('[aria-selected]');
|
|
|
|
|
|
+ var $options = self.$results.find('.select2-results__option--selectable');
|
|
|
|
|
|
var currentIndex = $options.index($highlighted);
|
|
var currentIndex = $options.index($highlighted);
|
|
|
|
|
|
@@ -410,6 +415,7 @@ define([
|
|
|
|
|
|
container.on('results:focus', function (params) {
|
|
container.on('results:focus', function (params) {
|
|
params.element[0].classList.add('select2-results__option--highlighted');
|
|
params.element[0].classList.add('select2-results__option--highlighted');
|
|
|
|
+ params.element[0].setAttribute('aria-selected', 'true');
|
|
});
|
|
});
|
|
|
|
|
|
container.on('results:message', function (params) {
|
|
container.on('results:message', function (params) {
|
|
@@ -441,13 +447,13 @@ define([
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- this.$results.on('mouseup', '.select2-results__option[aria-selected]',
|
|
|
|
|
|
+ this.$results.on('mouseup', '.select2-results__option--selectable',
|
|
function (evt) {
|
|
function (evt) {
|
|
var $this = $(this);
|
|
var $this = $(this);
|
|
|
|
|
|
var data = Utils.GetData(this, 'data');
|
|
var data = Utils.GetData(this, 'data');
|
|
|
|
|
|
- if ($this.attr('aria-selected') === 'true') {
|
|
|
|
|
|
+ if ($this.hasClass('select2-results__option--selected')) {
|
|
if (self.options.get('multiple')) {
|
|
if (self.options.get('multiple')) {
|
|
self.trigger('unselect', {
|
|
self.trigger('unselect', {
|
|
originalEvent: evt,
|
|
originalEvent: evt,
|
|
@@ -466,12 +472,13 @@ define([
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
|
|
|
|
|
|
+ this.$results.on('mouseenter', '.select2-results__option--selectable',
|
|
function (evt) {
|
|
function (evt) {
|
|
var data = Utils.GetData(this, 'data');
|
|
var data = Utils.GetData(this, 'data');
|
|
|
|
|
|
self.getHighlightedResults()
|
|
self.getHighlightedResults()
|
|
- .removeClass('select2-results__option--highlighted');
|
|
|
|
|
|
+ .removeClass('select2-results__option--highlighted')
|
|
|
|
+ .attr('aria-selected', 'false');
|
|
|
|
|
|
self.trigger('results:focus', {
|
|
self.trigger('results:focus', {
|
|
data: data,
|
|
data: data,
|
|
@@ -498,7 +505,7 @@ define([
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- var $options = this.$results.find('[aria-selected]');
|
|
|
|
|
|
+ var $options = this.$results.find('.select2-results__option--selectable');
|
|
|
|
|
|
var currentIndex = $options.index($highlighted);
|
|
var currentIndex = $options.index($highlighted);
|
|
|
|
|