* @cfg {String} html contents of the element
* @cfg {String} tag tag of the element default label
* @cfg {String} cls class of the element
- * @cfg {String} for label target
+ * @cfg {String} target label target
* @cfg {Boolean} allowBlank (true|false) target allowBlank default true
- * @cfg {String} invalidClass default "text-danger fa fa-lg fa-exclamation-triangle"
- * @cfg {String} validClass default "text-success fa fa-lg fa-check"
+ * @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
*
* @constructor
* Create a new FieldLabel
tag: 'label',
cls: '',
html: '',
- for: '',
+ target: '',
allowBlank : true,
- invalidClass : 'text-danger fa fa-lg fa-exclamation-triangle',
- validClass : 'text-success fa fa-lg fa-check',
+ invalidClass : 'has-warning',
+ validClass : 'has-success',
+ iconTooltip : 'This field is required',
+ indicatorpos : 'left',
getAutoCreate : function(){
+ var cls = "";
+ if (!this.allowBlank) {
+ cls = "visible";
+ }
+
var cfg = {
tag : this.tag,
cls : 'roo-bootstrap-field-label ' + this.cls,
- for : this.for,
+ for : this.target,
cn : [
{
tag : 'i',
- cls : ''
+ cls : 'roo-required-indicator left-indicator text-danger fa fa-lg fa-star ' + cls,
+ tooltip : this.iconTooltip
},
{
tag : 'span',
]
};
+ if(this.indicatorpos == 'right'){
+ var cfg = {
+ tag : this.tag,
+ cls : 'roo-bootstrap-field-label ' + this.cls,
+ for : this.target,
+ cn : [
+ {
+ tag : 'span',
+ html : this.html
+ },
+ {
+ tag : 'i',
+ cls : 'roo-required-indicator right-indicator text-danger fa fa-lg fa-star '+ cls,
+ tooltip : this.iconTooltip
+ }
+ ]
+ };
+ }
+
return cfg;
},
{
Roo.bootstrap.Element.superclass.initEvents.call(this);
- this.iconEl = this.el.select('i', true).first();
+ this.indicator = this.indicatorEl();
- this.iconEl.setVisibilityMode(Roo.Element.DISPLAY).hide();
+ if(this.indicator){
+ this.indicator.removeClass('visible');
+ this.indicator.addClass('invisible');
+ }
+
+ Roo.bootstrap.FieldLabel.register(this);
+ },
+
+ indicatorEl : function()
+ {
+ var indicator = this.el.select('i.roo-required-indicator',true).first();
+
+ if(!indicator){
+ return false;
+ }
+
+ return indicator;
},
*/
markValid : function()
{
- this.iconEl.show();
+ if(this.indicator){
+ 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.iconEl.removeClass(this.invalidClass);
-
- this.iconEl.addClass(this.validClass);
this.fireEvent('valid', this);
},
*/
markInvalid : function(msg)
{
- this.iconEl.show();
-
- this.iconEl.removeClass(this.validClass);
+ if(this.indicator){
+ 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.iconEl.addClass(this.invalidClass);
this.fireEvent('invalid', this, msg);
}
});
+Roo.apply(Roo.bootstrap.FieldLabel, {
+
+ groups: {},
+
+ /**
+ * register a FieldLabel Group
+ * @param {Roo.bootstrap.FieldLabel} the FieldLabel to add
+ */
+ register : function(label)
+ {
+ if(this.groups.hasOwnProperty(label.target)){
+ return;
+ }
+
+ this.groups[label.target] = label;
+
+ },
+ /**
+ * fetch a FieldLabel Group based on the target
+ * @param {string} target
+ * @returns {Roo.bootstrap.FieldLabel} the CheckBox group
+ */
+ get: function(target) {
+ if (typeof(this.groups[target]) == 'undefined') {
+ return false;
+ }
+
+ return this.groups[target] ;
+ }
+});
+
\ No newline at end of file