mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 11:41:20 +08:00
fix(angular): fix overlays
This commit is contained in:
@ -1,127 +1,104 @@
|
||||
import { ensureElementInBody } from '../util/util';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { proxyMethod } from '../util/util';
|
||||
|
||||
let element: HTMLIonMenuControllerElement;
|
||||
const CTRL = 'ion-menu-controller';
|
||||
@Injectable()
|
||||
export class MenuController {
|
||||
|
||||
|
||||
constructor() {
|
||||
element = ensureElementInBody('ion-menu-controller') as HTMLIonMenuControllerElement;
|
||||
}
|
||||
|
||||
close(menuId?: string) {
|
||||
return element.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.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.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.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.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.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.componentOnReady().then(() => {
|
||||
return element.isOpen(menuId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Programatically open the Menu.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {Promise} returns a promise when the menu is fully opened
|
||||
*/
|
||||
open(menuId?: string): Promise<boolean> {
|
||||
return element.componentOnReady().then(() => {
|
||||
return element.open(menuId);
|
||||
});
|
||||
return proxyMethod(CTRL, '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.componentOnReady().then(() => {
|
||||
return element.swipeEnable(shouldEnable, menuId);
|
||||
});
|
||||
|
||||
/**
|
||||
* Programatically close the Menu. If no `menuId` is given as the first
|
||||
* argument then it'll close any menu which is open. If a `menuId`
|
||||
* is given then it'll close that exact menu.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {Promise} returns a promise when the menu is fully closed
|
||||
*/
|
||||
close(menuId?: string): Promise<boolean> {
|
||||
return proxyMethod(CTRL, 'close', menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the menu. If it's closed, it will open, and if opened, it
|
||||
* will close.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {Promise} returns a promise when the menu has been toggled
|
||||
*/
|
||||
toggle(menuId?: string): Promise<boolean> {
|
||||
return element.componentOnReady().then(() => {
|
||||
return element.toggle(menuId);
|
||||
});
|
||||
return proxyMethod(CTRL, 'toggle', menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to enable or disable a menu. For example, there could be multiple
|
||||
* left menus, but only one of them should be able to be opened at the same
|
||||
* time. If there are multiple menus on the same side, then enabling one menu
|
||||
* will also automatically disable all the others that are on the same side.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {HTMLIonMenuElement} Returns the instance of the menu, which is useful for chaining.
|
||||
*/
|
||||
enable(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement> {
|
||||
return proxyMethod(CTRL, 'enable', shouldEnable, menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to enable or disable the ability to swipe open the menu.
|
||||
* @param {boolean} shouldEnable True if it should be swipe-able, false if not.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {HTMLIonMenuElement} Returns the instance of the menu, which is useful for chaining.
|
||||
*/
|
||||
swipeEnable(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement> {
|
||||
return proxyMethod(CTRL, 'swipeEnable', shouldEnable, menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {boolean} Returns true if the specified menu is currently open, otherwise false.
|
||||
* If the menuId is not specified, it returns true if ANY menu is currenly open.
|
||||
*/
|
||||
isOpen(menuId?: string): Promise<boolean> {
|
||||
return proxyMethod(CTRL, 'isOpen', menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {boolean} Returns true if the menu is currently enabled, otherwise false.
|
||||
*/
|
||||
isEnabled(menuId?: string): Promise<boolean> {
|
||||
return proxyMethod(CTRL, 'isEnabled', menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get a menu instance. If a `menuId` is not provided then it'll
|
||||
* return the first menu found. If a `menuId` is `left` or `right`, then
|
||||
* it'll return the enabled menu on that side. Otherwise, if a `menuId` is
|
||||
* provided, then it'll try to find the menu using the menu's `id`
|
||||
* property. If a menu is not found then it'll return `null`.
|
||||
* @param {string} [menuId] Optionally get the menu by its id, or side.
|
||||
* @return {HTMLIonMenuElement} Returns the instance of the menu if found, otherwise `null`.
|
||||
*/
|
||||
get(menuId?: string): Promise<HTMLIonMenuElement> {
|
||||
return proxyMethod(CTRL, 'get', menuId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {Menu} Returns the instance of the menu already opened, otherwise `null`.
|
||||
*/
|
||||
getOpen(): Promise<HTMLIonMenuElement> {
|
||||
return proxyMethod(CTRL, 'getOpen');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {Array<HTMLIonMenuElement>} Returns an array of all menu instances.
|
||||
*/
|
||||
getMenus(): Promise<HTMLIonMenuElement[]> {
|
||||
return proxyMethod(CTRL, 'getMenus');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user