UNPKG

tdesign-mobile-vue

Version:
1 lines 30.8 kB
{"version":3,"file":"swiper.mjs","sources":["../../src/swiper/swiper.tsx"],"sourcesContent":["import { onMounted, computed, ref, provide, watch, onUnmounted, toRefs, defineComponent } from 'vue';\nimport { isNumber } from 'lodash-es';\nimport { useSwipe } from '../swipe-cell/useSwipe';\nimport config from '../config';\nimport props from './props';\nimport { SwiperChangeSource, SwiperNavigation } from './type';\nimport useVModel from '../hooks/useVModel';\nimport { preventDefault } from '../shared/dom';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst DEFAULT_SWIPER_NAVIGATION: SwiperNavigation = {\n paginationPosition: 'bottom',\n placement: 'inside',\n showControls: false,\n type: 'dots',\n};\n\n/**\n * 滑动触发阈值\n */\nconst SWIPE_THRESHOLD = 100;\n\nconst { prefix } = config;\n\n// 定义 SwiperItem 的接口\ninterface SwiperItemInstance {\n uid: number;\n proxy: any;\n calcTranslateStyle: (index: number, activeIndex: number) => void;\n}\n\nexport default defineComponent({\n name: `${prefix}-swiper`,\n props,\n emits: ['change', 'update:current', 'update:modelValue', 'transitionenter', 'transitionleave'],\n setup(props, context) {\n const swiperClass = usePrefixClass('swiper');\n const swiperNavClass = usePrefixClass('swiper-nav');\n\n const renderTNodeJSX = useTNodeJSX();\n const setOffset = (offset: number, direction: 'X' | 'Y' = 'X'): void => {\n translateContainer.value = `translate${direction}(${offset}px)`;\n };\n\n const root = ref();\n const items = ref<SwiperItemInstance[]>([]);\n const { current: value, modelValue } = toRefs(props);\n const [currentIndex, setCurrent] = useVModel(value, modelValue, props.defaultCurrent);\n const swiperContainer = ref<HTMLElement | null>(null);\n const previous = ref(currentIndex.value ?? 0);\n\n const animating = ref(false);\n const disabled = ref(false);\n const isSwiperDisabled = computed(() => props.disabled === true);\n const translateContainer = ref('');\n\n const isVertical = computed(() => props.direction === 'vertical');\n const containerHeight = ref('auto');\n\n const navigationConfig = computed<SwiperNavigation>(() => {\n if (props.navigation === true) {\n return DEFAULT_SWIPER_NAVIGATION;\n }\n if (typeof props.navigation === 'object' && props.navigation !== null) {\n return {\n ...DEFAULT_SWIPER_NAVIGATION,\n ...props.navigation,\n } as SwiperNavigation;\n }\n\n return {} as SwiperNavigation;\n });\n\n /**\n * @description 是否启用内置导航器\n * - 非空 navigationConfig 代表启用内置导航器;\n * - navigation 为对象时,根据 minShowNum 判断是否满足最小展示数量\n */\n const enableBuiltinNavigation = computed(() => {\n if (!Object.keys(navigationConfig.value).length) return false;\n\n const { minShowNum } = navigationConfig.value;\n return minShowNum ? items.value.length >= minShowNum : true;\n });\n\n /**\n * @description 是否启用底部分页器\n */\n const isBottomPagination = computed(() => {\n if (!enableBuiltinNavigation.value) return false;\n\n const { paginationPosition, type } = navigationConfig.value;\n return paginationPosition === 'bottom' && (type === 'dots' || type === 'dots-bar');\n });\n\n const rootClass = computed(() => [\n `${swiperClass.value}`,\n `${swiperClass.value}--${props.type}`,\n { [`${swiperClass.value}--${navigationConfig.value.placement}`]: isBottomPagination.value },\n ]);\n\n let autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n const onItemClick = () => {\n props.onClick?.(currentIndex.value ?? 0);\n };\n\n const move = (step: number, source: SwiperChangeSource, isReset = false, targetValue?: number) => {\n const nextIndex = currentIndex.value + step;\n if (!props.loop && !(isReset || typeof targetValue === 'number')) {\n if (nextIndex < 0 || nextIndex >= items.value.length) return;\n }\n\n animating.value = true;\n const innerTargetValue = targetValue ?? (isReset ? step : nextIndex);\n processIndex(innerTargetValue, source);\n\n const moveDirection = !isVertical.value ? 'X' : 'Y';\n const distance = root.value?.[isVertical.value ? 'offsetHeight' : 'offsetWidth'] ?? 0;\n\n translateContainer.value = `translate${moveDirection}(${isReset ? 0 : -1 * distance * step}px)`;\n };\n\n const handleAnimationEnd = () => {\n disabled.value = false;\n animating.value = false;\n translateContainer.value = `translate${isVertical.value ? 'Y' : 'X'}(0)`;\n\n updateItemPosition();\n };\n\n const stopAutoplay = () => {\n if (!autoplayTimer) return;\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n };\n\n const startAutoplay = () => {\n if (!props.autoplay || autoplayTimer !== null) return false; // stop repeat autoplay\n autoplayTimer = setInterval(() => {\n goNext('autoplay');\n }, props.interval);\n };\n\n const goPrev = (source: SwiperChangeSource) => {\n disabled.value = true;\n move(-1, source);\n };\n const goNext = (source: SwiperChangeSource) => {\n disabled.value = true;\n move(1, source);\n };\n\n const innerSetCurrent = (val: number) => {\n setCurrent(val);\n previous.value = val;\n };\n\n const processIndex = (index: number, source: SwiperChangeSource) => {\n const max = items.value.length;\n let val = index;\n\n if (index < 0) {\n val = props.loop ? max - 1 : 0;\n }\n if (index >= max) {\n val = props.loop ? 0 : max - 1;\n }\n innerSetCurrent(val);\n context.emit('update:current', val);\n context.emit('change', val, { source });\n };\n\n const { lengthX, lengthY } = useSwipe(swiperContainer, {\n onSwipeStart() {\n if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n stopAutoplay();\n },\n onSwipe(e: TouchEvent) {\n if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n onTouchMove(e);\n },\n onSwipeEnd() {\n if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n onTouchEnd();\n },\n });\n\n const onTouchMove = (event: TouchEvent) => {\n preventDefault(event, false);\n\n animating.value = false;\n\n const curIndex = currentIndex.value;\n const maxIndex = items.value.length - 1;\n const distance = isVertical.value ? lengthY.value : lengthX.value;\n const dir = isVertical.value ? 'Y' : 'X';\n\n // 非loop状态: 阻止第一项向左滑(显示上一项)和最后一项向右滑(显示下一项)\n if (!props.loop && ((curIndex <= 0 && distance < 0) || (curIndex >= maxIndex && distance > 0))) return;\n\n setOffset(-distance, dir);\n };\n\n const onTouchEnd = () => {\n const distance = isVertical.value ? lengthY.value : lengthX.value;\n\n if (distance < -SWIPE_THRESHOLD) {\n move(-1, 'touch');\n } else if (distance > SWIPE_THRESHOLD) {\n move(1, 'touch');\n } else {\n move(currentIndex.value as number, 'touch', true);\n }\n startAutoplay();\n };\n\n const onTransitionstart = (event: TransitionEvent) => {\n context.emit('transitionenter', event);\n };\n\n const onTransitionend = (event: TransitionEvent) => {\n context.emit('transitionleave', event);\n };\n\n const addChild = (item: SwiperItemInstance) => {\n items.value.push(item);\n };\n\n const removeChild = (uid: number) => {\n const removedIndex = items.value.findIndex((item) => item.uid === uid);\n if (removedIndex === -1) return;\n\n items.value.splice(removedIndex, 1);\n\n // 如果删除后没有项了,重置索引\n if (items.value.length === 0) {\n innerSetCurrent(0);\n return;\n }\n\n // 根据删除位置调整当前索引\n if (removedIndex < currentIndex.value) {\n // 删除的是前面的项,当前索引需要 -1(保持显示相同内容)\n innerSetCurrent(currentIndex.value - 1);\n } else if (removedIndex === currentIndex.value && currentIndex.value >= items.value.length) {\n // 删除的是当前项,且索引已越界,调整到最后一项\n innerSetCurrent(items.value.length - 1);\n }\n\n updateItemPosition();\n };\n\n const updateItemPosition = () => {\n if (!items.value.length) return;\n items.value.forEach((item, index) => {\n item.calcTranslateStyle(index, currentIndex.value);\n });\n };\n\n const setContainerHeight = (height: number | string) =>\n (containerHeight.value = isNumber(height) ? `${height}px` : height);\n\n const updateContainerHeight = () => {\n if (props.height) {\n setContainerHeight(props.height);\n return;\n }\n\n const target = items.value[currentIndex.value ?? 0];\n const rect = target?.proxy?.$el.getBoundingClientRect();\n if (rect) {\n setContainerHeight(rect.height);\n }\n };\n\n watch(currentIndex, updateContainerHeight);\n watch(\n () => props.current,\n (val, oldVal) => {\n // v-model动态更新时不触发move逻辑\n if (val === previous.value) return;\n stopAutoplay();\n move(val - oldVal, 'autoplay', false, val);\n startAutoplay();\n },\n );\n\n provide('parent', {\n loop: props.loop,\n root,\n items,\n isVertical,\n addChild,\n removeChild,\n setContainerHeight,\n });\n\n onMounted(() => {\n startAutoplay();\n updateItemPosition();\n updateContainerHeight();\n });\n\n onUnmounted(() => {\n stopAutoplay();\n });\n\n // 渲染控制按钮(左右箭头)\n const renderControlsNav = () => {\n if (isVertical.value || !navigationConfig.value?.showControls) return null;\n\n return (\n <span class={`${swiperNavClass.value}__btn`}>\n <span class={`${swiperNavClass.value}__btn--prev`} onClick={() => goPrev('nav')} />\n <span class={`${swiperNavClass.value}__btn--next`} onClick={() => goNext('nav')} />\n </span>\n );\n };\n\n // 渲染点状导航\n const renderDotsNav = () => {\n const navType = navigationConfig.value.type;\n if (!navType || !['dots', 'dots-bar'].includes(navType)) return null;\n\n return (\n <>\n {items.value.map((_, index) => (\n <span\n key={`page${index}`}\n class={[\n `${swiperNavClass.value}__${navType}-item`,\n index === currentIndex.value && `${swiperNavClass.value}__${navType}-item--active`,\n `${swiperNavClass.value}__${navType}-item--${props.direction}`,\n ]}\n />\n ))}\n </>\n );\n };\n\n // 渲染分式导航 (1/5)\n const renderFractionNav = () => {\n if (navigationConfig.value?.type !== 'fraction') return null;\n return <span>{`${(currentIndex.value ?? 0) + 1}/${items.value.length}`}</span>;\n };\n\n // 渲染导航类型(dots/fraction)\n const renderTypeNav = () => {\n if (!('type' in navigationConfig.value)) return null;\n\n return (\n <span\n class={[\n `${swiperNavClass.value}--${props.direction}`,\n `${swiperNavClass.value}__${navigationConfig.value.type || ''}`,\n `${swiperNavClass.value}--${navigationConfig.value.paginationPosition || 'bottom'}`,\n `${swiperNavClass.value}--${navigationConfig.value.placement}`,\n ]}\n >\n {renderDotsNav()}\n {renderFractionNav()}\n </span>\n );\n };\n\n return () => {\n const swiperNav = () => {\n if (props.navigation === false) return null;\n\n if (enableBuiltinNavigation.value) {\n return (\n <>\n {renderControlsNav()}\n {renderTypeNav()}\n </>\n );\n }\n\n if (typeof props.navigation === 'function') return (props.navigation as Function)();\n\n if (context.slots?.navigation) return context.slots.navigation();\n\n return null;\n };\n\n return (\n <div ref={root} class={rootClass.value}>\n <div\n ref={swiperContainer}\n class={`${swiperClass.value}__container`}\n style={{\n flexDirection: isVertical.value ? 'column' : 'row',\n transition: animating.value ? `transform ${props.duration}ms` : 'none',\n transform: translateContainer.value,\n height: containerHeight.value,\n }}\n onTransitionstart={onTransitionstart}\n onTransitionend={(event: TransitionEvent) => {\n if (event.target === event.currentTarget) {\n onTransitionend(event);\n handleAnimationEnd();\n }\n }}\n onClick={onItemClick}\n >\n {renderTNodeJSX('default')}\n </div>\n {swiperNav()}\n </div>\n );\n };\n },\n});\n"],"names":["DEFAULT_SWIPER_NAVIGATION","paginationPosition","placement","showControls","type","SWIPE_THRESHOLD","prefix","config","defineComponent","name","props","emits","setup","context","_currentIndex$value","swiperClass","usePrefixClass","swiperNavClass","renderTNodeJSX","useTNodeJSX","setOffset","offset","direction","arguments","length","undefined","translateContainer","value","concat","root","ref","items","_toRefs","toRefs","current","modelValue","_useVModel","useVModel","defaultCurrent","_useVModel2","_slicedToArray","currentIndex","setCurrent","swiperContainer","previous","animating","disabled","isSwiperDisabled","computed","isVertical","containerHeight","navigationConfig","navigation","_typeof","_objectSpread","enableBuiltinNavigation","Object","keys","minShowNum","isBottomPagination","_navigationConfig$val","rootClass","_defineProperty","autoplayTimer","onItemClick","_props2$onClick","_currentIndex$value2","onClick","move","step","source","_root$value","_root$value2","isReset","targetValue","nextIndex","loop","innerTargetValue","processIndex","moveDirection","distance","handleAnimationEnd","updateItemPosition","stopAutoplay","clearInterval","startAutoplay","autoplay","setInterval","goNext","interval","goPrev","innerSetCurrent","val","index","max","emit","_useSwipe","useSwipe","onSwipeStart","onSwipe","e","onTouchMove","onSwipeEnd","onTouchEnd","lengthX","lengthY","event","preventDefault","curIndex","maxIndex","dir","onTransitionstart","onTransitionend","addChild","item","push","removeChild","uid","removedIndex","findIndex","splice","forEach","calcTranslateStyle","setContainerHeight","height","isNumber","updateContainerHeight","_currentIndex$value3","_target$proxy","target","rect","proxy","$el","getBoundingClientRect","watch","oldVal","provide","onMounted","onUnmounted","renderControlsNav","_navigationConfig$val2","_createVNode","renderDotsNav","navType","includes","_Fragment","map","_","renderFractionNav","_navigationConfig$val3","_currentIndex$value4","renderTypeNav","swiperNav","_context$slots","slots","flexDirection","transition","duration","transform","currentTarget"],"mappings":"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"}