Вот мой хакерский подкласс, который я в конце концов использовал.
ExtOverrideUtils = {
setSizeIgnoreWidth: function (width, height, animate)
{
this.setHeight ((typeof width == 'object' ? width.height : height), animate);
},
intercept: function (func, overrides)
{
return function ()
{
var value = func.apply (this, arguments);
if (value) {
for (var name in overrides)
value[name] = overrides[name];
}
return value;
};
}
}
NoWidthResizable = Ext.extend (Ext.Resizable,
{
constructor: function (el, config)
{
el = Ext.get (el);
el.setSize = ExtOverrideUtils.setSizeIgnoreWidth;
el.wrap = ExtOverrideUtils.intercept (el.wrap, { setSize: ExtOverrideUtils.setSizeIgnoreWidth });
NoWidthResizable.superclass.constructor.call (this, el, config);
}
});
Использование из пользовательского подкласса Ext.form.TextArea
(хотя я думаю, что оно может использоваться как обычно Ext.Resizable
для произвольного элемента):
this._resizer = new NoWidthResizable (this.el,
{ wrap: true,
handles: 's',
minHeight: 30,
pinned: true,
dynamic: true });