[FIX] web: render component in kanban

This commit fixes the kanban view to render components.
Before this commit, when rendering a component an error was thrown.

closes odoo/odoo#49525

X-original-commit: 29c18b53af26752079a49e4ece2419f62f680b5d
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
Michael Mattiello (mcm)
2020-04-14 11:58:53 +00:00
parent b3fe907be8
commit 71f2f06c61
2 changed files with 40 additions and 2 deletions
@@ -10,6 +10,7 @@ var core = require('web.core');
var Domain = require('web.Domain');
var Dialog = require('web.Dialog');
var field_utils = require('web.field_utils');
const FieldWrapper = require('web.FieldWrapper');
var utils = require('web.utils');
var Widget = require('web.Widget');
var widgetRegistry = require('web.widget_registry');
@@ -316,8 +317,22 @@ var KanbanRecord = Widget.extend({
attrs[key] = value;
});
var options = _.extend({}, this.options, { attrs: attrs });
var widget = new Widget(this, field_name, this.state, options);
var def = widget.replace($field);
let widget;
let def;
if (utils.isComponent(Widget)) {
widget = new FieldWrapper(this, Widget, {
fieldName: field_name,
record: this.state,
options: options,
});
def = widget.mount(document.createDocumentFragment())
.then(() => {
$field.replaceWith(widget.$el);
});
} else {
widget = new Widget(this, field_name, this.state, options);
def = widget.replace($field);
}
this.defs.push(def);
def.then(function () {
self._setFieldDisplay(widget.$el, field_name);
@@ -6019,6 +6019,29 @@ QUnit.module('Views', {
kanban.destroy();
});
QUnit.test('kanban view with boolean widget', async function (assert) {
assert.expect(1);
const kanban = await testUtils.createView({
View: KanbanView,
model: 'partner',
data: this.data,
arch: `
<kanban>
<templates>
<t t-name="kanban-box">
<div><field name="bar" widget="boolean"/></div>
</t>
</templates>
</kanban>
`,
});
assert.containsOnce(kanban.el.querySelector('.o_kanban_record'),
'div.custom-checkbox.o_field_boolean');
kanban.destroy();
});
});
});