82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
import { computed, nextTick, reactive, onMounted, defineComponent, createVNode as _createVNode } from "vue";
|
|
import { createNamespace } from "../utils/index.mjs";
|
|
import { SWIPE_KEY } from "../swipe/Swipe.mjs";
|
|
import { useParent } from "@vant/use";
|
|
import { useExpose } from "../composables/use-expose.mjs";
|
|
const [name, bem] = createNamespace("swipe-item");
|
|
var stdin_default = defineComponent({
|
|
name,
|
|
setup(props, {
|
|
slots
|
|
}) {
|
|
let rendered;
|
|
const state = reactive({
|
|
offset: 0,
|
|
inited: false,
|
|
mounted: false
|
|
});
|
|
const {
|
|
parent,
|
|
index
|
|
} = useParent(SWIPE_KEY);
|
|
if (!parent) {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
console.error("[Vant] <SwipeItem> must be a child component of <Swipe>.");
|
|
}
|
|
return;
|
|
}
|
|
const style = computed(() => {
|
|
const style2 = {};
|
|
const {
|
|
vertical
|
|
} = parent.props;
|
|
if (parent.size.value) {
|
|
style2[vertical ? "height" : "width"] = `${parent.size.value}px`;
|
|
}
|
|
if (state.offset) {
|
|
style2.transform = `translate${vertical ? "Y" : "X"}(${state.offset}px)`;
|
|
}
|
|
return style2;
|
|
});
|
|
const shouldRender = computed(() => {
|
|
const {
|
|
loop,
|
|
lazyRender
|
|
} = parent.props;
|
|
if (!lazyRender || rendered) {
|
|
return true;
|
|
}
|
|
if (!state.mounted) {
|
|
return false;
|
|
}
|
|
const active = parent.activeIndicator.value;
|
|
const maxActive = parent.count.value - 1;
|
|
const prevActive = active === 0 && loop ? maxActive : active - 1;
|
|
const nextActive = active === maxActive && loop ? 0 : active + 1;
|
|
rendered = index.value === active || index.value === prevActive || index.value === nextActive;
|
|
return rendered;
|
|
});
|
|
const setOffset = (offset) => {
|
|
state.offset = offset;
|
|
};
|
|
onMounted(() => {
|
|
nextTick(() => {
|
|
state.mounted = true;
|
|
});
|
|
});
|
|
useExpose({
|
|
setOffset
|
|
});
|
|
return () => {
|
|
var _a;
|
|
return _createVNode("div", {
|
|
"class": bem(),
|
|
"style": style.value
|
|
}, [shouldRender.value ? (_a = slots.default) == null ? void 0 : _a.call(slots) : null]);
|
|
};
|
|
}
|
|
});
|
|
export {
|
|
stdin_default as default
|
|
};
|