Quellcode durchsuchen

Fixes issues with inputData module. When unselecting an item it would previously unselect all items

Cristi Badila vor 10 Jahren
Ursprung
Commit
24f3c4777d

+ 2 - 2
dist/js/select2.amd.full.js

@@ -5115,14 +5115,14 @@ define('select2/compat/inputData',[
     this.current(function (allData) {
       var values = [];
 
-      for (var d = 0; d < allData; d++) {
+      for (var d = 0; d < allData.length; d++) {
         var item = allData[d];
 
         if (data.id == item.id) {
           continue;
         }
 
-        values.push(data.id);
+        values.push(item.id);
       }
 
       self.$element.val(values.join(self._valueSeparator));

+ 2 - 2
dist/js/select2.full.js

@@ -5554,14 +5554,14 @@ define('select2/compat/inputData',[
     this.current(function (allData) {
       var values = [];
 
-      for (var d = 0; d < allData; d++) {
+      for (var d = 0; d < allData.length; d++) {
         var item = allData[d];
 
         if (data.id == item.id) {
           continue;
         }
 
-        values.push(data.id);
+        values.push(item.id);
       }
 
       self.$element.val(values.join(self._valueSeparator));

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/js/select2.full.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/js/select2.min.js


+ 2 - 2
src/js/select2/compat/inputData.js

@@ -82,14 +82,14 @@ define([
     this.current(function (allData) {
       var values = [];
 
-      for (var d = 0; d < allData; d++) {
+      for (var d = 0; d < allData.length; d++) {
         var item = allData[d];
 
         if (data.id == item.id) {
           continue;
         }
 
-        values.push(data.id);
+        values.push(item.id);
       }
 
       self.$element.val(values.join(self._valueSeparator));

+ 34 - 1
tests/data/inputData-tests.js

@@ -34,7 +34,7 @@ test('test that options can be selected', function (assert) {
   );
 });
 
-test('test that options can be unselected', function (assert) {
+test('unselect the single selected option clears the value', function (assert) {
   var options = new Options({
     data: [
       {
@@ -59,6 +59,39 @@ test('test that options can be unselected', function (assert) {
   );
 });
 
+test('options can be unselected individually', function (assert) {
+  var options = new Options({
+    data: [
+      {
+        id: 'test',
+        text: 'Test'
+      },
+      {
+        id: 'test2',
+        text: 'Test2'
+      },
+      {
+        id: 'test3',
+        text: 'Test3'
+      }
+    ]
+  });
+  var $element = $('<input />');
+  $element.val('test,test2,test3');
+
+  var adapter = new InputAdapter($element, options);
+
+  adapter.unselect({
+    id: 'test2'
+  });
+
+  assert.equal(
+    $element.val(),
+    'test,test3',
+    'The value should contain all the still selected options'
+  );
+});
+
 test('default values can be set', function (assert) {
   expect(4);
 

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.