tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 25.8 kB
Source Map (JSON)
{"version":3,"file":"tabs.mjs","sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n onMounted,\n provide,\n ref,\n toRefs,\n nextTick,\n onBeforeUnmount,\n readonly,\n Fragment,\n watch,\n CSSProperties,\n onActivated,\n h,\n RendererNode,\n} from 'vue';\nimport { isFunction } from 'lodash-es';\nimport config from '../config';\nimport props from './props';\nimport TTabNavItem from './tab-nav-item';\nimport useVModel from '../hooks/useVModel';\nimport { preventDefault } from '../shared/dom';\nimport TSticky from '../sticky';\nimport { TdStickyProps } from '../sticky/type';\nimport TBadge from '../badge';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdTabPanelProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useCommonClassName } from '../hooks/useCommonClassName';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-tabs`,\n props,\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n const tabsClass = usePrefixClass('tabs');\n const { SIZE } = useCommonClassName();\n\n const stickyProps = computed(() => ({ ...(props.stickyProps as TdStickyProps), disabled: !props.sticky }));\n const activeClass = `${tabsClass.value}__item--active`;\n const disabledClass = `${tabsClass.value}__item--disabled`;\n const tabsClasses = computed(() => [`${tabsClass.value}`, props.size && SIZE.value[props.size]]);\n const navClasses = ref([`${tabsClass.value}__nav`]);\n const startX = ref(0);\n const startY = ref(0);\n const endX = ref(0);\n const endY = ref(0);\n const canMove = ref(true);\n const tabIndex = computed(() => {\n let index = 0;\n for (let i = 0; i < itemProps.value.length; i++) {\n if (itemProps.value[i].value === currentValue.value) {\n index = i;\n break;\n }\n }\n return index;\n });\n\n const { value, modelValue } = toRefs(props);\n const [currentValue, setCurrentValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const itemProps = computed<Array<TdTabPanelProps>>(() => {\n if (props.list) {\n return props.list;\n }\n let children: RendererNode[] = renderTNodeJSX('default');\n const res: RendererNode[] = [];\n const label: Record<number, RendererNode> = {};\n const handler = (children: RendererNode[]) => {\n children?.forEach((child, index) => {\n if (child.type === Fragment) {\n handler(child.children);\n } else {\n res.push(child);\n }\n if (child.children?.label) {\n label[index] = child.children.label()[0] || null;\n }\n });\n };\n handler(children);\n children = res.filter((child: RendererNode) => child.type.name === `${prefix}-tab-panel`);\n return children.map((item: RendererNode, index: number) => ({\n ...item.props,\n label: () => label[index] || item.props.label,\n }));\n });\n\n const valueList = computed(() => itemProps.value.map((v) => v.value));\n const currentIndex = computed(() => valueList.value.indexOf(currentValue.value));\n\n const navScroll = ref<HTMLElement>();\n const navWrap = ref<HTMLElement>();\n const navLine = ref<HTMLElement>();\n const lineStyle = ref();\n const moveToActiveTab = () => {\n if (navWrap.value && navLine.value && props.showBottomLine) {\n const tab = navWrap.value.querySelector<HTMLElement>(`.${activeClass}`);\n if (!tab) return;\n const line = navLine.value;\n const tabInner = tab.querySelector<HTMLElement>(`.${prefix}-badge`);\n const style: CSSProperties = {};\n if (props.bottomLineMode === 'auto') {\n style.width = `${Number(tabInner?.offsetWidth)}px`;\n style.transform = `translateX(${Number(tab?.offsetLeft) + Number(tabInner?.offsetLeft)}px)`;\n } else if (props.bottomLineMode === 'full') {\n style.width = `${Number(tab?.offsetWidth)}px`;\n style.transform = `translateX(${Number(tab?.offsetLeft)}px)`;\n } else {\n style.transform = `translateX(${\n Number(tab?.offsetLeft) + (Number(tab?.offsetWidth) - Number(line?.offsetWidth)) / 2\n }px)`;\n }\n\n if (props.animation) {\n style.transitionDuration = `${props.animation.duration}ms`;\n }\n\n lineStyle.value = style;\n }\n if (navScroll.value) {\n const tab = navScroll.value.querySelector<HTMLElement>(`.${activeClass}`);\n if (!tab) return;\n const tabLeft = tab?.offsetLeft;\n const tabWidth = tab?.offsetWidth;\n const navScrollWidth = navScroll.value.offsetWidth;\n const scrollDistance = tabLeft - navScrollWidth / 2 + tabWidth / 2;\n navScroll.value.scrollTo({ left: scrollDistance, behavior: 'smooth' });\n }\n };\n\n onMounted(() => {\n window.addEventListener('resize', moveToActiveTab, false);\n setTimeout(() => {\n moveToActiveTab();\n }, 300);\n });\n onBeforeUnmount(() => {\n window.removeEventListener('resize', moveToActiveTab);\n });\n onActivated(() => {\n moveToActiveTab();\n });\n\n watch(currentValue, () => {\n nextTick(() => {\n moveToActiveTab();\n });\n });\n\n watch(\n itemProps,\n () => {\n nextTick(() => {\n moveToActiveTab();\n });\n },\n { deep: true },\n );\n\n const handleTabClick = (event: Event, item: TdTabPanelProps) => {\n const { value, disabled } = item;\n if (disabled || currentValue.value === value) {\n return false;\n }\n const label = isFunction(item.label) ? item.label(h).toString() : item.label;\n setCurrentValue(value, label);\n props.onClick?.(value, label);\n nextTick(() => {\n moveToActiveTab();\n });\n };\n\n const handlerScroll = (context: { scrollTop: number; isFixed: boolean }) => {\n const { scrollTop, isFixed } = context;\n if (props.stickyProps) {\n props.onScroll?.(scrollTop, isFixed);\n }\n };\n\n // 手势滑动开始\n const handleTouchstart = (e: TouchEvent) => {\n if (!props.swipeable) return;\n startX.value = e.targetTouches[0].clientX;\n startY.value = e.targetTouches[0].clientY;\n };\n\n const handleTouchmove = (e: TouchEvent) => {\n if (!props.swipeable) return;\n if (!canMove.value) return;\n endX.value = e.targetTouches[0].clientX;\n endY.value = e.targetTouches[0].clientY;\n const dValueX = Math.abs(startX.value - endX.value);\n const dValueY = Math.abs(startY.value - endY.value);\n if (tabIndex.value >= 0 && tabIndex.value < itemProps.value.length) {\n if (dValueX > dValueY) {\n // 水平滑动长度大于纵向滑动长度,那么选择水平滑动,阻止浏览器默认左右滑动事件\n preventDefault(e, false);\n if (dValueX <= 40) return;\n if (startX.value > endX.value) {\n // 向左划\n if (tabIndex.value >= itemProps.value.length - 1) return;\n canMove.value = false;\n handleTabClick(e, itemProps.value[tabIndex.value + 1]);\n } else if (startX.value < endX.value) {\n // 向右划\n if (tabIndex.value <= 0) return;\n canMove.value = false;\n handleTabClick(e, itemProps.value[tabIndex.value - 1]);\n }\n }\n }\n };\n\n // 手势滑动结束\n const handleTouchend = () => {\n if (!props.swipeable) return;\n canMove.value = true;\n startX.value = 0;\n endX.value = 0;\n startY.value = 0;\n endY.value = 0;\n };\n\n provide('currentValue', readonly(currentValue));\n\n const readerNav = () => {\n return itemProps.value.map((item, index) => {\n const badgeProps = item['badge-props'] || item.badgeProps;\n return (\n <div\n class={{\n [`${tabsClass.value}__item ${tabsClass.value}__item--top`]: true,\n [`${tabsClass.value}__item--evenly`]: props.spaceEvenly,\n [activeClass]: item.value === currentValue.value,\n [disabledClass]: item.disabled,\n [`${tabsClass.value}__item--${props.theme}`]: true,\n }}\n onClick={(e) => handleTabClick(e, item)}\n >\n <TBadge {...badgeProps}>\n <div\n class={{\n [`${tabsClass.value}__item-inner ${tabsClass.value}__item-inner--${props.theme}`]: true,\n [`${tabsClass.value}__item-inner--active`]:\n props.theme === 'tag' && item.value === currentValue.value,\n }}\n >\n <TTabNavItem label={item.label} icon={item.icon} />\n </div>\n </TBadge>\n {props.theme === 'card' && index === currentIndex.value - 1 && (\n <div class={`${tabsClass.value}__item-prefix`} />\n )}\n {props.theme === 'card' && index === currentIndex.value + 1 && (\n <div class={`${tabsClass.value}__item-suffix`} />\n )}\n </div>\n );\n });\n };\n return () => {\n return (\n <div class={tabsClasses.value}>\n <TSticky {...stickyProps.value} onScroll={handlerScroll}>\n <div class={navClasses.value}>\n <div\n ref={navScroll}\n class={[\n `${tabsClass.value}__scroll`,\n `${tabsClass.value}__scroll--${props.theme}`,\n {\n [`${tabsClass.value}__scroll--split`]: props.split,\n },\n ]}\n >\n <div ref={navWrap} class={`${tabsClass.value}__wrapper ${tabsClass.value}__wrapper--${props.theme}`}>\n {readerNav()}\n {props.theme === 'line' && props.showBottomLine && (\n <div\n ref={navLine}\n class={`${tabsClass.value}__track ${tabsClass.value}__track--top`}\n style={lineStyle.value}\n ></div>\n )}\n </div>\n </div>\n </div>\n </TSticky>\n {renderTNodeJSX('middle')}\n <div\n class={`${tabsClass.value}__content`}\n onTouchstart={handleTouchstart}\n onTouchmove={handleTouchmove}\n onTouchend={handleTouchend}\n >\n {renderTNodeJSX('default')}\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","renderTNodeJSX","useTNodeJSX","tabsClass","usePrefixClass","_useCommonClassName","useCommonClassName","SIZE","stickyProps","computed","_objectSpread","disabled","sticky","activeClass","concat","value","disabledClass","tabsClasses","size","navClasses","ref","startX","startY","endX","endY","canMove","tabIndex","index","i","itemProps","length","currentValue","_toRefs","toRefs","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","setCurrentValue","list","children","res","label","handler","forEach","child","_child$children","type","Fragment","push","filter","map","item","valueList","v","currentIndex","indexOf","navScroll","navWrap","navLine","lineStyle","moveToActiveTab","showBottomLine","tab","querySelector","line","tabInner","style","bottomLineMode","width","Number","offsetWidth","transform","offsetLeft","animation","transitionDuration","duration","tabLeft","tabWidth","navScrollWidth","scrollDistance","scrollTo","left","behavior","onMounted","window","addEventListener","setTimeout","onBeforeUnmount","removeEventListener","onActivated","watch","nextTick","deep","handleTabClick","event","_props2$onClick","isFunction","h","toString","onClick","handlerScroll","context","scrollTop","isFixed","_props2$onScroll","onScroll","handleTouchstart","e","swipeable","targetTouches","clientX","clientY","handleTouchmove","dValueX","Math","abs","dValueY","preventDefault","handleTouchend","provide","readonly","readerNav","badgeProps","_createVNode","_defineProperty","spaceEvenly","theme","TBadge","default","_default","TTabNavItem","icon","TSticky","_mergeProps","split"],"mappings":"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"}