multi-select-rails 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ desc "Update"
2
+ task :update do
3
+ system("rm -rf multi-select-src")
4
+
5
+ system("git clone https://github.com/lou/multi-select.git multi-select-src")
6
+ system("cp multi-select-src/img/switch.png vendor/assets/images/switch.png")
7
+ system("cp multi-select-src/css/multi-select.css vendor/assets/stylesheets/multi-select.scss")
8
+ system("cp multi-select-src/js/jquery.multi-select.js vendor/assets/javascripts/multi-select.js")
9
+
10
+ fixes
11
+
12
+ system("rm -rf multi-select-src")
13
+ end
14
+
15
+ def fixes
16
+ replace_string_in_file("vendor/assets/stylesheets/multi-select.scss", "url('../img/switch.png')", "image-url('switch.png')")
17
+ end
18
+
19
+ def replace_string_in_file(file, find, replace)
20
+ file_content = File.read(file)
21
+
22
+ File.open(file, "w") do |f|
23
+ f.puts file_content.gsub!(find, replace)
24
+ end
25
+ end
26
+
27
+ desc "Build"
28
+ task "build" do
29
+ system("gem build multi-select-rails.gemspec")
30
+ end
@@ -1,5 +1,5 @@
1
1
  module MultiSelectRails
2
2
  module Rails
3
- VERSION = "0.9.2"
3
+ VERSION = "0.9.3"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*
2
- * MultiSelect v0.9.2
2
+ * MultiSelect v0.9.3
3
3
  * Copyright (c) 2012 Louis Cuny
4
4
  *
5
5
  * This program is free software. It comes without any warranty, to
@@ -104,9 +104,19 @@
104
104
  var selectableLi = $('<li '+attributes+'><span>'+$(this).text()+'</span></li>'),
105
105
  selectedLi = selectableLi.clone();
106
106
 
107
- var value = $(this).val();
108
- selectableLi.addClass('ms-elem-selectable').attr('id', value+'-selectable');
109
- selectedLi.addClass('ms-elem-selection').attr('id', value+'-selection').hide();
107
+ var value = $(this).val(),
108
+ msId = that.sanitize(value);
109
+
110
+ selectableLi
111
+ .data('ms-value', value)
112
+ .addClass('ms-elem-selectable')
113
+ .attr('id', msId+'-selectable');
114
+
115
+ selectedLi
116
+ .data('ms-value', value)
117
+ .addClass('ms-elem-selection')
118
+ .attr('id', msId+'-selection')
119
+ .hide();
110
120
 
111
121
  that.$selectionUl.find('.ms-optgroup-label').hide();
112
122
 
@@ -125,15 +135,17 @@
125
135
  }
126
136
  });
127
137
 
128
- if (that.options.selectableHeader){
138
+ if (that.options.selectableHeader)
129
139
  that.$selectableContainer.append(that.options.selectableHeader);
130
- }
131
140
  that.$selectableContainer.append(that.$selectableUl);
132
-
133
- if (that.options.selectionHeader){
141
+ if (that.options.selectableFooter)
142
+ that.$selectableContainer.append(that.options.selectableFooter);
143
+
144
+ if (that.options.selectionHeader)
134
145
  that.$selectionContainer.append(that.options.selectionHeader);
135
- }
136
- this.$selectionContainer.append(that.$selectionUl);
146
+ that.$selectionContainer.append(that.$selectionUl);
147
+ if (that.options.selectionFooter)
148
+ that.$selectionContainer.append(that.options.selectionFooter);
137
149
 
138
150
  that.$container.append(that.$selectableContainer);
139
151
  that.$container.append(that.$selectionContainer);
@@ -147,17 +159,17 @@
147
159
 
148
160
  if(that.options.dblClick) {
149
161
  that.$selectableUl.on('dblclick', '.ms-elem-selectable', function(){
150
- that.select($(this).attr('id').replace(/-selectable/, ''));
162
+ that.select($(this).data('ms-value'));
151
163
  });
152
164
  that.$selectionUl.on('dblclick', '.ms-elem-selection', function(){
153
- that.deselect($(this).attr('id').replace(/-selection/, ''));
165
+ that.deselect($(this).data('ms-value'));
154
166
  });
155
167
  } else {
156
168
  that.$selectableUl.on('click', '.ms-elem-selectable', function(){
157
- that.select($(this).attr('id').replace(/-selectable/, ''));
169
+ that.select($(this).data('ms-value'));
158
170
  });
159
171
  that.$selectionUl.on('click', '.ms-elem-selection', function(){
160
- that.deselect($(this).attr('id').replace(/-selection/, ''));
172
+ that.deselect($(this).data('ms-value'));
161
173
  });
162
174
  }
163
175
 
@@ -206,9 +218,9 @@
206
218
  if (liFocused.length >0){
207
219
  var method = keyContainer == 'ms-selectable' ? 'select' : 'deselect';
208
220
  if (keyContainer == 'ms-selectable'){
209
- that.select(liFocused.attr('id').replace('-selectable', ''));
221
+ that.select(liFocused.data('ms-value'));
210
222
  } else {
211
- that.deselect(liFocused.attr('id').replace('-selection', ''));
223
+ that.deselect(liFocused.data('ms-value'));
212
224
  }
213
225
  lis.removeClass('ms-hover');
214
226
  that.scrollTo = 0;
@@ -273,17 +285,20 @@
273
285
  that.options.afterInit.call(this, this.$container);
274
286
  }
275
287
  },
288
+
276
289
  'refresh' : function() {
277
290
  $("#ms-"+this.$element.attr("id")).remove();
278
291
  this.init(this.options);
279
292
  },
293
+
280
294
  'select' : function(value, method){
281
295
  if (typeof value == 'string')
282
296
  value = [value]
283
297
  var that = this,
284
298
  ms = this.$element,
285
- selectables = this.$selectableUl.find('#' + value.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'),
286
- selections = this.$selectionUl.find('#' + value.join('-selection, #') + '-selection'),
299
+ msIds = $.map(value, function(val, index){ return(that.sanitize(val)) }),
300
+ selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'),
301
+ selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection'),
287
302
  options = ms.find('option').filter(function(index){ return($.inArray(this.value, value) > -1) });
288
303
 
289
304
  if (selectables.length > 0){
@@ -318,13 +333,15 @@
318
333
  }
319
334
  }
320
335
  },
336
+
321
337
  'deselect' : function(value){
322
338
  if (typeof value == 'string')
323
339
  value = [value]
324
340
  var that = this,
325
341
  ms = this.$element,
326
- selectables = this.$selectableUl.find('#' + value.join('-selectable, #')+'-selectable'),
327
- selections = this.$selectionUl.find('#' + value.join('-selection, #')+'-selection').filter('.ms-selected'),
342
+ msIds = $.map(value, function(val, index){ return(that.sanitize(val)) }),
343
+ selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),
344
+ selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected'),
328
345
  options = ms.find('option').filter(function(index){ return($.inArray(this.value, value) > -1) });
329
346
 
330
347
  if (selections.length > 0){
@@ -357,6 +374,7 @@
357
374
  }
358
375
  }
359
376
  },
377
+
360
378
  'select_all' : function(){
361
379
  var ms = this.$element;
362
380
 
@@ -369,6 +387,7 @@
369
387
  this.$selectableUl.focusout();
370
388
  ms.trigger('change');
371
389
  },
390
+
372
391
  'deselect_all' : function(){
373
392
  var ms = this.$element;
374
393
 
@@ -381,6 +400,7 @@
381
400
  this.$selectionUl.focusout();
382
401
  ms.trigger('change');
383
402
  },
403
+
384
404
  isDomNode: function (attr){
385
405
  return (
386
406
  attr &&
@@ -388,6 +408,10 @@
388
408
  typeof attr.nodeType === "number" &&
389
409
  typeof attr.nodeName === "string"
390
410
  );
411
+ },
412
+
413
+ sanitize: function(value){
414
+ return(value.replace(/[^A-Za-z0-9]*/gi, '_'));
391
415
  }
392
416
  }
393
417
 
@@ -1,86 +1,93 @@
1
- .ms-container{
2
- background: transparent image-url('switch.png') no-repeat 170px 80px;
3
- }
4
-
5
- .ms-container:after{
6
- content: "."; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden;
7
- }
8
-
9
- .ms-container .ms-selectable, .ms-container .ms-selection{
10
-
11
- background: #fff;
12
- color: #555555;
13
- float: left;
14
- }
15
-
16
- .ms-container .ms-list{
17
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
18
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
19
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
20
- -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
21
- -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
22
- -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
23
- -o-transition: border linear 0.2s, box-shadow linear 0.2s;
24
- transition: border linear 0.2s, box-shadow linear 0.2s;
25
- border: 1px solid #cccccc;
26
- -webkit-border-radius: 3px;
27
- -moz-border-radius: 3px;
28
- border-radius: 3px;
29
- }
30
-
31
-
32
- .ms-selected{
33
- display:none;
34
- }
35
- .ms-container .ms-selectable{
36
- margin-right: 40px;
37
- }
38
-
39
- .ms-container .ms-list.ms-focus{
40
- border-color: rgba(82, 168, 236, 0.8);
41
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
42
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
43
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
44
- outline: 0;
45
- outline: thin dotted \9;
46
- }
47
-
48
- .ms-container ul{
49
- margin: 0;
50
- list-style-type: none;
51
- }
52
-
53
- .ms-container ul.ms-list{
54
- width: 160px;
55
- height: 200px;
56
- padding: 0px 0px;
57
- overflow-y: auto;
58
- }
59
-
60
- .ms-container .ms-selectable li.ms-elem-selectable,
61
- .ms-container .ms-selection li.ms-elem-selected{
62
- border-bottom: 1px #eee solid;
63
- padding: 2px 10px;
64
- color: #555;
65
- font-size: 14px;
66
- }
67
-
68
- .ms-container .ms-selectable li.disabled,
69
- .ms-container .ms-selection li.disabled{
70
- background-color: #eee;
71
- color: #aaa;
72
- }
73
-
74
- .ms-container .ms-optgroup-label{
75
- padding: 5px 0px 0px 5px;
76
- cursor: pointer;
77
- color: #999;
78
- }
79
-
80
- .ms-container li.ms-elem-selectable:not(.disabled).ms-hover,
81
- .ms-container .ms-selection li:not(.disabled).ms-hover{
82
- cursor: pointer;
83
- color: #ffffff;
84
- text-decoration: none;
85
- background-color: #0088cc;
86
- }
1
+ .ms-container{
2
+ background: transparent image-url('switch.png') no-repeat 170px 80px;
3
+ }
4
+
5
+ .ms-container:after{
6
+ content: "."; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden;
7
+ }
8
+
9
+ .ms-container .ms-selectable, .ms-container .ms-selection{
10
+
11
+ background: #fff;
12
+ color: #555555;
13
+ float: left;
14
+ }
15
+
16
+ .ms-container .ms-list{
17
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
18
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
19
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
20
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
21
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
22
+ -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
23
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
24
+ transition: border linear 0.2s, box-shadow linear 0.2s;
25
+ border: 1px solid #ccc;
26
+ -webkit-border-radius: 3px;
27
+ -moz-border-radius: 3px;
28
+ border-radius: 3px;
29
+ }
30
+
31
+
32
+ .ms-selected{
33
+ display:none;
34
+ }
35
+ .ms-container .ms-selectable{
36
+ margin-right: 40px;
37
+ }
38
+
39
+ .ms-container .ms-list.ms-focus{
40
+ border-color: rgba(82, 168, 236, 0.8);
41
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
42
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
43
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
44
+ outline: 0;
45
+ outline: thin dotted \9;
46
+ }
47
+
48
+ .ms-container ul{
49
+ margin: 0;
50
+ list-style-type: none;
51
+ padding: 0;
52
+ }
53
+
54
+ .ms-container .ms-optgroup-container{
55
+ width: 100%;
56
+ }
57
+
58
+ .ms-container ul.ms-list{
59
+ width: 160px;
60
+ height: 200px;
61
+ padding: 0;
62
+ overflow-y: auto;
63
+ }
64
+
65
+ .ms-container .ms-optgroup-label{
66
+ margin: 0;
67
+ padding: 5px 0px 0px 5px;
68
+ cursor: pointer;
69
+ color: #999;
70
+ }
71
+
72
+ .ms-container .ms-selectable li.ms-elem-selectable,
73
+ .ms-container .ms-selection li.ms-elem-selection{
74
+ border-bottom: 1px #eee solid;
75
+ padding: 2px 10px;
76
+ color: #555;
77
+ font-size: 14px;
78
+ }
79
+
80
+ .ms-container .ms-selectable li.ms-hover,
81
+ .ms-container .ms-selection li.ms-hover{
82
+ cursor: pointer;
83
+ color: #fff;
84
+ text-decoration: none;
85
+ background-color: #08c;
86
+ }
87
+
88
+ .ms-container .ms-selectable li.disabled,
89
+ .ms-container .ms-selection li.disabled{
90
+ background-color: #eee;
91
+ color: #aaa;
92
+ cursor: text;
93
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi-select-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-18 00:00:00.000000000 Z
12
+ date: 2013-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -69,6 +69,7 @@ files:
69
69
  - .gitignore
70
70
  - Gemfile
71
71
  - README.md
72
+ - Rakefile
72
73
  - lib/multi-select-rails.rb
73
74
  - lib/multi-select-rails/engine.rb
74
75
  - lib/multi-select-rails/railtie.rb
@@ -92,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
93
  version: '0'
93
94
  segments:
94
95
  - 0
95
- hash: -2806128788544940467
96
+ hash: -448448030300929018
96
97
  required_rubygems_version: !ruby/object:Gem::Requirement
97
98
  none: false
98
99
  requirements:
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  version: '0'
102
103
  segments:
103
104
  - 0
104
- hash: -2806128788544940467
105
+ hash: -448448030300929018
105
106
  requirements: []
106
107
  rubyforge_project:
107
108
  rubygems_version: 1.8.24