Only trigger unselect
for multiple
This fixes an issue where an `unselect` event would be incorrectly triggered when the selected option was selected again in a single select. This has been fixed now, so the even will only be triggered for multiple selects. The `close` event will still be triggered though, so the functionality will still remain the same to the user. This closes https://github.com/select2/select2/issues/2959.
This commit is contained in:
parent
bca4e1f6d8
commit
981c4065af
7 changed files with 107 additions and 39 deletions
29
dist/js/select2.amd.full.js
vendored
29
dist/js/select2.amd.full.js
vendored
|
@ -479,9 +479,13 @@ define('select2/results',[
|
||||||
var data = $highlighted.data('data');
|
var data = $highlighted.data('data');
|
||||||
|
|
||||||
if ($highlighted.attr('aria-selected') == 'true') {
|
if ($highlighted.attr('aria-selected') == 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
data: data
|
self.trigger('unselect', {
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.trigger('select', {
|
self.trigger('select', {
|
||||||
data: data
|
data: data
|
||||||
|
@ -597,10 +601,14 @@ define('select2/results',[
|
||||||
var data = $this.data('data');
|
var data = $this.data('data');
|
||||||
|
|
||||||
if ($this.attr('aria-selected') === 'true') {
|
if ($this.attr('aria-selected') === 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
originalEvent: evt,
|
self.trigger('unselect', {
|
||||||
data: data
|
originalEvent: evt,
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3632,6 +3640,13 @@ define('select2/defaults',[
|
||||||
HidePlaceholder
|
HidePlaceholder
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.selectOnClose) {
|
||||||
|
options.resultsAdapter = Utils.Decorate(
|
||||||
|
options.resultsAdapter,
|
||||||
|
SelectOnClose
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.dropdownAdapter == null) {
|
if (options.dropdownAdapter == null) {
|
||||||
|
|
29
dist/js/select2.amd.js
vendored
29
dist/js/select2.amd.js
vendored
|
@ -479,9 +479,13 @@ define('select2/results',[
|
||||||
var data = $highlighted.data('data');
|
var data = $highlighted.data('data');
|
||||||
|
|
||||||
if ($highlighted.attr('aria-selected') == 'true') {
|
if ($highlighted.attr('aria-selected') == 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
data: data
|
self.trigger('unselect', {
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.trigger('select', {
|
self.trigger('select', {
|
||||||
data: data
|
data: data
|
||||||
|
@ -597,10 +601,14 @@ define('select2/results',[
|
||||||
var data = $this.data('data');
|
var data = $this.data('data');
|
||||||
|
|
||||||
if ($this.attr('aria-selected') === 'true') {
|
if ($this.attr('aria-selected') === 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
originalEvent: evt,
|
self.trigger('unselect', {
|
||||||
data: data
|
originalEvent: evt,
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3632,6 +3640,13 @@ define('select2/defaults',[
|
||||||
HidePlaceholder
|
HidePlaceholder
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.selectOnClose) {
|
||||||
|
options.resultsAdapter = Utils.Decorate(
|
||||||
|
options.resultsAdapter,
|
||||||
|
SelectOnClose
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.dropdownAdapter == null) {
|
if (options.dropdownAdapter == null) {
|
||||||
|
|
29
dist/js/select2.full.js
vendored
29
dist/js/select2.full.js
vendored
|
@ -917,9 +917,13 @@ define('select2/results',[
|
||||||
var data = $highlighted.data('data');
|
var data = $highlighted.data('data');
|
||||||
|
|
||||||
if ($highlighted.attr('aria-selected') == 'true') {
|
if ($highlighted.attr('aria-selected') == 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
data: data
|
self.trigger('unselect', {
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.trigger('select', {
|
self.trigger('select', {
|
||||||
data: data
|
data: data
|
||||||
|
@ -1035,10 +1039,14 @@ define('select2/results',[
|
||||||
var data = $this.data('data');
|
var data = $this.data('data');
|
||||||
|
|
||||||
if ($this.attr('aria-selected') === 'true') {
|
if ($this.attr('aria-selected') === 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
originalEvent: evt,
|
self.trigger('unselect', {
|
||||||
data: data
|
originalEvent: evt,
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4070,6 +4078,13 @@ define('select2/defaults',[
|
||||||
HidePlaceholder
|
HidePlaceholder
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.selectOnClose) {
|
||||||
|
options.resultsAdapter = Utils.Decorate(
|
||||||
|
options.resultsAdapter,
|
||||||
|
SelectOnClose
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.dropdownAdapter == null) {
|
if (options.dropdownAdapter == null) {
|
||||||
|
|
4
dist/js/select2.full.min.js
vendored
4
dist/js/select2.full.min.js
vendored
File diff suppressed because one or more lines are too long
29
dist/js/select2.js
vendored
29
dist/js/select2.js
vendored
|
@ -917,9 +917,13 @@ define('select2/results',[
|
||||||
var data = $highlighted.data('data');
|
var data = $highlighted.data('data');
|
||||||
|
|
||||||
if ($highlighted.attr('aria-selected') == 'true') {
|
if ($highlighted.attr('aria-selected') == 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
data: data
|
self.trigger('unselect', {
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.trigger('select', {
|
self.trigger('select', {
|
||||||
data: data
|
data: data
|
||||||
|
@ -1035,10 +1039,14 @@ define('select2/results',[
|
||||||
var data = $this.data('data');
|
var data = $this.data('data');
|
||||||
|
|
||||||
if ($this.attr('aria-selected') === 'true') {
|
if ($this.attr('aria-selected') === 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
originalEvent: evt,
|
self.trigger('unselect', {
|
||||||
data: data
|
originalEvent: evt,
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4070,6 +4078,13 @@ define('select2/defaults',[
|
||||||
HidePlaceholder
|
HidePlaceholder
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.selectOnClose) {
|
||||||
|
options.resultsAdapter = Utils.Decorate(
|
||||||
|
options.resultsAdapter,
|
||||||
|
SelectOnClose
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.dropdownAdapter == null) {
|
if (options.dropdownAdapter == null) {
|
||||||
|
|
4
dist/js/select2.min.js
vendored
4
dist/js/select2.min.js
vendored
File diff suppressed because one or more lines are too long
22
src/js/select2/results.js
vendored
22
src/js/select2/results.js
vendored
|
@ -281,9 +281,13 @@ define([
|
||||||
var data = $highlighted.data('data');
|
var data = $highlighted.data('data');
|
||||||
|
|
||||||
if ($highlighted.attr('aria-selected') == 'true') {
|
if ($highlighted.attr('aria-selected') == 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
data: data
|
self.trigger('unselect', {
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.trigger('select', {
|
self.trigger('select', {
|
||||||
data: data
|
data: data
|
||||||
|
@ -399,10 +403,14 @@ define([
|
||||||
var data = $this.data('data');
|
var data = $this.data('data');
|
||||||
|
|
||||||
if ($this.attr('aria-selected') === 'true') {
|
if ($this.attr('aria-selected') === 'true') {
|
||||||
self.trigger('unselect', {
|
if (self.options.get('multiple')) {
|
||||||
originalEvent: evt,
|
self.trigger('unselect', {
|
||||||
data: data
|
originalEvent: evt,
|
||||||
});
|
data: data
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.trigger('close');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue