mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-22 21:48:42 +08:00
refactor(nav): fix transition to operate on ion-page element in case of host element, add a todo on iOS transition to figure this out later, and then remove the automatic appending of the .ion-page class
This commit is contained in:
@ -763,7 +763,7 @@ export function fireViewWillLifecycles(enteringView: ViewController, leavingView
|
||||
|
||||
export function attachViewToDom(nav: Nav, enteringView: ViewController, delegate: FrameworkDelegate) {
|
||||
if (enteringView && enteringView.state === STATE_NEW) {
|
||||
return delegate.attachViewToDom(nav.element, enteringView.component, enteringView.data, ['ion-page']).then((mountingData) => {
|
||||
return delegate.attachViewToDom(nav.element, enteringView.component, enteringView.data, []).then((mountingData) => {
|
||||
Object.assign(enteringView, mountingData);
|
||||
enteringView.state = STATE_ATTACHED;
|
||||
});
|
||||
|
@ -11,6 +11,10 @@ const CENTER = '0%';
|
||||
const OFF_OPACITY = 0.8;
|
||||
const SHOW_BACK_BTN_CSS = 'show-back-button';
|
||||
|
||||
// TODO - make sure this uses the `ion-page` logic from the md transition
|
||||
// DO this later since the transition is broke as a joke anyway
|
||||
// Dan B 1/9/2018
|
||||
|
||||
export function buildIOSTransition(rootTransition: Transition, enteringView: ViewController, leavingView: ViewController, opts: AnimationOptions): Promise<Transition> {
|
||||
|
||||
rootTransition.enteringView = enteringView;
|
||||
|
@ -12,7 +12,9 @@ export function buildMdTransition(rootTransition: Transition, enteringView: View
|
||||
rootTransition.enteringView = enteringView;
|
||||
rootTransition.leavingView = leavingView;
|
||||
|
||||
rootTransition.addElement(enteringView.element);
|
||||
const ionPageElement = getIonPageElement(enteringView.element);
|
||||
|
||||
rootTransition.addElement(ionPageElement);
|
||||
rootTransition.beforeRemoveClass('hide-page');
|
||||
|
||||
const backDirection = (opts.direction === 'back');
|
||||
@ -27,7 +29,7 @@ export function buildMdTransition(rootTransition: Transition, enteringView: View
|
||||
.fromTo('opacity', 0.01, 1, true);
|
||||
}
|
||||
|
||||
const enteringToolbarEle = enteringView.element.querySelector('ion-toolbar');
|
||||
const enteringToolbarEle = ionPageElement.querySelector('ion-toolbar');
|
||||
if (enteringToolbarEle) {
|
||||
const enteringToolBar = rootTransition.create();
|
||||
enteringToolBar.addElement(enteringToolbarEle);
|
||||
@ -50,9 +52,16 @@ export function buildMdTransition(rootTransition: Transition, enteringView: View
|
||||
// leaving content
|
||||
rootTransition.duration(opts.duration || 200).easing('cubic-bezier(0.47,0,0.745,0.715)');
|
||||
const leavingPage = rootTransition.create();
|
||||
leavingPage.addElement(leavingView.element);
|
||||
leavingPage.addElement(getIonPageElement(leavingView.element));
|
||||
rootTransition.add(leavingPage.fromTo(TRANSLATEY, CENTER, OFF_BOTTOM).fromTo('opacity', 1, 0));
|
||||
}
|
||||
|
||||
return Promise.resolve(rootTransition);
|
||||
}
|
||||
|
||||
function getIonPageElement(element: HTMLElement) {
|
||||
if (element.tagName.toLowerCase() === 'ion-page') {
|
||||
return element;
|
||||
}
|
||||
return element.querySelector('ion-page');
|
||||
}
|
||||
|
Reference in New Issue
Block a user