refactor(): add menu-controller, make updates to modal and nav controllers

This commit is contained in:
Dan Bucholtz
2018-01-09 00:05:55 -06:00
parent de01bbb9b4
commit a15f9dfdc6
5 changed files with 139 additions and 2 deletions

View File

@ -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';

View File

@ -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

View File

@ -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<HTMLIonMenuElement> {
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<HTMLIonMenuElement> {
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<HTMLIonMenuElement[]> {
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<HTMLIonMenuElement[]> {
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<boolean> {
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<boolean>{
return (element as any).componentOnReady().then(() => {
return element.isOpen(menuId);
});
}
open(menuId?: string): Promise<boolean> {
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<HTMLIonMenuElement> {
return (element as any).componentOnReady().then(() => {
return element.swipeEnable(shouldEnable, menuId);
});
}
toggle(menuId?: string): Promise<boolean> {
return (element as any).componentOnReady().then(() => {
return element.toggle(menuId);
});
}
}

View File

@ -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);
});
}

View File

@ -99,4 +99,11 @@ export class NavController implements PublicNav {
}
return null;
}
getChildNavs(): PublicNav[] {
if (this.element.getChildNavs) {
return this.element.getChildNavs();
}
return [];
}
}