blob: eeb59dec464326cb2eb9b164a15bca27224ba1bc [file] [log] [blame]
<template>
<div
class="wrap"
@appear="appeared"
@disappear="disappeared">
<div
ref="anim"
class="anim">
<slot></slot>
</div>
</div>
</template>
<style scoped>
.wrap {
overflow: hidden;
position: relative;
}
.anim {
flex-direction: column;
position: absolute;
transform: translateY(0) translateZ(0);
}
</style>
<script>
var animation = weex.requireModule('animation')
module.exports = {
props: {
step: { default: 0 },
count: { default: 0 },
index: { default: 1 },
duration: { default: 0 },
interval: { default: 0 },
outofview: { default: false }
},
created: function () {
if (this.interval > 0 && this.step > 0 && this.duration > 0) {
this.run()
}
},
methods: {
run: function () {
if (this.outofview) {
setTimeout(this.run.bind(this), this.interval)
} else {
setTimeout(function () {
this.animation(this.run.bind(this))
}.bind(this), this.interval)
}
},
animation: function (cb) {
var offset = -this.step * this.index;
animation.transition(this.$refs.anim, {
styles: {
transform: 'translateY(' + offset + 'px) translateZ(0)'
},
timingFunction: 'ease',
duration: this.duration
}, function () {
this.index = (this.index + 1) % (this.count);
this.$emit('change', {
index: this.index,
count: this.count
});
cb && cb();
}.bind(this));
},
appeared: function() {
this.outofview = false
},
disappeared: function() {
this.outofview = true
}
}
}
</script>