diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index b5c60fe9ab3..2592e3d96ec 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -164,9 +164,10 @@ var KanbanController = BasicController.extend({ _onAddColumn: function (event) { var self = this; this.model.createGroup(event.data.value, this.handle).then(function () { - self.update({}, {reload: false}); + return self.update({}, {reload: false}); + }).then(function () { self._updateButtons(); - self.trigger_up('scrollTo', {selector: '.o_column_quick_create'}); + self.renderer.quickCreateToggleFold(); }); }, /** diff --git a/addons/web/static/src/js/views/kanban/kanban_quick_create.js b/addons/web/static/src/js/views/kanban/kanban_quick_create.js index a87ac76d53f..4761255f7a3 100644 --- a/addons/web/static/src/js/views/kanban/kanban_quick_create.js +++ b/addons/web/static/src/js/views/kanban/kanban_quick_create.js @@ -159,7 +159,7 @@ var RecordQuickCreate = AbstractQuickCreate.extend({ var ColumnQuickCreate = AbstractQuickCreate.extend({ template: 'KanbanView.ColumnQuickCreate', events: _.extend({}, AbstractQuickCreate.prototype.events, { - 'click': '_onClick', + 'click': 'toggleFold', 'click input': '_onInputClicked', 'focusout': '_onFocusout', }), @@ -180,6 +180,22 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({ return this._super.apply(this, arguments); }, + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * Toggle fold/unfold the Column quick create widget + */ + toggleFold: function () { + this.folded = !this.folded; + this._update(); + if (!this.folded) { + this.$input.focus(); + this.trigger_up('scrollTo', {selector: '.o_column_quick_create'}); + } + }, + //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -208,18 +224,6 @@ var ColumnQuickCreate = AbstractQuickCreate.extend({ // Handlers //-------------------------------------------------------------------------- - /** - * @private - * @param {MouseEvent} event - */ - _onClick: function () { - this.folded = !this.folded; - this._update(); - if (!this.folded) { - this.$input.focus(); - this.trigger_up('scrollTo', {selector: '.o_column_quick_create'}); - } - }, /** * @private */ diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index 87275260b01..ea2f0270017 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -112,6 +112,12 @@ var KanbanRenderer = BasicRenderer.extend({ addQuickCreate: function () { this.widgets[0].addQuickCreate(); }, + /** + * Toggle fold/unfold the Column quick create widget + */ + quickCreateToggleFold: function () { + this.quickCreate.toggleFold(); + }, /** * Removes a widget (record if ungrouped, column if grouped) from the view. * @@ -244,8 +250,8 @@ var KanbanRenderer = BasicRenderer.extend({ // Enable column quickcreate if (this.columnOptions.group_creatable) { - var quickCreate = new ColumnQuickCreate(this); - quickCreate.appendTo(fragment); + this.quickCreate = new ColumnQuickCreate(this); + this.quickCreate.appendTo(fragment); } } diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index f3a653113ec..7aac83f26f8 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -1614,6 +1614,35 @@ QUnit.module('Views', { "column should contain 1 records"); kanban.destroy(); }); + + QUnit.test('don\'t fold column quick create after creation', function (assert) { + assert.expect(2); + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '' + + '' + + '
' + + '
' + + '
', + groupBy: ['product_id'], + }); + + // add a new column + kanban.$('.o_kanban_group:first .o_kanban_quick_add').click(); + var $quickCreate = kanban.$('.o_kanban_quick_create'); + $quickCreate.find('input').val('new partner'); + $quickCreate.find('button.o_kanban_add').click(); + assert.strictEqual(this.data.partner.records.length, 5, + "should have created a 'new partner' column"); + + assert.strictEqual(kanban.$('.o_kanban_add:visible').length, 1, + "the add button should still be visible"); + kanban.destroy(); + }); }); });