MOVED Roo/bootstrap/FieldLabel.js to Roo/bootstrap/form/FieldLabel.js
authorAlan Knowles <alan@roojs.com>
Fri, 30 Jul 2021 07:10:28 +0000 (15:10 +0800)
committerAlan Knowles <alan@roojs.com>
Fri, 30 Jul 2021 07:10:28 +0000 (15:10 +0800)
Roo/bootstrap/FieldLabel.js

Roo/bootstrap/form/FieldLabel.js [new file with mode: 0644]

diff --git a/Roo/bootstrap/form/FieldLabel.js b/Roo/bootstrap/form/FieldLabel.js
new file mode 100644 (file)
index 0000000..c59405c
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ * - LGPL
+ *
+ * FieldLabel
+ * 
+ */
+
+/**
+ * @class Roo.bootstrap.FieldLabel
+ * @extends Roo.bootstrap.Component
+ * Bootstrap FieldLabel class
+ * @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} target label target 
+ * @cfg {Boolean} allowBlank (true|false) target allowBlank default true
+ * @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
+ * @param {Object} config The config object
+ */
+
+Roo.bootstrap.FieldLabel = function(config){
+    Roo.bootstrap.Element.superclass.constructor.call(this, config);
+    
+    this.addEvents({
+            /**
+             * @event invalid
+             * Fires after the field has been marked as invalid.
+             * @param {Roo.form.FieldLabel} this
+             * @param {String} msg The validation message
+             */
+            invalid : true,
+            /**
+             * @event valid
+             * Fires after the field has been validated with no errors.
+             * @param {Roo.form.FieldLabel} this
+             */
+            valid : true
+        });
+};
+
+Roo.extend(Roo.bootstrap.FieldLabel, Roo.bootstrap.Component,  {
+    
+    tag: 'label',
+    cls: '',
+    html: '',
+    target: '',
+    allowBlank : true,
+    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.target,
+            cn : [
+                {
+                    tag : 'i',
+                    cls : 'roo-required-indicator left-indicator text-danger fa fa-lg fa-star ' + cls,
+                    tooltip : this.iconTooltip
+                },
+                {
+                    tag : 'span',
+                    html : this.html
+                }
+            ] 
+        };
+        
+        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;
+    },
+    
+    initEvents: function() 
+    {
+        Roo.bootstrap.Element.superclass.initEvents.call(this);
+        
+        this.indicator = this.indicatorEl();
+        
+        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;
+        
+    },
+    
+    /**
+     * Mark this field as valid
+     */
+    markValid : function()
+    {
+        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.fireEvent('valid', this);
+    },
+    
+    /**
+     * Mark this field as invalid
+     * @param {String} msg The validation message
+     */
+    markInvalid : function(msg)
+    {
+        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.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