select2-rails 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Select2
2
2
  module Rails
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -70,6 +70,10 @@
70
70
  function indexOf(value, array) {
71
71
  var i = 0, l = array.length, v;
72
72
 
73
+ if (typeof value == 'undefined') {
74
+ return -1;
75
+ }
76
+
73
77
  if (value.constructor === String) {
74
78
  for (; i < l; i = i + 1) if (value.localeCompare(array[i]) === 0) return i;
75
79
  } else {
@@ -262,7 +266,7 @@
262
266
  */
263
267
  function local(options) {
264
268
  var data = options, // data elements
265
- text = function (item) { return item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
269
+ text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
266
270
 
267
271
  if (!$.isArray(data)) {
268
272
  text = data.text;
@@ -352,7 +356,8 @@
352
356
  this.id=opts.id;
353
357
 
354
358
  // destroy if called on an existing component
355
- if (opts.element.data("select2") !== undefined) {
359
+ if (opts.element.data("select2") !== undefined &&
360
+ opts.element.data("select2") !== null) {
356
361
  this.destroy();
357
362
  }
358
363
 
@@ -1122,6 +1127,7 @@
1122
1127
  killEvent(e);
1123
1128
  return;
1124
1129
  case KEY.ENTER:
1130
+ case KEY.TAB:
1125
1131
  this.selectHighlighted();
1126
1132
  killEvent(e);
1127
1133
  return;
@@ -1374,15 +1380,15 @@
1374
1380
  },
1375
1381
 
1376
1382
  setVal: function (val) {
1377
- var unique = [];
1383
+ var unique;
1378
1384
  if (this.select) {
1379
1385
  this.select.val(val);
1380
1386
  } else {
1387
+ unique = [];
1381
1388
  // filter out duplicates
1382
1389
  $(val).each(function () {
1383
1390
  if (indexOf(this, unique) < 0) unique.push(this);
1384
1391
  });
1385
-
1386
1392
  this.opts.element.val(unique.length === 0 ? "" : unique.join(","));
1387
1393
  }
1388
1394
  },
@@ -1414,6 +1420,35 @@
1414
1420
  }
1415
1421
 
1416
1422
  this.clearSearch();
1423
+ },
1424
+ onSortStart: function() {
1425
+ if (this.select) {
1426
+ throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
1427
+ }
1428
+
1429
+ // collapse search field into 0 width so its container can be collapsed as well
1430
+ this.search.width(0);
1431
+ // hide the container
1432
+ this.searchContainer.hide();
1433
+ },
1434
+ onSortEnd:function() {
1435
+
1436
+ var val=[], self=this;
1437
+
1438
+ // show search and move it to the end of the list
1439
+ this.searchContainer.show();
1440
+ // make sure the search container is the last item in the list
1441
+ this.searchContainer.appendTo(this.searchContainer.parent());
1442
+ // since we collapsed the width in dragStarteed, we resize it here
1443
+ this.resizeSearch();
1444
+
1445
+ // update selection
1446
+
1447
+ this.selection.find(".select2-search-choice").each(function() {
1448
+ val.push(self.opts.id($(this).data("select2-data")));
1449
+ });
1450
+ this.setVal(val);
1451
+ this.triggerChange();
1417
1452
  }
1418
1453
  });
1419
1454
 
@@ -1422,7 +1457,7 @@
1422
1457
  var args = Array.prototype.slice.call(arguments, 0),
1423
1458
  opts,
1424
1459
  select2,
1425
- value, multiple, allowedMethods = ["val", "destroy", "open", "close", "focus", "isFocused"];
1460
+ value, multiple, allowedMethods = ["val", "destroy", "open", "close", "focus", "isFocused", "container", "onSortStart", "onSortEnd"];
1426
1461
 
1427
1462
  this.each(function () {
1428
1463
  if (args.length === 0 || typeof(args[0]) === "object") {
@@ -1447,7 +1482,11 @@
1447
1482
  value = undefined;
1448
1483
  select2 = $(this).data("select2");
1449
1484
  if (select2 === undefined) return;
1450
- value = select2[args[0]].apply(select2, args.slice(1));
1485
+ if (args[0] === "container") {
1486
+ value=select2.container;
1487
+ } else {
1488
+ value = select2[args[0]].apply(select2, args.slice(1));
1489
+ }
1451
1490
  if (value !== undefined) {return false;}
1452
1491
  } else {
1453
1492
  throw "Invalid arguments to select2 plugin: " + args;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: select2-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-23 00:00:00.000000000 Z
12
+ date: 2012-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &80350780 !ruby/object:Gem::Requirement
16
+ requirement: &84270160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.14'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *80350780
24
+ version_requirements: *84270160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &80348200 !ruby/object:Gem::Requirement
27
+ requirement: &84269910 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *80348200
35
+ version_requirements: *84269910
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &80346860 !ruby/object:Gem::Requirement
38
+ requirement: &84269680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *80346860
46
+ version_requirements: *84269680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sass
49
- requirement: &80346210 !ruby/object:Gem::Requirement
49
+ requirement: &84269450 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '3.1'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *80346210
57
+ version_requirements: *84269450
58
58
  description: Select2 is a jQuery based replacement for select boxes. It supports searching,
59
59
  remote data sets, and infinite scrolling of results. This gem integrates Select2
60
60
  with Rails asset pipeline for easy of use.