tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 18 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 { debounce } 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 } from './useTouch';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nconst statusName = ['pulling', 'loosing', 'loading', 'success', 'initial'];\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\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 { 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 = 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 if (afterLoading.value) {\n return 'success';\n }\n if (!loading.value && distance.value === 0) {\n return 'initial';\n }\n if (distance.value < loadingBarHeight.value) {\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 onReachBottom = debounce(\n () => {\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 滚动高度\n const { clientHeight, scrollHeight } = document.documentElement; // 可视区域/屏幕高度, 页面高度\n const distance = 20; // 距离视窗 20 时,开始触发\n if (scrollTop + clientHeight >= scrollHeight - distance) {\n props.onScrolltolower?.();\n }\n },\n 300,\n {\n leading: true,\n trailing: false,\n },\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.addEventListener('scroll', onReachBottom);\n });\n\n onUnmounted(() => {\n clearTimeout(timer);\n window.removeEventListener('scroll', onReachBottom);\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 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","defineComponent","name","components","TLoading","props","PullDownRefreshProps","emits","setup","pullDownRefreshClass","usePrefixClass","_useConfig","useConfig","globalConfig","renderContent","useContent","timer","distance","ref","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","_useElementSize","useElementSize","loadingBarHeight","height","_useElementSize2","maxBarHeight","actualLoadingBarHeight","touchDir","touchThreshold","watch","_ref","_ref2","_ref3","val","_ref4","prevVal","immediate","newVal","setTimeout","isTouchable","disabled","onTouchStart","e","isReachTop","clearTimeout","start","onTouchMove","move","diffY","diffX","absX","Math","abs","absY","nextDistance","easeDistance","preventDefault","onTouchEnd","_props$onRefresh","onRefresh","call","_props$onTimeout","onTimeout","refreshTimeout","onReachBottom","debounce","scrollTop","document","documentElement","body","_document$documentEle","clientHeight","scrollHeight","_props$onScrolltolowe","onScrolltolower","leading","trailing","onTransitionEnd","trackStyle","transform","concat","heightDiff","reconvertUnit","loadingBarStyles","maxHeight","convertUnit","maxBarStyles","onMounted","window","addEventListener","onUnmounted","removeEventListener","renderLoading","_createVNode","_resolveComponent","_mergeProps","loadingProps","content","className"],"mappings":"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"}