mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 19:57:22 +08:00
@ -64,6 +64,9 @@ export class IonTabs {
|
|||||||
? href
|
? href
|
||||||
: this.outlet.getLastUrl(tab) || href;
|
: this.outlet.getLastUrl(tab) || href;
|
||||||
|
|
||||||
return this.navCtrl.navigateBack(url);
|
return this.navCtrl.navigateRoot(url, {
|
||||||
|
animated: true,
|
||||||
|
animationDirection: 'back'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,25 +44,20 @@ export class NavController {
|
|||||||
|
|
||||||
navigateForward(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
navigateForward(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
||||||
this.setDirection('forward', options.animated, options.animationDirection);
|
this.setDirection('forward', options.animated, options.animationDirection);
|
||||||
if (Array.isArray(url)) {
|
this.navigate(url, options);
|
||||||
return this.router!.navigate(url, options);
|
|
||||||
} else {
|
|
||||||
return this.router!.navigateByUrl(url, options);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
navigateBack(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
navigateBack(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
||||||
this.setDirection('back', options.animated, options.animationDirection);
|
this.setDirection('back', options.animated, options.animationDirection);
|
||||||
// extras = { replaceUrl: true, ...extras };
|
this.navigate(url, options);
|
||||||
if (Array.isArray(url)) {
|
|
||||||
return this.router!.navigate(url, options);
|
|
||||||
} else {
|
|
||||||
return this.router!.navigateByUrl(url, options);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
navigateRoot(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
navigateRoot(url: string | UrlTree | any[], options: NavigationOptions = {}) {
|
||||||
this.setDirection('root', options.animated, options.animationDirection);
|
this.setDirection('root', options.animated, options.animationDirection);
|
||||||
|
this.navigate(url, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
navigate(url: string | UrlTree | any[], options: NavigationOptions) {
|
||||||
if (Array.isArray(url)) {
|
if (Array.isArray(url)) {
|
||||||
return this.router!.navigate(url, options);
|
return this.router!.navigate(url, options);
|
||||||
} else {
|
} else {
|
||||||
|
@ -139,31 +139,29 @@ async function overlayAnimation(
|
|||||||
overlay.animation.destroy();
|
overlay.animation.destroy();
|
||||||
overlay.animation = undefined;
|
overlay.animation = undefined;
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
} else {
|
|
||||||
// Make overlay visible in case it's hidden
|
|
||||||
baseEl.classList.remove('overlay-hidden');
|
|
||||||
|
|
||||||
const aniRoot = baseEl.shadowRoot || overlay.el;
|
|
||||||
const animation = overlay.animation = await import('./animation').then(mod => mod.create(animationBuilder, aniRoot, opts));
|
|
||||||
overlay.animation = animation;
|
|
||||||
if (!overlay.animated || !overlay.config.getBoolean('animated', true)) {
|
|
||||||
animation.duration(0);
|
|
||||||
}
|
|
||||||
if (overlay.keyboardClose) {
|
|
||||||
animation.beforeAddWrite(() => {
|
|
||||||
const activeElement = baseEl.ownerDocument!.activeElement as HTMLElement;
|
|
||||||
if (activeElement && activeElement.matches('input, ion-input, ion-textarea')) {
|
|
||||||
activeElement.blur();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
await animation.playAsync();
|
|
||||||
const hasCompleted = animation.hasCompleted;
|
|
||||||
animation.destroy();
|
|
||||||
overlay.animation = undefined;
|
|
||||||
return hasCompleted;
|
|
||||||
}
|
}
|
||||||
|
// Make overlay visible in case it's hidden
|
||||||
|
baseEl.classList.remove('overlay-hidden');
|
||||||
|
|
||||||
|
const aniRoot = baseEl.shadowRoot || overlay.el;
|
||||||
|
const animation = overlay.animation = await import('./animation').then(mod => mod.create(animationBuilder, aniRoot, opts));
|
||||||
|
overlay.animation = animation;
|
||||||
|
if (!overlay.animated || !overlay.config.getBoolean('animated', true)) {
|
||||||
|
animation.duration(0);
|
||||||
|
}
|
||||||
|
if (overlay.keyboardClose) {
|
||||||
|
animation.beforeAddWrite(() => {
|
||||||
|
const activeElement = baseEl.ownerDocument!.activeElement as HTMLElement;
|
||||||
|
if (activeElement && activeElement.matches('input, ion-input, ion-textarea')) {
|
||||||
|
activeElement.blur();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await animation.playAsync();
|
||||||
|
const hasCompleted = animation.hasCompleted;
|
||||||
|
animation.destroy();
|
||||||
|
overlay.animation = undefined;
|
||||||
|
return hasCompleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function autoFocus(containerEl: HTMLElement): HTMLElement | undefined {
|
export function autoFocus(containerEl: HTMLElement): HTMLElement | undefined {
|
||||||
|
Reference in New Issue
Block a user