UNPKG

tdesign-mobile-vue

Version:
1 lines 25.3 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 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 CLASSNAMES from '../shared/constants';\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';\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\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 && CLASSNAMES.SIZE[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 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","stickyProps","computed","_objectSpread","disabled","sticky","activeClass","concat","value","disabledClass","tabsClasses","size","CLASSNAMES","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","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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"}