mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| abd2b42307 |
@@ -29,6 +29,13 @@ function callSlot(
|
|||||||
const slots = ctx.props.slots || {};
|
const slots = ctx.props.slots || {};
|
||||||
const { __render, __ctx, __scope } = slots[name] || {};
|
const { __render, __ctx, __scope } = slots[name] || {};
|
||||||
const slotScope = ObjectCreate(__ctx || {});
|
const slotScope = ObjectCreate(__ctx || {});
|
||||||
|
if (defaultContent) {
|
||||||
|
Object.defineProperty(slotScope, helpers.zero, {
|
||||||
|
get() {
|
||||||
|
return defaultContent(ctx, parent, key);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
if (__scope) {
|
if (__scope) {
|
||||||
slotScope[__scope] = extra;
|
slotScope[__scope] = extra;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -349,6 +349,42 @@ exports[`slots content is the default slot 2`] = `
|
|||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`slots default content is available as 0 1`] = `
|
||||||
|
"function anonymous(app, bdom, helpers
|
||||||
|
) {
|
||||||
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
||||||
|
let { zero, markRaw } = helpers;
|
||||||
|
const comp1 = app.createComponent(\`Dialog\`, true, true, false, true);
|
||||||
|
|
||||||
|
function slot1(ctx, node, key = \\"\\") {
|
||||||
|
const b2 = text(\`Before - \`);
|
||||||
|
const b3 = ctx[zero];
|
||||||
|
const b4 = text(\` - After\`);
|
||||||
|
return multi([b2, b3, b4]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return function template(ctx, node, key = \\"\\") {
|
||||||
|
return comp1({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx}})}, key + \`__1\`, node, this, null);
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`slots default content is available as 0 2`] = `
|
||||||
|
"function anonymous(app, bdom, helpers
|
||||||
|
) {
|
||||||
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
||||||
|
let { callSlot } = helpers;
|
||||||
|
|
||||||
|
function defaultContent1(ctx, node, key = \\"\\") {
|
||||||
|
return text(\`default content\`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return function template(ctx, node, key = \\"\\") {
|
||||||
|
return callSlot(ctx, node, key, 'default', false, {}, defaultContent1.bind(this));
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`slots default content is not rendered if named slot is provided 1`] = `
|
exports[`slots default content is not rendered if named slot is provided 1`] = `
|
||||||
"function anonymous(app, bdom, helpers
|
"function anonymous(app, bdom, helpers
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1933,4 +1933,17 @@ describe("slots", () => {
|
|||||||
"<p>1 hello <div>child</div></p><p>2 hello <div>child</div></p>"
|
"<p>1 hello <div>child</div></p><p>2 hello <div>child</div></p>"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("default content is available as 0", async () => {
|
||||||
|
class Dialog extends Component {
|
||||||
|
static template = xml`<t t-slot="default">default content</t>`;
|
||||||
|
}
|
||||||
|
class Parent extends Component {
|
||||||
|
static template = xml`<Dialog>Before - <t t-out="0"/> - After</Dialog>`;
|
||||||
|
static components = { Dialog };
|
||||||
|
}
|
||||||
|
|
||||||
|
await mount(Parent, fixture);
|
||||||
|
expect(fixture.innerHTML).toBe("Before - default content - After");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user