78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
import { createNamespace } from '../utils';
|
|
import { ChildrenMixin } from '../mixins/relation';
|
|
|
|
var _createNamespace = createNamespace('swipe-item'),
|
|
createComponent = _createNamespace[0],
|
|
bem = _createNamespace[1];
|
|
|
|
export default createComponent({
|
|
mixins: [ChildrenMixin('vanSwipe')],
|
|
data: function data() {
|
|
return {
|
|
offset: 0,
|
|
inited: false,
|
|
mounted: false
|
|
};
|
|
},
|
|
mounted: function mounted() {
|
|
var _this = this;
|
|
|
|
this.$nextTick(function () {
|
|
_this.mounted = true;
|
|
});
|
|
},
|
|
computed: {
|
|
style: function style() {
|
|
var style = {};
|
|
var _this$parent = this.parent,
|
|
size = _this$parent.size,
|
|
vertical = _this$parent.vertical;
|
|
|
|
if (size) {
|
|
style[vertical ? 'height' : 'width'] = size + "px";
|
|
}
|
|
|
|
if (this.offset) {
|
|
style.transform = "translate" + (vertical ? 'Y' : 'X') + "(" + this.offset + "px)";
|
|
}
|
|
|
|
return style;
|
|
},
|
|
shouldRender: function shouldRender() {
|
|
var index = this.index,
|
|
inited = this.inited,
|
|
parent = this.parent,
|
|
mounted = this.mounted;
|
|
|
|
if (!parent.lazyRender || inited) {
|
|
return true;
|
|
} // wait for all item to mount, so we can get the exact count
|
|
|
|
|
|
if (!mounted) {
|
|
return false;
|
|
}
|
|
|
|
var active = parent.activeIndicator;
|
|
var maxActive = parent.count - 1;
|
|
var prevActive = active === 0 && parent.loop ? maxActive : active - 1;
|
|
var nextActive = active === maxActive && parent.loop ? 0 : active + 1;
|
|
var shouldRender = index === active || index === prevActive || index === nextActive;
|
|
|
|
if (shouldRender) {
|
|
this.inited = true;
|
|
}
|
|
|
|
return shouldRender;
|
|
}
|
|
},
|
|
render: function render() {
|
|
var h = arguments[0];
|
|
return h("div", {
|
|
"class": bem(),
|
|
"style": this.style,
|
|
"on": _extends({}, this.$listeners)
|
|
}, [this.shouldRender && this.slots()]);
|
|
}
|
|
}); |