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'; import { proxyMethod } from '../util/util';
export class OverlayBaseController<Opts, Overlay> { export class OverlayBaseController<Opts, Overlay> {
constructor(private ctrl: string) {} constructor(private ctrl: string) {}
@ -12,4 +10,8 @@ export class OverlayBaseController<Opts, Overlay> {
dismiss(data?: any, role?: string, id = -1): Promise<void> { dismiss(data?: any, role?: string, id = -1): Promise<void> {
return proxyMethod(this.ctrl, 'dismiss', data, role, id); 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[]) { export function proxyMethod(ctrlName: string, methodName: string, ...args: any[]) {
const controller = ensureElementInBody(ctrlName); const controller = ensureElementInBody(ctrlName);
return controller.componentOnReady() return controller.componentOnReady()
@ -15,18 +13,3 @@ export function ensureElementInBody(elementName: string) {
} }
return element as HTMLStencilElement; 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 { Component, Listen, Method } from '@stencil/core';
import { ActionSheetOptions, OverlayController } from '../../index'; import { ActionSheetOptions } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @Component({
tag: 'ion-action-sheet-controller' tag: 'ion-action-sheet-controller'

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
import { Component, Listen, Method } from '@stencil/core'; import { Component, Listen, Method } from '@stencil/core';
import { OverlayController, ToastOptions } from '../../index'; import { ToastOptions } from '../../index';
import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; import { OverlayController, createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays';
@Component({ @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 { DomController, RafCallback } from './global/dom-controller';
export { FrameworkDelegate, FrameworkMountingData } from './utils/dom-framework-delegate'; export { FrameworkDelegate, FrameworkMountingData } from './utils/dom-framework-delegate';
export { OverlayEventDetail } from './utils/overlays';
export interface Config { export interface Config {
get: (key: string, fallback?: any) => any; 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>; 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 interface HTMLIonOverlayElement extends HTMLStencilElement, OverlayInterface {}
export type OverlayMap = Map<number, HTMLIonOverlayElement>; export type OverlayMap = Map<number, HTMLIonOverlayElement>;