mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[REF] component: small improvement
and run prettier
This commit is contained in:
@@ -20,11 +20,10 @@ create a test environment with mock services.
|
||||
|
||||
For example:
|
||||
|
||||
|
||||
```js
|
||||
async function myEnv() {
|
||||
const templates = await loadTemplates();
|
||||
const qweb = new QWeb({templates});
|
||||
const qweb = new QWeb({ templates });
|
||||
const session = getSession();
|
||||
|
||||
return {
|
||||
@@ -33,10 +32,10 @@ async function myEnv() {
|
||||
qweb: qweb,
|
||||
services: {
|
||||
localStorage: localStorage,
|
||||
rpc: rpc,
|
||||
rpc: rpc
|
||||
},
|
||||
debug: false,
|
||||
inMobileMode: true,
|
||||
inMobileMode: true
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,7 @@
|
||||
# 🦉 OWL Documentation 🦉
|
||||
|
||||
## Reference
|
||||
|
||||
- [Animations](reference/animations.md)
|
||||
- [Component](reference/component.md)
|
||||
- [Configuration](reference/config.md)
|
||||
@@ -70,4 +71,3 @@ hooks loadJS
|
||||
```
|
||||
|
||||
Note that for convenience, the `useState` hook is also exported at the root of the `owl` object.
|
||||
|
||||
|
||||
@@ -15,4 +15,3 @@ Note: some additional information can be found here:
|
||||
|
||||
- [What should go into an environment?](../learning/environment.md)
|
||||
- [Customizing an environment](config.md#env)
|
||||
|
||||
|
||||
@@ -115,15 +115,16 @@ export class Component<T extends Env, Props extends {}> {
|
||||
Component.current = this;
|
||||
|
||||
const id: number = nextId++;
|
||||
let constr = this.constructor as any;
|
||||
let depth;
|
||||
if (parent) {
|
||||
const defaultProps = (<any>this.constructor).defaultProps;
|
||||
const defaultProps = constr.defaultProps;
|
||||
if (defaultProps) {
|
||||
props = this.__applyDefaultProps(props, defaultProps);
|
||||
}
|
||||
this.props = <Props>props;
|
||||
if (QWeb.dev) {
|
||||
QWeb.utils.validateProps(this.constructor, this.props);
|
||||
QWeb.utils.validateProps(constr, this.props);
|
||||
}
|
||||
this.env = parent.env;
|
||||
const __powl__ = parent.__owl__;
|
||||
@@ -153,7 +154,7 @@ export class Component<T extends Env, Props extends {}> {
|
||||
}
|
||||
|
||||
const qweb = this.env.qweb;
|
||||
|
||||
const template = constr.template || this.__getTemplate(qweb);
|
||||
this.__owl__ = {
|
||||
id: id,
|
||||
depth: depth,
|
||||
@@ -173,7 +174,7 @@ export class Component<T extends Env, Props extends {}> {
|
||||
willStartCB: null,
|
||||
willUpdatePropsCB: null,
|
||||
observer: null,
|
||||
renderFn: qweb.render.bind(qweb, this.__getTemplate(qweb)),
|
||||
renderFn: qweb.render.bind(qweb, template),
|
||||
classObj: null,
|
||||
refs: null
|
||||
};
|
||||
@@ -543,9 +544,6 @@ export class Component<T extends Env, Props extends {}> {
|
||||
__getTemplate(qweb: QWeb): string {
|
||||
let p = (<any>this).constructor;
|
||||
if (!p.hasOwnProperty("_template")) {
|
||||
if (p.template) {
|
||||
p._template = p.template;
|
||||
} else {
|
||||
// here, the component and none of its superclasses defines a static `template`
|
||||
// key. So we fall back on looking for a template matching its name (or
|
||||
// one of its subclass).
|
||||
@@ -560,7 +558,6 @@ export class Component<T extends Env, Props extends {}> {
|
||||
p._template = template;
|
||||
}
|
||||
}
|
||||
}
|
||||
return p._template;
|
||||
}
|
||||
async __prepareAndRender(fiber: Fiber) {
|
||||
|
||||
+1
-1
@@ -26,5 +26,5 @@ Object.defineProperty(config, "mode", {
|
||||
} else {
|
||||
console.log(`Owl is now running in 'prod' mode.`);
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
@@ -121,7 +121,7 @@ describe("props validation", () => {
|
||||
expect(error.message).toBe(`Missing props 'p' (component '_a')`);
|
||||
|
||||
error = undefined;
|
||||
props = {p: test.ok};
|
||||
props = { p: test.ok };
|
||||
try {
|
||||
const p = new Parent();
|
||||
await p.mount(fixture);
|
||||
@@ -130,7 +130,7 @@ describe("props validation", () => {
|
||||
}
|
||||
expect(error).toBeUndefined();
|
||||
|
||||
props = {p: test.ko};
|
||||
props = { p: test.ko };
|
||||
try {
|
||||
const p = new Parent();
|
||||
await p.mount(fixture);
|
||||
@@ -178,7 +178,7 @@ describe("props validation", () => {
|
||||
expect(error.message).toBe(`Missing props 'p' (component '_a')`);
|
||||
|
||||
error = undefined;
|
||||
props = {p: test.ok};
|
||||
props = { p: test.ok };
|
||||
try {
|
||||
const p = new Parent();
|
||||
await p.mount(fixture);
|
||||
@@ -187,7 +187,7 @@ describe("props validation", () => {
|
||||
}
|
||||
expect(error).toBeUndefined();
|
||||
|
||||
props = {p: test.ko};
|
||||
props = { p: test.ko };
|
||||
try {
|
||||
const p = new Parent();
|
||||
await p.mount(fixture);
|
||||
@@ -203,14 +203,14 @@ describe("props validation", () => {
|
||||
class TestWidget extends Component<any, any> {
|
||||
static template = xml`<div>hey</div>`;
|
||||
static props = { p: [String, Boolean] };
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
get p() {
|
||||
return props.p;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
let error;
|
||||
let props;
|
||||
@@ -247,14 +247,14 @@ describe("props validation", () => {
|
||||
class TestWidget extends Component<any, any> {
|
||||
static template = xml`<div>hey</div>`;
|
||||
static props = { p: { type: String, optional: true } };
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
get p() {
|
||||
return props.p;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
let error;
|
||||
let props;
|
||||
@@ -291,14 +291,14 @@ describe("props validation", () => {
|
||||
class TestWidget extends Component<any, any> {
|
||||
static template = xml`<div>hey</div>`;
|
||||
static props = { p: { type: Array, element: String } };
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
get p() {
|
||||
return props.p;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
let error;
|
||||
let props;
|
||||
@@ -343,7 +343,7 @@ describe("props validation", () => {
|
||||
class TestWidget extends Component<any, any> {
|
||||
static template = xml`<div>hey</div>`;
|
||||
static props = { p: { type: Array, element: [String, Boolean] } };
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
@@ -398,7 +398,7 @@ describe("props validation", () => {
|
||||
static props = {
|
||||
p: { type: Object, shape: { id: Number, url: String } }
|
||||
};
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
@@ -461,7 +461,7 @@ describe("props validation", () => {
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
class Parent extends Component<any, any> {
|
||||
static template = xml`<div><TestWidget p="p"/></div>`;
|
||||
static components = { TestWidget };
|
||||
@@ -677,7 +677,7 @@ describe("default props", () => {
|
||||
|
||||
const w = new Parent();
|
||||
await w.mount(fixture);
|
||||
expect(fixture.innerHTML).toBe('<div><div>4</div></div>');
|
||||
expect(fixture.innerHTML).toBe("<div><div>4</div></div>");
|
||||
});
|
||||
|
||||
test("default values are also set whenever component is updated", async () => {
|
||||
|
||||
Reference in New Issue
Block a user