diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 69a418cb225..b032b12d43a 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -3338,7 +3338,7 @@ instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends in
}
});
-instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend({
+instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.CompletionFieldMixin, {
disable_utility_classes: true,
init: function(field_manager, node) {
this._super(field_manager, node);
@@ -3455,13 +3455,38 @@ instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend(
});
}
},
-});
+}));
function m2m_kanban_lazy_init() {
if (instance.web.form.Many2ManyKanbanView)
return;
instance.web.form.Many2ManyKanbanView = instance.web_kanban.KanbanView.extend({
+ _is_quick_create_enabled: function() {
+ return this._super() && ! this.group_by;
+ },
+});
+instance.web.form.Many2ManyQuickCreate = instance.web.Widget.extend({
+ template: 'Many2ManyKanban.quick_create',
+ /**
+ * close_btn: If true, the widget will display a "Close" button able to trigger
+ * a "close" event.
+ */
+ init: function(parent, dataset, context, buttons) {
+ this._super(parent);
+ instance.web.form.CompletionFieldMixin.init.call(this);
+ this.m2m = this.getParent().view.m2m;
+ this._dataset = dataset;
+ this._buttons = buttons || false;
+ this._context = context || {};
+ },
+ start: function () {
+ var self = this;
+ self.$input = this.$element.find('input');
+ },
+ focus: function() {
+ this.$element.find('input').focus();
+ },
});
}
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index a558b8e9d1a..38d007d5341 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -1816,5 +1816,12 @@
+
+
+
+
+
+
+
diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js
index 87eeafb6550..d642b7b2f1e 100644
--- a/addons/web_kanban/static/src/js/kanban.js
+++ b/addons/web_kanban/static/src/js/kanban.js
@@ -10,6 +10,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
display_name: _lt('Kanban'),
default_nr_columns: 3,
view_type: "kanban",
+ quick_create_class: "instance.web_kanban.QuickCreate",
number_of_color_schemes: 10,
init: function (parent, dataset, view_id, options) {
this._super(parent, dataset, view_id, options);
@@ -350,6 +351,10 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
}
});
+function get_class(name) {
+ return new instance.web.Registry({'tmp' : name}).get_object("tmp");
+}
+
instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({
template: 'KanbanView.group_header',
init: function (parent, records, group, dataset) {
@@ -403,7 +408,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({
def = this._super();
if (! self.view.group_by) {
self.$element.addClass("oe_kanban_no_group");
- self.quick = new instance.web_kanban.QuickCreate(this, self.dataset, {}, false)
+ self.quick = new (get_class(self.view.quick_create_class))(this, self.dataset, {}, false)
.on('added', self, self.proxy('quick_created'));
self.quick.replace($(".oe_kanban_no_group_qc_placeholder"));
}
@@ -418,7 +423,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({
if (self.quick) { return; }
var ctx = {};
ctx['default_' + self.view.group_by] = self.value;
- self.quick = new instance.web_kanban.QuickCreate(this, self.dataset, ctx, true)
+ self.quick = new (get_class(self.view.quick_create_class))(this, self.dataset, ctx, true)
.on('added', self, self.proxy('quick_created'))
.on('close', self, function() {
this.quick.destroy();
diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml
index cabe9cb52fb..2b62dec15a9 100644
--- a/addons/web_kanban/static/src/xml/web_kanban.xml
+++ b/addons/web_kanban/static/src/xml/web_kanban.xml
@@ -65,9 +65,5 @@
-
-
-
-