diff --git a/addons/web/static/src/webclient/actions/action_dialog.js b/addons/web/static/src/webclient/actions/action_dialog.js index 53b7ccabf07..2fda8ff2a19 100644 --- a/addons/web/static/src/webclient/actions/action_dialog.js +++ b/addons/web/static/src/webclient/actions/action_dialog.js @@ -55,8 +55,7 @@ class LegacyAdaptedActionDialog extends ActionDialog { setup() { super.setup(); const actionProps = this.props && this.props.actionProps; - const action = actionProps && actionProps.action; - const actionContext = action && action.context; + const actionContext = actionProps && actionProps.context; const actionDialogSize = actionContext && actionContext.dialog_size; this.props.size = LEGACY_SIZE_CLASSES[actionDialogSize] || Dialog.defaultProps.size; const ControllerComponent = this.props && this.props.ActionComponent; diff --git a/addons/web/static/src/webclient/actions/action_service.js b/addons/web/static/src/webclient/actions/action_service.js index 1fe0b670ed2..bb1c3d04d21 100644 --- a/addons/web/static/src/webclient/actions/action_service.js +++ b/addons/web/static/src/webclient/actions/action_service.js @@ -845,7 +845,8 @@ function makeActionManager(env) { const { views: viewDescriptions } = await keepLast.add(prom); const domParser = new DOMParser(); const views = []; - for (const [, type] of action.views) { + for (let [, type] of action.views) { + type = type === "tree" ? "list" : type; if (type !== "search") { const arch = viewDescriptions[type].arch; const archDoc = domParser.parseFromString(arch, "text/xml").documentElement; diff --git a/addons/web/static/tests/webclient/actions/target_tests.js b/addons/web/static/tests/webclient/actions/target_tests.js index 1a3d7941f45..86ce2343713 100644 --- a/addons/web/static/tests/webclient/actions/target_tests.js +++ b/addons/web/static/tests/webclient/actions/target_tests.js @@ -443,6 +443,32 @@ QUnit.module("ActionManager", (hooks) => { assert.containsOnce(target, ".o_kanban_view"); }); + QUnit.test("action with 'dialog_size' key in context", async function (assert) { + const action = { + name: "Some Action", + res_model: "partner", + type: "ir.actions.act_window", + target: "new", + views: [[false, "form"]], + }; + const webClient = await createWebClient({ serverData }); + + await doAction(webClient, action); + assert.hasClass(target.querySelector(".o_dialog .modal-dialog"), "modal-lg"); + + await doAction(webClient, { ...action, context: { dialog_size: "small" } }); + assert.hasClass(target.querySelector(".o_dialog .modal-dialog"), "modal-sm"); + + await doAction(webClient, { ...action, context: { dialog_size: "medium" } }); + assert.hasClass(target.querySelector(".o_dialog .modal-dialog"), "modal-md"); + + await doAction(webClient, { ...action, context: { dialog_size: "large" } }); + assert.hasClass(target.querySelector(".o_dialog .modal-dialog"), "modal-lg"); + + await doAction(webClient, { ...action, context: { dialog_size: "extra-large" } }); + assert.hasClass(target.querySelector(".o_dialog .modal-dialog"), "modal-xl"); + }); + QUnit.module('Actions in target="fullscreen"'); QUnit.test(