diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 926d093206f..138de9041e6 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -547,6 +547,7 @@ return BasicRenderer.extend({ widget.fa_icon = node.attrs.icon.indexOf('fa-') === 0; } var $button = $(qweb.render('WidgetButton', {widget: widget})); + $button.append(_.map(node.children, this._renderNode.bind(this))); this._addOnClickAction($button, node); this._handleAttributes($button, node); return $button; diff --git a/addons/web/static/test/views/form_tests.js b/addons/web/static/test/views/form_tests.js index 2662313de8b..06616a407d6 100644 --- a/addons/web/static/test/views/form_tests.js +++ b/addons/web/static/test/views/form_tests.js @@ -2340,5 +2340,32 @@ QUnit.module('Views', { form.destroy(); }); + + QUnit.test('diplay a stat button outside a buttonbox', function (assert) { + assert.expect(3); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: + '
' + + '' + + '' + + '' + + '
', + res_id: 2, + }); + + assert.strictEqual(form.$('button .o_field_widget').length, 1, + "a field widget should be display inside the button"); + assert.strictEqual(form.$('button .o_field_widget').children().length, 2, + "the field widget should have 2 children, the text and the value"); + assert.strictEqual(parseInt(form.$('button .o_field_widget .o_stat_value').text()), 9, + "the value rendered should be the same than the field value"); + form.destroy(); + }); }); });