var cfg = {
tag : this.tag || 'div',
- cls : 'navbar navbar-expand-lg'
+ cls : 'navbar navbar-expand-lg roo-navbar-simple'
};
if (['light','white'].indexOf(this.weight) > -1) {
cfg.cls += ['light','white'].indexOf(this.weight) > -1 ? ' navbar-light' : ' navbar-dark';
// i'm not actually sure these are really used - normally we add a navGroup to a navbar
- if (Roo.bootstrap.version == 4) {
- return cfg;
- }
+ //if (Roo.bootstrap.version == 4) {
+ // return cfg;
+ //}
cfg.cn = [
{
this.type = this.type || 'nav';
- if (['tabs','pills'].indexOf(this.type)!==-1) {
+ if (['tabs','pills'].indexOf(this.type) != -1) {
cfg.cn[0].cls += ' nav-' + this.type
- if (['stacked','justified'].indexOf(this.arrangement)!==-1) {
+ if (['stacked','justified'].indexOf(this.arrangement) != -1) {
cfg.cn[0].cls += ' nav-' + this.arrangement;
}
cfg.cls += this.inverse ? ' navbar-inverse navbar-dark bg-dark' : ' navbar-default';
+ if (['light','white'].indexOf(this.weight) > -1) {
+ cfg.cls += ['light','white'].indexOf(this.weight) > -1 ? ' navbar-light' : ' navbar-dark';
+ }
+ cfg.cls += ' bg-' + this.weight;
+
+
if (['fixed-top','fixed-bottom','static-top'].indexOf(this.position)>-1) {
cfg.cls += ' navbar-' + this.position + ' ' + this.position ;
cls: 'nav'
};
if (Roo.bootstrap.version == 4) {
- if (this.type == 'pills') {
- cfg.cls = ' nav-pills';
+ if (['tabs','pills'].indexOf(this.type) != -1) {
+ cfg.cls += ' nav-' + this.type;
+ } else {
+ cfg.cls += ' navbar-nav';
}
} else {
- if (['tabs','pills'].indexOf(this.type)!==-1) {
+ if (['tabs','pills'].indexOf(this.type) != -1) {
cfg.cls += ' nav-' + this.type
} else {
if (this.type !== 'nav') {
* @extends Roo.bootstrap.Component
* Bootstrap Navbar.NavItem class
* @cfg {String} href link to
+ * @cfg {String} button_weight (default | primary | secondary | success | info | warning | danger | link ) default none
+
* @cfg {String} html content of button
* @cfg {String} badge text inside badge
* @cfg {String} badgecls (bg-green|bg-red|bg-yellow)the extra classes for the badge
disabled : false,
animateRef : false,
was_active : false,
+ button_weight : '',
+ button_outline : false,
+
+ navLink: false,
getAutoCreate : function(){
var cfg = {
tag: this.tag,
cls: 'nav-item'
-
};
if (this.active) {
if (this.disabled) {
cfg.cls += ' disabled';
}
+
+ // BS4 only?
+ if (this.button_weight.length) {
+ cfg.tag = this.href ? 'a' : 'button';
+ cfg.html = this.html || '';
+ cfg.cls += ' btn btn' + (this.btn_outline ? '-outline' : '') + '-' + this.button_weight;
+ if (this.href) {
+ cfg.href = this.href;
+ }
+ if (this.fa) {
+ cfg.html = '<i class="fa fas fa-'+this.fa+'"></i> <span>' + this.html + '</span>';
+ }
+
+ // menu .. should add dropdown-menu class - so no need for carat..
+
+ if (this.badge !== '') {
+
+ cfg.html += ' <span class="badge badge-secondary">' + this.badge + '</span>';
+ }
+ return cfg;
+ }
if (this.href || this.html || this.glyphicon || this.icon || this.fa) {
cfg.cn = [
cfg.cn[0].cls = 'nav-link';
}
if (this.icon) {
- cfg.cn[0].html = '<i class="'+this.icon+'"></i> <span>' + cfg.cn[0].html + '</span>'
+ cfg.cn[0].html = '<i class="'+this.icon+'"></i> <span>' + cfg.cn[0].html + '</span>';
}
if (this.fa) {
- cfg.cn[0].html = '<i class="fa fas fa-'+this.fa+'"></i> <span>' + cfg.cn[0].html + '</span>'
+ cfg.cn[0].html = '<i class="fa fas fa-'+this.fa+'"></i> <span>' + cfg.cn[0].html + '</span>';
}
if(this.glyphicon) {
cfg.cn[0].html = '<span class="glyphicon glyphicon-' + this.glyphicon + '"></span> ' + cfg.cn[0].html;
this.tag = 'div';
}
- return Roo.bootstrap.NavItem.superclass.onRender.call(this, ct, position);
+ var ret = Roo.bootstrap.NavItem.superclass.onRender.call(this, ct, position);
+ this.navLink = this.el.select('.nav-link',true).first();
+ return ret;
},
if (!state ) {
this.el.removeClass('active');
+ this.navLink ? this.navLink.removeClass('active') : false;
} else if (!this.el.hasClass('active')) {
+
this.el.addClass('active');
+ if (Roo.bootstrap.version == 4 && this.navLink ) {
+ this.navLink.addClass('active');
+ }
+
}
if (fire) {
this.fireEvent('changed', this, state);
/**
- * @cfg {String} invalidClass The CSS class to use when marking a field invalid (defaults to "x-form-invalid")
+ * @cfg {String} invalidClass DEPRICATED - code uses BS4 - is-valid / is-invalid
*/
invalidClass : "has-warning",
/**
- * @cfg {String} validClass The CSS class to use when marking a field valid (defaults to "x-form-invalid")
+ * @cfg {String} validClass DEPRICATED - code uses BS4 - is-valid / is-invalid
*/
validClass : "has-success",
return;
}
-
- this.el.removeClass(this.invalidClass);
+
+ this.el.removeClass([this.invalidClass, 'is-invalid']);
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank){
}
if (Roo.bootstrap.version == 3) {
this.el.addClass(this.validClass);
+ } else {
+ this.inputEl().addClass('is-valid');
}
-
- this.inputEl().addClass('is-valid');
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank && (this.getValue().length || this.forceFeedback)){
}
if (Roo.bootstrap.version == 3) {
this.el.addClass(this.invalidClass);
+ } else {
+ this.inputEl().addClass('is-invalid');
}
- this.inputEl().addClass('is-invalid');
+
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank){
if(label && icon){
icon.remove();
}
-
- this.el.removeClass(this.invalidClass);
-
+ this.el.removeClass( this.validClass);
+ this.inputEl().removeClass('is-invalid');
+
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank){
var feedback = this.el.select('.form-control-feedback', true).first();
}
this.el.removeClass([this.invalidClass, this.validClass]);
+ this.inputEl().removeClass(['is-valid', 'is-invalid']);
var feedback = this.el.select('.form-control-feedback', true).first();
if(label && icon){
icon.remove();
}
+ if (Roo.bootstrap.version == 3) {
+ this.el.addClass(this.validClass);
+ } else {
+ this.inputEl().addClass('is-valid');
+ }
- this.el.addClass(this.validClass);
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank && (this.getValue().length || this.forceFeedback)){
}
this.el.removeClass([this.invalidClass, this.validClass]);
+ this.inputEl().removeClass(['is-valid', 'is-invalid']);
var feedback = this.el.select('.form-control-feedback', true).first();
style : 'margin-right:5px;'
}, label, true);
}
-
- this.el.addClass(this.invalidClass);
+ if (Roo.bootstrap.version == 3) {
+ this.el.addClass(this.invalidClass);
+ } else {
+ this.inputEl().addClass('is-invalid');
+ }
+
+ // fixme ... this may be depricated need to test..
if(this.hasFeedback && this.inputType != 'hidden' && !this.allowBlank){
var feedback = this.el.select('.form-control-feedback', true).first();
multiple : false,
/**
- * @cfg {String} invalidClass The CSS class to use when marking a field invalid (defaults to "x-form-invalid")
+ * @cfg {String} invalidClass DEPRICATED - uses BS4 is-valid now
*/
invalidClass : "has-warning",
/**
- * @cfg {String} validClass The CSS class to use when marking a field valid (defaults to "x-form-invalid")
+ * @cfg {String} validClass DEPRICATED - uses BS4 is-valid now
*/
validClass : "has-success",
{
if(this.transition || typeof(pan) == 'undefined'){
Roo.log("waiting for the transitionend");
- return;
+ return false;
}
if (typeof(pan) == 'number') {
if (this.carousel && typeof(Roo.get(document.body).dom.style.transition) != 'undefined') {
+ //class="carousel-item carousel-item-next carousel-item-left"
+
this.transition = true;
var dir = this.indexOfPanel(pan) > this.indexOfPanel(cur) ? 'next' : 'prev';
var lr = dir == 'next' ? 'left' : 'right';
pan.el.addClass(dir); // or prev
+ pan.el.addClass('carousel-item-' + dir); // or prev
pan.el.dom.offsetWidth; // find the offset with - causing a reflow?
cur.el.addClass(lr); // or right
pan.el.addClass(lr);
+ cur.el.addClass('carousel-item-' +lr); // or right
+ pan.el.addClass('carousel-item-' +lr);
+
var _this = this;
cur.el.on('transitionend', function() {
Roo.log("trans end?");
- pan.el.removeClass([lr,dir]);
+ pan.el.removeClass([lr,dir, 'carousel-item-' + lr, 'carousel-item-' + dir]);
pan.setActive(true);
- cur.el.removeClass([lr]);
+ cur.el.removeClass([lr, 'carousel-item-' + lr]);
cur.setActive(false);
_this.transition = false;
href : '',
getAutoCreate : function(){
- var cfg = {
+
+
+ var cfg = {
tag: 'div',
// item is needed for carousel - not sure if it has any effect otherwise
- cls: 'tab-pane item' + ((this.href.length) ? ' clickable ' : ''),
+ cls: 'carousel-item tab-pane item' + ((this.href.length) ? ' clickable ' : ''),
html: this.html || ''
};
cfg.tabId = this.tabId;
}
+
return cfg;
},
if(this.inputType == 'radio'){
Roo.each(this.el.up('form').select('input[name='+this.name+']', true).elements, function(e){
- e.findParent('.form-group', false, true).removeClass([_this.invalidClass, _this.validClass]);
- e.findParent('.form-group', false, true).addClass(_this.validClass);
+ var fg = e.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([_this.invalidClass, _this.validClass]);
+ fg.addClass(_this.validClass);
+ } else {
+ fg.removeClass(['is-valid', 'is-invalid']);
+ fg.addClass('is-valid');
+ }
});
return;
}
if(!this.groupId){
- this.el.findParent('.form-group', false, true).removeClass([this.invalidClass, this.validClass]);
- this.el.findParent('.form-group', false, true).addClass(this.validClass);
+ var fg = this.el.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([this.invalidClass, this.validClass]);
+ fg.addClass(this.validClass);
+ } else {
+ fg.removeClass(['is-valid', 'is-invalid']);
+ fg.addClass('is-valid');
+ }
return;
}
}
for(var i in group){
- group[i].el.findParent('.form-group', false, true).removeClass([this.invalidClass, this.validClass]);
- group[i].el.findParent('.form-group', false, true).addClass(this.validClass);
+ var fg = group[i].el.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([this.invalidClass, this.validClass]);
+ fg.addClass(this.validClass);
+ } else {
+ fg.removeClass(['is-valid', 'is-invalid']);
+ fg.addClass('is-valid');
+ }
}
},
}
if(this.inputType == 'radio'){
+
Roo.each(this.el.up('form').select('input[name='+this.name+']', true).elements, function(e){
- e.findParent('.form-group', false, true).removeClass([_this.invalidClass, _this.validClass]);
- e.findParent('.form-group', false, true).addClass(_this.invalidClass);
+ var fg = e.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([_this.invalidClass, _this.validClass]);
+ fg.addClass(_this.invalidClass);
+ } else {
+ fg.removeClass(['is-invalid', 'is-valid']);
+ fg.addClass('is-invalid');
+ }
});
return;
}
if(!this.groupId){
- this.el.findParent('.form-group', false, true).removeClass([this.invalidClass, this.validClass]);
- this.el.findParent('.form-group', false, true).addClass(this.invalidClass);
+ var fg = this.el.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([_this.invalidClass, _this.validClass]);
+ fg.addClass(_this.invalidClass);
+ } else {
+ fg.removeClass(['is-invalid', 'is-valid']);
+ fg.addClass('is-invalid');
+ }
return;
}
}
for(var i in group){
- group[i].el.findParent('.form-group', false, true).removeClass([this.invalidClass, this.validClass]);
- group[i].el.findParent('.form-group', false, true).addClass(this.invalidClass);
+ var fg = group[i].el.findParent('.form-group', false, true);
+ if (Roo.bootstrap.version == 3) {
+ fg.removeClass([_this.invalidClass, _this.validClass]);
+ fg.addClass(_this.invalidClass);
+ } else {
+ fg.removeClass(['is-invalid', 'is-valid']);
+ fg.addClass('is-invalid');
+ }
}
},
var label = Roo.bootstrap.FieldLabel.get(this.name + '-group');
if (label && label.iconEl) {
- label.iconEl.removeClass(label.validClass);
- label.iconEl.removeClass(label.invalidClass);
+ label.iconEl.removeClass([ label.validClass, label.invalidClass ]);
+ label.iconEl.removeClass(['is-invalid', 'is-valid']);
}
},
/**
* @cfg {String} inputType @hide
*/
- /**
- * @cfg {String} invalidClass @hide
- */
+
/**
* @cfg {String} invalidText @hide
*/
* @cfg {String} cls class of the element
* @cfg {String} target label target
* @cfg {Boolean} allowBlank (true|false) target allowBlank default true
- * @cfg {String} invalidClass default "text-warning"
- * @cfg {String} validClass default "text-success"
+ * @cfg {String} invalidClass DEPRICATED - BS4 uses is-invalid
+ * @cfg {String} validClass DEPRICATED - BS4 uses is-valid
* @cfg {String} iconTooltip default "This field is required"
* @cfg {String} indicatorpos (left|right) default left
*
this.indicator.removeClass('visible');
this.indicator.addClass('invisible');
}
+ if (Roo.bootstrap.version == 3) {
+ this.el.removeClass(this.invalidClass);
+ this.el.addClass(this.validClass);
+ } else {
+ this.el.removeClass('is-invalid');
+ this.el.addClass('is-valid');
+ }
- this.el.removeClass(this.invalidClass);
-
- this.el.addClass(this.validClass);
this.fireEvent('valid', this);
},
this.indicator.removeClass('invisible');
this.indicator.addClass('visible');
}
+ if (Roo.bootstrap.version == 3) {
+ this.el.removeClass(this.validClass);
+ this.el.addClass(this.invalidClass);
+ } else {
+ this.el.removeClass('is-valid');
+ this.el.addClass('is-invalid');
+ }
- this.el.removeClass(this.validClass);
-
- this.el.addClass(this.invalidClass);
this.fireEvent('invalid', this, msg);
}
this.indicatorEl().addClass('invisible');
}
- this.el.removeClass([this.invalidClass, this.validClass]);
- this.el.addClass(this.validClass);
+
if (Roo.bootstrap.version == 3) {
+ this.el.removeClass([this.invalidClass, this.validClass]);
+ this.el.addClass(this.validClass);
+ } else {
this.el.removeClass(['is-invalid','is-valid']);
this.el.addClass(['is-valid']);
}
if (Roo.bootstrap.version == 3) {
this.el.removeClass([this.invalidClass, this.validClass]);
this.el.addClass(this.invalidClass);
+ } else {
+ this.el.removeClass(['is-invalid','is-valid']);
+ this.el.addClass(['is-invalid']);
}
- this.el.removeClass(['is-invalid','is-valid']);
- this.el.addClass(['is-invalid']);
this.fireEvent('invalid', this, msg);