chosen-rails 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
data/lib/chosen-rails/version.rb
CHANGED
@@ -32,11 +32,13 @@ class Chosen extends AbstractChosen
|
|
32
32
|
|
33
33
|
@f_width = @form_field_jq.outerWidth()
|
34
34
|
|
35
|
-
|
35
|
+
container_props =
|
36
36
|
id: @container_id
|
37
37
|
class: "chzn-container#{ if @is_rtl then ' chzn-rtl' else '' }"
|
38
38
|
style: 'width: ' + (@f_width) + 'px;' #use parens around @f_width so coffeescript doesn't think + ' px' is a function parameter
|
39
|
-
|
39
|
+
title: @form_field.title
|
40
|
+
|
41
|
+
container_div = ($ "<div />", container_props)
|
40
42
|
|
41
43
|
if @is_multiple
|
42
44
|
container_div.html '<ul class="chzn-choices"><li class="search-field"><input type="text" value="' + @default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'
|
@@ -95,7 +97,7 @@ class Chosen extends AbstractChosen
|
|
95
97
|
@search_choices.click (evt) => this.choices_click(evt)
|
96
98
|
else
|
97
99
|
@container.click (evt) => evt.preventDefault() # gobble click of anchor
|
98
|
-
|
100
|
+
|
99
101
|
|
100
102
|
search_field_disabled: ->
|
101
103
|
@is_disabled = @form_field_jq[0].disabled
|
@@ -113,7 +115,7 @@ class Chosen extends AbstractChosen
|
|
113
115
|
if !@is_disabled
|
114
116
|
target_closelink = if evt? then ($ evt.target).hasClass "search-choice-close" else false
|
115
117
|
if evt and evt.type is "mousedown" and not @results_showing
|
116
|
-
evt.
|
118
|
+
evt.preventDefault()
|
117
119
|
if not @pending_destroy_click and not target_closelink
|
118
120
|
if not @active_field
|
119
121
|
@search_field.val "" if @is_multiple
|
@@ -316,6 +318,8 @@ class Chosen extends AbstractChosen
|
|
316
318
|
|
317
319
|
link.parents('li').first().remove()
|
318
320
|
|
321
|
+
this.search_field_scale()
|
322
|
+
|
319
323
|
results_reset: ->
|
320
324
|
@form_field.options[0].selected = true
|
321
325
|
@selected_item.find("span").text @default_text
|
@@ -324,7 +328,7 @@ class Chosen extends AbstractChosen
|
|
324
328
|
this.results_reset_cleanup()
|
325
329
|
@form_field_jq.trigger "change"
|
326
330
|
this.results_hide() if @active_field
|
327
|
-
|
331
|
+
|
328
332
|
results_reset_cleanup: ->
|
329
333
|
@current_value = @form_field_jq.val()
|
330
334
|
@selected_item.find("abbr").remove()
|
@@ -357,7 +361,7 @@ class Chosen extends AbstractChosen
|
|
357
361
|
@selected_item.find("span").first().text item.text
|
358
362
|
this.single_deselect_control_build() if @allow_single_deselect
|
359
363
|
|
360
|
-
this.results_hide() unless evt.metaKey and @is_multiple
|
364
|
+
this.results_hide() unless (evt.metaKey or evt.ctrlKey) and @is_multiple
|
361
365
|
|
362
366
|
@search_field.val ""
|
363
367
|
|
@@ -376,7 +380,7 @@ class Chosen extends AbstractChosen
|
|
376
380
|
|
377
381
|
if not @form_field.options[result_data.options_index].disabled
|
378
382
|
result_data.selected = false
|
379
|
-
|
383
|
+
|
380
384
|
@form_field.options[result_data.options_index].selected = false
|
381
385
|
result = $("#" + @container_id + "_o_" + pos)
|
382
386
|
result.removeClass("result-selected").addClass("active-result").show()
|
@@ -386,7 +390,7 @@ class Chosen extends AbstractChosen
|
|
386
390
|
|
387
391
|
@form_field_jq.trigger "change", {deselected: @form_field.options[result_data.options_index].value}
|
388
392
|
this.search_field_scale()
|
389
|
-
|
393
|
+
|
390
394
|
return true
|
391
395
|
else
|
392
396
|
return false
|
@@ -416,7 +420,7 @@ class Chosen extends AbstractChosen
|
|
416
420
|
if regex.test option.html
|
417
421
|
found = true
|
418
422
|
results += 1
|
419
|
-
else if option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0
|
423
|
+
else if @search_split_words and (option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0)
|
420
424
|
#TODO: replace this substitution of /\[\]/ with a list of characters to skip.
|
421
425
|
parts = option.html.replace(/\[|\]/g, "").split(" ")
|
422
426
|
if parts.length
|
@@ -569,6 +573,8 @@ class Chosen extends AbstractChosen
|
|
569
573
|
string += this.generate_random_char()
|
570
574
|
string
|
571
575
|
|
576
|
+
root.Chosen = Chosen
|
577
|
+
|
572
578
|
get_side_border_padding = (elmt) ->
|
573
579
|
side_border_padding = elmt.outerWidth() - elmt.width()
|
574
580
|
|
@@ -15,7 +15,7 @@ class Chosen extends AbstractChosen
|
|
15
15
|
|
16
16
|
set_default_values: ->
|
17
17
|
super()
|
18
|
-
|
18
|
+
|
19
19
|
# HTML Templates
|
20
20
|
@single_temp = new Template('<a href="javascript:void(0)" class="chzn-single chzn-default" tabindex="-1"><span>#{default}</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>')
|
21
21
|
@multi_temp = new Template('<ul class="chzn-choices"><li class="search-field"><input type="text" value="#{default}" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>')
|
@@ -25,13 +25,14 @@ class Chosen extends AbstractChosen
|
|
25
25
|
|
26
26
|
set_up_html: ->
|
27
27
|
@container_id = @form_field.identify().replace(/[^\w]/g, '_') + "_chzn"
|
28
|
-
|
28
|
+
|
29
29
|
@f_width = if @form_field.getStyle("width") then parseInt @form_field.getStyle("width"), 10 else @form_field.getWidth()
|
30
|
-
|
30
|
+
|
31
31
|
container_props =
|
32
32
|
'id': @container_id
|
33
33
|
'class': "chzn-container#{ if @is_rtl then ' chzn-rtl' else '' }"
|
34
34
|
'style': 'width: ' + (@f_width) + 'px' #use parens around @f_width so coffeescript doesn't think + ' px' is a function parameter
|
35
|
+
'title': @form_field.title
|
35
36
|
|
36
37
|
base_template = if @is_multiple then new Element('div', container_props).update( @multi_temp.evaluate({ "default": @default_text}) ) else new Element('div', container_props).update( @single_temp.evaluate({ "default":@default_text }) )
|
37
38
|
|
@@ -39,10 +40,10 @@ class Chosen extends AbstractChosen
|
|
39
40
|
@container = $(@container_id)
|
40
41
|
@container.addClassName( "chzn-container-" + (if @is_multiple then "multi" else "single") )
|
41
42
|
@dropdown = @container.down('div.chzn-drop')
|
42
|
-
|
43
|
+
|
43
44
|
dd_top = @container.getHeight()
|
44
45
|
dd_width = (@f_width - get_side_border_padding(@dropdown))
|
45
|
-
|
46
|
+
|
46
47
|
@dropdown.setStyle({"width": dd_width + "px", "top": dd_top + "px"})
|
47
48
|
|
48
49
|
@search_field = @container.down('input')
|
@@ -50,7 +51,7 @@ class Chosen extends AbstractChosen
|
|
50
51
|
this.search_field_scale()
|
51
52
|
|
52
53
|
@search_no_results = @container.down('li.no-results')
|
53
|
-
|
54
|
+
|
54
55
|
if @is_multiple
|
55
56
|
@search_choices = @container.down('ul.chzn-choices')
|
56
57
|
@search_container = @container.down('li.search-field')
|
@@ -59,7 +60,7 @@ class Chosen extends AbstractChosen
|
|
59
60
|
@selected_item = @container.down('.chzn-single')
|
60
61
|
sf_width = dd_width - get_side_border_padding(@search_container) - get_side_border_padding(@search_field)
|
61
62
|
@search_field.setStyle( {"width" : sf_width + "px"} )
|
62
|
-
|
63
|
+
|
63
64
|
this.results_build()
|
64
65
|
this.set_tab_index()
|
65
66
|
@form_field.fire("liszt:ready", {chosen: this})
|
@@ -69,11 +70,11 @@ class Chosen extends AbstractChosen
|
|
69
70
|
@container.observe "mouseup", (evt) => this.container_mouseup(evt)
|
70
71
|
@container.observe "mouseenter", (evt) => this.mouse_enter(evt)
|
71
72
|
@container.observe "mouseleave", (evt) => this.mouse_leave(evt)
|
72
|
-
|
73
|
+
|
73
74
|
@search_results.observe "mouseup", (evt) => this.search_results_mouseup(evt)
|
74
75
|
@search_results.observe "mouseover", (evt) => this.search_results_mouseover(evt)
|
75
76
|
@search_results.observe "mouseout", (evt) => this.search_results_mouseout(evt)
|
76
|
-
|
77
|
+
|
77
78
|
@form_field.observe "liszt:updated", (evt) => this.results_update_field(evt)
|
78
79
|
@form_field.observe "liszt:activate", (evt) => this.activate_field(evt)
|
79
80
|
@form_field.observe "liszt:open", (evt) => this.container_mousedown(evt)
|
@@ -116,7 +117,7 @@ class Chosen extends AbstractChosen
|
|
116
117
|
this.activate_field()
|
117
118
|
else
|
118
119
|
@pending_destroy_click = false
|
119
|
-
|
120
|
+
|
120
121
|
container_mouseup: (evt) ->
|
121
122
|
this.results_reset(evt) if evt.target.nodeName is "ABBR" and not @is_disabled
|
122
123
|
|
@@ -125,7 +126,7 @@ class Chosen extends AbstractChosen
|
|
125
126
|
|
126
127
|
close_field: ->
|
127
128
|
document.stopObserving "click", @click_test_action
|
128
|
-
|
129
|
+
|
129
130
|
@active_field = false
|
130
131
|
this.results_hide()
|
131
132
|
|
@@ -178,7 +179,7 @@ class Chosen extends AbstractChosen
|
|
178
179
|
this.search_field_disabled()
|
179
180
|
this.show_search_field_default()
|
180
181
|
this.search_field_scale()
|
181
|
-
|
182
|
+
|
182
183
|
@search_results.update content
|
183
184
|
@parsing = false
|
184
185
|
|
@@ -189,7 +190,7 @@ class Chosen extends AbstractChosen
|
|
189
190
|
'<li id="' + group.dom_id + '" class="group-result">' + group.label.escapeHTML() + '</li>'
|
190
191
|
else
|
191
192
|
""
|
192
|
-
|
193
|
+
|
193
194
|
result_do_highlight: (el) ->
|
194
195
|
this.result_clear_highlight()
|
195
196
|
|
@@ -207,7 +208,7 @@ class Chosen extends AbstractChosen
|
|
207
208
|
@search_results.scrollTop = if (high_bottom - maxHeight) > 0 then (high_bottom - maxHeight) else 0
|
208
209
|
else if high_top < visible_top
|
209
210
|
@search_results.scrollTop = high_top
|
210
|
-
|
211
|
+
|
211
212
|
result_clear_highlight: ->
|
212
213
|
@result_highlight.removeClassName('highlighted') if @result_highlight
|
213
214
|
@result_highlight = null
|
@@ -303,6 +304,8 @@ class Chosen extends AbstractChosen
|
|
303
304
|
|
304
305
|
link.up('li').remove()
|
305
306
|
|
307
|
+
this.search_field_scale()
|
308
|
+
|
306
309
|
results_reset: ->
|
307
310
|
@form_field.options[0].selected = true
|
308
311
|
@selected_item.down("span").update(@default_text)
|
@@ -316,7 +319,7 @@ class Chosen extends AbstractChosen
|
|
316
319
|
@current_value = @form_field.value
|
317
320
|
deselect_trigger = @selected_item.down("abbr")
|
318
321
|
deselect_trigger.remove() if(deselect_trigger)
|
319
|
-
|
322
|
+
|
320
323
|
result_select: (evt) ->
|
321
324
|
if @result_highlight
|
322
325
|
high = @result_highlight
|
@@ -328,9 +331,9 @@ class Chosen extends AbstractChosen
|
|
328
331
|
@search_results.descendants(".result-selected").invoke "removeClassName", "result-selected"
|
329
332
|
@selected_item.removeClassName("chzn-default")
|
330
333
|
@result_single_selected = high
|
331
|
-
|
334
|
+
|
332
335
|
high.addClassName("result-selected")
|
333
|
-
|
336
|
+
|
334
337
|
position = high.id.substr(high.id.lastIndexOf("_") + 1 )
|
335
338
|
item = @results_data[position]
|
336
339
|
item.selected = true
|
@@ -343,13 +346,13 @@ class Chosen extends AbstractChosen
|
|
343
346
|
@selected_item.down("span").update(item.html)
|
344
347
|
this.single_deselect_control_build() if @allow_single_deselect
|
345
348
|
|
346
|
-
this.results_hide() unless evt.metaKey and @is_multiple
|
349
|
+
this.results_hide() unless (evt.metaKey or evt.ctrlKey) and @is_multiple
|
347
350
|
|
348
351
|
@search_field.value = ""
|
349
|
-
|
352
|
+
|
350
353
|
@form_field.simulate("change") if typeof Event.simulate is 'function' && (@is_multiple || @form_field.value != @current_value)
|
351
354
|
@current_value = @form_field.value
|
352
|
-
|
355
|
+
|
353
356
|
this.search_field_scale()
|
354
357
|
|
355
358
|
result_activate: (el) ->
|
@@ -360,7 +363,7 @@ class Chosen extends AbstractChosen
|
|
360
363
|
|
361
364
|
result_deselect: (pos) ->
|
362
365
|
result_data = @results_data[pos]
|
363
|
-
|
366
|
+
|
364
367
|
if not @form_field.options[result_data.options_index].disabled
|
365
368
|
result_data.selected = false
|
366
369
|
|
@@ -376,7 +379,7 @@ class Chosen extends AbstractChosen
|
|
376
379
|
return true
|
377
380
|
else
|
378
381
|
return false
|
379
|
-
|
382
|
+
|
380
383
|
single_deselect_control_build: ->
|
381
384
|
@selected_item.down("span").insert { after: "<abbr class=\"search-choice-close\"></abbr>" } if @allow_single_deselect and not @selected_item.down("abbr")
|
382
385
|
|
@@ -397,11 +400,11 @@ class Chosen extends AbstractChosen
|
|
397
400
|
else if not (@is_multiple and option.selected)
|
398
401
|
found = false
|
399
402
|
result_id = option.dom_id
|
400
|
-
|
403
|
+
|
401
404
|
if regex.test option.html
|
402
405
|
found = true
|
403
406
|
results += 1
|
404
|
-
else if option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0
|
407
|
+
else if @search_split_words and (option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0)
|
405
408
|
#TODO: replace this substitution of /\[\]/ with a list of characters to skip.
|
406
409
|
parts = option.html.replace(/\[|\]/g, "").split(" ")
|
407
410
|
if parts.length
|
@@ -452,10 +455,10 @@ class Chosen extends AbstractChosen
|
|
452
455
|
do_high = @search_results.down(".active-result")
|
453
456
|
|
454
457
|
this.result_do_highlight do_high if do_high?
|
455
|
-
|
458
|
+
|
456
459
|
no_results: (terms) ->
|
457
460
|
@search_results.insert @no_results_temp.evaluate( terms: terms )
|
458
|
-
|
461
|
+
|
459
462
|
no_results_clear: ->
|
460
463
|
nr = null
|
461
464
|
nr.remove() while nr = @search_results.down(".no-results")
|
@@ -509,7 +512,7 @@ class Chosen extends AbstractChosen
|
|
509
512
|
this.search_field_scale()
|
510
513
|
|
511
514
|
this.clear_backstroke() if stroke != 8 and this.pending_backstroke
|
512
|
-
|
515
|
+
|
513
516
|
switch stroke
|
514
517
|
when 8
|
515
518
|
@backstroke_length = this.search_field.value.length
|
@@ -536,10 +539,10 @@ class Chosen extends AbstractChosen
|
|
536
539
|
|
537
540
|
style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"
|
538
541
|
styles = ['font-size','font-style', 'font-weight', 'font-family','line-height', 'text-transform', 'letter-spacing']
|
539
|
-
|
542
|
+
|
540
543
|
for style in styles
|
541
544
|
style_block += style + ":" + @search_field.getStyle(style) + ";"
|
542
|
-
|
545
|
+
|
543
546
|
div = new Element('div', { 'style' : style_block }).update(@search_field.value.escapeHTML())
|
544
547
|
document.body.appendChild(div)
|
545
548
|
|
@@ -557,7 +560,7 @@ class Chosen extends AbstractChosen
|
|
557
560
|
root.Chosen = Chosen
|
558
561
|
|
559
562
|
# Prototype does not support version numbers so we add it ourselves
|
560
|
-
if Prototype.Browser.IE
|
563
|
+
if Prototype.Browser.IE
|
561
564
|
if /MSIE (\d+\.\d+);/.test(navigator.userAgent)
|
562
565
|
Prototype.BrowserFeatures['Version'] = new Number(RegExp.$1);
|
563
566
|
|
@@ -29,6 +29,7 @@ class AbstractChosen
|
|
29
29
|
@allow_single_deselect = if @options.allow_single_deselect? and @form_field.options[0]? and @form_field.options[0].text is "" then @options.allow_single_deselect else false
|
30
30
|
@disable_search_threshold = @options.disable_search_threshold || 0
|
31
31
|
@disable_search = @options.disable_search || false
|
32
|
+
@search_split_words = not (@options.disable_search_split_words || false)
|
32
33
|
@search_contains = @options.search_contains || false
|
33
34
|
@choices = 0
|
34
35
|
@single_backstroke_delete = @options.single_backstroke_delete || false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chosen-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.10
|
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
|
+
date: 2012-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|