Browse Source

Added templating example

This also fixes the case where `templateResult` does not return a
string, where it will fall back to jQuery to set the value of the
option.  This allows for the `templateResult` function to return a
jQuery or DOM element that contains the templated data.

Just like with the translation methods, only strings returned from
`templateResult` will be escaped.

The old flag icons have been transferred from the old repository to
the documentation, for use in the templates.  Unfortunately I cannot
find a license for them, but I suspect a license isn't actually
needed considering the state flags are public.

This closes https://github.com/select2/select2/issues/3005.
This closes https://github.com/select2/select2/issues/818.
Kevin Brown 10 năm trước cách đây
mục cha
commit
8aca7a4085
58 tập tin đã thay đổi với 88 bổ sung5 xóa
  1. 3 1
      dist/js/select2.amd.full.js
  2. 3 1
      dist/js/select2.amd.js
  3. 3 1
      dist/js/select2.full.js
  4. 0 0
      dist/js/select2.full.min.js
  5. 3 1
      dist/js/select2.js
  6. 0 0
      dist/js/select2.min.js
  7. 73 0
      docs/examples.html
  8. BIN
      docs/vendor/images/flags/ak.png
  9. BIN
      docs/vendor/images/flags/al.png
  10. BIN
      docs/vendor/images/flags/ar.png
  11. BIN
      docs/vendor/images/flags/az.png
  12. BIN
      docs/vendor/images/flags/ca.png
  13. BIN
      docs/vendor/images/flags/co.png
  14. BIN
      docs/vendor/images/flags/ct.png
  15. BIN
      docs/vendor/images/flags/de.png
  16. BIN
      docs/vendor/images/flags/fl.png
  17. BIN
      docs/vendor/images/flags/ga.png
  18. BIN
      docs/vendor/images/flags/hi.png
  19. BIN
      docs/vendor/images/flags/ia.png
  20. BIN
      docs/vendor/images/flags/id.png
  21. BIN
      docs/vendor/images/flags/il.png
  22. BIN
      docs/vendor/images/flags/in.png
  23. BIN
      docs/vendor/images/flags/ks.png
  24. BIN
      docs/vendor/images/flags/ky.png
  25. BIN
      docs/vendor/images/flags/la.png
  26. BIN
      docs/vendor/images/flags/ma.png
  27. BIN
      docs/vendor/images/flags/md.png
  28. BIN
      docs/vendor/images/flags/me.png
  29. BIN
      docs/vendor/images/flags/mi.png
  30. BIN
      docs/vendor/images/flags/mn.png
  31. BIN
      docs/vendor/images/flags/mo.png
  32. BIN
      docs/vendor/images/flags/ms.png
  33. BIN
      docs/vendor/images/flags/mt.png
  34. BIN
      docs/vendor/images/flags/nc.png
  35. BIN
      docs/vendor/images/flags/nd.png
  36. BIN
      docs/vendor/images/flags/ne.png
  37. BIN
      docs/vendor/images/flags/nh.png
  38. BIN
      docs/vendor/images/flags/nj.png
  39. BIN
      docs/vendor/images/flags/nm.png
  40. BIN
      docs/vendor/images/flags/nv.png
  41. BIN
      docs/vendor/images/flags/ny.png
  42. BIN
      docs/vendor/images/flags/oh.png
  43. BIN
      docs/vendor/images/flags/ok.png
  44. BIN
      docs/vendor/images/flags/or.png
  45. BIN
      docs/vendor/images/flags/pa.png
  46. BIN
      docs/vendor/images/flags/ri.png
  47. BIN
      docs/vendor/images/flags/sc.png
  48. BIN
      docs/vendor/images/flags/sd.png
  49. BIN
      docs/vendor/images/flags/tn.png
  50. BIN
      docs/vendor/images/flags/tx.png
  51. BIN
      docs/vendor/images/flags/ut.png
  52. BIN
      docs/vendor/images/flags/va.png
  53. BIN
      docs/vendor/images/flags/vt.png
  54. BIN
      docs/vendor/images/flags/wa.png
  55. BIN
      docs/vendor/images/flags/wi.png
  56. BIN
      docs/vendor/images/flags/wv.png
  57. BIN
      docs/vendor/images/flags/wy.png
  58. 3 1
      src/js/select2/results.js

+ 3 - 1
dist/js/select2.amd.full.js

@@ -731,8 +731,10 @@ define('select2/results',[
 
     if (content == null) {
       container.style.display = 'none';
-    } else {
+    } else if (typeof content === 'string') {
       container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
     }
   };
 

+ 3 - 1
dist/js/select2.amd.js

@@ -731,8 +731,10 @@ define('select2/results',[
 
     if (content == null) {
       container.style.display = 'none';
-    } else {
+    } else if (typeof content === 'string') {
       container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
     }
   };
 

+ 3 - 1
dist/js/select2.full.js

@@ -1169,8 +1169,10 @@ define('select2/results',[
 
     if (content == null) {
       container.style.display = 'none';
-    } else {
+    } else if (typeof content === 'string') {
       container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
     }
   };
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/js/select2.full.min.js


+ 3 - 1
dist/js/select2.js

@@ -1169,8 +1169,10 @@ define('select2/results',[
 
     if (content == null) {
       container.style.display = 'none';
-    } else {
+    } else if (typeof content === 'string') {
       container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
     }
   };
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/js/select2.min.js


+ 73 - 0
docs/examples.html

@@ -7,6 +7,13 @@ slug: examples
 <script type="text/javascript" src="vendor/js/placeholders.jquery.min.js"></script>
 <script type="text/javascript" src="dist/js/i18n/es.js"></script>
 
+<style type="text/css">
+.img-flag {
+  height: 15px;
+  width: 18px;
+}
+</style>
+
 <div class="container">
   <section id="basic" class="row">
     <div class="col-md-4">
@@ -118,6 +125,52 @@ $(".js-example-placeholder-multiple").select2({
     </div>
   </section>
 
+  <section id="templating" class="row">
+    <div class="col-md-4">
+      <h1>Templating</h1>
+
+      <p>
+        Various display options of the Select2 component can be changed
+      </p>
+
+      <p>
+        <select class="js-example-templating js-states form-control"></select>
+      </p>
+
+      <p>
+        You can access the <code>&lt;option&gt;</code> element
+        (or <code>&lt;optgroup&gt;</code>) and any attributes on those elements
+        using <code>.element</code>.
+      </p>
+
+      <p>
+        Templating is primarily controlled by the
+        <a href="options.html#templateResult"><code>templateResult</code></a>
+        and <a href="options.html#templateSelection"><code>templateSelection</code></a>
+        options.
+      </p>
+    </div>
+    <div class="col-md-8">
+      <h2>Example code</h2>
+
+      <pre data-fill-from=".js-code-templating"></pre>
+
+<script type="text/x-example-code" class="js-code-templating">
+function formatState (state) {
+  if (!state.id) { return state.text; }
+  var $state = $(
+    '<span><img src="vendor/images/flags/' + state.element.value.toLowerCase() + '.png" class="img-flag" /> ' + state.text + '</span>'
+  );
+  return $state;
+};
+
+$(".js-example-templating").select2({
+  templateResult: formatState
+});
+</script>
+    </div>
+  </section>
+
   <section id="data-array" class="row">
     <div class="col-md-4">
       <h1>Loading array data</h1>
@@ -915,6 +968,26 @@ $.fn.select2.amd.require(
     maximumSelectionLength: 2
   });
 
+  function formatState (state) {
+    if (!state.id) {
+      return state.text;
+    }
+    var $state = $(
+      '<span>' +
+        '<img src="vendor/images/flags/' +
+          state.element.value.toLowerCase() +
+        '.png" class="img-flag" /> ' +
+        state.text +
+      '</span>'
+    );
+    return $state;
+  };
+
+  $(".js-example-templating").select2({
+    templateResult: formatState,
+    templateSelection: formatState
+  });
+
   $dataArray.select2({
     data: data
   });

BIN
docs/vendor/images/flags/ak.png


BIN
docs/vendor/images/flags/al.png


BIN
docs/vendor/images/flags/ar.png


BIN
docs/vendor/images/flags/az.png


BIN
docs/vendor/images/flags/ca.png


BIN
docs/vendor/images/flags/co.png


BIN
docs/vendor/images/flags/ct.png


BIN
docs/vendor/images/flags/de.png


BIN
docs/vendor/images/flags/fl.png


BIN
docs/vendor/images/flags/ga.png


BIN
docs/vendor/images/flags/hi.png


BIN
docs/vendor/images/flags/ia.png


BIN
docs/vendor/images/flags/id.png


BIN
docs/vendor/images/flags/il.png


BIN
docs/vendor/images/flags/in.png


BIN
docs/vendor/images/flags/ks.png


BIN
docs/vendor/images/flags/ky.png


BIN
docs/vendor/images/flags/la.png


BIN
docs/vendor/images/flags/ma.png


BIN
docs/vendor/images/flags/md.png


BIN
docs/vendor/images/flags/me.png


BIN
docs/vendor/images/flags/mi.png


BIN
docs/vendor/images/flags/mn.png


BIN
docs/vendor/images/flags/mo.png


BIN
docs/vendor/images/flags/ms.png


BIN
docs/vendor/images/flags/mt.png


BIN
docs/vendor/images/flags/nc.png


BIN
docs/vendor/images/flags/nd.png


BIN
docs/vendor/images/flags/ne.png


BIN
docs/vendor/images/flags/nh.png


BIN
docs/vendor/images/flags/nj.png


BIN
docs/vendor/images/flags/nm.png


BIN
docs/vendor/images/flags/nv.png


BIN
docs/vendor/images/flags/ny.png


BIN
docs/vendor/images/flags/oh.png


BIN
docs/vendor/images/flags/ok.png


BIN
docs/vendor/images/flags/or.png


BIN
docs/vendor/images/flags/pa.png


BIN
docs/vendor/images/flags/ri.png


BIN
docs/vendor/images/flags/sc.png


BIN
docs/vendor/images/flags/sd.png


BIN
docs/vendor/images/flags/tn.png


BIN
docs/vendor/images/flags/tx.png


BIN
docs/vendor/images/flags/ut.png


BIN
docs/vendor/images/flags/va.png


BIN
docs/vendor/images/flags/vt.png


BIN
docs/vendor/images/flags/wa.png


BIN
docs/vendor/images/flags/wi.png


BIN
docs/vendor/images/flags/wv.png


BIN
docs/vendor/images/flags/wy.png


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

@@ -485,8 +485,10 @@ define([
 
     if (content == null) {
       container.style.display = 'none';
-    } else {
+    } else if (typeof content === 'string') {
       container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
     }
   };
 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác