1
0
mirror of synced 2024-11-30 00:26:03 +03:00
select2/playground/basic/decorators.html

243 lines
7.3 KiB
HTML
Raw Normal View History

<!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/single",
"select2/dropdown"], function (Select2, Utils, Selection, Dropdown) {
function ClearSelection () { }
ClearSelection.prototype.render = function (decorated) {
var $selection = decorated.call(this);
var $clear = $(
'<button class="clear">&times;</button>'
)
$selection.append($clear);
$selection.addClass("clearable");
this.$clear = $clear;
return $selection;
};
ClearSelection.prototype.bind = function (decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
this.$container = $container;
this.$clear.on("mousedown", function (evt) {
evt.stopPropagation();
var $first = $container.find("li").first();
$first.mouseup();
});
};
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");
}
};
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
);
var s2 = new Select2($("#source"), {
selectionAdapter: CustomSelection,
dropdownAdapter: CustomDropdown
});
});
</script>
</body>
</html>