UNPKG

reka-ui

Version:

Vue port for Radix UI Primitives.

76 lines (73 loc) 2.82 kB
const require_rolldown_runtime = require('../rolldown-runtime.cjs'); const require_shared_useForwardExpose = require('../shared/useForwardExpose.cjs'); const require_Primitive_Primitive = require('../Primitive/Primitive.cjs'); const require_Tabs_TabsRoot = require('./TabsRoot.cjs'); const vue = require_rolldown_runtime.__toESM(require("vue")); const __vueuse_core = require_rolldown_runtime.__toESM(require("@vueuse/core")); //#region src/Tabs/TabsIndicator.vue?vue&type=script&setup=true&lang.ts var TabsIndicator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ __name: "TabsIndicator", props: { asChild: { type: Boolean, required: false }, as: { type: null, required: false } }, setup(__props, { expose: __expose }) { const props = __props; const context = require_Tabs_TabsRoot.injectTabsRootContext(); __expose({ updateIndicatorStyle }); require_shared_useForwardExpose.useForwardExpose(); const indicatorStyle = (0, vue.ref)({ size: null, position: null }); const tabs = (0, vue.ref)([]); (0, vue.watch)(() => [context.modelValue.value, context?.dir.value], () => { updateIndicatorStyle(); }, { immediate: true, flush: "post" }); (0, vue.watchPostEffect)(() => { tabs.value = Array.from(context.tabsList.value?.querySelectorAll("[role=\"tab\"]") || []); }); (0, __vueuse_core.useResizeObserver)((0, vue.computed)(() => [context.tabsList.value, ...tabs.value]), updateIndicatorStyle); function updateIndicatorStyle() { const activeTab = context.tabsList.value?.querySelector("[role=\"tab\"][data-state=\"active\"]"); if (!activeTab) return; if (context.orientation.value === "horizontal") indicatorStyle.value = { size: activeTab.offsetWidth, position: activeTab.offsetLeft }; else indicatorStyle.value = { size: activeTab.offsetHeight, position: activeTab.offsetTop }; } return (_ctx, _cache) => { return typeof indicatorStyle.value.size === "number" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_Primitive_Primitive.Primitive), (0, vue.mergeProps)({ key: 0 }, props, { style: { "--reka-tabs-indicator-size": `${indicatorStyle.value.size}px`, "--reka-tabs-indicator-position": `${indicatorStyle.value.position}px` } }), { default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), _: 3 }, 16, ["style"])) : (0, vue.createCommentVNode)("v-if", true); }; } }); //#endregion //#region src/Tabs/TabsIndicator.vue var TabsIndicator_default = TabsIndicator_vue_vue_type_script_setup_true_lang_default; //#endregion Object.defineProperty(exports, 'TabsIndicator_default', { enumerable: true, get: function () { return TabsIndicator_default; } }); //# sourceMappingURL=TabsIndicator.cjs.map