refactor(popover): rename ev to event?

fixes #15014
This commit is contained in:
Manu Mtz.-Almeida
2018-08-07 23:16:47 +02:00
parent 2a4327f850
commit 8cc1ce253e
19 changed files with 83 additions and 82 deletions

View File

@ -1662,7 +1662,7 @@ declare global {
/** /**
* The event to pass to the popover animation. * The event to pass to the popover animation.
*/ */
'ev': any; 'event': any;
'keyboardClose': boolean; 'keyboardClose': boolean;
/** /**
* Animation to use when the popover is dismissed. * Animation to use when the popover is dismissed.
@ -5169,7 +5169,7 @@ declare global {
/** /**
* The event to pass to the popover animation. * The event to pass to the popover animation.
*/ */
'ev'?: any; 'event'?: any;
'keyboardClose'?: boolean; 'keyboardClose'?: boolean;
/** /**
* Animation to use when the popover is dismissed. * Animation to use when the popover is dismissed.

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { ActionSheetOptions } from '../../interface'; import { ActionSheetOptions, OverlayController } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-action-sheet-controller' tag: 'ion-action-sheet-controller'

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { AlertOptions } from '../../interface'; import { AlertOptions, OverlayController } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-alert-controller' tag: 'ion-alert-controller'

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { LoadingOptions } from '../../interface'; import { LoadingOptions, OverlayController } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-loading-controller' tag: 'ion-loading-controller'

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { ModalOptions } from '../../interface'; import { ModalOptions, OverlayController } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-modal-controller' tag: 'ion-modal-controller'

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { PickerOptions } from '../../interface'; import { OverlayController, PickerOptions } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
/** @hidden */ /** @hidden */
@Component({ @Component({

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { PopoverOptions } from '../../interface'; import { PopoverOptions, OverlayController } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-popover-controller' tag: 'ion-popover-controller'

View File

@ -5,7 +5,7 @@ async function presentPopover() {
const popoverElement = await popoverController.create({ const popoverElement = await popoverController.create({
component: 'profile-page', component: 'profile-page',
ev: event event: event
}); });
return await popoverElement.present(); return await popoverElement.present();
} }

View File

@ -9,6 +9,6 @@ export interface PopoverOptions {
enterAnimation?: AnimationBuilder; enterAnimation?: AnimationBuilder;
leaveAnimation?: AnimationBuilder; leaveAnimation?: AnimationBuilder;
cssClass?: string | string[]; cssClass?: string | string[];
ev: Event; event?: Event;
delegate?: FrameworkDelegate; delegate?: FrameworkDelegate;
} }

View File

@ -79,7 +79,7 @@ export class Popover implements OverlayInterface {
/** /**
* The event to pass to the popover animation. * The event to pass to the popover animation.
*/ */
@Prop() ev: any; @Prop() event: any;
/** /**
* If true, a backdrop will be displayed behind the popover. Defaults to `true`. * If true, a backdrop will be displayed behind the popover. Defaults to `true`.
@ -181,7 +181,7 @@ export class Popover implements OverlayInterface {
popover: this.el popover: this.el
}; };
this.usersElement = await attachComponent(this.delegate, container, this.component, ['popover-viewport'], data); this.usersElement = await attachComponent(this.delegate, container, this.component, ['popover-viewport'], data);
return present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, this.ev); return present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, this.event);
} }
/** /**
@ -189,7 +189,7 @@ export class Popover implements OverlayInterface {
*/ */
@Method() @Method()
async dismiss(data?: any, role?: string): Promise<void> { async dismiss(data?: any, role?: string): Promise<void> {
await dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation, mdLeaveAnimation, this.ev); await dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation, mdLeaveAnimation, this.event);
await detachComponent(this.delegate, this.usersElement); await detachComponent(this.delegate, this.usersElement);
} }

View File

@ -15,7 +15,7 @@
<ion-header> <ion-header>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<ion-buttons slot="secondary"> <ion-buttons slot="secondary">
<ion-button onclick="presentPopover({component: 'profile-page', ev: event })"> <ion-button onclick="presentPopover({component: 'profile-page', event: event })">
<ion-icon slot="icon-only" name="person"></ion-icon> <ion-icon slot="icon-only" name="person"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons>
@ -24,9 +24,9 @@
</ion-header> </ion-header>
<ion-content id="content" padding> <ion-content id="content" padding>
<ion-button class="e2eShowPopover" expand="block" onclick="presentPopover({ component: 'profile-page', ev: event })">Show Popover</ion-button> <ion-button class="e2eShowPopover" expand="block" onclick="presentPopover({ component: 'profile-page', event: event })">Show Popover</ion-button>
<ion-button expand="block" onclick="presentPopover({ component: 'translucent-page', ev: event, translucent: true })">Show Translucent Popover</ion-button> <ion-button expand="block" onclick="presentPopover({ component: 'translucent-page', event: event, translucent: true })">Show Translucent Popover</ion-button>
<ion-button expand="block" color="secondary" onclick="presentPopover({ component: 'list-page', ev: event })">Show Long List Popover</ion-button> <ion-button expand="block" color="secondary" onclick="presentPopover({ component: 'list-page', event: event })">Show Long List Popover</ion-button>
<ion-button expand="block" color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</ion-button> <ion-button expand="block" color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</ion-button>
<ion-popover-controller></ion-popover-controller> <ion-popover-controller></ion-popover-controller>
@ -35,7 +35,7 @@
<ion-footer> <ion-footer>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<ion-buttons slot="primary"> <ion-buttons slot="primary">
<ion-button onclick="presentPopover({component: 'profile-page', ev: event })"> <ion-button onclick="presentPopover({component: 'profile-page', event: event })">
<ion-icon slot="icon-only" name="person"></ion-icon> <ion-icon slot="icon-only" name="person"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons>

View File

@ -15,7 +15,7 @@
<ion-header> <ion-header>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<ion-buttons slot="secondary"> <ion-buttons slot="secondary">
<ion-button onclick="presentPopover({component: 'profile-page', ev: event })"> <ion-button onclick="presentPopover({component: 'profile-page', event: event })">
<ion-icon slot="icon-only" name="person"></ion-icon> <ion-icon slot="icon-only" name="person"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons>
@ -24,9 +24,9 @@
</ion-header> </ion-header>
<ion-content id="content" padding> <ion-content id="content" padding>
<ion-button class="e2eShowPopover" expand="block" onclick="presentPopover({ component: 'profile-page', ev: event })">Show Popover</ion-button> <ion-button class="e2eShowPopover" expand="block" onclick="presentPopover({ component: 'profile-page', event: event })">Show Popover</ion-button>
<ion-button expand="block" onclick="presentPopover({ component: 'translucent-page', ev: event, translucent: true })">Show Translucent Popover</ion-button> <ion-button expand="block" onclick="presentPopover({ component: 'translucent-page', event: event, translucent: true })">Show Translucent Popover</ion-button>
<ion-button expand="block" color="secondary" onclick="presentPopover({ component: 'list-page', ev: event })">Show Long List Popover</ion-button> <ion-button expand="block" color="secondary" onclick="presentPopover({ component: 'list-page', event: event })">Show Long List Popover</ion-button>
<ion-button expand="block" color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</ion-button> <ion-button expand="block" color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</ion-button>
<ion-popover-controller></ion-popover-controller> <ion-popover-controller></ion-popover-controller>
@ -35,7 +35,7 @@
<ion-footer> <ion-footer>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<ion-buttons slot="primary"> <ion-buttons slot="primary">
<ion-button onclick="presentPopover({component: 'profile-page', ev: event })"> <ion-button onclick="presentPopover({component: 'profile-page', event: event })">
<ion-icon slot="icon-only" name="person"></ion-icon> <ion-icon slot="icon-only" name="person"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons>

View File

@ -10,9 +10,9 @@
</head> </head>
<body> <body>
<button id="basic" onclick="presentPopover({ component: 'profile-page', ev: event })">Show Popover</button> <button id="basic" onclick="presentPopover({ component: 'profile-page', event: event })">Show Popover</button>
<button onclick="presentPopover({ component: 'translucent-page', ev: event, translucent: true })">Show Translucent Popover</button> <button onclick="presentPopover({ component: 'translucent-page', event: event, translucent: true })">Show Translucent Popover</button>
<button color="secondary" onclick="presentPopover({ component: 'list-page', ev: event })">Show Long List Popover</button> <button color="secondary" onclick="presentPopover({ component: 'list-page', event: event })">Show Long List Popover</button>
<button color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</button> <button color="danger" onclick="presentPopover({ component: 'profile-page' })">No Event Popover</button>
<ion-popover-controller></ion-popover-controller> <ion-popover-controller></ion-popover-controller>

View File

@ -14,7 +14,7 @@ export class PopoverExample {
async presentPopover(ev: any) { async presentPopover(ev: any) {
const popover = await this.popoverController.create({ const popover = await this.popoverController.create({
component: PopoverComponent, component: PopoverComponent,
ev: event, event: event,
translucent: true translucent: true
}); });
return await popover.present(); return await popover.present();

View File

@ -5,8 +5,8 @@ async function presentPopover(ev) {
const popover = await popoverController.create({ const popover = await popoverController.create({
component: 'popover-example-page', component: 'popover-example-page',
ev: event,
translucent: true translucent: true
event,
}); });
return await popover.present(); return await popover.present();
} }

View File

@ -1,7 +1,7 @@
import { Component, Listen, Method, Prop } from '@stencil/core'; import { Component, Listen, Method, Prop } from '@stencil/core';
import { ToastOptions } from '../../interface'; import { OverlayController, ToastOptions } from '../../interface';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-toast-controller' tag: 'ion-toast-controller'

View File

@ -26,7 +26,7 @@ export { Gesture, GestureDetail } from './utils/gesture/gesture';
export * from './utils/input-interface'; export * from './utils/input-interface';
export * from './global/config'; export * from './global/config';
export { OverlayEventDetail, OverlayInterface } from './utils/overlays'; export * from './utils/overlays-interface';
// Global types // Global types

View File

@ -0,0 +1,44 @@
import { EventEmitter } from '@stencil/core';
import { Animation, AnimationBuilder, Config, Mode } from '../interface';
export interface OverlayEventDetail<T = any> {
data?: T;
role?: string;
}
export interface OverlayInterface {
mode: Mode;
el: HTMLElement;
willAnimate: boolean;
keyboardClose: boolean;
config: Config;
overlayId: number;
presented: boolean;
animation?: Animation;
animationCtrl: HTMLIonAnimationControllerElement;
enterAnimation?: AnimationBuilder;
leaveAnimation?: AnimationBuilder;
didPresent: EventEmitter<void>;
willPresent: EventEmitter<void>;
willDismiss: EventEmitter<OverlayEventDetail>;
didDismiss: EventEmitter<OverlayEventDetail>;
present(): Promise<void>;
dismiss(data?: any, role?: string): Promise<void>;
}
export interface OverlayController {
create(opts?: any): Promise<HTMLElement>;
dismiss(data?: any, role?: string, alertId?: number): Promise<void>;
getTop(): HTMLElement;
}
export interface HTMLIonOverlayElement extends HTMLStencilElement {
overlayId: number;
dismiss(data?: any, role?: string): Promise<void>;
}
export type OverlayMap = Map<number, HTMLIonOverlayElement>;

View File

@ -1,10 +1,8 @@
import { EventEmitter } from '@stencil/core'; import { AnimationBuilder, HTMLIonOverlayElement, OverlayInterface, OverlayMap } from '../interface';
import { Animation, AnimationBuilder, Config, Mode } from '../interface';
let lastId = 1; let lastId = 1;
export function createOverlay<T extends HTMLIonOverlayElement, B>(element: T, opts: B): Promise<T> { export function createOverlay<T extends HTMLIonOverlayElement & Required<B>, B>(element: T, opts: B): Promise<T> {
// convert the passed in overlay options into props // convert the passed in overlay options into props
// that get passed down into the new overlay // that get passed down into the new overlay
Object.assign(element, opts); Object.assign(element, opts);
@ -160,45 +158,4 @@ export function isCancel(role: string | undefined): boolean {
return role === 'cancel' || role === BACKDROP; return role === 'cancel' || role === BACKDROP;
} }
export interface OverlayEventDetail<T = any> {
data?: T;
role?: string;
}
export interface OverlayInterface {
mode: Mode;
el: HTMLElement;
willAnimate: boolean;
keyboardClose: boolean;
config: Config;
overlayId: number;
presented: boolean;
animation?: Animation;
animationCtrl: HTMLIonAnimationControllerElement;
enterAnimation?: AnimationBuilder;
leaveAnimation?: AnimationBuilder;
didPresent: EventEmitter<void>;
willPresent: EventEmitter<void>;
willDismiss: EventEmitter<OverlayEventDetail>;
didDismiss: EventEmitter<OverlayEventDetail>;
present(): Promise<void>;
dismiss(data?: any, role?: string): Promise<void>;
}
export interface OverlayController {
create(opts?: any): Promise<HTMLElement>;
dismiss(data?: any, role?: string, alertId?: number): Promise<void>;
getTop(): HTMLElement;
}
export interface HTMLIonOverlayElement extends HTMLStencilElement {
overlayId: number;
dismiss(data?: any, role?: string): Promise<void>;
}
export type OverlayMap = Map<number, HTMLIonOverlayElement>;
export const BACKDROP = 'backdrop'; export const BACKDROP = 'backdrop';