X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=roojs-debug.js;h=a228ec51fc925deddf08966b474ca05c59336e10;hb=HEAD;hp=0cc25d81964046803455035bf82c5cf6fbc3f25f;hpb=794e679c43decffa4586af10d58cc356e058e545;p=roojs1 diff --git a/roojs-debug.js b/roojs-debug.js index 0cc25d8196..a228ec51fc 100644 --- a/roojs-debug.js +++ b/roojs-debug.js @@ -2705,7 +2705,10 @@ Roo.lib.Event = function() { * @param {DomForm} form element * @return {String} urlencode form output. */ - serializeForm : function(form) { + serializeForm : function(form, include_disabled) { + + include_disabled = typeof(include_disabled) == 'undefined' ? false : include_disabled; + if(typeof form == 'string') { form = (document.getElementById(form) || document.forms[form]); } @@ -2713,7 +2716,7 @@ Roo.lib.Event = function() { var el, name, val, disabled, data = '', hasSubmit = false; for (var i = 0; i < form.elements.length; i++) { el = form.elements[i]; - disabled = form.elements[i].disabled; + disabled = include_disabled ? false : form.elements[i].disabled; name = form.elements[i].name; val = form.elements[i].value; @@ -43136,9 +43139,9 @@ Roo.extend(Roo.form.TextField, Roo.form.Field, { if(this.selectOnFocus){ this.on("focus", this.preFocus, this); } - if (!this.allowLeadingSpace) { - this.on('blur', this.cleanLeadingSpace, this); - } + if (!this.allowLeadingSpace) { + this.on('blur', this.cleanLeadingSpace, this); + } if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Roo.form.VTypes[this.vtype+'Mask']))){ this.el.on("keypress", this.filterKeys, this); @@ -43871,6 +43874,10 @@ Roo.extend(Roo.form.NumberField, Roo.form.TextField, { * @cfg {String} decimalSeparator Character(s) to allow as the decimal separator (defaults to '.') */ decimalSeparator : ".", + /** + * @cfg {String} thousandSeparator Character(s) to allow as the thousand separator (defaults to '') - set to ',' for example + */ + thousandSeparator : "", /** * @cfg {Number} decimalPrecision The maximum precision to display after the decimal separator (defaults to 2) */ @@ -43900,14 +43907,60 @@ Roo.extend(Roo.form.NumberField, Roo.form.TextField, { * if a valid character like '.' or '-' is left in the field with no number (defaults to "{value} is not a valid number") */ nanText : "{0} is not a valid number", - + + hiddenField : false, + + onRender : function(ct, position) + { + Roo.form.TextField.superclass.onRender.call(this, ct, position); + + //this.el.dom.removeAttribute('name'); + Roo.log("Changing name?"); + if (this.thousandSeparator != '') { + this.el.dom.setAttribute('name', this.name + '____hidden___' ); + this.hiddenField = this.el.insertSibling({ tag:'input', type:'hidden', name: this.name }, + 'before', true); + this.hiddenField.value = this.value ? this.parseValue(this.value) : ''; + this.el.on('blur', this.onBlur, this); + } + + // prevent input submission + + + + }, + onBlur : function(){ + this.beforeBlur(); + if(!Roo.isOpera && this.focusClass){ // don't touch in Opera + this.el.removeClass(this.focusClass); + } + this.hasFocus = false; + if(this.validationEvent !== false && this.validateOnBlur && this.validationEvent != "blur"){ + this.validate(); + } + var v = this.getValue(); + if(String(v) !== String(this.startValue)){ + this.setValue( this.parseValue(v)); + this.fireEvent('change', this, v, this.startValue); + } + this.fireEvent("blur", this); + }, + + // override name, so that it works with hidden field. + getName: function(){ + if (this.thousandSeparator != '') { + return this.name; + } + return Roo.form.TextField.superclass.getName.call(this); + }, // private initEvents : function(){ - Roo.form.NumberField.superclass.initEvents.call(this); + var allowed = "0123456789"; if(this.allowDecimals){ allowed += this.decimalSeparator; } + allowed += this.thousandSeparator; if(this.allowNegative){ allowed += "-"; } @@ -43955,7 +44008,7 @@ Roo.extend(Roo.form.NumberField, Roo.form.TextField, { // private parseValue : function(value){ - value = parseFloat(String(value).replace(this.decimalSeparator, ".")); + value = parseFloat(String(value).replace(this.decimalSeparator, ".").split(this.thousandSeparator).join('')); return isNaN(value) ? '' : value; }, @@ -43970,7 +44023,15 @@ Roo.extend(Roo.form.NumberField, Roo.form.TextField, { setValue : function(v){ v = this.fixPrecision(v); + if(this.thousandSeparator != ''){ + v = Roo.util.Format.number(v, this.decimalPrecision, this.thousandSeparator); + } Roo.form.NumberField.superclass.setValue.call(this, String(v).replace(".", this.decimalSeparator)); + if (this.hiddenField !== false) { + this.hiddenField.value = v ? this.parseValue(v) : ''; + } + + }, // private @@ -44327,7 +44388,7 @@ dateField.setValue('2006-5-4'); // private // Implements the default empty TriggerField.onTriggerClick function to display the DatePicker onTriggerClick : function(){ - if(this.disabled){ + if(this.disabled || this.readOnly){ return; } if(this.menu == null){ @@ -47920,6 +47981,49 @@ Roo.extend(Roo.htmleditor.FilterComment, Roo.htmleditor.Filter, { n.parentNode.removeChild(n); } +});/** + * @class Roo.htmleditor.FilterEmpty + * filter empty elements + * @constructor + * Run a new Empty Filter + * @param {Object} config Configuration options + */ + +Roo.htmleditor.FilterEmpty = function(cfg) +{ + // no need to apply config. + this.walk(cfg.node); +} + +Roo.extend(Roo.htmleditor.FilterEmpty, Roo.htmleditor.FilterBlack, +{ + + tag : true, + + + replaceTag : function(node) + { + // start from leaf node + if(node.hasChildNodes()) { + this.walk(node); + } + + // only filter empty leaf element with certain tags + if( + ['B', 'I', 'U', 'S'].indexOf(node.tagName) < 0 + || + node.attributes && node.attributes.length > 0 + || + node.hasChildNodes() + ) { + return false; // don't walk + } + + Roo.htmleditor.FilterBlack.prototype.replaceTag.call(this, node); + return false; // don't walk + + } + });/** * @class Roo.htmleditor.FilterKeepChildren * remove tags but keep children @@ -48615,12 +48719,12 @@ Roo.htmleditor.FilterStyleToTag = function(cfg) { this.tags = { - B : [ 'fontWeight' , 'bold'], - I : [ 'fontStyle' , 'italic'], + B : [ 'fontWeight' , 'bold', 'font-weight'], + I : [ 'fontStyle' , 'italic', 'font-style'], //pre : [ 'font-style' , 'italic'], // h1.. h6 ?? font-size? - SUP : [ 'verticalAlign' , 'super' ], - SUB : [ 'verticalAlign' , 'sub' ] + SUP : [ 'verticalAlign' , 'super', 'vertical-align'], + SUB : [ 'verticalAlign' , 'sub', 'vertical-align'] }; @@ -48653,7 +48757,7 @@ Roo.extend(Roo.htmleditor.FilterStyleToTag, Roo.htmleditor.Filter, for (var k in this.tags) { if (node.style[this.tags[k][0]] == this.tags[k][1]) { inject.push(k); - node.style.removeProperty(this.tags[k][0]); + node.style.removeProperty(this.tags[k][2]); } } if (!inject.length) { @@ -48666,7 +48770,7 @@ Roo.extend(Roo.htmleditor.FilterStyleToTag, Roo.htmleditor.Filter, nn.appendChild(nc); nn = nc; }); - for(var i = 0;i < cn.length;cn++) { + for(var i = 0;i < cn.length;i++) { node.removeChild(cn[i]); nn.appendChild(cn[i]); } @@ -52374,6 +52478,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { if (this.enableBlocks) { + Array.from(bd.getElementsByTagName('img')).forEach(function(img) { + var fig = img.closest('figure'); + if (fig) { + var bf = new Roo.htmleditor.BlockFigure({ + node : fig + }); + bf.updateElement(); + } + + }); new Roo.htmleditor.FilterBlock({ node : div }); } @@ -52381,7 +52495,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { //?? tidy? if (this.autoClean) { - + new Roo.htmleditor.FilterBlack({ node : div, tag : this.black}); new Roo.htmleditor.FilterAttributes({ node : div, attrib_white : [ @@ -52407,6 +52521,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { ], attrib_clean : ['href', 'src' ] }); + new Roo.htmleditor.FilterEmpty({ node : div}); var tidy = new Roo.htmleditor.TidySerializer({ inner: true @@ -52724,6 +52839,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { new Roo.htmleditor.FilterSpan({ node : d }); new Roo.htmleditor.FilterLongBr({ node : d }); new Roo.htmleditor.FilterComment({ node : d }); + new Roo.htmleditor.FilterEmpty({ node : d}); }