(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "@angular/core", "../button/button", "../app/menu-controller", "../toolbar/navbar", "../../navigation/view-controller"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); var button_1 = require("../button/button"); var menu_controller_1 = require("../app/menu-controller"); var navbar_1 = require("../toolbar/navbar"); var view_controller_1 = require("../../navigation/view-controller"); /** * @name MenuToggle * @description * The `menuToggle` directive can be placed on any button to toggle a menu open or closed. * If it is added to the [NavBar](../../toolbar/Navbar) of a page, the button will only appear * when the page it's in is currently a root page. See the [Menu Navigation Bar Behavior](../Menu#navigation-bar-behavior) * docs for more information. * * * @usage * * A simple `menuToggle` button can be added using the following markup: * * ```html * * ``` * * To toggle a specific menu by its id or side, give the `menuToggle` * directive a value. * * ```html * * ``` * * If placing the `menuToggle` in a navbar or toolbar, it should be * placed as a child of the `` or ``, and not in * the `` element: * * ```html * * * * * * * * * Title * * * * * * * * ``` * * Similar to ``, the `menuToggle` can be positioned using * `start`, `end`, `left`, or `right`: * * ```html * * * * Title * * * * * * ``` * * See the [Toolbar API docs](../../toolbar/Toolbar) for more information * on the different positions. * * @demo /docs/demos/src/menu/ * @see {@link /docs/components#menus Menu Component Docs} * @see {@link ../../menu/Menu Menu API Docs} */ var MenuToggle = (function () { function MenuToggle(_menu, _viewCtrl, _button, _navbar) { this._menu = _menu; this._viewCtrl = _viewCtrl; this._button = _button; this._isButton = !!_button; this._inNavbar = !!_navbar; } MenuToggle.prototype.ngAfterContentInit = function () { // Add the bar-button-menutoggle / button-menutoggle class if (this._isButton) { this._button._setClass('menutoggle', true); } }; /** * @hidden */ MenuToggle.prototype.toggle = function () { var menu = this._menu.get(this.menuToggle); menu && menu.toggle(); }; Object.defineProperty(MenuToggle.prototype, "isHidden", { /** * @hidden */ get: function () { var menu = this._menu.get(this.menuToggle); if (this._inNavbar && this._viewCtrl) { if (!menu || !menu._canOpen()) { return true; } if (this._viewCtrl.isFirst()) { // this is the first view, so it should always show return false; } if (menu) { // this is not the root view, so see if this menu // is configured to still be enabled if it's not the root view return !menu.persistent; } } return false; }, enumerable: true, configurable: true }); MenuToggle.decorators = [ { type: core_1.Directive, args: [{ selector: '[menuToggle]', host: { '[hidden]': 'isHidden' } },] }, ]; /** @nocollapse */ MenuToggle.ctorParameters = function () { return [ { type: menu_controller_1.MenuController, }, { type: view_controller_1.ViewController, decorators: [{ type: core_1.Optional },] }, { type: button_1.Button, decorators: [{ type: core_1.Optional },] }, { type: navbar_1.Navbar, decorators: [{ type: core_1.Optional },] }, ]; }; MenuToggle.propDecorators = { 'menuToggle': [{ type: core_1.Input },], 'toggle': [{ type: core_1.HostListener, args: ['click',] },], }; return MenuToggle; }()); exports.MenuToggle = MenuToggle; }); //# sourceMappingURL=menu-toggle.js.map