diff --git a/apps/automated/package.json b/apps/automated/package.json index 154e9cf95..0de8f239a 100644 --- a/apps/automated/package.json +++ b/apps/automated/package.json @@ -11,8 +11,8 @@ "nativescript-theme-core": "file:../../node_modules/nativescript-theme-core" }, "devDependencies": { - "@nativescript/android": "~8.4.0", - "@nativescript/ios": "~8.4.0", + "@nativescript/android": "~8.5.0", + "@nativescript/ios": "~8.5.0", "@nativescript/webpack": "file:../../dist/packages/nativescript-webpack.tgz", "typescript": "~4.9.5" }, diff --git a/apps/automated/src/navigation/custom-transition.ios.ts b/apps/automated/src/navigation/custom-transition.ios.ts index 2191afb1e..16a013889 100644 --- a/apps/automated/src/navigation/custom-transition.ios.ts +++ b/apps/automated/src/navigation/custom-transition.ios.ts @@ -1,4 +1,5 @@ -import { PageTransition, SharedTransition, SharedTransitionHelper, Transition } from '@nativescript/core'; +import { PageTransition, SharedTransition, SharedTransitionAnimationType, SharedTransitionHelper, Transition, Utils } from '@nativescript/core'; +import { CORE_ANIMATION_DEFAULTS } from '@nativescript/core/utils'; export class CustomTransition extends Transition { constructor(duration: number, curve: any) { @@ -72,9 +73,24 @@ class PageTransitionController extends NSObject implements UIViewControllerAnima transitionDuration(transitionContext: UIViewControllerContextTransitioning): number { const owner = this.owner.deref(); if (owner) { - return owner.getDuration(); + const state = SharedTransition.getState(owner.id); + switch (state?.activeType) { + case SharedTransitionAnimationType.present: + if (Utils.isNumber(state?.pageEnd?.duration)) { + return state.pageEnd?.duration / 1000; + } else { + return Utils.getDurationWithDampingFromSpring(state.pageEnd?.spring).duration; + } + + case SharedTransitionAnimationType.dismiss: + if (Utils.isNumber(state?.pageReturn?.duration)) { + return state.pageReturn?.duration / 1000; + } else { + return Utils.getDurationWithDampingFromSpring(state.pageReturn?.spring).duration; + } + } } - return 0.35; + return CORE_ANIMATION_DEFAULTS.duration; } animateTransition(transitionContext: UIViewControllerContextTransitioning): void { diff --git a/apps/automated/src/navigation/transition-tests.ts b/apps/automated/src/navigation/transition-tests.ts index 48fb9092d..e25d48247 100644 --- a/apps/automated/src/navigation/transition-tests.ts +++ b/apps/automated/src/navigation/transition-tests.ts @@ -52,8 +52,8 @@ export function test_Transitions() { // helper.navigateWithEntry({ create: mainPageFactory, clearHistory: true, animated: false }); } -export function test_SharedElementTransitions() { - helper.navigate(() => { +export function test_SharedElementTransitions(done) { + const mainPage = helper.navigate(() => { const page = new Page(); page.id = 'SharedelementTransitionsTestPage_MAIN'; page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)); @@ -76,12 +76,12 @@ export function test_SharedElementTransitions() { const navigationTransition = SharedTransition.custom(new CustomSharedElementPageTransition()); - var testId = `SharedElementTransition[${JSON.stringify(navigationTransition)}]`; + const testId = `SharedElementTransition[${JSON.stringify(navigationTransition)}]`; if (Trace.isEnabled()) { Trace.write(`Testing ${testId}`, Trace.categories.Test); } - var navigationEntry: NavigationEntry = { - create: function (): Page { + const navigationEntry: NavigationEntry = { + create(): Page { let page = new Page(); page.id = testId; page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)); @@ -99,11 +99,16 @@ export function test_SharedElementTransitions() { grid.addChild(sharedElement); page.content = grid; + + page.once('navigatedTo', () => { + done(); + }); + return page; }, animated: true, transition: navigationTransition, }; - helper.navigateWithEntry(navigationEntry); + mainPage.frame.navigate(navigationEntry); } diff --git a/apps/toolbox/package.json b/apps/toolbox/package.json index 636850fce..e3376a7d5 100644 --- a/apps/toolbox/package.json +++ b/apps/toolbox/package.json @@ -12,8 +12,8 @@ "@nativescript/imagepicker": "^1.0.6" }, "devDependencies": { - "@nativescript/android": "~8.4.0", - "@nativescript/ios": "~8.4.0", + "@nativescript/android": "~8.5.0", + "@nativescript/ios": "~8.5.0", "@nativescript/webpack": "file:../../dist/packages/nativescript-webpack.tgz", "typescript": "~4.9.5" } diff --git a/apps/toolbox/src/pages/transitions/transition-example-detail.xml b/apps/toolbox/src/pages/transitions/transition-example-detail.xml index 27d1397f3..5cea63e6d 100644 --- a/apps/toolbox/src/pages/transitions/transition-example-detail.xml +++ b/apps/toolbox/src/pages/transitions/transition-example-detail.xml @@ -6,17 +6,17 @@