"use strict"; const common_vendor = require("../../../common/vendor.js"); const sheep_helper_index = require("../../helper/index.js"); const sheep_index = require("../../index.js"); require("../../helper/test.js"); require("../../helper/digit.js"); require("../../api/index.js"); require("../../api/distri/score.js"); require("../../request/index.js"); require("../../config/index.js"); require("../../store/index.js"); require("../../store/app.js"); require("../../api/promotion/diy.js"); require("../../platform/index.js"); require("../../platform/provider/wechat/index.js"); require("../../platform/provider/wechat/miniProgram.js"); require("../../api/member/auth.js"); require("../../api/member/social.js"); require("../../api/member/user.js"); require("../../platform/provider/apple/index.js"); require("../../platform/share.js"); require("../../router/index.js"); require("../../hooks/useModal.js"); require("../../api/member/signin.js"); require("../../helper/throttle.js"); require("../../url/index.js"); require("../../platform/pay.js"); require("../../api/pay/order.js"); require("../../store/user.js"); require("../../store/cart.js"); require("../../api/trade/cart.js"); require("../../api/pay/wallet.js"); require("../../api/trade/order.js"); require("../../api/promotion/coupon.js"); require("../../store/sys.js"); require("../../store/modal.js"); require("../../api/distri/share.js"); require("../../api/distri/team.js"); require("../../api/infra/file.js"); require("../../api/member/address.js"); require("../../api/member/point.js"); require("../../api/migration/app.js"); require("../../api/migration/chat.js"); require("../../api/migration/index.js"); require("../../api/migration/third.js"); require("../../api/pay/channel.js"); require("../../api/product/category.js"); require("../../api/product/comment.js"); require("../../api/product/favorite.js"); require("../../api/product/history.js"); require("../../api/product/spu.js"); require("../../api/promotion/activity.js"); require("../../api/promotion/article.js"); require("../../api/promotion/bargain.js"); require("../../api/promotion/combination.js"); require("../../api/promotion/rewardActivity.js"); require("../../api/promotion/seckill.js"); require("../../api/system/area.js"); require("../../api/system/voice.js"); require("../../api/trade/afterSale.js"); require("../../api/trade/brokerage.js"); require("../../api/trade/config.js"); require("../../api/trade/delivery.js"); require("../../config/zIndex.js"); const _sfc_main = { name: "su-tabbar", props: { customStyle: { type: [Object, String], default: () => ({}) }, customClass: { type: String, default: "" }, // 跳转的页面路径 url: { type: String, default: "" }, // 页面跳转的类型 linkType: { type: String, default: "navigateTo" }, // 当前匹配项的name value: { type: [String, Number, null], default: "" }, // 是否为iPhoneX留出底部安全距离 safeAreaInsetBottom: { type: Boolean, default: true }, // 是否显示上方边框 border: { type: Boolean, default: true }, // 元素层级z-index zIndex: { type: [String, Number], default: 10 }, // 选中标签的颜色 activeColor: { type: String, default: "#1989fa" }, // 未选中标签的颜色 inactiveColor: { type: String, default: "#7d7e80" }, // 是否固定在底部 fixed: { type: Boolean, default: true }, // fixed定位固定在底部时,是否生成一个等高元素防止塌陷 placeholder: { type: Boolean, default: true }, midTabBar: { type: Boolean, default: false } }, data() { return { placeholderHeight: 0, safeBottomHeight: sheep_index.sheep.$platform.device.safeAreaInsets.bottom }; }, computed: { tabbarStyle() { const style = { zIndex: this.zIndex }; return sheep_helper_index.deepMerge(style, sheep_helper_index.addStyle(this.customStyle)); }, // 监听多个参数的变化,通过在computed执行对应的操作 updateChild() { return [this.value, this.activeColor, this.inactiveColor]; }, updatePlaceholder() { return [this.fixed, this.placeholder]; } }, watch: { updateChild() { this.updateChildren(); }, updatePlaceholder() { this.setPlaceholderHeight(); } }, created() { this.children = []; }, mounted() { this.setPlaceholderHeight(); }, methods: { updateChildren() { this.children.length && this.children.map((child) => child.updateFromParent()); }, getRect(selector, all) { return new Promise((resolve) => { common_vendor.index.createSelectorQuery().in(this)[all ? "selectAll" : "select"](selector).boundingClientRect((rect) => { if (all && Array.isArray(rect) && rect.length) { resolve(rect); } if (!all && rect) { resolve(rect); } }).exec(); }); }, // 设置用于防止塌陷元素的高度 async setPlaceholderHeight() { if (!this.fixed || !this.placeholder) return; await sheep_helper_index.sleep(20); this.getRect(".u-tabbar__content").then(({ height = 50 }) => { this.placeholderHeight = height; }); } } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: $props.safeAreaInsetBottom }, $props.safeAreaInsetBottom ? { b: common_vendor.s({ height: $data.safeBottomHeight + "px" }) } : {}, { c: common_vendor.o(() => { }), d: common_vendor.n($props.border && "u-border-top"), e: common_vendor.n($props.fixed && "u-tabbar--fixed"), f: common_vendor.n({ "mid-tabbar": $props.midTabBar }), g: common_vendor.s($options.tabbarStyle), h: $props.placeholder }, $props.placeholder ? { i: $data.placeholderHeight + "px" } : {}); } const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-b5af0eb7"], ["__file", "D:/zx/mall-front-app/sheep/ui/su-tabbar/su-tabbar.vue"]]); wx.createComponent(Component);