UNPKG

ionic-framework

Version:

The ionic-framework package comes with both Javascript and Sass frontend dependencies, located in the root of the package, and a Node API, located in `tooling/`.

89 lines (88 loc) 3.58 kB
var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var slide_edge_gesture_1 = require('../../gestures/slide-edge-gesture'); var util_1 = require('../../util/util'); var MenuContentGesture = (function (_super) { __extends(MenuContentGesture, _super); function MenuContentGesture(menu, targetEl, options) { if (options === void 0) { options = {}; } _super.call(this, targetEl, util_1.assign({ direction: (menu.side === 'left' || menu.side === 'right') ? 'x' : 'y', edge: menu.side, threshold: 0, maxEdgeStart: menu.maxEdgeStart || 75 }, options)); this.menu = menu; this.listen(); } MenuContentGesture.prototype.canStart = function (ev) { var validAngle = ((-35 <= ev.angle && ev.angle <= 35) || (180 >= ev.angle && ev.angle >= 145) || (-180 <= ev.angle && ev.angle <= -145)); return this.menu.isOpen && this.menu.isEnabled && validAngle ? true : _super.prototype.canStart.call(this, ev); }; // Set CSS, then wait one frame for it to apply before sliding starts MenuContentGesture.prototype.onSlideBeforeStart = function (slide, ev) { this.menu.setProgressStart(); }; MenuContentGesture.prototype.onSlide = function (slide, ev) { this.menu.setProgess(slide.distance / slide.max); }; MenuContentGesture.prototype.onSlideEnd = function (slide, ev) { var shouldComplete = (Math.abs(ev.velocityX) > 0.2 || Math.abs(slide.delta) > Math.abs(slide.max) * 0.5); this.menu.setProgressEnd(shouldComplete); }; MenuContentGesture.prototype.getElementStartPos = function (slide, ev) { return this.menu.isOpen ? slide.max : slide.min; }; MenuContentGesture.prototype.getSlideBoundaries = function () { return { min: 0, max: this.menu.width() }; }; return MenuContentGesture; })(slide_edge_gesture_1.SlideEdgeGesture); exports.MenuContentGesture = MenuContentGesture; /** * Support dragging the target menu as well as the content. */ var TargetGesture = (function (_super) { __extends(TargetGesture, _super); function TargetGesture(menu) { _super.call(this, menu, menu.getNativeElement(), { maxEdgeStart: 0 }); } return TargetGesture; })(MenuContentGesture); exports.TargetGesture = TargetGesture; var LeftMenuGesture = (function (_super) { __extends(LeftMenuGesture, _super); function LeftMenuGesture(menu) { _super.call(this, menu, menu.getContentElement()); } return LeftMenuGesture; })(MenuContentGesture); exports.LeftMenuGesture = LeftMenuGesture; var RightMenuGesture = (function (_super) { __extends(RightMenuGesture, _super); function RightMenuGesture(menu) { _super.call(this, menu, menu.getContentElement()); } RightMenuGesture.prototype.onSlide = function (slide, ev) { this.menu.setProgess(slide.distance / slide.min); }; RightMenuGesture.prototype.getElementStartPos = function (slide, ev) { return this.menu.isOpen ? slide.min : slide.max; }; RightMenuGesture.prototype.getSlideBoundaries = function () { return { min: -this.menu.width(), max: 0 }; }; return RightMenuGesture; })(MenuContentGesture); exports.RightMenuGesture = RightMenuGesture;