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

@ -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 [];
}
}