|
@@ -0,0 +1,215 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <meta charset="utf-8">
|
|
|
+ <title>QUnit Example</title>
|
|
|
+ <link href="../../dist/css/select2.css" rel="stylesheet"/>
|
|
|
+
|
|
|
+ <script src="../../vendor/almond-0.2.9.js" type="text/javascript"></script>
|
|
|
+ <script src="../../vendor/jquery-2.1.0.js" type="text/javascript"></script>
|
|
|
+
|
|
|
+ <script src="../../dist/js/select2.js"></script>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+
|
|
|
+
|
|
|
+<input type="text" style="width:300px" autofocus/><br/>
|
|
|
+<select style="width:300px" id="source">
|
|
|
+ <option value="AK">Alaska</option>
|
|
|
+ <option value="HI">Hawaii</option>
|
|
|
+ <option value="CA">California</option>
|
|
|
+ <option value="NV">Nevada</option>
|
|
|
+ <option value="OR">Oregon</option>
|
|
|
+ <option value="WA">Washington</option>
|
|
|
+ <option value="AZ">Arizona</option>
|
|
|
+ <option value="CO">Colorado</option>
|
|
|
+ <option value="ID">Idaho</option>
|
|
|
+ <option value="MT">Montana</option>
|
|
|
+ <option value="NE">Nebraska</option>
|
|
|
+ <option value="NM">New Mexico</option>
|
|
|
+ <option value="ND">North Dakota</option>
|
|
|
+ <option value="UT">Utah</option>
|
|
|
+ <option value="WY">Wyoming</option>
|
|
|
+ <option value="AL">Alabama</option>
|
|
|
+ <option value="AR">Arkansas</option>
|
|
|
+ <option value="IL">Illinois</option>
|
|
|
+ <option value="IA">Iowa</option>
|
|
|
+ <option value="KS">Kansas</option>
|
|
|
+ <option value="KY">Kentucky</option>
|
|
|
+ <option value="LA">Louisiana</option>
|
|
|
+ <option value="MN">Minnesota</option>
|
|
|
+ <option value="MS">Mississippi</option>
|
|
|
+ <option value="MO">Missouri</option>
|
|
|
+ <option value="OK">Oklahoma</option>
|
|
|
+ <option value="SD">South Dakota</option>
|
|
|
+ <option value="TX">Texas</option>
|
|
|
+ <option value="TN">Tennessee</option>
|
|
|
+ <option value="WI">Wisconsin</option>
|
|
|
+ <option value="CT">Connecticut</option>
|
|
|
+ <option value="DE">Delaware</option>
|
|
|
+ <option value="FL">Florida</option>
|
|
|
+ <option value="GA">Georgia</option>
|
|
|
+ <option value="IN">Indiana</option>
|
|
|
+ <option value="ME">Maine</option>
|
|
|
+ <option value="MD">Maryland</option>
|
|
|
+ <option value="MA">Massachusetts</option>
|
|
|
+ <option value="MI">Michigan</option>
|
|
|
+ <option value="NH">New Hampshire</option>
|
|
|
+ <option value="NJ">New Jersey</option>
|
|
|
+ <option value="NY">New York</option>
|
|
|
+ <option value="NC">North Carolina</option>
|
|
|
+ <option value="OH">Ohio</option>
|
|
|
+ <option value="PA">Pennsylvania</option>
|
|
|
+ <option value="RI">Rhode Island</option>
|
|
|
+ <option value="SC">South Carolina</option>
|
|
|
+ <option value="VT">Vermont</option>
|
|
|
+ <option value="VA">Virginia</option>
|
|
|
+ <option value="WV">West Virginia</option>
|
|
|
+</select><br/>
|
|
|
+<input type="text" style="width:300px" /><br/>
|
|
|
+<select style="width:300px">
|
|
|
+ <option value="AK">Alaska</option>
|
|
|
+ <option value="HI">Hawaii</option>
|
|
|
+ <option value="CA">California</option>
|
|
|
+ <option value="NV">Nevada</option>
|
|
|
+ <option value="OR">Oregon</option>
|
|
|
+ <option value="WA">Washington</option>
|
|
|
+ <option value="AZ">Arizona</option>
|
|
|
+ <option value="CO">Colorado</option>
|
|
|
+ <option value="ID">Idaho</option>
|
|
|
+ <option value="MT">Montana</option>
|
|
|
+ <option value="NE">Nebraska</option>
|
|
|
+ <option value="NM">New Mexico</option>
|
|
|
+ <option value="ND">North Dakota</option>
|
|
|
+ <option value="UT">Utah</option>
|
|
|
+ <option value="WY">Wyoming</option>
|
|
|
+ <option value="AL">Alabama</option>
|
|
|
+ <option value="AR">Arkansas</option>
|
|
|
+ <option value="IL">Illinois</option>
|
|
|
+ <option value="IA">Iowa</option>
|
|
|
+ <option value="KS">Kansas</option>
|
|
|
+ <option value="KY">Kentucky</option>
|
|
|
+ <option value="LA">Louisiana</option>
|
|
|
+ <option value="MN">Minnesota</option>
|
|
|
+ <option value="MS">Mississippi</option>
|
|
|
+ <option value="MO">Missouri</option>
|
|
|
+ <option value="OK">Oklahoma</option>
|
|
|
+ <option value="SD">South Dakota</option>
|
|
|
+ <option value="TX">Texas</option>
|
|
|
+ <option value="TN">Tennessee</option>
|
|
|
+ <option value="WI">Wisconsin</option>
|
|
|
+ <option value="CT">Connecticut</option>
|
|
|
+ <option value="DE">Delaware</option>
|
|
|
+ <option value="FL">Florida</option>
|
|
|
+ <option value="GA">Georgia</option>
|
|
|
+ <option value="IN">Indiana</option>
|
|
|
+ <option value="ME">Maine</option>
|
|
|
+ <option value="MD">Maryland</option>
|
|
|
+ <option value="MA">Massachusetts</option>
|
|
|
+ <option value="MI">Michigan</option>
|
|
|
+ <option value="NH">New Hampshire</option>
|
|
|
+ <option value="NJ">New Jersey</option>
|
|
|
+ <option value="NY">New York</option>
|
|
|
+ <option value="NC">North Carolina</option>
|
|
|
+ <option value="OH">Ohio</option>
|
|
|
+ <option value="PA">Pennsylvania</option>
|
|
|
+ <option value="RI">Rhode Island</option>
|
|
|
+ <option value="SC">South Carolina</option>
|
|
|
+ <option value="VT">Vermont</option>
|
|
|
+ <option value="VA">Virginia</option>
|
|
|
+ <option value="WV">West Virginia</option>
|
|
|
+</select>
|
|
|
+
|
|
|
+<style>
|
|
|
+.clear {
|
|
|
+ background-color: transparent;
|
|
|
+ border: none;
|
|
|
+ box-sizing: border-box;
|
|
|
+ color: #666;
|
|
|
+ cursor: pointer;
|
|
|
+ display: none;
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: bold;
|
|
|
+ height: 26px;
|
|
|
+ outline: 0;
|
|
|
+ position: absolute;
|
|
|
+ top: 1px;
|
|
|
+ right: 4px;
|
|
|
+ width: 26px;
|
|
|
+}
|
|
|
+
|
|
|
+.clear:hover {
|
|
|
+ color: #000;
|
|
|
+}
|
|
|
+
|
|
|
+.clearable {
|
|
|
+ padding-right: 31px;
|
|
|
+}
|
|
|
+
|
|
|
+.clearable .clear {
|
|
|
+ display: inline;
|
|
|
+}
|
|
|
+</style>
|
|
|
+
|
|
|
+<script>
|
|
|
+require(["select2/core", "select2/utils", "select2/selection"], function (Select2, Utils, Selection) {
|
|
|
+ function ClearSelection () { }
|
|
|
+
|
|
|
+ ClearSelection.prototype.render = function (decorated) {
|
|
|
+ var $selection = decorated.call(this);
|
|
|
+
|
|
|
+ var $clear = $(
|
|
|
+ '<button class="clear">×</button>'
|
|
|
+ )
|
|
|
+
|
|
|
+ $selection.append($clear);
|
|
|
+ $selection.addClass("clearable");
|
|
|
+
|
|
|
+ this.$clear = $clear;
|
|
|
+
|
|
|
+ return $selection;
|
|
|
+ };
|
|
|
+
|
|
|
+ ClearSelection.prototype.bind = function (decorated, $container) {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ decorated.call(this, $container);
|
|
|
+
|
|
|
+ this.$container = $container;
|
|
|
+
|
|
|
+ this.$clear.on("click", function (evt) {
|
|
|
+ evt.stopPropagation();
|
|
|
+
|
|
|
+ var $first = $container.find("li").first();
|
|
|
+ $first.click();
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ ClearSelection.prototype.update = function (decorated, data) {
|
|
|
+ decorated.call(this, data);
|
|
|
+
|
|
|
+ if (data.length == 0 || this.$container.find("li").length == 0) {
|
|
|
+ this.$selection.removeClass("clearable");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var firstOption = this.$container.find("li").first().data("data");
|
|
|
+ var firstData = data[0];
|
|
|
+
|
|
|
+ if (firstOption.id == firstData.id) {
|
|
|
+ this.$selection.removeClass("clearable");
|
|
|
+ } else {
|
|
|
+ this.$selection.addClass("clearable");
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var CustomSelection = Utils.Decorate(Selection, ClearSelection);
|
|
|
+
|
|
|
+ var s2 = new Select2($("#source"), {
|
|
|
+ selectionAdapter: CustomSelection
|
|
|
+ });
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+</body>
|
|
|
+</html>
|