summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_column_quick_create.js8
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js6
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js16
-rw-r--r--addons/web/static/tests/views/kanban_tests.js27
4 files changed, 56 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/kanban/kanban_column_quick_create.js b/addons/web/static/src/js/views/kanban/kanban_column_quick_create.js
index b3c57bce832..66445788682 100644
--- a/addons/web/static/src/js/views/kanban/kanban_column_quick_create.js
+++ b/addons/web/static/src/js/views/kanban/kanban_column_quick_create.js
@@ -36,6 +36,14 @@ var ColumnQuickCreate = Widget.extend({
this.$input = this.$('input');
return this._super.apply(this, arguments);
},
+ /**
+ * Called each time the quick create is attached into the DOM
+ */
+ on_attach_callback: function () {
+ if (!this.folded) {
+ this.$input.focus();
+ }
+ },
//--------------------------------------------------------------------------
// Public
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 3fe6046ea82..b26ff2360ef 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -40,6 +40,12 @@ var KanbanController = BasicController.extend({
this.on_create = params.on_create;
this.hasButtons = params.hasButtons;
},
+ /**
+ * Called each time the kanban view is attached into the DOM.
+ */
+ on_attach_callback: function () {
+ this.renderer.on_attach_callback();
+ },
//--------------------------------------------------------------------------
// Public
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 dbc44d30172..c3a14473787 100644
--- a/addons/web/static/src/js/views/kanban/kanban_renderer.js
+++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js
@@ -109,6 +109,14 @@ var KanbanRenderer = BasicRenderer.extend({
this._setState(state);
},
+ /**
+ * Called each time the renderer is attached into the DOM.
+ */
+ on_attach_callback: function () {
+ if (this.quickCreate) {
+ this.quickCreate.on_attach_callback();
+ }
+ },
//--------------------------------------------------------------------------
// Public
@@ -284,7 +292,13 @@ var KanbanRenderer = BasicRenderer.extend({
// Enable column quickcreate
if (this.createColumnEnabled) {
this.quickCreate = new ColumnQuickCreate(this);
- this.quickCreate.appendTo(fragment);
+ this.quickCreate.appendTo(fragment).then(function () {
+ // Open it directly if there is no column yet
+ if (!self.state.data.length) {
+ self.quickCreate.toggleFold();
+ }
+ });
+
}
}
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index 5d5782bdd6a..e7c96525d11 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -1888,6 +1888,33 @@ QUnit.module('Views', {
kanban.destroy();
});
+ QUnit.test('quick create column should be opened if there is no column', function (assert) {
+ assert.expect(3);
+
+ var kanban = createView({
+ View: KanbanView,
+ model: 'partner',
+ data: this.data,
+ arch: '<kanban class="o_kanban_test">' +
+ '<field name="product_id"/>' +
+ '<templates><t t-name="kanban-box">' +
+ '<div><field name="foo"/></div>' +
+ '</t></templates>' +
+ '</kanban>',
+ groupBy: ['product_id'],
+ domain: [['foo', '=', 'norecord']],
+ });
+
+ assert.strictEqual(kanban.$('.o_kanban_group').length, 0,
+ "there should be no column");
+ assert.strictEqual(kanban.$('.o_column_quick_create').length, 1,
+ "should have a quick create column");
+ assert.ok(kanban.$('.o_column_quick_create input').is(':visible'),
+ "the quick create should be opened");
+
+ kanban.destroy();
+ });
+
QUnit.test('cancel column quick create by pressing ESCAPE', function (assert) {
assert.expect(4);