tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 17.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 debounce from 'lodash/debounce';\nimport PullDownRefreshProps from './props';\nimport { useVModel, convertUnit, reconvertUnit } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport config from '../config';\nimport TLoading from '../loading';\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 const onTouchStart = (e: TouchEvent) => {\n e.stopPropagation();\n if (!isReachTop(e) || loading.value) 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 e.stopPropagation();\n if (!isReachTop(e) || loading.value) return;\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 e.stopPropagation();\n if (!isReachTop(e) || loading.value) 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","onTouchStart","e","stopPropagation","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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"}