[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:
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user