| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| App.JqueryChosenView = Em.View.extend({ |
| templateName: require('templates/common/chosen_plugin'), |
| tagName: 'select', |
| // This needs to be binded from template |
| elementId: '', |
| title: '', |
| options: [], |
| /** |
| * @name: selectionObj {Object} |
| * Object = { |
| * placeholder_text: {String} |
| * no_results_text: {String} |
| * nChangeCallback: {Function} |
| * } |
| */ |
| selectionObj: {}, |
| |
| didInsertElement: function () { |
| var self = this; |
| var elementId = "#" + self.get("elementId"); |
| $(elementId).chosen({ |
| search_contains: true, |
| placeholder_text: self.get('selectionObj.placeholder_text'), |
| no_results_text: self.get('selectionObj.no_results_text') |
| }).change(self.get('selectionObj.onChangeCallback')); |
| |
| // Expand the dropdown to accommodate the largest option on mouseenter event |
| // and reset it to the original fixed width on the mouseleave event |
| Em.run.later(this, function() { |
| var chosenDropDownId = elementId + '_chosen' + ' .chosen-drop'; |
| var chosenDropDownEl; |
| $(chosenDropDownId) |
| .each(function() { |
| chosenDropDownEl = $(this); |
| chosenDropDownEl.data("origWidth", chosenDropDownEl.outerWidth()); |
| }) |
| .mouseenter(function(){ |
| $(this).css("width", "auto"); |
| }) |
| .mouseleave(function(){ |
| chosenDropDownEl = $(this); |
| chosenDropDownEl.css("width", chosenDropDownEl.data("origWidth")); |
| }); |
| }, 1000); |
| } |
| }); |