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({

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>