UI for Zipcoin Blue

menu.js 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, Renderer, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';
  2. import { App } from '../app/app';
  3. import { Backdrop } from '../backdrop/backdrop';
  4. import { Config } from '../../config/config';
  5. import { Content } from '../content/content';
  6. import { DomController } from '../../platform/dom-controller';
  7. import { GESTURE_GO_BACK_SWIPE, GestureController, } from '../../gestures/gesture-controller';
  8. import { isRightSide, isTrueProperty } from '../../util/util';
  9. import { Keyboard } from '../../platform/keyboard';
  10. import { MenuContentGesture } from './menu-gestures';
  11. import { MenuController } from '../app/menu-controller';
  12. import { Nav } from '../nav/nav';
  13. import { Platform } from '../../platform/platform';
  14. import { UIEventManager } from '../../gestures/ui-event-manager';
  15. import { RootNode } from '../split-pane/split-pane';
  16. /**
  17. * @name Menu
  18. * @description
  19. * The Menu component is a navigation drawer that slides in from the side of the current
  20. * view. By default, it slides in from the left, but the side can be overridden. The menu
  21. * will be displayed differently based on the mode, however the display type can be changed
  22. * to any of the available [menu types](#menu-types). The menu element should be a sibling
  23. * to the app's content element. There can be any number of menus attached to the content.
  24. * These can be controlled from the templates, or programmatically using the [MenuController](../../app/MenuController).
  25. *
  26. * @usage
  27. *
  28. * ```html
  29. * <ion-menu [content]="mycontent">
  30. * <ion-content>
  31. * <ion-list>
  32. * <p>some menu content, could be list items</p>
  33. * </ion-list>
  34. * </ion-content>
  35. * </ion-menu>
  36. *
  37. * <ion-nav #mycontent [root]="rootPage"></ion-nav>
  38. * ```
  39. *
  40. * To add a menu to an app, the `<ion-menu>` element should be added as a sibling to the `ion-nav` it will belongs
  41. * to. A [local variable](https://angular.io/docs/ts/latest/guide/user-input.html#local-variables)
  42. * should be added to the `ion-nav` and passed to the `ion-menu`s `content` property.
  43. *
  44. * This tells the menu what it is bound to and what element to watch for gestures.
  45. * In the below example, `content` is using [property binding](https://angular.io/docs/ts/latest/guide/template-syntax.html#!#property-binding)
  46. * because `mycontent` is a reference to the `<ion-nav>` element, and not a string.
  47. *
  48. *
  49. * ### Opening/Closing Menus
  50. *
  51. * There are several ways to open or close a menu. The menu can be **toggled** open or closed
  52. * from the template using the [MenuToggle](../MenuToggle) directive. It can also be
  53. * **closed** from the template using the [MenuClose](../MenuClose) directive. To display a menu
  54. * programmatically, inject the [MenuController](../MenuController) provider and call any of the
  55. * `MenuController` methods.
  56. *
  57. *
  58. * ### Menu Types
  59. *
  60. * The menu supports several display types: `overlay`, `reveal` and `push`. By default,
  61. * it will use the correct type based on the mode, but this can be changed. The default
  62. * type for both Material Design and Windows mode is `overlay`, and `reveal` is the default
  63. * type for iOS mode. The menu type can be changed in the app's [config](../../config/Config)
  64. * via the `menuType` property, or passed in the `type` property on the `<ion-menu>` element.
  65. * See [usage](#usage) below for examples of changing the menu type.
  66. *
  67. *
  68. * ### Navigation Bar Behavior
  69. *
  70. * If a [MenuToggle](../MenuToggle) button is added to the [Navbar](../../navbar/Navbar) of
  71. * a page, the button will only appear when the page it's in is currently a root page. The
  72. * root page is the initial page loaded in the app, or a page that has been set as the root
  73. * using the [setRoot](../../nav/NavController/#setRoot) method on the [NavController](../../nav/NavController).
  74. *
  75. * For example, say the application has two pages, `Page1` and `Page2`, and both have a
  76. * `MenuToggle` button in their navigation bars. Assume the initial page loaded into the app
  77. * is `Page1`, making it the root page. `Page1` will display the `MenuToggle` button, but once
  78. * `Page2` is pushed onto the navigation stack, the `MenuToggle` will not be displayed.
  79. *
  80. *
  81. * ### Persistent Menus
  82. *
  83. * Persistent menus display the [MenuToggle](../MenuToggle) button in the [Navbar](../../navbar/Navbar)
  84. * on all pages in the navigation stack. To make a menu persistent set `persistent` to `true` on the
  85. * `<ion-menu>` element. Note that this will only affect the `MenuToggle` button in the `Navbar` attached
  86. * to the `Menu` with `persistent` set to true, any other `MenuToggle` buttons will not be affected.
  87. * ### Menu Side
  88. *
  89. * By default, menus slide in from the left, but this can be overridden by passing `right`
  90. * to the `side` property:
  91. *
  92. * ```html
  93. * <ion-menu side="right" [content]="mycontent">...</ion-menu>
  94. * ```
  95. *
  96. *
  97. * ### Menu Type
  98. *
  99. * The menu type can be changed by passing the value to `type` on the `<ion-menu>`:
  100. *
  101. * ```html
  102. * <ion-menu type="overlay" [content]="mycontent">...</ion-menu>
  103. * ```
  104. *
  105. * It can also be set in the app's config. The below will set the menu type to
  106. * `push` for all modes, and then set the type to `overlay` for the `ios` mode.
  107. *
  108. * ```ts
  109. * // in NgModules
  110. *
  111. * imports: [
  112. * IonicModule.forRoot(MyApp,{
  113. * menuType: 'push',
  114. * platforms: {
  115. * ios: {
  116. * menuType: 'overlay',
  117. * }
  118. * }
  119. * })
  120. * ],
  121. * ```
  122. *
  123. *
  124. * ### Displaying the Menu
  125. *
  126. * To toggle a menu from the template, add a button with the `menuToggle`
  127. * directive anywhere in the page's template:
  128. *
  129. * ```html
  130. * <button ion-button menuToggle>Toggle Menu</button>
  131. * ```
  132. *
  133. * To close a menu, add the `menuClose` button. It can be added anywhere
  134. * in the content, or even the menu itself. Below it is added to the menu's
  135. * content:
  136. *
  137. * ```html
  138. * <ion-menu [content]="mycontent">
  139. * <ion-content>
  140. * <ion-list>
  141. * <ion-item menuClose detail-none>Close Menu</ion-item>
  142. * </ion-list>
  143. * </ion-content>
  144. * </ion-menu>
  145. * ```
  146. *
  147. * See the [MenuToggle](../MenuToggle) and [MenuClose](../MenuClose) docs
  148. * for more information on these directives.
  149. *
  150. * The menu can also be controlled from the Page by using the `MenuController`.
  151. * Inject the `MenuController` provider into the page and then call any of its
  152. * methods. In the below example, the `openMenu` method will open the menu
  153. * when it is called.
  154. *
  155. * ```ts
  156. * import { Component } from '@angular/core';
  157. * import { MenuController } from 'ionic-angular';
  158. *
  159. * @Component({...})
  160. * export class MyPage {
  161. * constructor(public menuCtrl: MenuController) {}
  162. *
  163. * openMenu() {
  164. * this.menuCtrl.open();
  165. * }
  166. * }
  167. * ```
  168. *
  169. * See the [MenuController](../../app/MenuController) API docs for all of the methods
  170. * and usage information.
  171. *
  172. *
  173. * @demo /docs/demos/src/menu/
  174. *
  175. * @see {@link /docs/components#menus Menu Component Docs}
  176. * @see {@link ../../app/MenuController MenuController API Docs}
  177. * @see {@link ../../nav/Nav Nav API Docs}
  178. * @see {@link ../../nav/NavController NavController API Docs}
  179. */
  180. var Menu = (function () {
  181. function Menu(_menuCtrl, _elementRef, _config, _plt, _renderer, _keyboard, _gestureCtrl, _domCtrl, _app) {
  182. this._menuCtrl = _menuCtrl;
  183. this._elementRef = _elementRef;
  184. this._config = _config;
  185. this._plt = _plt;
  186. this._renderer = _renderer;
  187. this._keyboard = _keyboard;
  188. this._gestureCtrl = _gestureCtrl;
  189. this._domCtrl = _domCtrl;
  190. this._app = _app;
  191. this._isSwipeEnabled = true;
  192. this._isAnimating = false;
  193. this._isPersistent = false;
  194. this._init = false;
  195. this._isPane = false;
  196. /**
  197. * @hidden
  198. */
  199. this.isOpen = false;
  200. /**
  201. * @hidden
  202. */
  203. this.isRightSide = false;
  204. /**
  205. * @output {event} Emitted when the menu is being dragged open.
  206. */
  207. this.ionDrag = new EventEmitter();
  208. /**
  209. * @output {event} Emitted when the menu has been opened.
  210. */
  211. this.ionOpen = new EventEmitter();
  212. /**
  213. * @output {event} Emitted when the menu has been closed.
  214. */
  215. this.ionClose = new EventEmitter();
  216. this._events = new UIEventManager(_plt);
  217. this._gestureBlocker = _gestureCtrl.createBlocker({
  218. disable: [GESTURE_GO_BACK_SWIPE]
  219. });
  220. this.side = 'start';
  221. }
  222. Object.defineProperty(Menu.prototype, "enabled", {
  223. /**
  224. * @input {boolean} If true, the menu is enabled. Default `true`.
  225. */
  226. get: function () {
  227. return this._isEnabled;
  228. },
  229. set: function (val) {
  230. var isEnabled = isTrueProperty(val);
  231. this.enable(isEnabled);
  232. },
  233. enumerable: true,
  234. configurable: true
  235. });
  236. Object.defineProperty(Menu.prototype, "side", {
  237. /**
  238. * @input {string} Which side of the view the menu should be placed. Default `"left"`.
  239. */
  240. get: function () {
  241. return this._side;
  242. },
  243. set: function (val) {
  244. this.isRightSide = isRightSide(val, this._plt.isRTL);
  245. if (this.isRightSide) {
  246. this._side = 'right';
  247. }
  248. else {
  249. this._side = 'left';
  250. }
  251. },
  252. enumerable: true,
  253. configurable: true
  254. });
  255. Object.defineProperty(Menu.prototype, "swipeEnabled", {
  256. /**
  257. * @input {boolean} If true, swiping the menu is enabled. Default `true`.
  258. */
  259. get: function () {
  260. return this._isSwipeEnabled;
  261. },
  262. set: function (val) {
  263. var isEnabled = isTrueProperty(val);
  264. this.swipeEnable(isEnabled);
  265. },
  266. enumerable: true,
  267. configurable: true
  268. });
  269. Object.defineProperty(Menu.prototype, "persistent", {
  270. /**
  271. * @input {boolean} If true, the menu will persist on child pages.
  272. */
  273. get: function () {
  274. return this._isPersistent;
  275. },
  276. set: function (val) {
  277. this._isPersistent = isTrueProperty(val);
  278. },
  279. enumerable: true,
  280. configurable: true
  281. });
  282. /**
  283. * @hidden
  284. */
  285. Menu.prototype.ngOnInit = function () {
  286. var _this = this;
  287. this._init = true;
  288. var content = this.content;
  289. this._cntEle = (content instanceof Node) ? content : content && content.getNativeElement && content.getNativeElement();
  290. // requires content element
  291. if (!this._cntEle) {
  292. return console.error('Menu: must have a [content] element to listen for drag events on. Example:\n\n<ion-menu [content]="content"></ion-menu>\n\n<ion-nav #content></ion-nav>');
  293. }
  294. this.setElementAttribute('side', this._side);
  295. // normalize the "type"
  296. if (!this.type) {
  297. this.type = this._config.get('menuType');
  298. }
  299. this.setElementAttribute('type', this.type);
  300. // add the gestures
  301. this._gesture = new MenuContentGesture(this._plt, this, this._gestureCtrl, this._domCtrl);
  302. // add menu's content classes
  303. this._cntEle.classList.add('menu-content');
  304. this._cntEle.classList.add('menu-content-' + this.type);
  305. var isEnabled = this._isEnabled;
  306. if (isEnabled === true || typeof isEnabled === 'undefined') {
  307. // check if more than one menu is on the same side
  308. isEnabled = !this._menuCtrl.getMenus().some(function (m) {
  309. return m.side === _this.side && m.enabled;
  310. });
  311. }
  312. // register this menu with the app's menu controller
  313. this._menuCtrl._register(this);
  314. // mask it as enabled / disabled
  315. this.enable(isEnabled);
  316. };
  317. /**
  318. * @hidden
  319. */
  320. Menu.prototype.onBackdropClick = function (ev) {
  321. ev.preventDefault();
  322. ev.stopPropagation();
  323. this._menuCtrl.close();
  324. };
  325. /**
  326. * @hidden
  327. */
  328. Menu.prototype._getType = function () {
  329. if (!this._type) {
  330. this._type = MenuController.create(this.type, this, this._plt);
  331. if (this._config.get('animate') === false) {
  332. this._type.ani.duration(0);
  333. }
  334. }
  335. return this._type;
  336. };
  337. /**
  338. * @hidden
  339. */
  340. Menu.prototype.setOpen = function (shouldOpen, animated) {
  341. var _this = this;
  342. if (animated === void 0) { animated = true; }
  343. // If the menu is disabled or it is currenly being animated, let's do nothing
  344. if ((shouldOpen === this.isOpen) || !this._canOpen() || this._isAnimating) {
  345. return Promise.resolve(this.isOpen);
  346. }
  347. return new Promise(function (resolve) {
  348. _this._before();
  349. _this._getType().setOpen(shouldOpen, animated, function () {
  350. _this._after(shouldOpen);
  351. resolve(_this.isOpen);
  352. });
  353. });
  354. };
  355. Menu.prototype._forceClosing = function () {
  356. var _this = this;
  357. (void 0) /* assert */;
  358. this._isAnimating = true;
  359. this._getType().setOpen(false, false, function () {
  360. _this._after(false);
  361. });
  362. };
  363. /**
  364. * @hidden
  365. */
  366. Menu.prototype.canSwipe = function () {
  367. return this._isSwipeEnabled &&
  368. !this._isAnimating &&
  369. this._canOpen() &&
  370. this._app.isEnabled();
  371. };
  372. /**
  373. * @hidden
  374. */
  375. Menu.prototype.isAnimating = function () {
  376. return this._isAnimating;
  377. };
  378. Menu.prototype._swipeBeforeStart = function () {
  379. if (!this.canSwipe()) {
  380. (void 0) /* assert */;
  381. return;
  382. }
  383. this._before();
  384. };
  385. Menu.prototype._swipeStart = function () {
  386. if (!this._isAnimating) {
  387. (void 0) /* assert */;
  388. return;
  389. }
  390. this._getType().setProgressStart(this.isOpen);
  391. };
  392. Menu.prototype._swipeProgress = function (stepValue) {
  393. if (!this._isAnimating) {
  394. (void 0) /* assert */;
  395. return;
  396. }
  397. this._getType().setProgessStep(stepValue);
  398. var ionDrag = this.ionDrag;
  399. if (ionDrag.observers.length > 0) {
  400. ionDrag.emit(stepValue);
  401. }
  402. };
  403. Menu.prototype._swipeEnd = function (shouldCompleteLeft, shouldCompleteRight, stepValue, velocity) {
  404. var _this = this;
  405. if (!this._isAnimating) {
  406. (void 0) /* assert */;
  407. return;
  408. }
  409. // user has finished dragging the menu
  410. var isRightSide = this.isRightSide;
  411. var isRTL = this._plt.isRTL;
  412. var opening = !this.isOpen;
  413. var shouldComplete = (opening)
  414. ? (isRightSide !== isRTL) ? shouldCompleteLeft : shouldCompleteRight
  415. : (isRightSide !== isRTL) ? shouldCompleteRight : shouldCompleteLeft;
  416. this._getType().setProgressEnd(shouldComplete, stepValue, velocity, function (isOpen) {
  417. (void 0) /* console.debug */;
  418. _this._after(isOpen);
  419. });
  420. };
  421. Menu.prototype._before = function () {
  422. (void 0) /* assert */;
  423. // this places the menu into the correct location before it animates in
  424. // this css class doesn't actually kick off any animations
  425. this.setElementClass('show-menu', true);
  426. this.backdrop.setElementClass('show-backdrop', true);
  427. this.resize();
  428. this._keyboard.close();
  429. this._isAnimating = true;
  430. };
  431. Menu.prototype._after = function (isOpen) {
  432. (void 0) /* assert */;
  433. this._app.setEnabled(false, 100);
  434. // keep opening/closing the menu disabled for a touch more yet
  435. // only add listeners/css if it's enabled and isOpen
  436. // and only remove listeners/css if it's not open
  437. // emit opened/closed events
  438. this.isOpen = isOpen;
  439. this._isAnimating = false;
  440. this._events.unlistenAll();
  441. if (isOpen) {
  442. // Disable swipe to go back gesture
  443. this._gestureBlocker.block();
  444. this._cntEle.classList.add('menu-content-open');
  445. var callback = this.onBackdropClick.bind(this);
  446. this._events.listen(this._cntEle, 'click', callback, { capture: true });
  447. this._events.listen(this.backdrop.getNativeElement(), 'click', callback, { capture: true });
  448. this.ionOpen.emit(true);
  449. }
  450. else {
  451. // Enable swipe to go back gesture
  452. this._gestureBlocker.unblock();
  453. this._cntEle.classList.remove('menu-content-open');
  454. this.setElementClass('show-menu', false);
  455. this.backdrop.setElementClass('show-menu', false);
  456. this.ionClose.emit(true);
  457. }
  458. };
  459. /**
  460. * @hidden
  461. */
  462. Menu.prototype.open = function () {
  463. return this.setOpen(true);
  464. };
  465. /**
  466. * @hidden
  467. */
  468. Menu.prototype.close = function () {
  469. return this.setOpen(false);
  470. };
  471. /**
  472. * @hidden
  473. */
  474. Menu.prototype.resize = function () {
  475. var content = this.menuContent
  476. ? this.menuContent
  477. : this.menuNav;
  478. content && content.resize();
  479. };
  480. /**
  481. * @hidden
  482. */
  483. Menu.prototype.toggle = function () {
  484. return this.setOpen(!this.isOpen);
  485. };
  486. Menu.prototype._canOpen = function () {
  487. return this._isEnabled && !this._isPane;
  488. };
  489. /**
  490. * @hidden
  491. */
  492. Menu.prototype._updateState = function () {
  493. var canOpen = this._canOpen();
  494. // Close menu inmediately
  495. if (!canOpen && this.isOpen) {
  496. (void 0) /* assert */;
  497. // close if this menu is open, and should not be enabled
  498. this._forceClosing();
  499. }
  500. if (this._isEnabled && this._menuCtrl) {
  501. this._menuCtrl._setActiveMenu(this);
  502. }
  503. if (!this._init) {
  504. return;
  505. }
  506. var gesture = this._gesture;
  507. // only listen/unlisten if the menu has initialized
  508. if (canOpen && this._isSwipeEnabled && !gesture.isListening) {
  509. // should listen, but is not currently listening
  510. (void 0) /* console.debug */;
  511. gesture.listen();
  512. }
  513. else if (gesture.isListening && (!canOpen || !this._isSwipeEnabled)) {
  514. // should not listen, but is currently listening
  515. (void 0) /* console.debug */;
  516. gesture.unlisten();
  517. }
  518. if (this.isOpen || (this._isPane && this._isEnabled)) {
  519. this.resize();
  520. }
  521. (void 0) /* assert */;
  522. };
  523. /**
  524. * @hidden
  525. */
  526. Menu.prototype.enable = function (shouldEnable) {
  527. this._isEnabled = shouldEnable;
  528. this.setElementClass('menu-enabled', shouldEnable);
  529. this._updateState();
  530. return this;
  531. };
  532. /**
  533. * @internal
  534. */
  535. Menu.prototype.initPane = function () {
  536. return false;
  537. };
  538. /**
  539. * @internal
  540. */
  541. Menu.prototype.paneChanged = function (isPane) {
  542. this._isPane = isPane;
  543. this._updateState();
  544. };
  545. /**
  546. * @hidden
  547. */
  548. Menu.prototype.swipeEnable = function (shouldEnable) {
  549. this._isSwipeEnabled = shouldEnable;
  550. this._updateState();
  551. return this;
  552. };
  553. /**
  554. * @hidden
  555. */
  556. Menu.prototype.getNativeElement = function () {
  557. return this._elementRef.nativeElement;
  558. };
  559. /**
  560. * @hidden
  561. */
  562. Menu.prototype.getMenuElement = function () {
  563. return this.getNativeElement().querySelector('.menu-inner');
  564. };
  565. /**
  566. * @hidden
  567. */
  568. Menu.prototype.getContentElement = function () {
  569. return this._cntEle;
  570. };
  571. /**
  572. * @hidden
  573. */
  574. Menu.prototype.getBackdropElement = function () {
  575. return this.backdrop.getNativeElement();
  576. };
  577. /**
  578. * @hidden
  579. */
  580. Menu.prototype.width = function () {
  581. return this.getMenuElement().offsetWidth;
  582. };
  583. /**
  584. * @hidden
  585. */
  586. Menu.prototype.getMenuController = function () {
  587. return this._menuCtrl;
  588. };
  589. /**
  590. * @hidden
  591. */
  592. Menu.prototype.setElementClass = function (className, add) {
  593. this._renderer.setElementClass(this._elementRef.nativeElement, className, add);
  594. };
  595. /**
  596. * @hidden
  597. */
  598. Menu.prototype.setElementAttribute = function (attributeName, value) {
  599. this._renderer.setElementAttribute(this._elementRef.nativeElement, attributeName, value);
  600. };
  601. /**
  602. * @hidden
  603. */
  604. Menu.prototype.getElementRef = function () {
  605. return this._elementRef;
  606. };
  607. /**
  608. * @hidden
  609. */
  610. Menu.prototype.ngOnDestroy = function () {
  611. this._menuCtrl._unregister(this);
  612. this._events.destroy();
  613. this._gesture && this._gesture.destroy();
  614. this._type && this._type.destroy();
  615. this._gesture = null;
  616. this._type = null;
  617. this._cntEle = null;
  618. };
  619. Menu.decorators = [
  620. { type: Component, args: [{
  621. selector: 'ion-menu',
  622. template: '<div class="menu-inner"><ng-content></ng-content></div>' +
  623. '<ion-backdrop></ion-backdrop>',
  624. host: {
  625. 'role': 'navigation'
  626. },
  627. changeDetection: ChangeDetectionStrategy.OnPush,
  628. encapsulation: ViewEncapsulation.None,
  629. providers: [{ provide: RootNode, useExisting: forwardRef(function () { return Menu; }) }]
  630. },] },
  631. ];
  632. /** @nocollapse */
  633. Menu.ctorParameters = function () { return [
  634. { type: MenuController, },
  635. { type: ElementRef, },
  636. { type: Config, },
  637. { type: Platform, },
  638. { type: Renderer, },
  639. { type: Keyboard, },
  640. { type: GestureController, },
  641. { type: DomController, },
  642. { type: App, },
  643. ]; };
  644. Menu.propDecorators = {
  645. 'backdrop': [{ type: ViewChild, args: [Backdrop,] },],
  646. 'menuContent': [{ type: ContentChild, args: [Content,] },],
  647. 'menuNav': [{ type: ContentChild, args: [Nav,] },],
  648. 'content': [{ type: Input },],
  649. 'id': [{ type: Input },],
  650. 'type': [{ type: Input },],
  651. 'enabled': [{ type: Input },],
  652. 'side': [{ type: Input },],
  653. 'swipeEnabled': [{ type: Input },],
  654. 'persistent': [{ type: Input },],
  655. 'maxEdgeStart': [{ type: Input },],
  656. 'ionDrag': [{ type: Output },],
  657. 'ionOpen': [{ type: Output },],
  658. 'ionClose': [{ type: Output },],
  659. };
  660. return Menu;
  661. }());
  662. export { Menu };
  663. //# sourceMappingURL=menu.js.map