UNPKG

tdesign-mobile-vue

Version:
1 lines 26.1 kB
{"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 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, TabValue } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useCommonClassName } from '../hooks/useCommonClassName';\nimport { Styles } from '../common';\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 = computed(() => [\n `${tabsClass.value}__nav`,\n {\n [`${tabsClass.value}__nav--split`]: props.split,\n },\n ]);\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 const previousValue = ref<TabValue>();\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<Styles>({\n opacity: 0,\n });\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: Styles = { opacity: 1 };\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 const isInit = previousValue.value === undefined;\n previousValue.value = currentValue.value;\n\n if (isInit) {\n style.transitionDuration = `0s`;\n } else 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 canMove.value = true;\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 handleTabClick(e, itemProps.value[tabIndex.value + 1]);\n } else if (startX.value < endX.value) {\n // 向右划\n if (tabIndex.value <= 0) return;\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 = false;\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 // @ts-expect-error compatibility\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 ref={navScroll} class={[`${tabsClass.value}__scroll`, `${tabsClass.value}__scroll--${props.theme}`]}>\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","_defineProperty","split","startX","ref","startY","endX","endY","canMove","tabIndex","index","i","itemProps","length","currentValue","_toRefs","toRefs","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","setCurrentValue","previousValue","list","children","res","label","handler","forEach","child","_child$children","type","Fragment","push","filter","map","item","valueList","v","currentIndex","indexOf","navScroll","navWrap","navLine","lineStyle","opacity","moveToActiveTab","showBottomLine","tab","querySelector","line","tabInner","style","bottomLineMode","width","Number","offsetWidth","transform","offsetLeft","isInit","transitionDuration","animation","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","spaceEvenly","theme","TBadge","default","_default","TTabNavItem","icon","TSticky","_mergeProps"],"mappings":"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"}