diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts index dcd52b3b81..58c25e7b66 100644 --- a/packages/angular/src/index.ts +++ b/packages/angular/src/index.ts @@ -9,6 +9,7 @@ export { AlertController, AlertProxy } from './providers/alert-controller'; export { App } from './providers/app'; export { Events } from './providers/events'; export { LoadingController, LoadingProxy } from './providers/loading-controller'; +export { MenuController } from './providers/menu-controller'; export { ModalController, ModalProxy } from './providers/modal-controller'; export { NavController } from './providers/nav-controller'; export { NavParams } from './providers/nav-params'; diff --git a/packages/angular/src/module.ts b/packages/angular/src/module.ts index f4e0ee96a3..1aa75f480b 100644 --- a/packages/angular/src/module.ts +++ b/packages/angular/src/module.ts @@ -22,6 +22,7 @@ import { AngularComponentMounter } from './providers/angular-component-mounter'; import { App } from './providers/app'; import { Events } from './providers/events'; import { LoadingController } from './providers/loading-controller'; +import { MenuController } from './providers/menu-controller'; import { ModalController } from './providers/modal-controller'; import { PopoverController } from './providers/popover-controller'; import { ToastController } from './providers/toast-controller'; @@ -61,6 +62,7 @@ export class IonicAngularModule { App, Events, LoadingController, + MenuController, ModalController, PopoverController, ToastController diff --git a/packages/angular/src/providers/menu-controller.ts b/packages/angular/src/providers/menu-controller.ts new file mode 100644 index 0000000000..68e62cfd7a --- /dev/null +++ b/packages/angular/src/providers/menu-controller.ts @@ -0,0 +1,127 @@ +import { ensureElementInBody } from '../util/util'; + +let element: HTMLIonMenuControllerElement; +export class MenuController { + + + constructor() { + element = ensureElementInBody('ion-menu-controller') as HTMLIonMenuControllerElement; + } + + close(menuId?: string) { + return (element as any).componentOnReady().then(() => { + return element.close(menuId); + }); + } + + // maintain legacy sync api + enable(enabled: boolean, menuId?: string) { + if (element && element.enable) { + return element.enable(enabled, menuId); + } + // IDK, this is not a good place to be in + return null; + } + + enableAsync(menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.enable(true, menuId); + }); + } + + get(menuId?: string) { + if (element && element.get) { + return element.get(menuId); + } + // IDK, this is not a good place to be in + return null; + } + + getAsync(menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.get(menuId); + }); + } + + getMenus() { + if (element && element.getMenus) { + return element.getMenus(); + } + // IDK, this is not a good place to be in + return []; + } + + getMenusAsync(): Promise { + return (element as any).componentOnReady().then(() => { + return element.getMenus(); + }); + } + + getOpen() { + if (element && element.getOpen) { + return element.getOpen(); + } + // IDK, this is not a good place to be in + return null; + } + + getOpenAsync(): Promise { + return (element as any).componentOnReady().then(() => { + return element.getOpen(); + }); + } + + isEnabled(menuId?: string) { + if (element && element.isEnabled) { + return element.isEnabled(menuId); + } + // IDK, this is not a good place to be in + return false; + } + + isEnabledAsync(menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.isEnabled(menuId); + }); + } + + isOpen(menuId?: string) { + if (element && element.isOpen) { + return element.isOpen(menuId); + } + // IDK, this is not a good place to be in + return false; + } + + isOpenAsync(menuId?: string): Promise{ + return (element as any).componentOnReady().then(() => { + return element.isOpen(menuId); + }); + } + + open(menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.open(menuId); + }); + } + + swipeEnable(shouldEnable: boolean, menuId?: string) { + if (element && element.swipeEnable) { + return element.swipeEnable(shouldEnable, menuId); + } + // IDK, this is not a good place to be in + return null; + } + + swipeEnableAsync(shouldEnable: boolean, menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.swipeEnable(shouldEnable, menuId); + }); + } + + toggle(menuId?: string): Promise { + return (element as any).componentOnReady().then(() => { + return element.toggle(menuId); + }); + } +} \ No newline at end of file diff --git a/packages/angular/src/providers/modal-controller.ts b/packages/angular/src/providers/modal-controller.ts index 502a468816..f6d5bfe3c9 100644 --- a/packages/angular/src/providers/modal-controller.ts +++ b/packages/angular/src/providers/modal-controller.ts @@ -29,10 +29,10 @@ export class ModalController implements FrameworkDelegate { return getModalProxy(opts); } - dismiss(id?: number, data?: any, role?: string) { + dismiss(data?: any, role?: string, id?: number) { const modalController = document.querySelector('ion-modal-controller'); return (modalController as any).componentOnReady().then(() => { - modalController.dismiss(data, role, id); + return modalController.dismiss(data, role, id); }); } diff --git a/packages/angular/src/providers/nav-controller.ts b/packages/angular/src/providers/nav-controller.ts index 3f9dc87a98..bfd2750c0d 100644 --- a/packages/angular/src/providers/nav-controller.ts +++ b/packages/angular/src/providers/nav-controller.ts @@ -99,4 +99,11 @@ export class NavController implements PublicNav { } return null; } + + getChildNavs(): PublicNav[] { + if (this.element.getChildNavs) { + return this.element.getChildNavs(); + } + return []; + } } \ No newline at end of file