فهرست منبع

Update the `selected` property on objects

This fixes the results display so they prefer the `selected`
property on objects over checking if the `id` matches the value of
the underlying select.

We only ignore the `selected` property if it is null, at that point
we compare against the `id` property.

This closes https://github.com/select2/select2/issues/3163.
Kevin Brown 10 سال پیش
والد
کامیت
9d359c9b38
6فایلهای تغییر یافته به همراه21 افزوده شده و 6 حذف شده
  1. 7 2
      dist/js/select2.full.js
  2. 0 0
      dist/js/select2.full.min.js
  3. 7 2
      dist/js/select2.js
  4. 0 0
      dist/js/select2.min.js
  5. 5 1
      src/js/select2/data/select.js
  6. 2 1
      src/js/select2/results.js

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

@@ -828,7 +828,8 @@ S2.define('select2/results',[
         // id needs to be converted to a string when comparing
         var id = '' + item.id;
 
-        if ($.inArray(id, selectedIds) > -1) {
+        if (item.selected ||
+            (item.selected == null && $.inArray(id, selectedIds) > -1)) {
           $option.attr('aria-selected', 'true');
         } else {
           $option.attr('aria-selected', 'false');
@@ -2865,7 +2866,9 @@ S2.define('select2/data/select',[
   SelectAdapter.prototype.select = function (data) {
     var self = this;
 
-    // If data.element is a DOM nose, use it instead
+    data.selected = true;
+
+    // If data.element is a DOM node, use it instead
     if ($(data.element).is('option')) {
       data.element.selected = true;
 
@@ -2907,6 +2910,8 @@ S2.define('select2/data/select',[
       return;
     }
 
+    data.selected = false;
+
     if ($(data.element).is('option')) {
       data.element.selected = false;
 

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


+ 7 - 2
dist/js/select2.js

@@ -828,7 +828,8 @@ S2.define('select2/results',[
         // id needs to be converted to a string when comparing
         var id = '' + item.id;
 
-        if ($.inArray(id, selectedIds) > -1) {
+        if (item.selected ||
+            (item.selected == null && $.inArray(id, selectedIds) > -1)) {
           $option.attr('aria-selected', 'true');
         } else {
           $option.attr('aria-selected', 'false');
@@ -2865,7 +2866,9 @@ S2.define('select2/data/select',[
   SelectAdapter.prototype.select = function (data) {
     var self = this;
 
-    // If data.element is a DOM nose, use it instead
+    data.selected = true;
+
+    // If data.element is a DOM node, use it instead
     if ($(data.element).is('option')) {
       data.element.selected = true;
 
@@ -2907,6 +2910,8 @@ S2.define('select2/data/select',[
       return;
     }
 
+    data.selected = false;
+
     if ($(data.element).is('option')) {
       data.element.selected = false;
 

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


+ 5 - 1
src/js/select2/data/select.js

@@ -30,7 +30,9 @@ define([
   SelectAdapter.prototype.select = function (data) {
     var self = this;
 
-    // If data.element is a DOM nose, use it instead
+    data.selected = true;
+
+    // If data.element is a DOM node, use it instead
     if ($(data.element).is('option')) {
       data.element.selected = true;
 
@@ -72,6 +74,8 @@ define([
       return;
     }
 
+    data.selected = false;
+
     if ($(data.element).is('option')) {
       data.element.selected = false;
 

+ 2 - 1
src/js/select2/results.js

@@ -109,7 +109,8 @@ define([
         // id needs to be converted to a string when comparing
         var id = '' + item.id;
 
-        if ($.inArray(id, selectedIds) > -1) {
+        if (item.selected ||
+            (item.selected == null && $.inArray(id, selectedIds) > -1)) {
           $option.attr('aria-selected', 'true');
         } else {
           $option.attr('aria-selected', 'false');

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