mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[FIX] compiler: properly handle readonly attribute/readOnly property
Before this commit, Owl template compiler would handle readonly attribute as readonly properties. But this is incorrect, since the property is actually named readOnly. With this commit, we make sure that readonly AND readOnly are both interpreted as the `readOnly` property. This is due to the fact that QWeb does not discriminate between attribute and properties, so we have to infer which is which. closes #1362
This commit is contained in:
committed by
Sam Degueldre
parent
f892929c80
commit
cdad48d3a6
@@ -65,12 +65,13 @@ function isProp(tag: string, key: string): boolean {
|
||||
key === "indeterminate" ||
|
||||
key === "value" ||
|
||||
key === "readonly" ||
|
||||
key === "readOnly" ||
|
||||
key === "disabled"
|
||||
);
|
||||
case "option":
|
||||
return key === "selected" || key === "disabled";
|
||||
case "textarea":
|
||||
return key === "value" || key === "readonly" || key === "disabled";
|
||||
return key === "value" || key === "readonly" || key === "readOnly" || key === "disabled";
|
||||
case "select":
|
||||
return key === "value" || key === "disabled";
|
||||
case "button":
|
||||
@@ -600,6 +601,10 @@ export class CodeGenerator {
|
||||
attrName = key === "t-att" ? null : key.slice(6);
|
||||
expr = compileExpr(ast.attrs[key]);
|
||||
if (attrName && isProp(ast.tag, attrName)) {
|
||||
if (attrName === "readonly") {
|
||||
// the property has a different name than the attribute
|
||||
attrName = "readOnly";
|
||||
}
|
||||
// we force a new string or new boolean to bypass the equality check in blockdom when patching same value
|
||||
if (attrName === "value") {
|
||||
// When the expression is falsy (except 0), fall back to an empty string
|
||||
|
||||
Reference in New Issue
Block a user