Roo/bootstrap/NavGroup.js
[roojs1] / Roo / bootstrap / NavGroup.js
1 /*
2  * - LGPL
3  *
4  * nav group
5  * 
6  */
7
8 /**
9  * @class Roo.bootstrap.NavGroup
10  * @extends Roo.bootstrap.Component
11  * Bootstrap NavGroup class
12  * @cfg {String} align left | right
13  * @cfg {Boolean} inverse false | true
14  * @cfg {String} type (nav|pills|tab) default nav
15  * @cfg {String} navId - reference Id for navbar.
16
17  * 
18  * @constructor
19  * Create a new nav group
20  * @param {Object} config The config object
21  */
22
23 Roo.bootstrap.NavGroup = function(config){
24     Roo.bootstrap.NavGroup.superclass.constructor.call(this, config);
25     this.navItems = [];
26     Roo.bootstrap.NavGroup.register(this);
27      this.addEvents({
28         /**
29              * @event changed
30              * Fires when the active item changes
31              * @param {Roo.bootstrap.NavGroup} this
32              * @param {Roo.bootstrap.Navbar.Item} item The item selected
33              * @param {Roo.bootstrap.Navbar.Item} item The previously selected item 
34          */
35         'changed': true
36      });
37     
38 };
39
40 Roo.extend(Roo.bootstrap.NavGroup, Roo.bootstrap.Component,  {
41     
42     align: '',
43     inverse: false,
44     form: false,
45     type: 'nav',
46     navId : '',
47     // private
48     
49     navItems : false,
50     
51     getAutoCreate : function()
52     {
53         var cfg = Roo.apply({}, Roo.bootstrap.NavGroup.superclass.getAutoCreate.call(this));
54         
55         cfg = {
56             tag : 'ul',
57             cls: 'nav' 
58         }
59         
60         if (['tabs','pills'].indexOf(this.type)!==-1) {
61             cfg.cls += ' nav-' + this.type
62         } else {
63             if (this.type!=='nav') {
64                 Roo.log('nav type must be nav/tabs/pills')
65             }
66             cfg.cls += ' navbar-nav'
67         }
68         Roo.log('parent');
69         
70         Roo.log(this.parent());
71         
72         if(this.parent() instanceof Roo.bootstrap.NavSidebar){
73             Roo.log('true');
74         }
75         if (this.parent().sidebar === true) {
76             cfg = {
77                 tag: 'ul',
78                 cls: 'dashboard-menu'
79             }
80             
81             return cfg;
82         }
83         
84         if (this.form === true) {
85             cfg = {
86                 tag: 'form',
87                 cls: 'navbar-form'
88             }
89             
90             if (this.align === 'right') {
91                 cfg.cls += ' navbar-right';
92             } else {
93                 cfg.cls += ' navbar-left';
94             }
95         }
96         
97         if (this.align === 'right') {
98             cfg.cls += ' navbar-right';
99         }
100         
101         if (this.inverse) {
102             cfg.cls += ' navbar-inverse';
103             
104         }
105         
106         
107         return cfg;
108     },
109     
110     setActiveItem : function(item)
111     {
112         var prev = false;
113         Roo.each(this.navItems, function(v){
114             if (v == item) {
115                 return ;
116             }
117             if (v.isActive()) {
118                 v.setActive(false, true);
119                 prev = v;
120                 
121             }
122             
123         });
124
125         item.setActive(true, true);
126         this.fireEvent('changed', this, item, prev);
127         
128         
129     },
130     
131     
132     register : function(item)
133     {
134         this.navItems.push( item);
135         item.navId = this.navId;
136     
137     },
138     getNavItem: function(tabId)
139     {
140         var ret = false;
141         Roo.each(this.navItems, function(e) {
142             if (e.tabId == tabId) {
143                ret =  e;
144                return false;
145             }
146             return true;
147             
148         });
149         return ret;
150     }
151 });
152
153  
154 Roo.apply(Roo.bootstrap.NavGroup, {
155     
156     groups: {},
157     
158     register : function(navgrp)
159     {
160         this.groups[navgrp.navId] = navgrp;
161         
162     },
163     get: function(navId) {
164         return this.groups[navId];
165     }
166     
167     
168     
169 });
170
171