fix(menu-toggle): move logic for css class to the menu toggle

fixes #8943
This commit is contained in:
Brandy Carney
2016-11-23 12:00:34 -05:00
committed by Adam Bradley
parent 54a7a745ee
commit 624cb356df
4 changed files with 29 additions and 26 deletions

View File

@ -126,9 +126,6 @@ export class Button extends Ion {
/** @private */ /** @private */
_role: string = 'button'; // bar-button _role: string = 'button'; // bar-button
/** @private */
_mt: boolean; // menutoggle
/** @private */ /** @private */
_size: string; // large/small/default _size: string; // large/small/default
@ -259,7 +256,6 @@ export class Button extends Ion {
} }
constructor( constructor(
@Attribute('menuToggle') menuToggle: string,
@Attribute('ion-button') ionButton: string, @Attribute('ion-button') ionButton: string,
config: Config, config: Config,
elementRef: ElementRef, elementRef: ElementRef,
@ -275,12 +271,6 @@ export class Button extends Ion {
if (ionButton.trim().length > 0) { if (ionButton.trim().length > 0) {
this.setRole(ionButton); this.setRole(ionButton);
} }
// menuToggle can be added with or without a string
// but if the attribute isn't added it will be null
if (menuToggle !== null) {
this._mt = true;
}
} }
/** @private */ /** @private */
@ -307,7 +297,6 @@ export class Button extends Ion {
this.setElementClass(role, assignCssClass); // button this.setElementClass(role, assignCssClass); // button
this.setElementClass(`${role}-${this._mode}`, assignCssClass); // button this.setElementClass(`${role}-${this._mode}`, assignCssClass); // button
this._setClass('menutoggle', this._mt); // menutoggle
this._setClass(this._style, assignCssClass); // button-clear this._setClass(this._style, assignCssClass); // button-clear
this._setClass(this._shape, assignCssClass); // button-round this._setClass(this._shape, assignCssClass); // button-round
this._setClass(this._display, assignCssClass); // button-full this._setClass(this._display, assignCssClass); // button-full

View File

@ -1,5 +1,6 @@
import { Directive, ElementRef, Input, HostListener, Optional } from '@angular/core'; import { Directive, Input, HostListener, Optional } from '@angular/core';
import { Button } from '../button/button';
import { MenuController } from './menu-controller'; import { MenuController } from './menu-controller';
import { Navbar } from '../navbar/navbar'; import { Navbar } from '../navbar/navbar';
import { ViewController } from '../../navigation/view-controller'; import { ViewController } from '../../navigation/view-controller';
@ -86,8 +87,7 @@ import { ViewController } from '../../navigation/view-controller';
@Directive({ @Directive({
selector: '[menuToggle]', selector: '[menuToggle]',
host: { host: {
'[hidden]': 'isHidden', '[hidden]': 'isHidden'
'menuToggle': '' // ensures the attr is there for css when using [menuToggle]
} }
}) })
export class MenuToggle { export class MenuToggle {
@ -97,6 +97,11 @@ export class MenuToggle {
*/ */
@Input() menuToggle: string; @Input() menuToggle: string;
/**
* @private
*/
private _isButton: boolean;
/** /**
* @private * @private
*/ */
@ -104,13 +109,21 @@ export class MenuToggle {
constructor( constructor(
private _menu: MenuController, private _menu: MenuController,
elementRef: ElementRef,
@Optional() private _viewCtrl: ViewController, @Optional() private _viewCtrl: ViewController,
@Optional() private _button: Button,
@Optional() private _navbar: Navbar @Optional() private _navbar: Navbar
) { ) {
this._isButton = !!_button;
this._inNavbar = !!_navbar; this._inNavbar = !!_navbar;
} }
ngAfterContentInit() {
// Add the bar-button-menutoggle / button-menutoggle class
if (this._isButton) {
this._button._setClass('menutoggle', true);
}
}
/** /**
* @private * @private
*/ */

View File

@ -9,8 +9,9 @@ export class Page1 {
constructor( constructor(
public navCtrl: NavController, public navCtrl: NavController,
public alertCtrl: AlertController, public alertCtrl: AlertController,
public modalCtrl: ModalController public modalCtrl: ModalController) { }
) { }
myMenu: string = 'right';
presentAlert() { presentAlert() {
let alert = this.alertCtrl.create({ let alert = this.alertCtrl.create({
@ -32,22 +33,22 @@ export class Page1 {
} }
} }
@Component({templateUrl: 'modal.html'}) @Component({ templateUrl: 'modal.html' })
export class Modal { export class Modal {
constructor(public viewController: ViewController) {} constructor(public viewController: ViewController) { }
close() { close() {
this.viewController.dismiss(); this.viewController.dismiss();
} }
} }
@Component({templateUrl: 'page3.html'}) @Component({ templateUrl: 'page3.html' })
export class Page3 {} export class Page3 { }
@Component({templateUrl: 'page2.html'}) @Component({ templateUrl: 'page2.html' })
export class Page2 { export class Page2 {
constructor(public navCtrl: NavController) {} constructor(public navCtrl: NavController) { }
page3() { page3() {
this.navCtrl.push(Page3); this.navCtrl.push(Page3);
@ -61,7 +62,7 @@ export class Page2 {
export class E2EPage { export class E2EPage {
rootPage: any; rootPage: any;
changeDetectionCount: number = 0; changeDetectionCount: number = 0;
pages: Array<{title: string, component: any}>; pages: Array<{ title: string, component: any }>;
@ViewChild(Nav) nav: Nav; @ViewChild(Nav) nav: Nav;
constructor(public menuCtrl: MenuController) { constructor(public menuCtrl: MenuController) {
@ -139,4 +140,4 @@ export class E2EApp {
Modal Modal
] ]
}) })
export class AppModule {} export class AppModule { }

View File

@ -22,7 +22,7 @@
</button> </button>
</ion-buttons> </ion-buttons>
<button ion-button menuToggle="right" right color="secondary"> <button ion-button [menuToggle]="myMenu" right color="secondary">
<ion-icon name="menu"></ion-icon> <ion-icon name="menu"></ion-icon>
</button> </button>