mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
ref: move PureWidget back to core, use updateEnv
This commit is contained in:
@@ -40,8 +40,7 @@ export class Root extends Widget<Store, State> {
|
|||||||
applyMobileInterface() {
|
applyMobileInterface() {
|
||||||
const isMobile = window.innerWidth <= 768;
|
const isMobile = window.innerWidth <= 768;
|
||||||
if (isMobile !== this.env.isMobile) {
|
if (isMobile !== this.env.isMobile) {
|
||||||
this.env.isMobile = isMobile;
|
this.updateEnv({ isMobile });
|
||||||
this.render();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +1,10 @@
|
|||||||
import { Component } from "../../../../../src/component";
|
import { Component, PureComponent } from "../../../../../src/component";
|
||||||
import { Env } from "./env";
|
import { Env } from "./env";
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Widget classes
|
// Widget classes
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
export class Widget<P, S> extends Component<Env, P, S> {
|
export class Widget<P, S> extends Component<Env, P, S> {}
|
||||||
constructor(parent, props) {
|
|
||||||
super(parent, props);
|
|
||||||
(<any>this.__widget__).isMobile = this.env.isMobile;
|
|
||||||
}
|
|
||||||
async updateProps(nextProps: P): Promise<void> {
|
|
||||||
if ((<any>this.__widget__).isMobile !== this.env.isMobile) {
|
|
||||||
(<any>this.__widget__).isMobile = this.env.isMobile;
|
|
||||||
return this._updateProps(nextProps);
|
|
||||||
}
|
|
||||||
return super.updateProps(nextProps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class PureWidget<P, S> extends Widget<P, S> {
|
export class PureWidget<P, S> extends PureComponent<Env, 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -407,3 +407,21 @@ export class Component<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PureComponent<E extends Env, P, S> extends Component<E, 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+9
-2
@@ -1,6 +1,13 @@
|
|||||||
import { QWeb } from "./qweb";
|
import { QWeb } from "./qweb";
|
||||||
import { EventBus } from "./event_bus";
|
import { EventBus } from "./event_bus";
|
||||||
import { Component } from "./component";
|
import { Component, PureComponent } from "./component";
|
||||||
import { Store, StoreMixin } from "./store";
|
import { Store, StoreMixin } from "./store";
|
||||||
|
|
||||||
export const core = { QWeb, EventBus, Component, Store, StoreMixin };
|
export const core = {
|
||||||
|
QWeb,
|
||||||
|
EventBus,
|
||||||
|
Component,
|
||||||
|
PureComponent,
|
||||||
|
Store,
|
||||||
|
StoreMixin
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user