fix-next(HMR): apply changes in page styles at runtime when app root is a frame

This commit is contained in:
Vasil Chimev
2019-05-03 13:26:37 +03:00
parent b7abb3dd64
commit cfa37cfa28
4 changed files with 18 additions and 3 deletions

View File

@ -153,7 +153,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition {
if (context && context.type && context.path) {
// Handle local styles
if (context.type === ModuleType.style) {
return this.changeLocalStyles(context.path);
return this._changeLocalStyles(context.path);
}
// Handle module markup and script changes
else {
@ -164,7 +164,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition {
return false;
}
private changeLocalStyles(contextPath: string): boolean {
public _changeLocalStyles(contextPath: string): boolean {
if (!this.changeStyles(this, contextPath)) {
eachDescendant(this, (child: ViewBase) => {
this.changeStyles(child, contextPath);

View File

@ -474,7 +474,7 @@ export abstract class View extends ViewBase {
/**
* @deprecated use on() instead
*
*
* @param type - Type of the gesture.
* @param callback - A function that will be executed when gesture is received.
* @param thisArg - An optional parameter which will be used as `this` context for callback execution.
@ -683,6 +683,10 @@ export abstract class View extends ViewBase {
* @private
*/
_onLivesync(context?: { type: string, path: string }): boolean;
/**
* @private
*/
_changeLocalStyles(contextPath: string): boolean;
/**
* @private
*/

View File

@ -349,6 +349,11 @@ export class Frame extends FrameBase {
}
if (context && context.type && context.path) {
// Handle local styls changes when app root is Frame
if (context.type === ModuleType.style) {
return this._changeLocalStyles(context.path);
}
// Set NavigationType.replace for HMR.
this.navigationType = NavigationType.replace;
const currentBackstackEntry = this._currentEntry;

View File

@ -3,6 +3,7 @@ import {
iOSFrame as iOSFrameDefinition, BackstackEntry, NavigationTransition
} from ".";
import { Page } from "../page";
import { ModuleType } from "../../ui/core/view/view-common";
import { profile } from "../../profiling";
//Types.
@ -73,6 +74,11 @@ export class Frame extends FrameBase {
}
if (context && context.type && context.path) {
// Handle local styls changes when app root is Frame
if (context.type === ModuleType.style) {
return this._changeLocalStyles(context.path);
}
// Set NavigationType.replace for HMR.
// When `viewDidAppear()` set to NavigationType.forward.
this.navigationType = NavigationType.replace;