tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 19.8 kB
Source Map (JSON)
{"version":3,"file":"pull-down-refresh.mjs","sources":["../../src/pull-down-refresh/pull-down-refresh.tsx"],"sourcesContent":["import { defineComponent, onUnmounted, ref, toRefs, computed, watch, onMounted } from 'vue';\nimport { useElementSize } from '@vueuse/core';\nimport { throttle } from 'lodash-es';\nimport PullDownRefreshProps from './props';\nimport { convertUnit, reconvertUnit } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport config from '../config';\nimport TLoading from '../loading';\nimport useVModel from '../hooks/useVModel';\nimport { useContent } from '../hooks/tnode';\nimport { useTouch, isReachTop, easeDistance, getScrollParent } from './useTouch';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nconst statusName = ['pulling', 'loosing', 'loading', 'success', 'initial'];\n\n/** 触底检测阈值(距离底部多少像素时触发) */\nconst SCROLL_TO_LOWER_THRESHOLD = 20;\n\nexport default defineComponent({\n name: `${prefix}-pull-down-refresh`,\n components: { TLoading },\n props: PullDownRefreshProps,\n emits: ['refresh', 'timeout', 'scrolltolower', 'update:value', 'update:modelValue'],\n setup(props) {\n const pullDownRefreshClass = usePrefixClass('pull-down-refresh');\n const { globalConfig } = useConfig('pullDownRefresh');\n const renderContent = useContent();\n\n let timer: any = null;\n const scrollContainerRef = ref<Element | Window | null>(null);\n\n // 滑动距离\n const distance = ref(0);\n const afterLoading = ref(false);\n const { value, modelValue } = toRefs(props);\n const [loading, setLoading] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const loadingText = computed(() => {\n const index = statusName.indexOf(status.value);\n const loadingTexts = props.loadingTexts?.length > 0 ? props.loadingTexts : globalConfig.value.loadingTexts;\n return index >= 0 ? loadingTexts[index] : '';\n });\n\n const touch = useTouch();\n const loadingBar = ref();\n const maxBar = ref();\n const rootRef = ref<HTMLElement>();\n const { height: loadingBarHeight } = useElementSize(loadingBar);\n const { height: maxBarHeight } = useElementSize(maxBar);\n const actualLoadingBarHeight = ref(0);\n\n // 默认 0 左右移动 1 上下移动 -1\n let touchDir: -1 | 0 | 1;\n const touchThreshold = 5;\n\n watch(\n [loading, loadingBarHeight],\n ([val], [prevVal]) => {\n if (val) {\n distance.value = Math.round(loadingBarHeight.value);\n }\n if (!val && prevVal) {\n afterLoading.value = true;\n }\n },\n {\n immediate: true,\n },\n );\n\n const status = computed(() => {\n const reconvertHeight = Math.round(reconvertUnit(props.loadingBarHeight));\n if (afterLoading.value) {\n return 'success';\n }\n if (!loading.value && distance.value === 0) {\n return 'initial';\n }\n if (distance.value < reconvertHeight) {\n return 'pulling';\n }\n if (loading.value) {\n return 'loading';\n }\n return 'loosing';\n });\n\n watch(status, (newVal) => {\n if (newVal === 'success') {\n // 延时300ms收起下拉框,加强刷新成功提示\n setTimeout(() => {\n distance.value = 0;\n }, 300);\n }\n });\n\n // 统一判断是否可以滑动\n const isTouchable = () => loading.value || props.disabled;\n\n const onTouchStart = (e: TouchEvent) => {\n if (isTouchable()) return;\n if (!isReachTop(e)) return;\n\n clearTimeout(timer);\n timer = null;\n distance.value = 0;\n touch.start(e);\n touchDir = 0;\n };\n\n const onTouchMove = (e: TouchEvent) => {\n if (isTouchable()) return;\n if (!isReachTop(e)) return;\n\n touch.move(e);\n\n const { diffY, diffX } = touch;\n const absX = Math.abs(diffX.value);\n const absY = Math.abs(diffY.value);\n\n if (!touchDir && absX < touchThreshold && absY < touchThreshold) {\n return;\n }\n if (!touchDir && absX < absY) {\n touchDir = -1;\n } else if (!touchDir && absX >= absY) {\n touchDir = 1;\n }\n\n // 左右移动时,不进行后续操作\n if (touchDir === 1) return;\n\n actualLoadingBarHeight.value = diffY.value;\n const nextDistance = easeDistance(diffY.value, loadingBarHeight.value);\n // 下拉时,防止下拉整个页面\n if (diffY.value > 0) {\n preventDefault(e, false);\n }\n if (nextDistance >= 0 && nextDistance < maxBarHeight.value) {\n distance.value = nextDistance;\n }\n };\n\n const onTouchEnd = (e: TouchEvent) => {\n if (isTouchable()) return;\n if (!isReachTop(e)) return;\n\n if (status.value === 'loosing') {\n distance.value = loadingBarHeight.value;\n setLoading(true);\n props.onRefresh?.();\n timer = setTimeout(() => {\n if (loading.value) {\n props.onTimeout?.();\n setLoading(false);\n }\n }, props.refreshTimeout);\n } else {\n distance.value = 0;\n }\n };\n\n const isReachBottom = () => {\n const container = scrollContainerRef.value;\n if (!container) return false;\n if (container === window) {\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n const { clientHeight, scrollHeight } = document.documentElement;\n return scrollTop + clientHeight >= scrollHeight - SCROLL_TO_LOWER_THRESHOLD;\n }\n const el = container as Element;\n return el.scrollTop + el.clientHeight >= el.scrollHeight - SCROLL_TO_LOWER_THRESHOLD;\n };\n\n const onScroll = throttle(\n () => {\n if (!loading.value && isReachBottom()) {\n props.onScrolltolower?.();\n }\n },\n 300,\n { leading: false, trailing: true },\n );\n\n const onTransitionEnd = () => {\n if (afterLoading.value) {\n afterLoading.value = false;\n }\n };\n\n const trackStyle = computed(() => {\n return {\n transform: `translate3d(0, ${distance.value}px, 0)`,\n };\n });\n const heightDiff = (reconvertUnit(props.maxBarHeight) - reconvertUnit(props.loadingBarHeight)) / 2;\n const loadingBarStyles = computed(() => {\n return {\n transform: `translateY(${heightDiff}px)`,\n height: `${actualLoadingBarHeight.value}px`,\n maxHeight: convertUnit(props.loadingBarHeight),\n };\n });\n const maxBarStyles = computed(() => ({\n height: convertUnit(props.maxBarHeight),\n }));\n\n onMounted(() => {\n // 自动检测滚动容器:优先使用最近的滚动父元素,否则使用 window\n scrollContainerRef.value = rootRef.value ? getScrollParent(rootRef.value) || window : window;\n scrollContainerRef.value.addEventListener('scroll', onScroll);\n });\n\n onUnmounted(() => {\n clearTimeout(timer);\n scrollContainerRef.value?.removeEventListener('scroll', onScroll);\n });\n const renderLoading = () => {\n if (status.value === 'loading') {\n return <t-loading size=\"24px\" text={loadingText.value} {...(props.loadingProps as object)}></t-loading>;\n }\n return <div class={`${pullDownRefreshClass.value}__text`}>{loadingText.value}</div>;\n };\n return () => {\n const content = renderContent('default', 'content');\n let className = `${pullDownRefreshClass.value}__track`;\n if (status.value !== 'pulling') {\n className = `${className} ${pullDownRefreshClass.value}__track--loosing`;\n }\n return (\n <div ref={rootRef} class={pullDownRefreshClass.value}>\n <div\n class={className}\n style={trackStyle.value}\n onTouchstart={onTouchStart}\n onTouchmove={onTouchMove}\n onTouchend={onTouchEnd}\n onTouchcancel={onTouchEnd}\n onTransitionend={onTransitionEnd}\n >\n <div ref={maxBar} class={`${pullDownRefreshClass.value}__tips`} style={maxBarStyles.value}>\n <div ref={loadingBar} class={`${pullDownRefreshClass.value}__loading`} style={loadingBarStyles.value}>\n {renderLoading()}\n </div>\n </div>\n {content}\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","statusName","SCROLL_TO_LOWER_THRESHOLD","defineComponent","name","components","TLoading","props","PullDownRefreshProps","emits","setup","pullDownRefreshClass","usePrefixClass","_useConfig","useConfig","globalConfig","renderContent","useContent","timer","scrollContainerRef","ref","distance","afterLoading","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","loading","setLoading","loadingText","computed","_props$loadingTexts","index","indexOf","status","loadingTexts","length","touch","useTouch","loadingBar","maxBar","rootRef","_useElementSize","useElementSize","loadingBarHeight","height","_useElementSize2","maxBarHeight","actualLoadingBarHeight","touchDir","touchThreshold","watch","_ref","_ref2","_ref3","val","_ref4","prevVal","Math","round","immediate","reconvertHeight","reconvertUnit","newVal","setTimeout","isTouchable","disabled","onTouchStart","e","isReachTop","clearTimeout","start","onTouchMove","move","diffY","diffX","absX","abs","absY","nextDistance","easeDistance","preventDefault","onTouchEnd","_props$onRefresh","onRefresh","call","_props$onTimeout","onTimeout","refreshTimeout","isReachBottom","container","window","scrollTop","document","documentElement","body","_document$documentEle","clientHeight","scrollHeight","el","onScroll","throttle","_props$onScrolltolowe","onScrolltolower","leading","trailing","onTransitionEnd","trackStyle","transform","concat","heightDiff","loadingBarStyles","maxHeight","convertUnit","maxBarStyles","onMounted","getScrollParent","addEventListener","onUnmounted","_scrollContainerRef$v","removeEventListener","renderLoading","_createVNode","_resolveComponent","_mergeProps","loadingProps","content","className"],"mappings":"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"}