Before this commit, components used `el` and `trigger` but this works thanks to LegacyComponent. LegacyComponent has been introduced to ease the transition from owl 1 to owl 2. This commit replaces the uses of `el` by `useRef` and `trigger` by adding callback in props. Without these owl 1 features, components no longer need to extend LegacyComponent. This commit also adapts the tests to use `getFixture` instead of `el`. closes odoo/odoo#85903 Related: odoo/enterprise#25032 Signed-off-by: Samuel Degueldre <sad@odoo.com> Co-authored-by: Aaron Bohy <aab@odoo.com> Co-authored-by: Simon Genin (ges) <ges@odoo.com> Co-authored-by: luvi <luvi@odoo.com> Co-authored-by: Jorge Pinna Puissant <jpp@odoo.com>
38 lines
984 B
JavaScript
38 lines
984 B
JavaScript
/** @odoo-module **/
|
|
|
|
import { ControlPanel } from "@web/search/control_panel/control_panel";
|
|
import { SearchPanel } from "@web/search/search_panel/search_panel";
|
|
|
|
const { Component } = owl;
|
|
|
|
/**
|
|
* @param {Object} params
|
|
* @returns {Object}
|
|
*/
|
|
export const extractLayoutComponents = (params) => {
|
|
return {
|
|
ControlPanel: params.ControlPanel || ControlPanel,
|
|
SearchPanel: params.SearchPanel || SearchPanel,
|
|
Banner: params.Banner || false,
|
|
};
|
|
};
|
|
|
|
export class Layout extends Component {
|
|
setup() {
|
|
const { display = {} } = this.env.searchModel || {};
|
|
this.components = extractLayoutComponents(this.env.config);
|
|
this.display = display;
|
|
}
|
|
get controlPanelSlots() {
|
|
const slots = { ...this.props.slots };
|
|
delete slots.default;
|
|
return slots;
|
|
}
|
|
}
|
|
|
|
Layout.template = "web.Layout";
|
|
Layout.props = {
|
|
className: { type: String, optional: true },
|
|
slots: { type: Object, optional: true },
|
|
};
|