49cecca136afd68e0db77b0288e53c5329824d05
[ccsdk/features.git] /
1 /**
2  * Copyright 2010-2013 Ben Birch
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this software except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 (function( app ) {
17
18         var ui = app.ns("ui");
19
20         ui.SelectMenuPanel = ui.MenuPanel.extend({
21                 defaults: {
22                         items: [],              // (required) an array of menu items
23                         value: null
24                 },
25                 _baseCls: "uiSelectMenuPanel uiMenuPanel",
26                 init: function() {
27                         this.value = this.config.value;
28                         this._super();
29                 },
30                 _getItems: function() {
31                         return this.config.items.map( function( item ) {
32                                 return {
33                                         text: item.text,
34                                         selected: this.value === item.value,
35                                         onclick: function( jEv ) {
36                                                 var el = $( jEv.target ).closest("LI");
37                                                 el.parent().children().removeClass("selected");
38                                                 el.addClass("selected");
39                                                 this.fire( "select", this, { value: item.value } );
40                                                 this.value = item.value;
41                                         }.bind(this)
42                                 };
43                         }, this );
44
45                 }
46         });
47
48 })( this.app );