Skip to content

Commit ef6c653

Browse files
committed
Sifter 0.2 compatibility. Introduces multi-property sorting capabilities.
1 parent 10c5d57 commit ef6c653

File tree

5 files changed

+36
-21
lines changed

5 files changed

+36
-21
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
],
3030
"dependencies": {
3131
"jquery": ">=0.6.0",
32-
"sifter": "0.1.x",
32+
"sifter": "0.2.x",
3333
"microplugin": "0.0.x"
3434
},
3535
"devDependencies": {

dist/js/selectize.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1221,12 +1221,10 @@
12211221
*/
12221222
getSearchOptions: function() {
12231223
var settings = this.settings;
1224-
var fields = settings.searchField;
12251224

12261225
return {
1227-
fields : $.isArray(fields) ? fields : [fields],
1228-
sort : settings.sortField,
1229-
direction : settings.sortDirection,
1226+
fields : settings.searchField,
1227+
sort : settings.sortField
12301228
};
12311229
},
12321230

examples/basic.html

+6-2
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,16 @@ <h2>&lt;select&gt;</h2>
4949
<option value="4">Thomas Edison</option>
5050
<option value="1">Nikola</option>
5151
<option value="3">Nikola Tesla</option>
52+
<option value="5">Arnold Schwarzenegger</option>
5253
</select>
5354
</div>
5455
<script>
5556
$('#select-beast').selectize({
5657
create: true,
57-
sortField: 'text',
58+
sortField: {
59+
field: 'text',
60+
direction: 'asc'
61+
},
5862
dropdownParent: 'body'
5963
});
6064
</script>
@@ -74,7 +78,7 @@ <h2>&lt;select&gt; (disabled)</h2>
7478
<script>
7579
$('#select-beast-disabled').selectize({
7680
create: true,
77-
sortField: 'text'
81+
sortField: {field: 'text'}
7882
});
7983
</script>
8084
</div>

examples/contacts.html

+25-10
Original file line numberDiff line numberDiff line change
@@ -77,36 +77,45 @@ <h2>Email Contacts</h2>
7777
<p>An example showing how you might go about creating contact selector like those used in Email apps.</p>
7878
<div class="control-group">
7979
<label for="select-to">To:</label>
80-
<select id="select-to" placeholder="Pick some people..."></select>
80+
<select id="select-to" class="contacts" placeholder="Pick some people..."></select>
8181
</div>
8282
<script>
8383
// <select id="select-to"></select>
8484

8585
var REGEX_EMAIL = '([a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@' +
8686
'(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)';
8787

88+
var formatName = function(item) {
89+
return $.trim((item.first_name || '') + ' ' + (item.last_name || ''));
90+
};
91+
8892
$('#select-to').selectize({
89-
theme: 'contacts',
9093
persist: false,
9194
maxItems: null,
9295
valueField: 'email',
9396
labelField: 'name',
94-
searchField: ['name', 'email'],
97+
searchField: ['first_name', 'last_name', 'email'],
98+
sortField: [
99+
{field: 'first_name', direction: 'asc'},
100+
{field: 'last_name', direction: 'asc'}
101+
],
95102
options: [
96-
{email: 'brian@thirdroute.com', name: 'Brian Reavis'},
97-
{email: 'nikola@tesla.com', name: 'Nikola Tesla'},
103+
{email: 'nikola@tesla.com', first_name: 'Nikola', last_name: 'Tesla'},
104+
{email: 'brian@thirdroute.com', first_name: 'Brian', last_name: 'Reavis'},
98105
{email: '[email protected]'}
99106
],
100107
render: {
101108
item: function(item, escape) {
109+
var name = formatName(item);
102110
return '<div>' +
103-
(item.name ? '<span class="name">' + escape(item.name) + '</span>' : '') +
111+
(name ? '<span class="name">' + escape(name) + '</span>' : '') +
104112
(item.email ? '<span class="email">' + escape(item.email) + '</span>' : '') +
105113
'</div>';
106114
},
107115
option: function(item, escape) {
108-
var label = item.name || item.email;
109-
var caption = item.name ? item.email : null;
116+
var name = formatName(item);
117+
var label = name || item.email;
118+
var caption = name ? item.email : null;
110119
return '<div>' +
111120
'<span class="label">' + escape(label) + '</span>' +
112121
(caption ? '<span class="caption">' + escape(caption) + '</span>' : '') +
@@ -119,9 +128,15 @@ <h2>Email Contacts</h2>
119128
}
120129
var match = input.match(new RegExp('^([^<]*)\<' + REGEX_EMAIL + '\>$', 'i'));
121130
if (match) {
131+
var name = $.trim(match[1]);
132+
var pos_space = name.indexOf(' ');
133+
var first_name = name.substring(0, pos_space);
134+
var last_name = name.substring(pos_space + 1);
135+
122136
return {
123-
email : match[2],
124-
name : $.trim(match[1])
137+
email: match[2],
138+
first_name: first_name,
139+
last_name: last_name
125140
};
126141
}
127142
alert('Invalid email address.');

src/selectize.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -770,12 +770,10 @@ $.extend(Selectize.prototype, {
770770
*/
771771
getSearchOptions: function() {
772772
var settings = this.settings;
773-
var fields = settings.searchField;
774773

775774
return {
776-
fields : $.isArray(fields) ? fields : [fields],
777-
sort : settings.sortField,
778-
direction : settings.sortDirection,
775+
fields : settings.searchField,
776+
sort : settings.sortField
779777
};
780778
},
781779

0 commit comments

Comments
 (0)