chosen-rails 1.2.0 → 1.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3509cebedbed2da25738b2bea9699477c0f7907
4
- data.tar.gz: 1bdfe1a24a51d77fb648242cd894ce337e42eaea
3
+ metadata.gz: a00aed3e49a214127fe61ce7d78b31f490898af0
4
+ data.tar.gz: 5849a7c7fd0b0bf95e5a282555771f30cd175fee
5
5
  SHA512:
6
- metadata.gz: b19b5169eeea9a1f3a91d263dffb15fa994efeeabca7892e19e8dd7c5d589ee864ca13cd85e691eb00b50267e1538f8ffd1f707d1e581b5feaf7347cf9422411
7
- data.tar.gz: 3fc77fc57bc365b387507d4c2b3f89f5a7c47a40c844d2bd9e7b60a344ab14423f96233d0b73d75cb58cf9cd0b90f2a9eba576b81f79d7e892a97e8b401d9d9e
6
+ metadata.gz: 436778b889eb6341473da8452f60b33951d8415cbaf697322c63b799befc2ce37bbbce6910245e52624047cb7f2876ecea21c5ee4d57af64f9e2c8e9c0782222
7
+ data.tar.gz: d2c4efc81e654f3957fc647ad58771e9629910b2a5e7ace3fd92504d456c063df3bd5dff44a833662c3b26d6c314454a72673019eb164fac72d1ca59dcb8ec95
data/README.md CHANGED
@@ -10,7 +10,9 @@ The `chosen-rails` gem integrates the `Chosen` with the Rails asset pipeline.
10
10
 
11
11
  Include `chosen-rails` in Gemefile
12
12
 
13
- gem 'chosen-rails'
13
+ ```rb
14
+ gem 'chosen-rails'
15
+ ```
14
16
 
15
17
  Then run `bundle install`
16
18
 
@@ -18,51 +20,65 @@ Then run `bundle install`
18
20
 
19
21
  Add to your `app/assets/javascripts/application.js` if use with jQuery
20
22
 
21
- //= require chosen-jquery
23
+ ```coffee
24
+ //= require chosen-jquery
25
+ ```
22
26
 
23
27
  Or with Prototype
24
28
 
25
- //= require chosen-prototype
29
+ ```coffee
30
+ //= require chosen-prototype
31
+ ```
26
32
 
27
33
  ### Include chosen stylesheet assets
28
34
 
29
35
  Add to your `app/assets/stylesheets/application.css`
30
36
 
31
- *= require chosen
37
+ ```scss
38
+ *= require chosen
39
+ ```
32
40
 
33
41
  ### Enable chosen javascript by specific css class
34
42
 
35
43
  Add to one coffee script file, like `scaffold.js.coffee`
36
44
 
37
- $ ->
38
- # enable chosen js
39
- $('.chosen-select').chosen
40
- allow_single_deselect: true
41
- no_results_text: 'No results matched'
42
- width: '200px'
45
+ ```coffee
46
+ $ ->
47
+ # enable chosen js
48
+ $('.chosen-select').chosen
49
+ allow_single_deselect: true
50
+ no_results_text: 'No results matched'
51
+ width: '200px'
52
+ ```
43
53
 
44
54
  Notice: `width` option is required since `Chosen 0.9.15`.
45
55
 
46
56
  And this file must be included in `application.js`
47
57
 
48
- //= require chosen-jquery
49
- //= require scaffold
58
+ ```coffee
59
+ //= require chosen-jquery
60
+ //= require scaffold
61
+ ```
50
62
 
51
63
  Also add the class to your form field
52
64
 
53
- <%= f.select :author,
54
- User.all.map { |u| [u.name, u.id] },
55
- { include_blank: true },
56
- { class: 'chosen-select' }
57
- %>
65
+ ```erb
66
+ <%= f.select :author,
67
+ User.all.map { |u| [u.name, u.id] },
68
+ { include_blank: true },
69
+ { class: 'chosen-select' }
70
+ %>
71
+ ```
58
72
 
59
73
  If you use simple form as form builder
60
74
 
61
- <%= f.association :author,
62
- collection: User.all,
63
- include_blank: true,
64
- input_html: { class: 'chosen-select' }
65
- %>
75
+ ```erb
76
+ <%= f.association :author,
77
+ collection: User.all,
78
+ include_blank: true,
79
+ input_html: { class: 'chosen-select' }
80
+ %>
81
+ ```
66
82
 
67
83
  ### Deployment
68
84
 
@@ -74,11 +90,15 @@ Maintain `chosen-rails` gem with `Rake` commands.
74
90
 
75
91
  Update origin chosen source files.
76
92
 
77
- rake update-chosen
93
+ ```bash
94
+ rake update-chosen
95
+ ```
78
96
 
79
97
  Publish gem.
80
98
 
81
- rake release
99
+ ```bash
100
+ rake release
101
+ ```
82
102
 
83
103
  ## License
84
104
 
@@ -9,7 +9,7 @@ class SourceFile < Thor
9
9
  self.destination_root = 'vendor/assets'
10
10
  get "#{remote}/raw/#{branch}/public/chosen-sprite.png", 'images/chosen-sprite.png'
11
11
  get "#{remote}/raw/#{branch}/public/chosen-sprite@2x.png", 'images/chosen-sprite@2x.png'
12
- get "#{remote}/raw/#{branch}/sass/chosen.scss", 'stylesheets/chosen.css.scss'
12
+ get "#{remote}/raw/#{branch}/sass/chosen.scss", 'stylesheets/chosen.scss'
13
13
  get "#{remote}/raw/#{branch}/coffee/lib/abstract-chosen.coffee", 'javascripts/lib/abstract-chosen.coffee'
14
14
  get "#{remote}/raw/#{branch}/coffee/lib/select-parser.coffee", 'javascripts/lib/select-parser.coffee'
15
15
  get "#{remote}/raw/#{branch}/coffee/chosen.jquery.coffee", 'javascripts/chosen.jquery.coffee'
@@ -1,6 +1,6 @@
1
1
  module Chosen
2
2
  module Rails
3
- VERSION = '1.2.0'
4
- CHOSEN_VERSION = '1.2.0'
3
+ VERSION = '1.3.0'
4
+ CHOSEN_VERSION = '1.3.0'
5
5
  end
6
6
  end
@@ -63,6 +63,8 @@ class Chosen extends AbstractChosen
63
63
  this.results_build()
64
64
  this.set_tab_index()
65
65
  this.set_label_behavior()
66
+
67
+ on_ready: ->
66
68
  @form_field_jq.trigger("chosen:ready", {chosen: this})
67
69
 
68
70
  register_observers: ->
@@ -289,7 +291,7 @@ class Chosen extends AbstractChosen
289
291
  this.result_clear_highlight() if $(evt.target).hasClass "active-result" or $(evt.target).parents('.active-result').first()
290
292
 
291
293
  choice_build: (item) ->
292
- choice = $('<li />', { class: "search-choice" }).html("<span>#{item.html}</span>")
294
+ choice = $('<li />', { class: "search-choice" }).html("<span>#{this.choice_label(item)}</span>")
293
295
 
294
296
  if item.disabled
295
297
  choice.addClass 'search-choice-disabled'
@@ -352,7 +354,7 @@ class Chosen extends AbstractChosen
352
354
  if @is_multiple
353
355
  this.choice_build item
354
356
  else
355
- this.single_set_selected_text(item.text)
357
+ this.single_set_selected_text(this.choice_label(item))
356
358
 
357
359
  this.results_hide() unless (evt.metaKey or evt.ctrlKey) and @is_multiple
358
360
 
@@ -369,7 +371,7 @@ class Chosen extends AbstractChosen
369
371
  this.single_deselect_control_build()
370
372
  @selected_item.removeClass("chosen-default")
371
373
 
372
- @selected_item.find("span").text(text)
374
+ @selected_item.find("span").html(text)
373
375
 
374
376
  result_deselect: (pos) ->
375
377
  result_data = @results_data[pos]
@@ -46,6 +46,8 @@ class @Chosen extends AbstractChosen
46
46
  this.results_build()
47
47
  this.set_tab_index()
48
48
  this.set_label_behavior()
49
+
50
+ on_ready: ->
49
51
  @form_field.fire("chosen:ready", {chosen: this})
50
52
 
51
53
  register_observers: ->
@@ -282,7 +284,7 @@ class @Chosen extends AbstractChosen
282
284
  this.result_clear_highlight() if evt.target.hasClassName('active-result') or evt.target.up('.active-result')
283
285
 
284
286
  choice_build: (item) ->
285
- choice = new Element('li', { class: "search-choice" }).update("<span>#{item.html}</span>")
287
+ choice = new Element('li', { class: "search-choice" }).update("<span>#{this.choice_label(item)}</span>")
286
288
 
287
289
  if item.disabled
288
290
  choice.addClassName 'search-choice-disabled'
@@ -347,7 +349,7 @@ class @Chosen extends AbstractChosen
347
349
  if @is_multiple
348
350
  this.choice_build item
349
351
  else
350
- this.single_set_selected_text(item.text)
352
+ this.single_set_selected_text(this.choice_label(item))
351
353
 
352
354
  this.results_hide() unless (evt.metaKey or evt.ctrlKey) and @is_multiple
353
355
 
@@ -10,6 +10,8 @@ class AbstractChosen
10
10
 
11
11
  this.set_up_html()
12
12
  this.register_observers()
13
+ # instantiation done, fire ready
14
+ this.on_ready()
13
15
 
14
16
  set_default_values: ->
15
17
  @click_test_action = (evt) => this.test_active_click(evt)
@@ -29,6 +31,7 @@ class AbstractChosen
29
31
  @inherit_select_classes = @options.inherit_select_classes || false
30
32
  @display_selected_options = if @options.display_selected_options? then @options.display_selected_options else true
31
33
  @display_disabled_options = if @options.display_disabled_options? then @options.display_disabled_options else true
34
+ @include_group_label_in_selected = @options.include_group_label_in_selected || false
32
35
 
33
36
  set_default_text: ->
34
37
  if @form_field.getAttribute("data-placeholder")
@@ -40,6 +43,12 @@ class AbstractChosen
40
43
 
41
44
  @results_none_found = @form_field.getAttribute("data-no_results_text") || @options.no_results_text || AbstractChosen.default_no_result_text
42
45
 
46
+ choice_label: (item) ->
47
+ if @include_group_label_in_selected and item.group_label?
48
+ "<b class='group-name'>#{item.group_label}</b>#{item.html}"
49
+ else
50
+ item.html
51
+
43
52
  mouse_enter: -> @mouse_on_container = true
44
53
  mouse_leave: -> @mouse_on_container = false
45
54
 
@@ -95,8 +104,12 @@ class AbstractChosen
95
104
  return '' unless group.search_match || group.group_match
96
105
  return '' unless group.active_options > 0
97
106
 
107
+ classes = []
108
+ classes.push "group-result"
109
+ classes.push group.classes if group.classes
110
+
98
111
  group_el = document.createElement("li")
99
- group_el.className = "group-result"
112
+ group_el.className = classes.join(" ")
100
113
  group_el.innerHTML = group.search_text
101
114
 
102
115
  this.outerHTML(group_el)
@@ -17,7 +17,8 @@ class SelectParser
17
17
  group: true
18
18
  label: this.escapeExpression(group.label)
19
19
  children: 0
20
- disabled: group.disabled
20
+ disabled: group.disabled,
21
+ classes: group.className
21
22
  this.add_option( option, group_position, group.disabled ) for option in group.childNodes
22
23
 
23
24
  add_option: (option, group_position, group_disabled) ->
@@ -34,6 +35,7 @@ class SelectParser
34
35
  selected: option.selected
35
36
  disabled: if group_disabled is true then group_disabled else option.disabled
36
37
  group_array_index: group_position
38
+ group_label: if group_position? then @parsed[group_position].label else null
37
39
  classes: option.className
38
40
  style: option.style.cssText
39
41
  else
@@ -63,4 +65,5 @@ SelectParser.select_to_array = (select) ->
63
65
  parser.add_node( child ) for child in select.childNodes
64
66
  parser.parsed
65
67
 
68
+
66
69
  window.SelectParser = SelectParser
@@ -34,6 +34,22 @@ $chosen-sprite-retina: image-url('chosen-sprite@2x.png') !default;
34
34
  a{
35
35
  cursor: pointer;
36
36
  }
37
+
38
+ .search-choice, .chosen-single{
39
+ .group-name{
40
+ margin-right: 4px;
41
+ overflow: hidden;
42
+ white-space: nowrap;
43
+ text-overflow: ellipsis;
44
+ font-weight: normal;
45
+ color: #999999;
46
+ &:after {
47
+ content: ":";
48
+ padding-left: 2px;
49
+ vertical-align: top;
50
+ }
51
+ }
52
+ }
37
53
  }
38
54
  /* @end */
39
55
 
@@ -401,7 +417,7 @@ $chosen-sprite-retina: image-url('chosen-sprite@2x.png') !default;
401
417
  /* @end */
402
418
 
403
419
  /* @group Retina compatibility */
404
- @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
420
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
405
421
  .chosen-rtl .chosen-search input[type="text"],
406
422
  .chosen-container-single .chosen-single abbr,
407
423
  .chosen-container-single .chosen-single div b,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chosen-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tse-Ching Ho
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-26 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -137,7 +137,7 @@ files:
137
137
  - vendor/assets/javascripts/chosen.proto.coffee
138
138
  - vendor/assets/javascripts/lib/abstract-chosen.coffee
139
139
  - vendor/assets/javascripts/lib/select-parser.coffee
140
- - vendor/assets/stylesheets/chosen.css.scss
140
+ - vendor/assets/stylesheets/chosen.scss
141
141
  homepage: https://github.com/tsechingho/chosen-rails
142
142
  licenses: []
143
143
  metadata: {}