[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) <lpe@odoo.com>
This commit is contained in:
Mohammed Shekha
2020-08-25 13:45:01 +00:00
committed by Mathieu Duckerts-Antoine
parent 9879f738f5
commit 954fd0e75e
2 changed files with 48 additions and 0 deletions
@@ -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
//--------------------------------------------------------------------------
@@ -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: '<kanban on_create="quick_create">' +
'<field name="bar"/>' +
'<templates><t t-name="kanban-box">' +
'<div><field name="foo"/></div>' +
'</t></templates></kanban>',
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);