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 @@
- - - -