UNPKG

@gyenno/nutui-taro

Version:

京东风格的轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)

103 lines (102 loc) 2.79 kB
import { reactive, computed, toRefs, resolveComponent, openBlock, createElementBlock, createElementVNode, normalizeStyle, renderSlot, createTextVNode, normalizeClass, withModifiers, createVNode } from "vue"; import { c as createComponent } from "./component-25dcca32.js"; import { Top } from "@nutui/icons-vue-taro"; import { _ as _export_sfc } from "./_plugin-vue_export-helper-cc2b3d55.js"; import "../locale/lang"; const { componentName, create } = createComponent("backtop"); const _sfc_main = create({ components: { Top }, props: { height: { type: String, default: "100vh" }, bottom: { type: Number, default: 20 }, right: { type: Number, default: 10 }, zIndex: { type: Number, default: 10 }, distance: { type: Number, default: 200 } }, emits: ["click"], setup(props, { emit }) { const state = reactive({ backTop: false, scrollTop: 1 }); const classes = computed(() => { const prefixCls = componentName; return { [prefixCls]: true, show: state.backTop }; }); const style = computed(() => { return { right: `${props.right}px`, bottom: `${props.bottom}px`, zIndex: props.zIndex }; }); const scroll = (e) => { state.scrollTop = 2; state.backTop = e.detail.scrollTop >= props.distance; }; const click = (e) => { state.scrollTop = 1; emit("click", e); }; return { ...toRefs(state), classes, style, scroll, click }; } }); const _hoisted_1 = ["scroll-top"]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_Top = resolveComponent("Top"); return openBlock(), createElementBlock("view", null, [ createElementVNode("scroll-view", { "scroll-y": true, style: normalizeStyle({ height: _ctx.height }), onScroll: _cache[0] || (_cache[0] = (...args) => _ctx.scroll && _ctx.scroll(...args)), "scroll-top": _ctx.scrollTop, "scroll-with-animation": "true" }, [ renderSlot(_ctx.$slots, "content") ], 44, _hoisted_1), createTextVNode(), createElementVNode("view", { class: normalizeClass(_ctx.classes), style: normalizeStyle(_ctx.style), onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.click && _ctx.click(...args), ["stop"])) }, [ renderSlot(_ctx.$slots, "icon", {}, () => [ createVNode(_component_Top, { width: "19px", height: "19px", class: "nut-backtop-main" }) ]) ], 6) ]); } const index_taro = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { index_taro as default };