diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b032b12d43a..7860b2b504b 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3149,7 +3149,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_. }); }).bind('hideDropdown', function() { self._drop_shown = false; - }).bind('hideDropdown', function() { + }).bind('showDropdown', function() { self._drop_shown = true; }); self.tags = self.$text.textext()[0].tags(); @@ -3342,6 +3342,7 @@ instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend( disable_utility_classes: true, init: function(field_manager, node) { this._super(field_manager, node); + instance.web.form.CompletionFieldMixin.init.call(this); m2m_kanban_lazy_init(); this.is_loaded = $.Deferred(); this.initial_is_loaded = this.is_loaded; @@ -3394,7 +3395,7 @@ instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend( if (embedded) { this.kanban_view.set_embedded_view(embedded); } - this.kanban_view.m2m_field = this; + this.kanban_view.m2m = this; var loaded = $.Deferred(); this.kanban_view.on_loaded.add_last(function() { self.initial_is_loaded.resolve(); @@ -3461,6 +3462,7 @@ function m2m_kanban_lazy_init() { if (instance.web.form.Many2ManyKanbanView) return; instance.web.form.Many2ManyKanbanView = instance.web_kanban.KanbanView.extend({ + quick_create_class: 'instance.web.form.Many2ManyQuickCreate', _is_quick_create_enabled: function() { return this._super() && ! this.group_by; }, @@ -3474,7 +3476,6 @@ instance.web.form.Many2ManyQuickCreate = instance.web.Widget.extend({ */ 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; @@ -3482,11 +3483,56 @@ instance.web.form.Many2ManyQuickCreate = instance.web.Widget.extend({ }, start: function () { var self = this; - self.$input = this.$element.find('input'); + self.$text = this.$element.find('input').css("width", "200px"); + self.$text.textext({ + plugins : 'arrow autocomplete', + autocomplete: { + render: function(suggestion) { + return $(''). + data('index', suggestion['index']).html(suggestion['label']); + } + }, + ext: { + autocomplete: { + selectFromDropdown: function() { + $(this).trigger('hideDropdown'); + var index = Number(this.selectedSuggestionElement().children().children().data('index')); + var data = self.search_result[index]; + if (data.id) { + self.add_id(data.id); + } else { + data.action(); + } + }, + }, + itemManager: { + itemToString: function(item) { + return item.name; + }, + }, + }, + }).bind('getSuggestions', function(e, data) { + var _this = this; + var str = !!data ? data.query || '' : ''; + self.m2m.get_search_result(str).then(function(result) { + self.search_result = result; + $(_this).trigger('setSuggestions', {result : _.map(result, function(el, i) { + return _.extend(el, {index:i}); + })}); + }); + }); + self.$text.focusout(function() { + self.$text.val(""); + }); }, focus: function() { this.$element.find('input').focus(); }, + add_id: function(id) { + self.$input.val(""); + debugger; + self.trigger('added', id); + }, }); } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 38d007d5341..b1101fb09d2 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1817,11 +1817,7 @@
- - - - - +
diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 83c3de06f37..d8ce30fc24f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -93,7 +93,7 @@ background: url(/web_kanban/static/src/img/plus-icon.png) no-repeat; } .openerp .oe_kanban_view .oe_kanban_quick_create { - overflow: hidden; + overflow: visible; } .openerp .oe_kanban_view .oe_kanban_no_group .oe_kanban_quick_create { width: 200px; diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 2b62dec15a9..cabe9cb52fb 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -65,5 +65,9 @@
+ + + +