tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 28.6 kB
Source Map (JSON)
{"version":3,"file":"swiper.mjs","sources":["../../../components/swiper/swiper.tsx"],"sourcesContent":["import { defineComponent, ref, computed, watch, isVNode, onMounted, cloneVNode } from 'vue';\nimport { ChevronLeftIcon as TdChevronLeftIcon, ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-vue-next';\n\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { useChildComponentSlots } from '../hooks';\nimport props from './props';\nimport { SwiperNavigation, SwiperChangeSource } from './type';\nimport TSwiperItem from './swiper-item';\nimport { useTNodeJSX } from '../hooks/tnode';\n\nconst defaultNavigation: SwiperNavigation = {\n placement: 'inside',\n showSlideBtn: 'always',\n size: 'medium',\n type: 'bars',\n};\n\nexport default defineComponent({\n name: 'TSwiper',\n props,\n emits: ['update:current'],\n setup(props, { emit }) {\n const prefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n\n const { ChevronLeftIcon, ChevronRightIcon } = useGlobalIcon({\n ChevronLeftIcon: TdChevronLeftIcon,\n ChevronRightIcon: TdChevronRightIcon,\n });\n let swiperTimer: ReturnType<typeof setTimeout> | null = null;\n let swiperSwitchingTimer = 0;\n let isBeginToEnd = false;\n let isEndToBegin = false;\n const currentIndex = ref(props.current || props.defaultCurrent);\n const navActiveIndex = ref(props.current || props.defaultCurrent);\n const isHovering = ref(false);\n const isSwitching = ref(false);\n const showArrow = ref(false);\n const swiperWrap = ref<HTMLElement>();\n const getChildComponentByName = useChildComponentSlots();\n\n const swiperItemLength = ref(0);\n const navigationConfig = computed(() => {\n return {\n ...defaultNavigation,\n ...(isVNode(props.navigation) ? {} : (props.navigation as object)),\n };\n });\n const isEnd = computed(() => {\n if (props.type === 'card') {\n return !props.loop && currentIndex.value + 1 >= swiperItemLength.value;\n }\n return !props.loop && currentIndex.value + 2 >= swiperItemLength.value;\n });\n const propsToUpdateSetTimer = computed(() => {\n return [props.autoplay, currentIndex.value, props.duration, props.interval];\n });\n const swiperWrapClass = computed(() => {\n return {\n [`${prefix.value}-swiper__wrap`]: true,\n [`${prefix.value}-swiper--inside`]: navigationConfig.value.placement === 'inside',\n [`${prefix.value}-swiper--outside`]: navigationConfig.value.placement === 'outside',\n [`${prefix.value}-swiper--vertical`]: props.direction === 'vertical',\n [`${prefix.value}-swiper--large`]: navigationConfig.value.size === 'large',\n [`${prefix.value}-swiper--small`]: navigationConfig.value.size === 'small',\n };\n });\n const containerStyle = computed(() => {\n const offsetHeight = props.height ? `${props.height}px` : `${getWrapAttribute('offsetHeight')}px`;\n if (props.type === 'card' || props.animation === 'fade') {\n return {\n height: offsetHeight,\n };\n }\n if (props.animation === 'slide') {\n const style: Record<string, number | string> = {\n transition: isSwitching.value ? `transform ${props.duration / 1000}s ease` : '',\n };\n let active = currentIndex.value;\n if (swiperItemLength.value > 1) {\n active += 1;\n if (isBeginToEnd || isEndToBegin) {\n style.transition = '';\n }\n }\n if (props.direction === 'vertical') {\n style.height = offsetHeight;\n style.transform = `translate3d(0, -${active * 100}%, 0px)`;\n } else {\n style.transform = `translate3d(-${active * 100}%, 0px, 0px)`;\n }\n ['msTransform', 'WebkitTransform'].forEach((key) => {\n style[key] = style.transform;\n });\n return style;\n }\n return {};\n });\n const swiperItems = () => {\n const swiperItemList = getChildComponentByName('SwiperItem');\n swiperItemLength.value = swiperItemList.length;\n const items = swiperItemList.map((swiperItem: any, index) => {\n const p = { ...props, ...swiperItem.props };\n return (\n <TSwiperItem\n index={index}\n currentIndex={currentIndex.value}\n isSwitching={isSwitching.value}\n getWrapAttribute={getWrapAttribute}\n swiperItemLength={swiperItemLength.value}\n {...p}\n >\n {swiperItem.children.default()}\n </TSwiperItem>\n );\n });\n if (props.animation === 'slide' && items.length > 1) {\n const first = cloneVNode(items[0], {\n key: `swiper-item-append-${0}`,\n });\n const last = cloneVNode(items[items.length - 1], {\n key: `swiper-item-prepend-${items.length - 1}`,\n });\n items.unshift(last);\n items.push(first);\n }\n return items;\n };\n\n const swiperTo = (index: number, context: { source: SwiperChangeSource }) => {\n let targetIndex = index % swiperItemLength.value;\n navActiveIndex.value = targetIndex;\n emit('update:current', targetIndex);\n props.onChange?.(targetIndex, context);\n isSwitching.value = true;\n if (props.animation === 'slide' && swiperItemLength.value > 1 && props.type !== 'card') {\n targetIndex = index;\n isBeginToEnd = false;\n isEndToBegin = false;\n if (index >= swiperItemLength.value) {\n clearTimer();\n setTimeout(() => {\n isEndToBegin = true;\n currentIndex.value = 0;\n }, props.duration);\n }\n if (currentIndex.value === 0) {\n if (\n (swiperItemLength.value > 2 && index === swiperItemLength.value - 1) ||\n (swiperItemLength.value === 2 && index === 0)\n ) {\n targetIndex = -1;\n navActiveIndex.value = swiperItemLength.value - 1;\n clearTimer();\n setTimeout(() => {\n isBeginToEnd = true;\n currentIndex.value = swiperItemLength.value - 1;\n }, props.duration);\n }\n }\n }\n currentIndex.value = targetIndex;\n };\n const clearTimer = () => {\n if (swiperTimer) {\n clearTimeout(swiperTimer);\n swiperTimer = null;\n }\n };\n const setTimer = () => {\n if (props.autoplay && props.interval > 0) {\n clearTimer();\n swiperTimer = setTimeout(\n () => {\n swiperTo(currentIndex.value + 1, { source: 'autoplay' });\n },\n currentIndex.value === 0 ? props.interval - (props.duration + 50) : props.interval, // 当 index 为 0 的时候,表明刚从克隆的最后一项跳转过来,已经经历了duration + 50 的间隔时间,减去即可\n );\n }\n };\n\n const onMouseEnter = () => {\n isHovering.value = true;\n if (props.stopOnHover) {\n clearTimer();\n }\n if (navigationConfig.value.showSlideBtn === 'hover') {\n showArrow.value = true;\n }\n };\n const onMouseLeave = () => {\n isHovering.value = false;\n if (!isEnd.value) {\n setTimer();\n }\n if (navigationConfig.value.showSlideBtn === 'hover') {\n showArrow.value = false;\n }\n };\n const onMouseEnterNavigationItem = (i: number) => {\n if (props.trigger === 'hover') {\n swiperTo(i, { source: 'hover' });\n }\n };\n const onClickNavigationItem = (i: number) => {\n if (props.trigger === 'click') {\n swiperTo(i, { source: 'click' });\n }\n };\n const goNext = (context: { source: SwiperChangeSource }) => {\n if (isSwitching.value) return;\n if (props.type === 'card') {\n return swiperTo(currentIndex.value + 1 >= swiperItemLength.value ? 0 : currentIndex.value + 1, context);\n }\n return swiperTo(currentIndex.value + 1, context);\n };\n const goPrevious = (context: { source: SwiperChangeSource }) => {\n if (isSwitching.value) return;\n if (currentIndex.value - 1 < 0) {\n if (props.animation === 'slide' && swiperItemLength.value === 2) {\n return swiperTo(0, context);\n }\n return swiperTo(swiperItemLength.value - 1, context);\n }\n return swiperTo(currentIndex.value - 1, context);\n };\n const getWrapAttribute = (attr: string) => {\n return swiperWrap.value?.parentNode?.[attr as keyof ParentNode];\n };\n const renderPagination = () => {\n const fractionIndex = currentIndex.value + 1 > swiperItemLength.value ? 1 : currentIndex.value + 1;\n return (\n <div class={`${prefix.value}-swiper__arrow`}>\n <div class={`${prefix.value}-swiper__arrow-left`} onClick={() => goPrevious({ source: 'click' })}>\n <ChevronLeftIcon />\n </div>\n <div class={`${prefix.value}-swiper__navigation-text-fraction`}>\n {fractionIndex}/{swiperItemLength.value}\n </div>\n <div class={`${prefix.value}-swiper__arrow-right`} onClick={() => goNext({ source: 'click' })}>\n <ChevronRightIcon />\n </div>\n </div>\n );\n };\n const renderArrow = () => {\n if (!showArrow.value) return null;\n return (\n <div class={[`${prefix.value}-swiper__arrow`, `${prefix.value}-swiper__arrow--default`]}>\n <div class={`${prefix.value}-swiper__arrow-left`} onClick={() => goPrevious({ source: 'click' })}>\n <ChevronLeftIcon />\n </div>\n <div class={`${prefix.value}-swiper__arrow-right`} onClick={() => goNext({ source: 'click' })}>\n <ChevronRightIcon />\n </div>\n </div>\n );\n };\n const renderNavigation = () => {\n if (isVNode(props.navigation)) return props.navigation;\n const navigationSlot = renderTNodeJSX('navigation');\n if (navigationSlot && isVNode(navigationSlot?.[0])) return navigationSlot;\n\n if (navigationConfig.value.type === 'fraction') {\n return (\n <div class={[`${prefix.value}-swiper__navigation`, `${prefix.value}-swiper__navigation--fraction`]}>\n {renderPagination()}\n </div>\n );\n }\n const swiperItemList = getChildComponentByName('SwiperItem');\n return (\n <ul\n class={[\n `${prefix.value}-swiper__navigation`,\n {\n [`${prefix.value}-swiper__navigation-bars`]: navigationConfig.value.type === 'bars',\n [`${prefix.value}-swiper__navigation-dots`]: navigationConfig.value.type === 'dots',\n [`${prefix.value}-swiper__navigation-dots-bar`]: navigationConfig.value.type === 'dots-bar',\n },\n ]}\n >\n {swiperItemList.map((_, i: number) => (\n <li\n key={i}\n class={[\n `${prefix.value}-swiper__navigation-item`,\n {\n [`${prefix.value}-is-active`]: i === navActiveIndex.value,\n },\n ]}\n onMouseenter={() => onMouseEnterNavigationItem(i)}\n onClick={() => onClickNavigationItem(i)}\n >\n <span></span>\n </li>\n ))}\n </ul>\n );\n };\n const renderSwiperItems = () => {\n return swiperItems();\n };\n\n watch(\n () => propsToUpdateSetTimer.value,\n () => {\n setTimer();\n },\n );\n watch(\n () => isSwitching.value,\n () => {\n if (isSwitching.value) {\n if (swiperSwitchingTimer) clearTimeout(swiperSwitchingTimer);\n swiperSwitchingTimer = setTimeout(() => {\n isSwitching.value = false;\n swiperSwitchingTimer = 0;\n if (isEnd.value) {\n clearTimer();\n }\n }, props.duration + 50) as unknown as number;\n }\n },\n );\n watch(\n () => props.current,\n () => {\n swiperTo(props.current, { source: 'autoplay' });\n },\n );\n\n onMounted(() => {\n setTimer();\n showArrow.value = navigationConfig.value.showSlideBtn === 'always';\n });\n\n return () => (\n <div class={[`${prefix.value}-swiper`]} onMouseenter={onMouseEnter} onMouseleave={onMouseLeave} ref={swiperWrap}>\n <div class={swiperWrapClass.value}>\n <div\n class={[\n `${prefix.value}-swiper__content`,\n {\n [`${prefix.value}-swiper-fade`]: props.animation === 'fade',\n [`${prefix.value}-swiper-card`]: props.type === 'card',\n },\n ]}\n >\n <div class={`${prefix.value}-swiper__container`} style={containerStyle.value}>\n {renderSwiperItems()}\n </div>\n </div>\n {renderNavigation()}\n {renderArrow()}\n </div>\n </div>\n );\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defaultNavigation","placement","showSlideBtn","size","type","defineComponent","name","props","emits","setup","emit","_ref","prefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","_useGlobalIcon","useGlobalIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","swiperTimer","swiperSwitchingTimer","isBeginToEnd","isEndToBegin","currentIndex","ref","current","defaultCurrent","navActiveIndex","isHovering","isSwitching","showArrow","swiperWrap","getChildComponentByName","useChildComponentSlots","swiperItemLength","navigationConfig","computed","_objectSpread","isVNode","navigation","isEnd","loop","value","propsToUpdateSetTimer","autoplay","duration","interval","swiperWrapClass","_defineProperty","concat","direction","containerStyle","offsetHeight","height","getWrapAttribute","animation","style","transition","active","transform","forEach","key","swiperItems","swiperItemList","length","items","map","swiperItem","index","_slot","p","_createVNode","TSwiperItem","_mergeProps","children","first","cloneVNode","last","unshift","push","swiperTo","context","_props2$onChange","targetIndex","onChange","clearTimer","setTimeout","clearTimeout","setTimer","source","onMouseEnter","stopOnHover","onMouseLeave","onMouseEnterNavigationItem","i","trigger","onClickNavigationItem","goNext","goPrevious","attr","_swiperWrap$value","parentNode","renderPagination","fractionIndex","onClick","renderArrow","renderNavigation","navigationSlot","_","onMouseenter","renderSwiperItems","watch","onMounted"],"mappings":"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"}