1 define(function(require) {
5 var _ = require('libs/underscore'),
6 $ = require('libs/jquery'),
7 Backbone = require('libs/backbone'),
8 template = require('libs/text!./template.html'),
9 itemTemplate = require('libs/text!./itemTemplate.html');
12 var OpenSelect = Backbone.View.extend({
13 className: 'openSelect',
15 'click a': 'onSelection',
17 initialize: function() {
18 this.$el.css('position', 'relative');
19 this.$el.append(_.template(template)({value: this.options.value || ''}));
20 this.$('.toggle').dropdown();
21 this.menu = this.$('.dropdown-menu');
22 this.toggleHandler(false);
23 if(this.options.inputTemplate) {
24 this.input = $(this.options.inputTemplate);
25 this.$('.input-wrapper').append(this.input);
27 if(this.options.maxHeight) {
28 this.menu.css('max-height', this.options.maxHeight);
30 if(this.options.maxWidth) {
31 this.menu.css('max-width', this.options.maxWidth);
34 toggleHandler: function(toggle) {
35 this.$('.toggle').css('visibility', toggle ? 'inherit' : 'hidden');
37 addItem: function(value) {
38 this.menu.append(_.template(itemTemplate)({value: value}));
39 this.toggleHandler(true);
41 clearItems: function() {
43 this.toggleHandler(false);
45 setInput: function(value) {
46 if(this.options.setInput) {
47 this.options.setInput(this.input, value);
50 onSelection: function(e) {
51 var val = $(e.target).text();
53 this.trigger('itemSelected', this.input.val());