2014-08-29 05:20:36 +04:00
|
|
|
<!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>
|
2014-08-31 01:46:34 +04:00
|
|
|
require(["select2/core", "select2/utils", "select2/selection/single",
|
|
|
|
"select2/dropdown"], function (Select2, Utils, Selection, Dropdown) {
|
2014-08-29 05:20:36 +04:00
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
2014-08-31 02:34:41 +04:00
|
|
|
ClearSelection.prototype.bind = function (decorated, container, $container) {
|
2014-08-29 05:20:36 +04:00
|
|
|
var self = this;
|
|
|
|
|
2014-08-31 02:34:41 +04:00
|
|
|
decorated.call(this, container, $container);
|
2014-08-29 05:20:36 +04:00
|
|
|
|
|
|
|
this.$container = $container;
|
|
|
|
|
2014-08-31 04:25:32 +04:00
|
|
|
this.$clear.on("mousedown", function (evt) {
|
2014-08-29 05:20:36 +04:00
|
|
|
evt.stopPropagation();
|
|
|
|
|
|
|
|
var $first = $container.find("li").first();
|
2014-08-31 04:25:32 +04:00
|
|
|
$first.mouseup();
|
2014-08-29 05:20:36 +04:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
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");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2014-08-31 01:46:34 +04:00
|
|
|
function DropdownFooter () { }
|
|
|
|
|
|
|
|
DropdownFooter.prototype.render = function (decorated) {
|
|
|
|
var $dropdown = decorated.call(this);
|
|
|
|
|
|
|
|
$dropdown.append('<div class="footer">My custom footer</div>');
|
|
|
|
|
|
|
|
return $dropdown;
|
|
|
|
}
|
|
|
|
|
|
|
|
function DropdownHeader () { }
|
|
|
|
|
|
|
|
DropdownHeader.prototype.render = function (decorated) {
|
|
|
|
var $dropdown = decorated.call(this);
|
|
|
|
|
|
|
|
$dropdown.prepend('<div class="header">Some custom header</div>');
|
|
|
|
|
|
|
|
return $dropdown;
|
|
|
|
}
|
|
|
|
|
|
|
|
var CustomSelection = Utils.Decorate(Selection, ClearSelection)
|
|
|
|
|
|
|
|
var CustomDropdown = Utils.Decorate(
|
|
|
|
Utils.Decorate(Dropdown, DropdownHeader),
|
|
|
|
DropdownFooter
|
|
|
|
);
|
2014-08-29 05:20:36 +04:00
|
|
|
|
|
|
|
var s2 = new Select2($("#source"), {
|
2014-08-31 01:46:34 +04:00
|
|
|
selectionAdapter: CustomSelection,
|
|
|
|
dropdownAdapter: CustomDropdown
|
2014-08-29 05:20:36 +04:00
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|