Roo/bootstrap/NavProgressItem.js
[roojs1] / Roo / bootstrap / NavProgressItem.js
1 /*
2  * - LGPL
3  *
4  * Nav Progress Item
5  * 
6  */
7
8 /**
9  * @class Roo.bootstrap.NavProgressItem
10  * @extends Roo.bootstrap.Component
11  * Bootstrap NavProgressItem class
12  * @cfg {String} rid the reference id
13  * @cfg {Boolean} active (true|false) Is item active default false
14  * @cfg {Boolean} disabled (true|false) Is item active default false
15  * @cfg {String} html
16  * @cfg {String} position (top|bottom) text position default bottom
17  * @cfg {String} icon show icon instead of number
18  * @cfg {Boolean} forceIcon (true|false) true to force show icon..
19  * 
20  * @constructor
21  * Create a new NavProgressItem
22  * @param {Object} config The config object
23  */
24 Roo.bootstrap.NavProgressItem = function(config){
25     Roo.bootstrap.NavProgressItem.superclass.constructor.call(this, config);
26     this.addEvents({
27         // raw events
28         /**
29          * @event click
30          * The raw click event for the entire grid.
31          * @param {Roo.bootstrap.NavProgressItem} this
32          * @param {Roo.EventObject} e
33          */
34         "click" : true
35     });
36    
37 };
38
39 Roo.extend(Roo.bootstrap.NavProgressItem, Roo.bootstrap.Component,  {
40     
41     rid : '',
42     active : false,
43     disabled : false,
44     html : '',
45     position : 'bottom',
46     icon : false,
47     forceIcon : false,
48     
49     getAutoCreate : function()
50     {
51         var iconCls = 'roo-navigation-bar-item-icon';
52         
53         if(this.icon){
54             iconCls += (this.icon) ? (' ' + this.icon) : (' step-number') ;
55         }
56         
57         var cfg = {
58             tag: 'li',
59             cls: 'roo-navigation-bar-item',
60             cn : [
61                 {
62                     tag : 'i',
63                     cls : iconCls
64                 }
65             ]
66         }
67         
68         if(this.active){
69             cfg.cls += ' active';
70         }
71         if(this.disabled){
72             cfg.cls += ' disabled';
73         }
74         
75         return cfg;
76     },
77     
78     disable : function()
79     {
80         this.setDisabled(true);
81     },
82     
83     enable : function()
84     {
85         this.setDisabled(false);
86     },
87     
88     initEvents: function() 
89     {
90         this.iconEl = this.el.select('.roo-navigation-bar-item-icon', true).first();
91         
92         this.iconEl.on('click', this.onClick, this);
93     },
94     
95     onClick : function(e)
96     {
97         e.preventDefault();
98         
99         if(this.disabled){
100             return;
101         }
102         
103         if(this.fireEvent('click', this, e) === false){
104             return;
105         };
106         
107         this.parent().setActiveItem(this);
108     },
109     
110     isActive: function () 
111     {
112         return this.active;
113     },
114     
115     setActive : function(state)
116     {
117         if(this.active == state){
118             return;
119         }
120         
121         this.active = state;
122         
123         if (state) {
124             this.el.addClass('active');
125             return;
126         }
127         
128         this.el.removeClass('active');
129         
130         return;
131     },
132     
133     setDisabled : function(state)
134     {
135         if(this.disabled == state){
136             return;
137         }
138         
139         this.disabled = state;
140         
141         if (state) {
142             this.el.addClass('disabled');
143             return;
144         }
145         
146         this.el.removeClass('disabled');
147     },
148     
149     tooltipEl : function()
150     {
151         return this.el.select('.roo-navigation-bar-item-icon', true).first();;
152     }
153 });
154  
155
156