"use strict"; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var common_vendor = require("../../../../common/vendor.js"); var uni_modules_uviewPlus_components_uTabs_props = require("./props.js"); var uni_modules_uviewPlus_libs_mixin_mpMixin = require("../../libs/mixin/mpMixin.js"); var uni_modules_uviewPlus_libs_mixin_mixin = require("../../libs/mixin/mixin.js"); var uni_modules_uviewPlus_libs_config_props = require("../../libs/config/props.js"); var uni_modules_uviewPlus_libs_function_index = require("../../libs/function/index.js"); require("../../libs/function/test.js"); require("../../libs/util/route.js"); require("../../libs/config/config.js"); require("../../libs/config/props/actionSheet.js"); require("../../libs/config/props/album.js"); require("../../libs/config/props/alert.js"); require("../../libs/config/props/avatar.js"); require("../../libs/config/props/avatarGroup.js"); require("../../libs/config/props/backtop.js"); require("../../libs/config/props/badge.js"); require("../../libs/config/props/button.js"); require("../../libs/config/props/calendar.js"); require("../../libs/config/props/carKeyboard.js"); require("../../libs/config/props/cell.js"); require("../../libs/config/props/cellGroup.js"); require("../../libs/config/props/checkbox.js"); require("../../libs/config/props/checkboxGroup.js"); require("../../libs/config/props/circleProgress.js"); require("../../libs/config/props/code.js"); require("../../libs/config/props/codeInput.js"); require("../../libs/config/props/col.js"); require("../../libs/config/props/collapse.js"); require("../../libs/config/props/collapseItem.js"); require("../../libs/config/props/columnNotice.js"); require("../../libs/config/props/countDown.js"); require("../../libs/config/props/countTo.js"); require("../../libs/config/props/datetimePicker.js"); require("../../libs/config/props/divider.js"); require("../../libs/config/props/empty.js"); require("../../libs/config/props/form.js"); require("../../libs/config/props/formItem.js"); require("../../libs/config/props/gap.js"); require("../../libs/config/props/grid.js"); require("../../libs/config/props/gridItem.js"); require("../../libs/config/props/icon.js"); require("../../libs/config/props/image.js"); require("../../libs/config/props/indexAnchor.js"); require("../../libs/config/props/indexList.js"); require("../../libs/config/props/input.js"); require("../../libs/config/props/keyboard.js"); require("../../libs/config/props/line.js"); require("../../libs/config/props/lineProgress.js"); require("../../libs/config/props/link.js"); require("../../libs/config/props/list.js"); require("../../libs/config/props/listItem.js"); require("../../libs/config/props/loadingIcon.js"); require("../../libs/config/props/loadingPage.js"); require("../../libs/config/props/loadmore.js"); require("../../libs/config/props/modal.js"); require("../../libs/config/props/navbar.js"); require("../../libs/config/color.js"); require("../../libs/config/props/noNetwork.js"); require("../../libs/config/props/noticeBar.js"); require("../../libs/config/props/notify.js"); require("../../libs/config/props/numberBox.js"); require("../../libs/config/props/numberKeyboard.js"); require("../../libs/config/props/overlay.js"); require("../../libs/config/props/parse.js"); require("../../libs/config/props/picker.js"); require("../../libs/config/props/popup.js"); require("../../libs/config/props/radio.js"); require("../../libs/config/props/radioGroup.js"); require("../../libs/config/props/rate.js"); require("../../libs/config/props/readMore.js"); require("../../libs/config/props/row.js"); require("../../libs/config/props/rowNotice.js"); require("../../libs/config/props/scrollList.js"); require("../../libs/config/props/search.js"); require("../../libs/config/props/section.js"); require("../../libs/config/props/skeleton.js"); require("../../libs/config/props/slider.js"); require("../../libs/config/props/statusBar.js"); require("../../libs/config/props/steps.js"); require("../../libs/config/props/stepsItem.js"); require("../../libs/config/props/sticky.js"); require("../../libs/config/props/subsection.js"); require("../../libs/config/props/swipeAction.js"); require("../../libs/config/props/swipeActionItem.js"); require("../../libs/config/props/swiper.js"); require("../../libs/config/props/swipterIndicator.js"); require("../../libs/config/props/switch.js"); require("../../libs/config/props/tabbar.js"); require("../../libs/config/props/tabbarItem.js"); require("../../libs/config/props/tabs.js"); require("../../libs/config/props/tag.js"); require("../../libs/config/props/text.js"); require("../../libs/config/props/textarea.js"); require("../../libs/config/props/toast.js"); require("../../libs/config/props/toolbar.js"); require("../../libs/config/props/tooltip.js"); require("../../libs/config/props/transition.js"); require("../../libs/config/props/upload.js"); require("../../libs/function/digit.js"); const _sfc_main = { name: "u-tabs", mixins: [uni_modules_uviewPlus_libs_mixin_mpMixin.mpMixin, uni_modules_uviewPlus_libs_mixin_mixin.mixin, uni_modules_uviewPlus_components_uTabs_props.props], data() { return { firstTime: true, scrollLeft: 0, scrollViewWidth: 0, lineOffsetLeft: 0, tabsRect: { left: 0 }, innerCurrent: 0, moving: false }; }, watch: { current: { immediate: true, handler(newValue, oldValue) { if (newValue !== this.innerCurrent) { this.innerCurrent = newValue; this.$nextTick(() => { this.resize(); }); } } }, list() { this.$nextTick(() => { this.resize(); }); } }, computed: { textStyle() { return (index) => { const style = {}; const customeStyle = index === this.innerCurrent ? uni_modules_uviewPlus_libs_function_index.addStyle(this.activeStyle) : common_vendor.index.$u.addStyle(this.inactiveStyle); if (this.list[index].disabled) { style.color = "#c8c9cc"; } return uni_modules_uviewPlus_libs_function_index.deepMerge(customeStyle, style); }; }, propsBadge() { return uni_modules_uviewPlus_libs_config_props.defProps.badge; } }, async mounted() { this.init(); }, emits: ["click", "change"], methods: { addStyle: uni_modules_uviewPlus_libs_function_index.addStyle, addUnit: uni_modules_uviewPlus_libs_function_index.addUnit, setLineLeft() { const tabItem = this.list[this.innerCurrent]; if (!tabItem) { return; } let lineOffsetLeft = this.list.slice(0, this.innerCurrent).reduce((total, curr) => total + curr.rect.width, 0); const lineWidth = uni_modules_uviewPlus_libs_function_index.getPx(this.lineWidth); this.lineOffsetLeft = lineOffsetLeft + (tabItem.rect.width - lineWidth) / 2; if (this.firstTime) { setTimeout(() => { this.firstTime = false; }, 10); } }, animation(x, duration = 0) { }, clickHandler(item, index) { this.$emit("click", __spreadProps(__spreadValues({}, item), { index })); if (item.disabled) return; this.innerCurrent = index; this.resize(); this.$emit("change", __spreadProps(__spreadValues({}, item), { index })); }, init() { uni_modules_uviewPlus_libs_function_index.sleep().then(() => { this.resize(); }); }, setScrollLeft() { const tabRect = this.list[this.innerCurrent]; const offsetLeft = this.list.slice(0, this.innerCurrent).reduce((total, curr) => { return total + curr.rect.width; }, 0); const windowWidth = uni_modules_uviewPlus_libs_function_index.sys().windowWidth; let scrollLeft = offsetLeft - (this.tabsRect.width - tabRect.rect.width) / 2 - (windowWidth - this.tabsRect.right) / 2 + this.tabsRect.left / 2; scrollLeft = Math.min(scrollLeft, this.scrollViewWidth - this.tabsRect.width); this.scrollLeft = Math.max(0, scrollLeft); }, resize() { if (this.list.length === 0) { return; } Promise.all([this.getTabsRect(), this.getAllItemRect()]).then(([tabsRect, itemRect = []]) => { this.tabsRect = tabsRect; this.scrollViewWidth = 0; itemRect.map((item, index) => { this.scrollViewWidth += item.width; this.list[index].rect = item; }); this.setLineLeft(); this.setScrollLeft(); }); }, getTabsRect() { return new Promise((resolve) => { this.queryRect("u-tabs__wrapper__scroll-view").then((size) => resolve(size)); }); }, getAllItemRect() { return new Promise((resolve) => { const promiseAllArr = this.list.map((item, index) => this.queryRect(`u-tabs__wrapper__nav__item-${index}`, true)); Promise.all(promiseAllArr).then((sizes) => resolve(sizes)); }); }, queryRect(el, item) { return new Promise((resolve) => { this.$uGetRect(`.${el}`).then((size) => { resolve(size); }); }); } } }; if (!Array) { const _easycom_u_badge2 = common_vendor.resolveComponent("u-badge"); _easycom_u_badge2(); } const _easycom_u_badge = () => "../u-badge/u-badge.js"; if (!Math) { _easycom_u_badge(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return { a: common_vendor.f(_ctx.list, (item, index, i0) => { return { a: common_vendor.t(item[_ctx.keyName]), b: common_vendor.n(item.disabled && "u-tabs__wrapper__nav__item__text--disabled"), c: common_vendor.s($options.textStyle(index)), d: "175034e3-0-" + i0, e: common_vendor.p({ show: !!(item.badge && (item.badge.show || item.badge.isDot || item.badge.value)), isDot: item.badge && item.badge.isDot || $options.propsBadge.isDot, value: item.badge && item.badge.value || $options.propsBadge.value, max: item.badge && item.badge.max || $options.propsBadge.max, type: item.badge && item.badge.type || $options.propsBadge.type, showZero: item.badge && item.badge.showZero || $options.propsBadge.showZero, bgColor: item.badge && item.badge.bgColor || $options.propsBadge.bgColor, color: item.badge && item.badge.color || $options.propsBadge.color, shape: item.badge && item.badge.shape || $options.propsBadge.shape, numberType: item.badge && item.badge.numberType || $options.propsBadge.numberType, inverted: item.badge && item.badge.inverted || $options.propsBadge.inverted, customStyle: "margin-left: 4px;" }), f: index, g: common_vendor.o(($event) => $options.clickHandler(item, index), index), h: `u-tabs__wrapper__nav__item-${index}`, i: common_vendor.n(`u-tabs__wrapper__nav__item-${index}`), j: common_vendor.n(item.disabled && "u-tabs__wrapper__nav__item--disabled") }; }), b: common_vendor.s($options.addStyle(_ctx.itemStyle)), c: common_vendor.s({ flex: _ctx.scrollable ? "" : 1 }), d: common_vendor.s({ width: $options.addUnit(_ctx.lineWidth), transform: `translate(${$data.lineOffsetLeft}px)`, transitionDuration: `${$data.firstTime ? 0 : _ctx.duration}ms`, height: $options.addUnit(_ctx.lineHeight), background: _ctx.lineColor, backgroundSize: _ctx.lineBgSize }), e: _ctx.scrollable, f: $data.scrollLeft }; } var Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-175034e3"], ["__file", "C:/Users/Administrator/Desktop/\u9879\u76EE/\u76F4\u64AD/liveH5-v3/uni_modules/uview-plus/components/u-tabs/u-tabs.vue"]]); wx.createComponent(Component);