mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
fix(menu): all menus can be disabled
This commit is contained in:
@ -197,7 +197,7 @@ export class Menu implements RootNode {
|
|||||||
private _cntEle: HTMLElement;
|
private _cntEle: HTMLElement;
|
||||||
private _gesture: MenuContentGesture;
|
private _gesture: MenuContentGesture;
|
||||||
private _type: MenuType;
|
private _type: MenuType;
|
||||||
private _isEnabled: boolean = false;
|
private _isEnabled: boolean;
|
||||||
private _isSwipeEnabled: boolean = true;
|
private _isSwipeEnabled: boolean = true;
|
||||||
private _isAnimating: boolean = false;
|
private _isAnimating: boolean = false;
|
||||||
private _isPersistent: boolean = false;
|
private _isPersistent: boolean = false;
|
||||||
@ -357,16 +357,18 @@ export class Menu implements RootNode {
|
|||||||
this._cntEle.classList.add('menu-content');
|
this._cntEle.classList.add('menu-content');
|
||||||
this._cntEle.classList.add('menu-content-' + this.type);
|
this._cntEle.classList.add('menu-content-' + this.type);
|
||||||
|
|
||||||
// check if more than one menu is on the same side
|
let isEnabled = this._isEnabled;
|
||||||
let shouldEnable = !this._menuCtrl.getMenus().some(m => {
|
if (isEnabled === true || typeof isEnabled === 'undefined') {
|
||||||
return m.side === this.side && m.enabled;
|
// check if more than one menu is on the same side
|
||||||
});
|
isEnabled = !this._menuCtrl.getMenus().some(m => {
|
||||||
|
return m.side === this.side && m.enabled;
|
||||||
|
});
|
||||||
|
}
|
||||||
// register this menu with the app's menu controller
|
// register this menu with the app's menu controller
|
||||||
this._menuCtrl._register(this);
|
this._menuCtrl._register(this);
|
||||||
|
|
||||||
// mask it as enabled / disabled
|
// mask it as enabled / disabled
|
||||||
this.enable(shouldEnable);
|
this.enable(isEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -580,6 +582,7 @@ export class Menu implements RootNode {
|
|||||||
|
|
||||||
// Close menu inmediately
|
// Close menu inmediately
|
||||||
if (!canOpen && this.isOpen) {
|
if (!canOpen && this.isOpen) {
|
||||||
|
assert(this._init, 'menu must be initialized');
|
||||||
// close if this menu is open, and should not be enabled
|
// close if this menu is open, and should not be enabled
|
||||||
this._forceClosing();
|
this._forceClosing();
|
||||||
}
|
}
|
||||||
@ -591,6 +594,7 @@ export class Menu implements RootNode {
|
|||||||
if (!this._init) {
|
if (!this._init) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const gesture = this._gesture;
|
const gesture = this._gesture;
|
||||||
// only listen/unlisten if the menu has initialized
|
// only listen/unlisten if the menu has initialized
|
||||||
if (canOpen && this._isSwipeEnabled && !gesture.isListening) {
|
if (canOpen && this._isSwipeEnabled && !gesture.isListening) {
|
||||||
@ -603,6 +607,7 @@ export class Menu implements RootNode {
|
|||||||
console.debug('menu, gesture unlisten', this.side);
|
console.debug('menu, gesture unlisten', this.side);
|
||||||
gesture.unlisten();
|
gesture.unlisten();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isOpen || (this._isPane && this._isEnabled)) {
|
if (this.isOpen || (this._isPane && this._isEnabled)) {
|
||||||
this.resize();
|
this.resize();
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,10 @@ import { IonicApp, IonicModule, MenuController } from '../../../../../ionic-angu
|
|||||||
templateUrl: 'page1.html'
|
templateUrl: 'page1.html'
|
||||||
})
|
})
|
||||||
export class Page1 {
|
export class Page1 {
|
||||||
activeMenu: string;
|
activeMenu: string = 'none';
|
||||||
|
|
||||||
|
constructor(private menu: MenuController) { }
|
||||||
|
|
||||||
constructor(private menu: MenuController) {
|
|
||||||
this.menu1Active();
|
|
||||||
}
|
|
||||||
menu1Active() {
|
menu1Active() {
|
||||||
this.activeMenu = 'menu1';
|
this.activeMenu = 'menu1';
|
||||||
this.menu.enable(true, 'menu1');
|
this.menu.enable(true, 'menu1');
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<ion-menu [content]="content" id="menu1">
|
<ion-menu [content]="content" id="menu1" enabled="false">
|
||||||
|
|
||||||
<ion-header>
|
<ion-header>
|
||||||
<ion-toolbar color="secondary">
|
<ion-toolbar color="secondary">
|
||||||
@ -17,7 +17,7 @@
|
|||||||
</ion-menu>
|
</ion-menu>
|
||||||
|
|
||||||
|
|
||||||
<ion-menu [content]="content" id="menu2">
|
<ion-menu [content]="content" id="menu2" enabled="false">
|
||||||
|
|
||||||
<ion-header>
|
<ion-header>
|
||||||
<ion-toolbar color="danger">
|
<ion-toolbar color="danger">
|
||||||
|
@ -107,7 +107,7 @@ import { ViewController } from '../../navigation/view-controller';
|
|||||||
* ```ts
|
* ```ts
|
||||||
* import { ViewChild } from '@angular/core';
|
* import { ViewChild } from '@angular/core';
|
||||||
* import { Slides } from 'ionic-angular';
|
* import { Slides } from 'ionic-angular';
|
||||||
|
|
||||||
* class MyPage {
|
* class MyPage {
|
||||||
* @ViewChild(Slides) slides: Slides;
|
* @ViewChild(Slides) slides: Slides;
|
||||||
*
|
*
|
||||||
@ -971,6 +971,12 @@ export class Slides extends Ion {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resize() {
|
||||||
|
if (this._init) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transition to the specified slide.
|
* Transition to the specified slide.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user