فهرست منبع

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

Cristi Badila 10 سال پیش
والد
کامیت
24f3c4777d
6فایلهای تغییر یافته به همراه40 افزوده شده و 7 حذف شده
  1. 2 2
      dist/js/select2.amd.full.js
  2. 2 2
      dist/js/select2.full.js
  3. 0 0
      dist/js/select2.full.min.js
  4. 0 0
      dist/js/select2.min.js
  5. 2 2
      src/js/select2/compat/inputData.js
  6. 34 1
      tests/data/inputData-tests.js

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

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

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/js/select2.full.min.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/js/select2.min.js


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

@@ -82,14 +82,14 @@ define([
     this.current(function (allData) {
     this.current(function (allData) {
       var values = [];
       var values = [];
 
 
-      for (var d = 0; d < allData; d++) {
+      for (var d = 0; d < allData.length; d++) {
         var item = allData[d];
         var item = allData[d];
 
 
         if (data.id == item.id) {
         if (data.id == item.id) {
           continue;
           continue;
         }
         }
 
 
-        values.push(data.id);
+        values.push(item.id);
       }
       }
 
 
       self.$element.val(values.join(self._valueSeparator));
       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({
   var options = new Options({
     data: [
     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) {
 test('default values can be set', function (assert) {
   expect(4);
   expect(4);
 
 

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است