mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
f892929c80
Before this commit, properties were just handled as a special case of attributes. But it does not make that much sense, since they are different. For example, the `readOnly` property does not have the same name as the `readonly` attribute. The confusion probably comes from the fact that QWeb does not distinguish between property and attributes, so Owl has to infer which one is which. With this commit, we introduce a `block-property` directive in blockdom, and change the compiler to use it in emitted code. It has the additional benefits of slightly shrinking the runtime code, since the `isProp` function can now be located in the compiler.
197 lines
5.9 KiB
Plaintext
197 lines
5.9 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
|
|
exports[`changing an attribute with t-att- 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<div block-attribute-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let attr1 = ctx['v'];
|
|
return block1([attr1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`dynamic input value: falsy values 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((0) === 0 ? 0 : ((0) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`dynamic input value: falsy values 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((false) === 0 ? 0 : ((false) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`dynamic input value: falsy values 3`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((undefined) === 0 ? 0 : ((undefined) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`dynamic input value: falsy values 4`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String(('') === 0 ? 0 : (('') || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`input of type checkbox with t-att-indeterminate 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input type=\\"checkbox\\" block-property-0=\\"indeterminate\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new Boolean(ctx['v']);
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`input type= checkbox, with t-att-checked 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input type=\\"checkbox\\" block-property-0=\\"checked\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new Boolean(ctx['flag']);
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`input with t-att-value (patching with same value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((ctx['v']) === 0 ? 0 : ((ctx['v']) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`input with t-att-value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((ctx['v']) === 0 ? 0 : ((ctx['v']) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`input, type checkbox, with t-att-checked (patching with same value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input type=\\"checkbox\\" block-property-0=\\"checked\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new Boolean(ctx['v']);
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`select with t-att-value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<select block-property-0=\\"value\\"><option value=\\"potato\\">Potato</option><option value=\\"tomato\\">Tomato</option><option value=\\"onion\\">Onion</option></select>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((ctx['value']) === 0 ? 0 : ((ctx['value']) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`textarea with t-att-value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<textarea block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((ctx['v']) === 0 ? 0 : ((ctx['v']) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`updating property with falsy value 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<input block-property-0=\\"value\\"/>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
let prop1 = new String((ctx['v']) === 0 ? 0 : ((ctx['v']) || \\"\\"));
|
|
return block1([prop1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`various boolean html attributes 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
let block1 = createBlock(\`<div><input type=\\"checkbox\\" checked=\\"checked\\"/><input checked=\\"checked\\"/><div checked=\\"checked\\"/><div selected=\\"selected\\"/><option selected=\\"selected\\" other=\\"1\\"/><input readonly=\\"readonly\\"/><button disabled=\\"disabled\\"/></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
return block1();
|
|
}
|
|
}"
|
|
`;
|