A versão 3.2 de Ext veio com um novo componente muito interessante, o CompositeField, ele permite agrupar campos em uma mesma linha. No entanto algumas vezes, e quero dizer, frequentemente, precisamos agrupar campos em uma mesma linha que não são tão relacionados como (nome e sobrenome) e, nesses casos, o agrupamento de labels do CompositeField não é uma boa idéia.
Eu construí um componente, FieldGroup, que resolve esse problema, de uma maneira bem simples:
var a = new Ext.form.FormPanel({
width: 500,
title: 'FieldGroup',
autoHeight: true,
bodyStyle: 'padding:8px',
items:[
{
xtype: 'fieldgroup',
labelWidth: 30,
items:[
{
xtype: 'textfield',
fieldLabel: 'Nick',
flex: 1
},
{
xtype: 'textfield',
fieldLabel: 'Fullname',
flex: 2,
labelWidth: 55
},
{
xtype: 'numberfield',
fieldLabel: 'Age',
flex: 1
}
]
},
{
xtype: 'fieldgroup',
labelWidth: 35,
items:[
{
xtype: 'textfield',
fieldLabel: 'Best friend name',
flex: 2,
labelWidth: 100
},
{
xtype: 'textfield',
fieldLabel: 'Movie',
flex: 1
}
]
}
]
});
O código acima gera um formulário como o da imagem em anexo.
Infelizmente há um pequeno problema nas versões anteriores à 3.2 e para o funcionamento nessas versões é preciso informar o heuight dos campos:
{
xtype: 'textfield',
fieldLabel: 'Movie',
height: 30,
flex: 1
}
Sugestões e feedbacks são bem vindos.