Skip to content

Commit

Permalink
Fix value not being cleared when unselect event is emitted
Browse files Browse the repository at this point in the history
  • Loading branch information
gronostajo committed Sep 26, 2017
1 parent 16f6b10 commit be4eba2
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
6 changes: 5 additions & 1 deletion src/js/select2/selection/allowClear.js
Expand Up @@ -45,6 +45,9 @@ define([

var data = $clear.data('data');

var previousVal = this.$element.val();
this.$element.val(this.placeholder.id);

for (var d = 0; d < data.length; d++) {
var unselectData = {
data: data[d]
Expand All @@ -56,11 +59,12 @@ define([

// If the event was prevented, don't clear it out.
if (unselectData.prevented) {
this.$element.val(previousVal);
return;
}
}

this.$element.val(this.placeholder.id).trigger('change');
this.$element.trigger('change');

this.trigger('toggle', {});
};
Expand Down
22 changes: 13 additions & 9 deletions tests/selection/allowClear-tests.js
Expand Up @@ -43,7 +43,7 @@ test('clear is not displayed for single placeholder', function (assert) {

test('clear is not displayed for multiple placeholder', function (assert) {
var selection = new AllowClearPlaceholder(
$('#qunit-fixture .single-with-placeholder'),
$('#qunit-fixture .multiple'),
allowClearOptions
);

Expand Down Expand Up @@ -90,7 +90,7 @@ test('clicking clear will set the placeholder value', function (assert) {

var $selection = selection.render();

selection.bind(container, $('<div></div'));
selection.bind(container, $('<div></div>'));

$element.val('One');
selection.update([{
Expand All @@ -109,7 +109,7 @@ test('clicking clear will set the placeholder value', function (assert) {
});

test('clicking clear will trigger the unselect event', function (assert) {
assert.expect(3);
assert.expect(4);

var $element = $('#qunit-fixture .single-with-placeholder');

Expand All @@ -121,7 +121,7 @@ test('clicking clear will trigger the unselect event', function (assert) {

var $selection = selection.render();

selection.bind(container, $('<div></div'));
selection.bind(container, $('<div></div>'));

$element.val('One');
selection.update([{
Expand All @@ -143,16 +143,20 @@ test('clicking clear will trigger the unselect event', function (assert) {
assert.equal(
ev.data.id,
'One',
'The previous object should be unselected'
'The data should be the unselected object'
);

assert.equal(
$element.val(),
'placeholder',
'The previous value should be unselected'
);
});

var $remove = $selection.find('.select2-selection__clear');
$remove.trigger('mousedown');
});



test('preventing the unselect event cancels the clearing', function (assert) {
var $element = $('#qunit-fixture .single-with-placeholder');

Expand All @@ -164,7 +168,7 @@ test('preventing the unselect event cancels the clearing', function (assert) {

var $selection = selection.render();

selection.bind(container, $('<div></div'));
selection.bind(container, $('<div></div>'));

$element.val('One');
selection.update([{
Expand Down Expand Up @@ -197,7 +201,7 @@ test('clear does not work when disabled', function (assert) {

var $selection = selection.render();

selection.bind(container, $('<div></div'));
selection.bind(container, $('<div></div>'));

selection.update([{
id: 'One',
Expand Down

0 comments on commit be4eba2

Please sign in to comment.