Files
owl/demo/static/src/ts/widget.ts
T

39 lines
1.1 KiB
TypeScript
Raw Normal View History

2019-03-12 11:42:46 +01:00
import { Component } from "./core/component";
2019-03-04 17:00:29 +01:00
import { Env } from "./env";
2019-02-05 14:39:45 +01:00
//------------------------------------------------------------------------------
// Widget classes
//------------------------------------------------------------------------------
2019-03-12 11:42:46 +01:00
export class Widget<P, S> extends Component<Env, P, S> {
constructor(parent, props) {
super(parent, props);
(<any>this.__widget__).isMobile = this.env.isMobile;
}
2019-03-12 11:42:46 +01:00
async updateProps(nextProps: P): Promise<void> {
if ((<any>this.__widget__).isMobile !== this.env.isMobile) {
(<any>this.__widget__).isMobile = this.env.isMobile;
2019-03-12 11:42:46 +01:00
return this._updateProps(nextProps);
}
return super.updateProps(nextProps);
}
}
export class PureWidget<P, S> extends Widget<P, S> {
shouldUpdate(nextProps: P): boolean {
for (let k in nextProps) {
if (nextProps[k] !== this.props[k]) {
return true;
}
}
return false;
}
async updateState(nextState: Partial<S>) {
for (let k in nextState) {
if (nextState[k] !== this.state[k]) {
return super.updateState(nextState);
}
}
}
}