fix(overlays): OverlayController interface

This commit is contained in:
Manu Mtz.-Almeida
2018-03-13 19:45:36 +01:00
parent cc4fecc1be
commit 6e2ca85b2a
12 changed files with 25 additions and 38 deletions

View File

@@ -1,7 +1,5 @@
import { proxyMethod } from '../util/util';
export class OverlayBaseController<Opts, Overlay> {
constructor(private ctrl: string) {}
@@ -12,4 +10,8 @@ export class OverlayBaseController<Opts, Overlay> {
dismiss(data?: any, role?: string, id = -1): Promise<void> {
return proxyMethod(this.ctrl, 'dismiss', data, role, id);
}
getTop(): Promise<Overlay> {
return proxyMethod(this.ctrl, 'getTop');
}
}

View File

@@ -1,6 +1,4 @@
export function proxyMethod(ctrlName: string, methodName: string, ...args: any[]) {
const controller = ensureElementInBody(ctrlName);
return controller.componentOnReady()
@@ -15,18 +13,3 @@ export function ensureElementInBody(elementName: string) {
}
return element as HTMLStencilElement;
}
export function removeAllNodeChildren(element: HTMLElement) {
while (element.firstChild) {
element.removeChild(element.firstChild);
}
}
export function isString(something: any) {
return typeof something === 'string' ? true : false;
}
export function getIonApp(): Promise<HTMLIonAppElement> {
const element = ensureElementInBody('ion-app') as HTMLIonAppElement;
return element.componentOnReady();
}

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
import { Component, Listen, Method } from '@stencil/core';
import { LoadingOptions, OverlayController } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
import { LoadingOptions } from '../../index';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({

View File

@@ -19,7 +19,6 @@ import mdLeaveAnimation from './animations/md.leave';
theme: 'loading'
}
})
export class Loading implements OverlayInterface {
private durationTimeout: any;

View File

@@ -1,6 +1,6 @@
import { Component, Listen, Method } from '@stencil/core';
import { ModalOptions, OverlayController } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
import { ModalOptions } from '../../index';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({

View File

@@ -1,6 +1,6 @@
import { Component, Listen, Method } from '@stencil/core';
import { OverlayController, PickerOptions } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
import { PickerOptions } from '../../index';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({

View File

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

View File

@@ -1,6 +1,6 @@
import { Component, Listen, Method } from '@stencil/core';
import { OverlayController, ToastOptions } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
import { ToastOptions } from '../../index';
import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({

5
core/src/index.d.ts vendored
View File

@@ -110,6 +110,7 @@ export * from './components';
export { DomController, RafCallback } from './global/dom-controller';
export { FrameworkDelegate, FrameworkMountingData } from './utils/dom-framework-delegate';
export { OverlayEventDetail } from './utils/overlays';
export interface Config {
get: (key: string, fallback?: any) => any;
@@ -157,7 +158,3 @@ declare global {
}
}
}
export interface OverlayController {
getTop(): HTMLElement;
}

View File

@@ -200,6 +200,12 @@ export interface OverlayInterface {
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, OverlayInterface {}
export type OverlayMap = Map<number, HTMLIonOverlayElement>;