* @class Roo.bootstrap.Navbar
* @extends Roo.bootstrap.Component
* Bootstrap Navbar class
- * @cfg {Boolean} bar is a bar?
- * @cfg {String} position (fixed-top|fixed-bottom|static-top) position
- * @cfg {String} brand what is brand
- * @cfg {Boolean} inverse is inverted color
- * @cfg {String} type (nav | pills | tabs)
- * @cfg {Boolean} arrangement stacked | justified
- * @cfg {String} align (left | right) alignment
- * @cfg {String} brand_href href of the brand
- * @cfg {Boolean} main (true|false) main nav bar? default false
- * @cfg {Boolean} loadMask (true|false) loadMask on the bar
- * @cfg {String} tag (header|footer|nav|div) default is nav
- *
* @constructor
* Create a new Navbar
* @param {Object} config The config object
Roo.bootstrap.Navbar = function(config){
Roo.bootstrap.Navbar.superclass.constructor.call(this, config);
-
+ this.addEvents({
+ // raw events
+ /**
+ * @event beforetoggle
+ * Fire before toggle the menu
+ * @param {Roo.EventObject} e
+ */
+ "beforetoggle" : true
+ });
};
Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component, {
- bar: false,
- brand: '',
- inverse: false,
- position: '',
- align : false,
- type: false,
- arrangement: '',
- brand_href: false,
- main : false,
- loadMask : false,
- tag : false,
-
+
// private
navItems : false,
+ loadMask : false,
+
getAutoCreate : function(){
+ throw { message : "nav bar is now a abstract base class - use NavSimplebar / NavHeaderbar / NavSidebar etc..."};
- var cfg = {
- cls : 'navbar'
- };
-
-
- cfg.cn = [
- {
- cls: 'nav',
- tag : 'ul'
- }
- ];
-
-
- this.type = this.type || 'nav';
- if (['tabs','pills'].indexOf(this.type)!==-1) {
- cfg.cn[0].cls += ' nav-' + this.type
- } else {
- if (this.type!=='nav') {
- Roo.log('nav type must be nav/tabs/pills')
- }
- cfg.cn[0].cls += ' navbar-nav'
- }
-
- if (['stacked','justified'].indexOf(this.arrangement)!==-1) {
- cfg.cn[0].cls += ' nav-' + this.arrangement;
- }
-
-
- if (this.align === 'right') {
- cfg.cn[0].cls += ' navbar-right';
- }
-
- if (this.inverse) {
- cfg.cls += ' navbar-inverse';
-
- }
-
-
- return cfg;
},
initEvents :function ()
{
//Roo.log(this.el.select('.navbar-toggle',true));
this.el.select('.navbar-toggle',true).on('click', function() {
- // Roo.log('click');
- this.el.select('.navbar-collapse',true).toggleClass('in');
+ if(this.fireEvent('beforetoggle', this) !== false){
+ var ce = this.el.select('.navbar-collapse',true).first();
+ ce.toggleClass('in'); // old...
+ if (ce.hasClass('collapse')) {
+ // show it...
+ ce.removeClass('collapse');
+ ce.addClass('show');
+
+ ce.setHeight(ce.getHeight()); // resize it ...
+ ce.removeClass('collapsing');
+ ce.addClass('collapsing');
+
+ // now flag it as moving..
+
+
+ (function() { ce.removeClass('collapsing'); }).defer(500);
+ } else {
+ ce.addClass('collapsing');
+ ce.removeClass('show');
+ (function() {
+ ce.removeClass('collapsing');
+ ce.addClass('collapse');
+ }).defer(200);
+
+ }
+ }
+
}, this);
var mark = {
tag: "div",
cls:"x-dlg-mask"
- }
+ };
this.maskEl = Roo.DomHelper.append(this.el, mark, true);
getChildContainer : function()
{
- if (this.bar === true) {
+ if (this.el.select('.collapse').getCount()) {
return this.el.select('.collapse',true).first();
}
unmask : function()
{
this.maskEl.hide();
- }
+ }
+