vendor/assets/javascripts/chosen.proto.coffee in chosen-rails-0.9.13 vs vendor/assets/javascripts/chosen.proto.coffee in chosen-rails-0.9.14
- old
+ new
@@ -15,12 +15,12 @@
set_default_values: ->
super()
# HTML Templates
- @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>')
- @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>')
+ @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"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>')
+ @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"><ul class="chzn-results"></ul></div>')
@choice_temp = new Template('<li class="search-choice" id="#{id}"><span>#{choice}</span><a href="javascript:void(0)" class="search-choice-close" rel="#{position}"></a></li>')
@choice_noclose_temp = new Template('<li class="search-choice search-choice-disabled" id="#{id}"><span>#{choice}</span></li>')
@no_results_temp = new Template('<li class="no-results">' + @results_none_found + ' "<span>#{terms}</span>"</li>')
set_up_html: ->
@@ -67,10 +67,12 @@
@container.observe "mouseleave", (evt) => this.mouse_leave(evt)
@search_results.observe "mouseup", (evt) => this.search_results_mouseup(evt)
@search_results.observe "mouseover", (evt) => this.search_results_mouseover(evt)
@search_results.observe "mouseout", (evt) => this.search_results_mouseout(evt)
+ @search_results.observe "mousewheel", (evt) => this.search_results_mousewheel(evt)
+ @search_results.observe "DOMMouseScroll", (evt) => this.search_results_mousewheel(evt)
@form_field.observe "liszt:updated", (evt) => this.results_update_field(evt)
@form_field.observe "liszt:activate", (evt) => this.activate_field(evt)
@form_field.observe "liszt:open", (evt) => this.container_mousedown(evt)
@@ -112,10 +114,17 @@
this.activate_field()
container_mouseup: (evt) ->
this.results_reset(evt) if evt.target.nodeName is "ABBR" and not @is_disabled
+ search_results_mousewheel: (evt) ->
+ delta = -evt.wheelDelta or evt.detail
+ if delta?
+ evt.preventDefault()
+ delta = delta * 40 if evt.type is 'DOMMouseScroll'
+ @search_results.scrollTop = delta + @search_results.scrollTop
+
blur_test: (evt) ->
this.close_field() if not @active_field and @container.hasClassName("chzn-container-active")
close_field: ->
document.stopObserving "click", @click_test_action
@@ -205,32 +214,32 @@
result_clear_highlight: ->
@result_highlight.removeClassName('highlighted') if @result_highlight
@result_highlight = null
results_show: ->
- if not @is_multiple
- @selected_item.addClassName('chzn-single-with-drop')
- if @result_single_selected
- this.result_do_highlight( @result_single_selected )
- else if @max_selected_options <= @choices
+ if @result_single_selected?
+ this.result_do_highlight @result_single_selected
+ else if @is_multiple and @max_selected_options <= @choices
@form_field.fire("liszt:maxselected", {chosen: this})
return false
+ @container.addClassName "chzn-with-drop"
@form_field.fire("liszt:showing_dropdown", {chosen: this})
- @dropdown.setStyle {"left":0}
+
@results_showing = true
@search_field.focus()
@search_field.value = @search_field.value
this.winnow_results()
results_hide: ->
- @selected_item.removeClassName('chzn-single-with-drop') unless @is_multiple
this.result_clear_highlight()
+
+ @container.removeClassName "chzn-with-drop"
@form_field.fire("liszt:hiding_dropdown", {chosen: this})
- @dropdown.setStyle({"left":"-9000px"})
+
@results_showing = false
set_tab_index: (el) ->
if @form_field.tabIndex
@@ -266,16 +275,10 @@
this.result_do_highlight( target ) if target
search_results_mouseout: (evt) ->
this.result_clear_highlight() if evt.target.hasClassName('active-result') or evt.target.up('.active-result')
-
- choices_click: (evt) ->
- evt.preventDefault()
- if( @active_field and not(evt.target.hasClassName('search-choice') or evt.target.up('.search-choice')) and not @results_showing )
- this.results_show()
-
choice_build: (item) ->
if @is_multiple and @max_selected_options <= @choices
@form_field.fire("liszt:maxselected", {chosen: this})
return false
choice_id = @container_id + "_c_" + item.array_index
@@ -554,12 +557,5 @@
w = @f_width - 10
@search_field.setStyle({'width': w + 'px'})
root.Chosen = Chosen
-
-
-get_side_border_padding = (elmt) ->
- layout = new Element.Layout(elmt)
- side_border_padding = layout.get("border-left") + layout.get("border-right") + layout.get("padding-left") + layout.get("padding-right")
-
-root.get_side_border_padding = get_side_border_padding