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