From bfea96fbc06924c503c322d29116a82e04a465ea Mon Sep 17 00:00:00 2001 From: Vasil Chimev Date: Tue, 22 Oct 2019 13:54:02 +0300 Subject: [PATCH] fix-next(css-classes): increase application CSS selector version at runtime (#7992) --- nativescript-core/application/application-common.ts | 10 ++++++++++ nativescript-core/ui/styling/style-scope.d.ts | 4 ++++ nativescript-core/ui/styling/style-scope.ts | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/nativescript-core/application/application-common.ts b/nativescript-core/application/application-common.ts index 536013ed4..10de66855 100644 --- a/nativescript-core/application/application-common.ts +++ b/nativescript-core/application/application-common.ts @@ -142,6 +142,14 @@ function removeCssClass(rootView: View, cssClass: string) { rootView.cssClasses.delete(cssClass); } +function increaseStyleScopeApplicationCssSelectorVersion(rootView: View) { + const styleScope = rootView._styleScope || ((rootView).currentPage && (rootView).currentPage._styleScope); + + if (styleScope) { + styleScope._increaseApplicationCssSelectorVersion(); + } +} + export function orientationChanged(rootView: View, newOrientation: "portrait" | "landscape" | "unknown"): void { if (!rootView) { return; @@ -151,6 +159,7 @@ export function orientationChanged(rootView: View, newOrientation: "portrait" | if (!rootView.cssClasses.has(newOrientationCssClass)) { ORIENTATION_CSS_CLASSES.forEach(cssClass => removeCssClass(rootView, cssClass)); applyCssClass(rootView, newOrientationCssClass); + increaseStyleScopeApplicationCssSelectorVersion(rootView); rootView._onCssStateChange(); } } @@ -164,6 +173,7 @@ export function systemAppearanceChanged(rootView: View, newSystemAppearance: "da if (!rootView.cssClasses.has(newSystemAppearanceCssClass)) { SYSTEM_APPEARANCE_CSS_CLASSES.forEach(cssClass => removeCssClass(rootView, cssClass)); applyCssClass(rootView, newSystemAppearanceCssClass); + increaseStyleScopeApplicationCssSelectorVersion(rootView); rootView._onCssStateChange(); } } diff --git a/nativescript-core/ui/styling/style-scope.d.ts b/nativescript-core/ui/styling/style-scope.d.ts index 4ea0bda82..b43e2b316 100644 --- a/nativescript-core/ui/styling/style-scope.d.ts +++ b/nativescript-core/ui/styling/style-scope.d.ts @@ -36,6 +36,10 @@ export class StyleScope { public static createSelectorsFromImports(tree: SyntaxTree, keyframes: Object): RuleSet[]; public ensureSelectors(): number; + /** + * Increase the application CSS selector version. + */ + public _increaseApplicationCssSelectorVersion(): void; public isApplicationCssSelectorsLatestVersionApplied(): boolean; public isLocalCssSelectorsLatestVersionApplied(): boolean; diff --git a/nativescript-core/ui/styling/style-scope.ts b/nativescript-core/ui/styling/style-scope.ts index 084eedfa6..6105cff89 100644 --- a/nativescript-core/ui/styling/style-scope.ts +++ b/nativescript-core/ui/styling/style-scope.ts @@ -760,6 +760,10 @@ export class StyleScope { return this._getSelectorsVersion(); } + public _increaseApplicationCssSelectorVersion(): void { + applicationCssSelectorVersion++; + } + public isApplicationCssSelectorsLatestVersionApplied(): boolean { return this._applicationCssSelectorsAppliedVersion === applicationCssSelectorVersion; }