/*
|
This file is part of Ext JS 4.2
|
|
Copyright (c) 2011-2013 Sencha Inc
|
|
Contact: http://www.sencha.com/contact
|
|
GNU General Public License Usage
|
This file may be used under the terms of the GNU General Public License version 3.0 as
|
published by the Free Software Foundation and appearing in the file LICENSE included in the
|
packaging of this file.
|
|
Please review the following information to ensure the GNU General Public License version 3.0
|
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
|
|
If you are unsure which license is appropriate for your use, please contact the sales department
|
at http://www.sencha.com/contact.
|
|
Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314)
|
*/
|
/**
|
* Layout class for {@link Ext.form.field.Text} fields. Handles sizing the input field.
|
* @private
|
*/
|
Ext.define('Ext.layout.component.field.Text', {
|
extend: 'Ext.layout.component.field.Field',
|
alias: 'layout.textfield',
|
requires: ['Ext.util.TextMetrics'],
|
|
type: 'textfield',
|
|
canGrowWidth: true,
|
|
beginLayoutCycle: function(ownerContext) {
|
this.callParent(arguments);
|
|
// Clear height, in case a previous layout cycle stretched it.
|
if (ownerContext.heightModel.shrinkWrap) {
|
ownerContext.inputContext.el.setStyle('height', '');
|
}
|
},
|
|
measureContentWidth: function (ownerContext) {
|
var me = this,
|
owner = me.owner,
|
width = me.callParent(arguments),
|
inputContext = ownerContext.inputContext,
|
inputEl, value, calcWidth, max, min;
|
|
if (owner.grow && me.canGrowWidth && !ownerContext.state.growHandled) {
|
inputEl = owner.inputEl;
|
|
// Find the width that contains the whole text value
|
value = Ext.util.Format.htmlEncode(inputEl.dom.value || (owner.hasFocus ? '' : owner.emptyText) || '');
|
value += owner.growAppend;
|
calcWidth = inputEl.getTextWidth(value) + inputContext.getFrameInfo().width;
|
|
max = owner.growMax;
|
min = Math.min(max, width);
|
max = Math.max(owner.growMin, max, min);
|
|
// Constrain
|
calcWidth = Ext.Number.constrain(calcWidth, owner.growMin, max);
|
inputContext.setWidth(calcWidth);
|
ownerContext.state.growHandled = true;
|
|
// Now that we've set the inputContext, we need to recalculate the width
|
inputContext.domBlock(me, 'width');
|
width = NaN;
|
}
|
return width;
|
},
|
|
publishInnerHeight: function(ownerContext, height) {
|
ownerContext.inputContext.setHeight(height - this.measureLabelErrorHeight(ownerContext));
|
},
|
|
beginLayoutFixed: function(ownerContext, width, suffix) {
|
var me = this,
|
ieInputWidthAdjustment = me.ieInputWidthAdjustment;
|
|
if (ieInputWidthAdjustment) {
|
me.adjustIEInputPadding(ownerContext);
|
if(suffix === 'px') {
|
width -= ieInputWidthAdjustment;
|
}
|
}
|
|
me.callParent(arguments);
|
},
|
|
adjustIEInputPadding: function(ownerContext) {
|
// adjust for IE 6/7 strict content-box model
|
this.owner.bodyEl.setStyle('padding-right', this.ieInputWidthAdjustment + 'px');
|
}
|
});
|