tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 25.2 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/isFunction';\nimport config from '../config';\nimport props from './props';\nimport TTabNavItem from './tab-nav-item';\nimport { useVModel } from '../shared';\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: RendererNode[] = [];\n children?.forEach((child) => {\n if (child.type === Fragment) {\n res.push(...child.children);\n } else {\n res.push(child);\n }\n if (child.children?.label) {\n label.push(child.children.label()[0] || null);\n }\n });\n\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 navScrollScrollLeft = navScroll.value.scrollLeft;\n const navScrollWidth = navScroll.value.offsetWidth;\n if (tabLeft + tabWidth - navScrollScrollLeft > navScrollWidth) {\n navScroll.value.scrollTo({ left: tabLeft + tabWidth - navScrollWidth, behavior: 'smooth' });\n } else if (tabLeft < navScrollScrollLeft) {\n navScroll.value.scrollTo({ left: tabLeft, behavior: 'smooth' });\n }\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(value, () => {\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} />\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={`${tabsClass.value}__scroll ${tabsClass.value}__scroll--top ${tabsClass.value}__scroll--${props.theme}`}\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 <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","_children","list","children","res","label","forEach","child","_child$children","type","Fragment","push","apply","_toConsumableArray","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","navScrollScrollLeft","scrollLeft","navScrollWidth","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","TSticky","_mergeProps"],"mappings":"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"}