tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 6.86 kB
Source Map (JSON)
{"version":3,"file":"tab-bar.mjs","sources":["../../src/tab-bar/tab-bar.tsx"],"sourcesContent":["import { defineComponent, ref, provide, Ref, computed, toRefs, VNode, CSSProperties } from 'vue';\nimport TabBarProps from './props';\nimport config from '../config';\nimport useChildSlots from '../hooks/useChildSlots';\nimport useVModel from '../hooks/useVModel';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\nimport useElementRect from '../hooks/useElementRect';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-tab-bar`,\n props: TabBarProps,\n emits: ['update:value', 'update:modelValue', 'change'],\n setup(props, context) {\n const root = ref<HTMLElement>();\n const tabBarClass = usePrefixClass('tab-bar');\n\n const renderTNodeJSX = useTNodeJSX();\n\n const { value, modelValue } = toRefs(props);\n const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const defaultIndex: Ref<number> = ref(-1);\n const itemCount = ref(0);\n\n const updateChild = (currentValue: number | string) => {\n setActiveValue(currentValue);\n };\n\n const rootClass = computed(() => [\n `${tabBarClass.value}`,\n {\n [`${tabBarClass.value}--bordered`]: props.bordered,\n [`${tabBarClass.value}--fixed`]: props.fixed,\n [`${tabBarClass.value}--safe`]: props.safeAreaInsetBottom,\n },\n `${tabBarClass.value}--${props.shape}`,\n ]);\n\n const styles = computed<CSSProperties>(() => ({\n zIndex: props.zIndex,\n }));\n\n const { rect: tabBarRect } = useElementRect(root, {\n immediate: props.fixed && props.placeholder,\n });\n\n const tabBarHeight = computed(() => tabBarRect.value.height);\n\n provide('tab-bar', {\n ...toRefs(props),\n defaultIndex,\n activeValue,\n itemCount,\n updateChild,\n });\n\n // 在渲染函数中调用插槽函数并更新子节点数量\n const updateItemCount = (vNodes?: VNode[]) => {\n if (!vNodes || !Array.isArray(vNodes)) {\n itemCount.value = 0;\n return;\n }\n\n const childSlots = useChildSlots(`${prefix}-tab-bar-item`, vNodes);\n itemCount.value = childSlots.length;\n };\n\n return () => {\n const vNodes = context.slots.default ? context.slots.default() : [];\n updateItemCount(vNodes);\n\n const renderTabBar = (\n <div ref={root} role=\"tablist\" class={rootClass.value} style={styles.value}>\n {renderTNodeJSX('default')}\n </div>\n );\n\n if (props.fixed && props.placeholder) {\n return (\n <div class={`${tabBarClass.value}__placeholder`} style={{ height: `${tabBarHeight.value}px` }}>\n {renderTabBar}\n </div>\n );\n }\n\n return renderTabBar;\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","TabBarProps","emits","setup","context","root","ref","tabBarClass","usePrefixClass","renderTNodeJSX","useTNodeJSX","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","activeValue","setActiveValue","defaultIndex","itemCount","updateChild","currentValue","rootClass","computed","concat","_defineProperty","bordered","fixed","safeAreaInsetBottom","shape","styles","zIndex","_useElementRect","useElementRect","immediate","placeholder","tabBarRect","rect","tabBarHeight","height","provide","_objectSpread","updateItemCount","vNodes","Array","isArray","childSlots","useChildSlots","length","slots","default","renderTabBar","_createVNode"],"mappings":"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"}