[IMP] web: Allow to use a custom control panel
The abilty to use a custom control panel for an action
seems to have been lost with 18e5416.
With this commit the action config can specify a custom
component to use as control panel.
Usefull for o-spreadsheet integration.
Task 2238915
closes odoo/odoo#52807
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This commit is contained in:
committed by
Pierre Rousseau
parent
09cfde14bd
commit
997d21a67e
@@ -130,7 +130,7 @@ var AbstractAction = Widget.extend(ActionMixin, {
|
||||
this._setTitle(this.controlPanelProps.title);
|
||||
}
|
||||
this.controlPanelProps.title = this.getTitle();
|
||||
this._controlPanelWrapper = new ComponentWrapper(this, ControlPanel, this.controlPanelProps);
|
||||
this._controlPanelWrapper = new ComponentWrapper(this, this.config.ControlPanel, this.controlPanelProps);
|
||||
await this._controlPanelWrapper.mount(this.el, { position: 'first-child' });
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ var Widget = require('web.Widget');
|
||||
|
||||
var createActionManager = testUtils.createActionManager;
|
||||
const cpHelpers = testUtils.controlPanel;
|
||||
const { xml } = owl.tags;
|
||||
|
||||
QUnit.module('ActionManager', {
|
||||
beforeEach: function () {
|
||||
@@ -1882,6 +1883,29 @@ QUnit.module('ActionManager', {
|
||||
delete core.action_registry.map.HelloWorldTest;
|
||||
});
|
||||
|
||||
QUnit.test('action can use a custom control panel', async function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
class CustomControlPanel extends owl.Component {}
|
||||
CustomControlPanel.template = xml/* xml */`
|
||||
<div class="custom-control-panel">My custom control panel</div>
|
||||
`
|
||||
const ClientAction = AbstractAction.extend({
|
||||
hasControlPanel: true,
|
||||
config: {
|
||||
ControlPanel: CustomControlPanel
|
||||
},
|
||||
});
|
||||
const actionManager = await createActionManager();
|
||||
core.action_registry.add('HelloWorldTest', ClientAction);
|
||||
await actionManager.doAction('HelloWorldTest');
|
||||
assert.containsOnce(actionManager, '.custom-control-panel',
|
||||
"should have a custom control panel");
|
||||
|
||||
actionManager.destroy();
|
||||
delete core.action_registry.map.HelloWorldTest;
|
||||
});
|
||||
|
||||
QUnit.test('breadcrumb is updated on title change', async function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user