123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- exports.__esModule = true;
- exports.default = void 0;
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
- var _utils = require("../utils");
- var _touch = require("../mixins/touch");
- var _createNamespace = (0, _utils.createNamespace)('tabs'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- var MIN_SWIPE_DISTANCE = 50;
- var _default = createComponent({
- mixins: [_touch.TouchMixin],
- props: {
- count: Number,
- duration: [Number, String],
- animated: Boolean,
- swipeable: Boolean,
- currentIndex: Number
- },
- computed: {
- style: function style() {
- if (this.animated) {
- return {
- transform: "translate3d(" + -1 * this.currentIndex * 100 + "%, 0, 0)",
- transitionDuration: this.duration + "s"
- };
- }
- },
- listeners: function listeners() {
- if (this.swipeable) {
- return {
- touchstart: this.touchStart,
- touchmove: this.touchMove,
- touchend: this.onTouchEnd,
- touchcancel: this.onTouchEnd
- };
- }
- }
- },
- methods: {
- // watch swipe touch end
- onTouchEnd: function onTouchEnd() {
- var direction = this.direction,
- deltaX = this.deltaX,
- currentIndex = this.currentIndex;
- /* istanbul ignore else */
- if (direction === 'horizontal' && this.offsetX >= MIN_SWIPE_DISTANCE) {
- /* istanbul ignore else */
- if (deltaX > 0 && currentIndex !== 0) {
- this.$emit('change', currentIndex - 1);
- } else if (deltaX < 0 && currentIndex !== this.count - 1) {
- this.$emit('change', currentIndex + 1);
- }
- }
- },
- genChildren: function genChildren() {
- var h = this.$createElement;
- if (this.animated) {
- return h("div", {
- "class": bem('track'),
- "style": this.style
- }, [this.slots()]);
- }
- return this.slots();
- }
- },
- render: function render() {
- var h = arguments[0];
- return h("div", {
- "class": bem('content', {
- animated: this.animated
- }),
- "on": (0, _extends2.default)({}, this.listeners)
- }, [this.genChildren()]);
- }
- });
- exports.default = _default;
|