index.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var component_1 = require('./../common/component.js');
  4. var touch_1 = require('./../mixins/touch.js');
  5. var THRESHOLD = 0.3;
  6. component_1.VantComponent({
  7. props: {
  8. disabled: Boolean,
  9. leftWidth: {
  10. type: Number,
  11. value: 0
  12. },
  13. rightWidth: {
  14. type: Number,
  15. value: 0
  16. },
  17. asyncClose: Boolean
  18. },
  19. mixins: [touch_1.touch],
  20. data: {
  21. catchMove: false
  22. },
  23. created: function created() {
  24. this.offset = 0;
  25. },
  26. methods: {
  27. open: function open(position) {
  28. var _a = this.data,
  29. leftWidth = _a.leftWidth,
  30. rightWidth = _a.rightWidth;
  31. var offset = position === 'left' ? leftWidth : -rightWidth;
  32. this.swipeMove(offset);
  33. },
  34. close: function close() {
  35. this.swipeMove(0);
  36. },
  37. swipeMove: function swipeMove(offset) {
  38. if (offset === void 0) {
  39. offset = 0;
  40. }
  41. this.offset = offset;
  42. var transform = "translate3d(" + offset + "px, 0, 0)";
  43. var transition = this.draging ? 'none' : '.6s cubic-bezier(0.18, 0.89, 0.32, 1)';
  44. this.set({
  45. wrapperStyle: "\n -webkit-transform: " + transform + ";\n -webkit-transition: " + transition + ";\n transform: " + transform + ";\n transition: " + transition + ";\n "
  46. });
  47. },
  48. swipeLeaveTransition: function swipeLeaveTransition() {
  49. var _a = this.data,
  50. leftWidth = _a.leftWidth,
  51. rightWidth = _a.rightWidth;
  52. var offset = this.offset;
  53. if (rightWidth > 0 && -offset > rightWidth * THRESHOLD) {
  54. this.open('right');
  55. } else if (leftWidth > 0 && offset > leftWidth * THRESHOLD) {
  56. this.open('left');
  57. } else {
  58. this.swipeMove(0);
  59. }
  60. this.set({ catchMove: false });
  61. },
  62. startDrag: function startDrag(event) {
  63. if (this.data.disabled) {
  64. return;
  65. }
  66. this.draging = true;
  67. this.startOffset = this.offset;
  68. this.firstDirection = '';
  69. this.touchStart(event);
  70. },
  71. noop: function noop() {},
  72. onDrag: function onDrag(event) {
  73. if (this.data.disabled) {
  74. return;
  75. }
  76. this.touchMove(event);
  77. if (!this.firstDirection) {
  78. this.firstDirection = this.direction;
  79. this.set({ catchMove: this.firstDirection === 'horizontal' });
  80. }
  81. if (this.firstDirection === 'vertical') {
  82. return;
  83. }
  84. var _a = this.data,
  85. leftWidth = _a.leftWidth,
  86. rightWidth = _a.rightWidth;
  87. var offset = this.startOffset + this.deltaX;
  88. if (rightWidth > 0 && -offset > rightWidth || leftWidth > 0 && offset > leftWidth) {
  89. return;
  90. }
  91. this.swipeMove(offset);
  92. },
  93. endDrag: function endDrag() {
  94. if (this.data.disabled) {
  95. return;
  96. }
  97. this.draging = false;
  98. this.swipeLeaveTransition();
  99. },
  100. onClick: function onClick(event) {
  101. var _a = event.currentTarget.dataset.key,
  102. position = _a === void 0 ? 'outside' : _a;
  103. this.$emit('click', position);
  104. if (!this.offset) {
  105. return;
  106. }
  107. if (this.data.asyncClose) {
  108. this.$emit('close', { position: position, instance: this });
  109. } else {
  110. this.swipeMove(0);
  111. }
  112. }
  113. }
  114. });
  115. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwidG91Y2hfMSIsIlRIUkVTSE9MRCIsInByb3BzIiwiZGlzYWJsZWQiLCJsZWZ0V2lkdGgiLCJ0eXBlIiwicmlnaHRXaWR0aCIsImFzeW5jQ2xvc2UiLCJCb29sZWFuIiwibWl4aW5zIiwiZGF0YSIsImNhdGNoTW92ZSIsImNyZWF0ZWQiLCJtZXRob2RzIiwib3BlbiIsIl9hIiwib2Zmc2V0IiwicG9zaXRpb24iLCJjbG9zZSIsInN3aXBlTW92ZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJ3cmFwcGVyU3R5bGUiLCJzd2lwZUxlYXZlVHJhbnNpdGlvbiIsInN0YXJ0RHJhZyIsIm5vb3AiLCJvbkRyYWciLCJlbmREcmFnIiwib25DbGljayIsImV2ZW50IiwiaW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7O0FBQ0FBLE9BQUFBLGNBQUFBLENBQUFBLE9BQUFBLEVBQUFBLFlBQUFBLEVBQTZDLEVBQUVDLE9BQS9DRCxJQUE2QyxFQUE3Q0E7QUFDQSxJQUFJRSxjQUFjQyxRQUFsQiwwQkFBa0JBLENBQWxCO0FBQ0EsSUFBSUMsVUFBVUQsUUFBZCxzQkFBY0EsQ0FBZDtBQUNBLElBQUlFLFlBQUosR0FBQTtBQUNBSCxZQUFBQSxhQUFBQSxDQUEwQjtBQUN0QkksV0FBTztBQUNIQyxrQkFERyxPQUFBO0FBRUhDLG1CQUFXO0FBQ1BDLGtCQURPLE1BQUE7QUFFUFIsbUJBQU87QUFGQSxTQUZSO0FBTUhTLG9CQUFZO0FBQ1JELGtCQURRLE1BQUE7QUFFUlIsbUJBQU87QUFGQyxTQU5UO0FBVUhVLG9CQUFZQztBQVZULEtBRGU7QUFhdEJDLFlBQVEsQ0FBQ1QsUUFiYSxLQWFkLENBYmM7QUFjdEJVLFVBQU07QUFDRkMsbUJBQVc7QUFEVCxLQWRnQjtBQWlCdEJDLGFBQVMsU0FBQSxPQUFBLEdBQVk7QUFDakIsYUFBQSxNQUFBLEdBQUEsQ0FBQTtBQWxCa0Is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QUFBLENBQUFBLElBQWlCWSxTQUR0QixTQUFBLEVBQzJDO0FBQ3ZDO0FBQ0g7QUFDRCxpQkFBQSxTQUFBLENBQUEsTUFBQTtBQTlEQyxTQUFBO0FBZ0VMVyxpQkFBUyxTQUFBLE9BQUEsR0FBWTtBQUNqQixnQkFBSSxLQUFBLElBQUEsQ0FBSixRQUFBLEVBQXdCO0FBQ3BCO0FBQ0g7QUFDRCxpQkFBQSxPQUFBLEdBQUEsS0FBQTtBQUNBLGlCQUFBLG9CQUFBO0FBckVDLFNBQUE7QUF1RUxDLGlCQUFTLFNBQUEsT0FBQSxDQUFBLEtBQUEsRUFBaUI7QUFDdEIsZ0JBQUliLEtBQUtjLE1BQUFBLGFBQUFBLENBQUFBLE9BQUFBLENBQVQsR0FBQTtBQUFBLGdCQUEwQ1osV0FBV0YsT0FBTyxLQUFQQSxDQUFBQSxHQUFBQSxTQUFBQSxHQUFyRCxFQUFBO0FBQ0EsaUJBQUEsS0FBQSxDQUFBLE9BQUEsRUFBQSxRQUFBO0FBQ0EsZ0JBQUksQ0FBQyxLQUFMLE1BQUEsRUFBa0I7QUFDZDtBQUNIO0FBQ0QsZ0JBQUksS0FBQSxJQUFBLENBQUosVUFBQSxFQUEwQjtBQUN0QixxQkFBQSxLQUFBLENBQUEsT0FBQSxFQUFvQixFQUFFRSxVQUFGLFFBQUEsRUFBc0JhLFVBQTFDLElBQW9CLEVBQXBCO0FBREosYUFBQSxNQUdLO0FBQ0QscUJBQUEsU0FBQSxDQUFBLENBQUE7QUFDSDtBQUNKO0FBbkZJO0FBcEJhLENBQTFCaEMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb21wb25lbnRfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vY29tcG9uZW50XCIpO1xudmFyIHRvdWNoXzEgPSByZXF1aXJlKFwiLi4vbWl4aW5zL3RvdWNoXCIpO1xudmFyIFRIUkVTSE9MRCA9IDAuMztcbmNvbXBvbmVudF8xLlZhbnRDb21wb25lbnQoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgICAgICBsZWZ0V2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHJpZ2h0V2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jQ2xvc2U6IEJvb2xlYW5cbiAgICB9LFxuICAgIG1peGluczogW3RvdWNoXzEudG91Y2hdLFxuICAgIGRhdGE6IHtcbiAgICAgICAgY2F0Y2hNb3ZlOiBmYWxzZVxuICAgIH0sXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uIChwb3NpdGlvbikge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5kYXRhLCBsZWZ0V2lkdGggPSBfYS5sZWZ0V2lkdGgsIHJpZ2h0V2lkdGggPSBfYS5yaWdodFdpZHRoO1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHBvc2l0aW9uID09PSAnbGVmdCcgPyBsZWZ0V2lkdGggOiAtcmlnaHRXaWR0aDtcbiAgICAgICAgICAgIHRoaXMuc3dpcGVNb3ZlKG9mZnNldCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXBlTW92ZSgwKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3dpcGVNb3ZlOiBmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID09PSB2b2lkIDApIHsgb2Zmc2V0ID0gMDsgfVxuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUzZChcIiArIG9mZnNldCArIFwicHgsIDAsIDApXCI7XG4gICAgICAgICAgICB2YXIgdHJhbnNpdGlvbiA9IHRoaXMuZHJhZ2luZ1xuICAgICAgICAgICAgICAgID8gJ25vbmUnXG4gICAgICAgICAgICAgICAgOiAnLjZzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxKSc7XG4gICAgICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICAgICAgd3JhcHBlclN0eWxlOiBcIlxcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IFwiICsgdHJhbnNmb3JtICsgXCI7XFxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IFwiICsgdHJhbnNpdGlvbiArIFwiO1xcbiAgICAgICAgdHJhbnNmb3JtOiBcIiArIHRyYW5zZm9ybSArIFwiO1xcbiAgICAgICAgdHJhbnNpdGlvbjogXCIgKyB0cmFuc2l0aW9uICsgXCI7XFxuICAgICAgXCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzd2lwZUxlYXZlVHJhbnNpdGlvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5kYXRhLCBsZWZ0V2lkdGggPSBfYS5sZWZ0V2lkdGgsIHJpZ2h0V2lkdGggPSBfYS5yaWdodFdpZHRoO1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKHJpZ2h0V2lkdGggPiAwICYmIC1vZmZzZXQgPiByaWdodFdpZHRoICogVEhSRVNIT0xEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCdyaWdodCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobGVmdFdpZHRoID4gMCAmJiBvZmZzZXQgPiBsZWZ0V2lkdGggKiBUSFJFU0hPTEQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oJ2xlZnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVNb3ZlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXQoeyBjYXRjaE1vdmU6IGZhbHNlIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzdGFydERyYWc6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZHJhZ2luZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0T2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmZpcnN0RGlyZWN0aW9uID0gJyc7XG4gICAgICAgICAgICB0aGlzLnRvdWNoU3RhcnQoZXZlbnQpO1xuICAgICAgICB9LFxuICAgICAgICBub29wOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgIG9uRHJhZzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50b3VjaE1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpcnN0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maXJzdERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgY2F0Y2hNb3ZlOiB0aGlzLmZpcnN0RGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5maXJzdERpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMuZGF0YSwgbGVmdFdpZHRoID0gX2EubGVmdFdpZHRoLCByaWdodFdpZHRoID0gX2EucmlnaHRXaWR0aDtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0ICsgdGhpcy5kZWx0YVg7XG4gICAgICAgICAgICBpZiAoKHJpZ2h0V2lkdGggPiAwICYmIC1vZmZzZXQgPiByaWdodFdpZHRoKSB8fFxuICAgICAgICAgICAgICAgIChsZWZ0V2lkdGggPiAwICYmIG9mZnNldCA+IGxlZnRXaWR0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN3aXBlTW92ZShvZmZzZXQpO1xuICAgICAgICB9LFxuICAgICAgICBlbmREcmFnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kcmFnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN3aXBlTGVhdmVUcmFuc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgdmFyIF9hID0gZXZlbnQuY3VycmVudFRhcmdldC5kYXRhc2V0LmtleSwgcG9zaXRpb24gPSBfYSA9PT0gdm9pZCAwID8gJ291dHNpZGUnIDogX2E7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdjbGljaycsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmFzeW5jQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZScsIHsgcG9zaXRpb246IHBvc2l0aW9uLCBpbnN0YW5jZTogdGhpcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVNb3ZlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSk7XG4iXSwiZmlsZSI6ImluZGV4LmpzIn0=