mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
e646eb697e
Previously, the order of resolution was: - components defined on the class of the current component - components defined on the QWeb instance - the current instance's context This is unnatural because it doesn't go from most specific to least, as the current instance's context is the most specific. This is also fragile, as adding components to the QWeb instance can break unrelated components. This commit fixes that by making the lookup start with the current component's context instead
201 lines
7.3 KiB
Plaintext
201 lines
7.3 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
|
|
exports[`animations t-transition combined with component 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"Parent\\"
|
|
let utils = this.constructor.utils;
|
|
let QWeb = this.constructor;
|
|
let parent = context;
|
|
let scope = Object.create(context);
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('div', p1, c1);
|
|
// Component 'Child'
|
|
let w2 = '__3__' in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap['__3__']] : false;
|
|
let props2 = {};
|
|
if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) {
|
|
w2.destroy();
|
|
w2 = false;
|
|
}
|
|
if (w2) {
|
|
w2.__updateProps(props2, extra.fiber, undefined);
|
|
let pvnode = w2.__owl__.pvnode;
|
|
c1.push(pvnode);
|
|
} else {
|
|
let componentKey2 = \`Child\`;
|
|
let W2 = scope['Child'] || context.constructor.components[componentKey2] || QWeb.components[componentKey2];
|
|
if (!W2) {throw new Error('Cannot find the definition of component \\"' + componentKey2 + '\\"')}
|
|
w2 = new W2(parent, props2);
|
|
const __patch2 = w2.__patch;
|
|
w2.__patch = (t, vn) => {__patch2.call(w2, t, vn); if(!w2.__owl__.transitionInserted){w2.__owl__.transitionInserted = true;utils.transitionInsert(w2.__owl__.vnode, 'chimay');}};
|
|
parent.__owl__.cmap['__3__'] = w2.__owl__.id;
|
|
let fiber = w2.__prepare(extra.fiber, undefined, () => { const vnode = fiber.vnode; pvnode.sel = vnode.sel; });
|
|
let pvnode = h('dummy', {key: '__3__', hook: {remove() {},destroy(vn) {let finalize = () => {
|
|
w2.destroy();
|
|
};
|
|
delete w2.__owl__.transitionInserted;
|
|
utils.transitionRemove(vn, 'chimay', finalize);}}});
|
|
c1.push(pvnode);
|
|
w2.__owl__.pvnode = pvnode;
|
|
}
|
|
w2.__owl__.parentLastFiberId = extra.fiber.id;
|
|
return vn1;
|
|
}"
|
|
`;
|
|
|
|
exports[`animations t-transition combined with t-component and t-if 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"Parent\\"
|
|
let utils = this.constructor.utils;
|
|
let QWeb = this.constructor;
|
|
let parent = context;
|
|
let scope = Object.create(context);
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('div', p1, c1);
|
|
if (scope['state'].display) {
|
|
// Component 'Child'
|
|
let w2 = '__3__' in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap['__3__']] : false;
|
|
let props2 = {};
|
|
if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) {
|
|
w2.destroy();
|
|
w2 = false;
|
|
}
|
|
if (w2) {
|
|
w2.__updateProps(props2, extra.fiber, undefined);
|
|
let pvnode = w2.__owl__.pvnode;
|
|
c1.push(pvnode);
|
|
} else {
|
|
let componentKey2 = \`Child\`;
|
|
let W2 = scope['Child'] || context.constructor.components[componentKey2] || QWeb.components[componentKey2];
|
|
if (!W2) {throw new Error('Cannot find the definition of component \\"' + componentKey2 + '\\"')}
|
|
w2 = new W2(parent, props2);
|
|
const __patch2 = w2.__patch;
|
|
w2.__patch = (t, vn) => {__patch2.call(w2, t, vn); if(!w2.__owl__.transitionInserted){w2.__owl__.transitionInserted = true;utils.transitionInsert(w2.__owl__.vnode, 'chimay');}};
|
|
parent.__owl__.cmap['__3__'] = w2.__owl__.id;
|
|
let fiber = w2.__prepare(extra.fiber, undefined, () => { const vnode = fiber.vnode; pvnode.sel = vnode.sel; });
|
|
let pvnode = h('dummy', {key: '__3__', hook: {remove() {},destroy(vn) {let finalize = () => {
|
|
w2.destroy();
|
|
};
|
|
delete w2.__owl__.transitionInserted;
|
|
utils.transitionRemove(vn, 'chimay', finalize);}}});
|
|
c1.push(pvnode);
|
|
w2.__owl__.pvnode = pvnode;
|
|
}
|
|
w2.__owl__.parentLastFiberId = extra.fiber.id;
|
|
}
|
|
return vn1;
|
|
}"
|
|
`;
|
|
|
|
exports[`animations t-transition combined with t-component, remove and re-add before transitionend 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"__template__2\\"
|
|
let utils = this.constructor.utils;
|
|
let QWeb = this.constructor;
|
|
let parent = context;
|
|
let scope = Object.create(context);
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('div', p1, c1);
|
|
if (scope['state'].flag) {
|
|
// Component 'Child'
|
|
let w2 = '__3__' in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap['__3__']] : false;
|
|
let props2 = {};
|
|
if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) {
|
|
w2.destroy();
|
|
w2 = false;
|
|
}
|
|
if (w2) {
|
|
w2.__updateProps(props2, extra.fiber, undefined);
|
|
let pvnode = w2.__owl__.pvnode;
|
|
c1.push(pvnode);
|
|
} else {
|
|
let componentKey2 = \`Child\`;
|
|
let W2 = scope['Child'] || context.constructor.components[componentKey2] || QWeb.components[componentKey2];
|
|
if (!W2) {throw new Error('Cannot find the definition of component \\"' + componentKey2 + '\\"')}
|
|
w2 = new W2(parent, props2);
|
|
const __patch2 = w2.__patch;
|
|
w2.__patch = (t, vn) => {__patch2.call(w2, t, vn); if(!w2.__owl__.transitionInserted){w2.__owl__.transitionInserted = true;utils.transitionInsert(w2.__owl__.vnode, 'chimay');}};
|
|
parent.__owl__.cmap['__3__'] = w2.__owl__.id;
|
|
let fiber = w2.__prepare(extra.fiber, undefined, () => { const vnode = fiber.vnode; pvnode.sel = vnode.sel; });
|
|
let pvnode = h('dummy', {key: '__3__', hook: {remove() {},destroy(vn) {let finalize = () => {
|
|
w2.destroy();
|
|
};
|
|
delete w2.__owl__.transitionInserted;
|
|
utils.transitionRemove(vn, 'chimay', finalize);}}});
|
|
c1.push(pvnode);
|
|
w2.__owl__.pvnode = pvnode;
|
|
}
|
|
w2.__owl__.parentLastFiberId = extra.fiber.id;
|
|
}
|
|
return vn1;
|
|
}"
|
|
`;
|
|
|
|
exports[`animations t-transition with no delay/duration 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"test\\"
|
|
let utils = this.constructor.utils;
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('span', p1, c1);
|
|
p1.hook = {
|
|
insert: vn => {
|
|
utils.transitionInsert(vn, 'jupiler');
|
|
},
|
|
remove: (vn, rm) => {
|
|
utils.transitionRemove(vn, 'jupiler', rm);
|
|
},
|
|
};
|
|
c1.push({text: \`blue\`});
|
|
return vn1;
|
|
}"
|
|
`;
|
|
|
|
exports[`animations t-transition, on a simple node (insert) 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"test\\"
|
|
let utils = this.constructor.utils;
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('span', p1, c1);
|
|
p1.hook = {
|
|
insert: vn => {
|
|
utils.transitionInsert(vn, 'chimay');
|
|
},
|
|
remove: (vn, rm) => {
|
|
utils.transitionRemove(vn, 'chimay', rm);
|
|
},
|
|
};
|
|
c1.push({text: \`blue\`});
|
|
return vn1;
|
|
}"
|
|
`;
|
|
|
|
exports[`animations t-transition, on a simple node, not in the DOM 1`] = `
|
|
"function anonymous(context, extra
|
|
) {
|
|
// Template name: \\"test\\"
|
|
let utils = this.constructor.utils;
|
|
let h = this.h;
|
|
let c1 = [], p1 = {key:1};
|
|
let vn1 = h('span', p1, c1);
|
|
p1.hook = {
|
|
insert: vn => {
|
|
utils.transitionInsert(vn, 'chimay');
|
|
},
|
|
remove: (vn, rm) => {
|
|
utils.transitionRemove(vn, 'chimay', rm);
|
|
},
|
|
};
|
|
c1.push({text: \`blue\`});
|
|
return vn1;
|
|
}"
|
|
`;
|