From 954fd0e75e8939dff841b9eb3408f93dd9bbf907 Mon Sep 17 00:00:00 2001 From: Mohammed Shekha Date: Thu, 13 Aug 2020 07:54:49 +0000 Subject: [PATCH] [IMP] web: do not resize quick create form on window resize The quick create form view is explicitly given the o_xxs_form_view class at initialization but resizing the window sometimes changes that class on form element in enterprise. To avoid this in the quick create case, the method _applyFormSizeClass has been overriden in QuickCreateFormRenderer in order to do nothing when the window is resized, so that the class and the related style stay the same as expected. Task ID: 2317807 closes odoo/odoo#56521 X-original-commit: f9c605ea578267de17e6c1dcc69dfd179d5d95fe Signed-off-by: Lucas Perais (lpe) --- .../js/views/kanban/quick_create_form_view.js | 11 ++++++ addons/web/static/tests/views/kanban_tests.js | 37 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/addons/web/static/src/js/views/kanban/quick_create_form_view.js b/addons/web/static/src/js/views/kanban/quick_create_form_view.js index ec1b60815b8..9286ed82da5 100644 --- a/addons/web/static/src/js/views/kanban/quick_create_form_view.js +++ b/addons/web/static/src/js/views/kanban/quick_create_form_view.js @@ -22,6 +22,17 @@ var QuickCreateFormRenderer = FormRenderer.extend({ this.$el.removeClass('o_xxl_form_view'); }, + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * Override to do nothing so that the renderer won't resize on window resize + * + * @override + */ + _applyFormSizeClass() {}, + //-------------------------------------------------------------------------- // Handlers //-------------------------------------------------------------------------- diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 8c3f1b90029..56f37a82a23 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -4,6 +4,7 @@ odoo.define('web.kanban_tests', function (require) { var AbstractField = require('web.AbstractField'); const Domain = require('web.Domain'); var fieldRegistry = require('web.field_registry'); +const FormRenderer = require("web.FormRenderer"); var KanbanColumnProgressBar = require('web.KanbanColumnProgressBar'); var kanbanExamplesRegistry = require('web.kanban_examples_registry'); var KanbanRenderer = require('web.KanbanRenderer'); @@ -898,6 +899,42 @@ QUnit.module('Views', { kanban.destroy(); }); + QUnit.test('window resize should not change quick create form size', async function (assert) { + assert.expect(2); + + testUtils.mock.patch(FormRenderer, { + start: function () { + this._super.apply(this, arguments); + window.addEventListener("resize", this._applyFormSizeClass.bind(this)); + }, + + }); + const kanban = await createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '' + + '' + + '
' + + '
', + groupBy: ['bar'], + }); + + // click to add an element and cancel the quick creation by pressing ESC + await testUtils.dom.click(kanban.el.querySelector('.o_kanban_header .o_kanban_quick_add i')); + + const quickCreate = kanban.el.querySelector('.o_kanban_quick_create'); + assert.hasClass(quickCreate.querySelector('.o_form_view'), "o_xxs_form_view"); + + // trigger window resize explicitly to call _applyFormSizeClass + window.dispatchEvent(new Event('resize')); + assert.hasClass(quickCreate.querySelector('.o_form_view'), 'o_xxs_form_view'); + + kanban.destroy(); + testUtils.mock.unpatch(FormRenderer); + }); + QUnit.test('quick create record: cancel and validate without using the buttons', async function (assert) { assert.expect(8);