fix(modal/popover): lifecycle events

fixes #15806
This commit is contained in:
Manu Mtz.-Almeida
2018-10-08 14:28:15 -05:00
parent 11aa241dac
commit 19c449e815
3 changed files with 8 additions and 7 deletions

View File

@ -229,6 +229,6 @@ export class Modal implements ComponentInterface, OverlayInterface {
const LIFECYCLE_MAP: any = { const LIFECYCLE_MAP: any = {
'ionModalDidPresent': 'ionViewDidEnter', 'ionModalDidPresent': 'ionViewDidEnter',
'ionModalWillPresent': 'ionViewWillEnter', 'ionModalWillPresent': 'ionViewWillEnter',
'ionModalWillDismiss': 'ionViewWillDismiss', 'ionModalWillDismiss': 'ionViewWillLeave',
'ionModalDidDismiss': 'ionViewDidDismiss', 'ionModalDidDismiss': 'ionViewDidLeave',
}; };

View File

@ -241,6 +241,6 @@ export class Popover implements ComponentInterface, OverlayInterface {
const LIFECYCLE_MAP: any = { const LIFECYCLE_MAP: any = {
'ionPopoverDidPresent': 'ionViewDidEnter', 'ionPopoverDidPresent': 'ionViewDidEnter',
'ionPopoverWillPresent': 'ionViewWillEnter', 'ionPopoverWillPresent': 'ionViewWillEnter',
'ionPopoverWillDismiss': 'ionViewWillDismiss', 'ionPopoverWillDismiss': 'ionViewWillLeave',
'ionPopoverDidDismiss': 'ionViewDidDismiss', 'ionPopoverDidDismiss': 'ionViewDidLeave',
}; };

View File

@ -3,7 +3,7 @@ import { AnimationBuilder, BackButtonEvent, HTMLIonOverlayElement, IonicConfig,
let lastId = 0; let lastId = 0;
export function createOverlay<T extends HTMLIonOverlayElement>(element: T, opts: object | undefined): Promise<T> { export function createOverlay<T extends HTMLIonOverlayElement>(element: T, opts: object | undefined): Promise<T> {
const doc = element.ownerDocument; const doc = element.ownerDocument!;
connectListeners(doc); connectListeners(doc);
// convert the passed in overlay options into props // convert the passed in overlay options into props
@ -152,16 +152,17 @@ async function overlayAnimation(
} }
if (overlay.keyboardClose) { if (overlay.keyboardClose) {
animation.beforeAddWrite(() => { animation.beforeAddWrite(() => {
const activeElement = baseEl.ownerDocument.activeElement as HTMLElement; const activeElement = baseEl.ownerDocument!.activeElement as HTMLElement;
if (activeElement && activeElement.matches('input, ion-input, ion-textarea')) { if (activeElement && activeElement.matches('input, ion-input, ion-textarea')) {
activeElement.blur(); activeElement.blur();
} }
}); });
} }
await animation.playAsync(); await animation.playAsync();
const hasCompleted = animation.hasCompleted;
animation.destroy(); animation.destroy();
overlay.animation = undefined; overlay.animation = undefined;
return animation.hasCompleted; return hasCompleted;
} }
} }