UNPKG

tdesign-mobile-vue

Version:
1 lines 32.4 kB
{"version":3,"file":"swipe-cell.mjs","sources":["../../src/swipe-cell/swipe-cell.tsx"],"sourcesContent":["import {\n ref,\n watch,\n reactive,\n computed,\n onMounted,\n defineComponent,\n getCurrentInstance,\n StyleValue,\n onUnmounted,\n} from 'vue';\nimport isArray from 'lodash/isArray';\nimport isBoolean from 'lodash/isBoolean';\nimport { useSwipe } from './useSwipe';\nimport props from './props';\nimport config from '../config';\nimport { SwipeActionItem, SwipeSource } from './type';\nimport { useClickAway } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport { useSureConfirm } from './useSureConfirm';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport interface SwipeInitData {\n moving: boolean;\n moved: boolean;\n leftWidth: number;\n rightWidth: number;\n offset: number;\n pos: number;\n status: 'open' | 'close';\n}\n\nexport default defineComponent({\n name: `${prefix}-swipe-cell`,\n props,\n setup(props, context) {\n const renderTNodeJSX = useTNodeJSX();\n const renderTNodeContent = useContent();\n const swipeCellClass = usePrefixClass('swipe-cell');\n\n const internalInstance = getCurrentInstance();\n\n const leftRef = ref<HTMLElement>();\n const rightRef = ref<HTMLElement>();\n const swipeCellRef = ref<HTMLElement>();\n const wrapperStyle = computed(() => {\n const transform = `translate3d(${initData.pos}px, 0, 0)`;\n let transition = 'margin-left .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n transition += ',margin-right .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n transition += initData.moving ? '' : ',transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n return {\n position: 'relative',\n transition,\n transform,\n marginLeft: `${sureMarginLeft.value}px`,\n marginRight: `${sureMarginRight.value}px`,\n } as StyleValue;\n });\n\n const distance = 10; // distance 滑动多少距离后开始显示菜\n const autoBack = true; // autoBack 点击菜单后是否收回菜\n const threshold = 0.3; // threshold 滑动宽度的百分之多少自动打开菜单,否则收回\n const initData: SwipeInitData = reactive({\n moving: false, // 是否正在划动\n moved: false, // 标记是否有过划动,划动过则不触发点击事件\n leftWidth: 0, // 左边菜单的宽度\n rightWidth: 0, // 右边菜单的宽度\n offset: 0, // 起点时的偏移\n pos: 0, // 移动的距离\n status: 'close', // 菜单的状态,默认close\n });\n\n const {\n sureRightRef,\n sureLeftRef,\n showSureRight,\n showSureLeft,\n sureMarginRight,\n sureMarginLeft,\n closedSure,\n sureRightContent,\n sureLeftContent,\n sureLeftBgStyle,\n sureRightBgStyle,\n sureRightStyle,\n sureLeftStyle,\n showSure,\n handleSureClick,\n } = useSureConfirm(internalInstance, initData);\n\n const range = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n };\n // 首次touchmove的方向,用于分开左右和上下滑动,左右滑动时禁止上下滑动,上下滑动时禁止左右滑动\n let swipeDir: -1 | 0 | 1 = 0;\n const { lengthX, lengthY, stop } = useSwipe(swipeCellRef, {\n threshold: 0,\n onSwipeStart: (e: TouchEvent) => {\n if (props.disabled) {\n return;\n }\n setPanelWidth();\n swipeDir = 0;\n initData.moved = false;\n initData.offset = initData.pos;\n },\n onSwipe: (e: TouchEvent) => {\n const absLenX = Math.abs(lengthX.value);\n const absLenY = Math.abs(lengthY.value);\n // distance / 2 是为了避免触发上下滑动时 又走左右滑动的逻辑 导致preventDefault终止无效\n if (!swipeDir && absLenX < distance / 2 && absLenY < distance / 2) {\n return;\n }\n if (!swipeDir && absLenX < absLenY) {\n swipeDir = -1;\n } else if (!swipeDir && absLenX >= absLenY) {\n swipeDir = 1;\n }\n if (swipeDir < 0) {\n swipeDir = -1;\n return;\n }\n preventDefault(e, false);\n\n if (props.disabled || (!initData.moved && Math.abs(lengthX.value) < distance)) {\n return;\n }\n\n if (showSureRight.value) {\n closedSure.value = lengthX.value > 0 && initData.pos === 0;\n showSureRight.value = false;\n } else if (showSureLeft.value) {\n closedSure.value = lengthX.value < 0 && initData.pos === 0;\n showSureLeft.value = false;\n }\n initData.moving = true;\n initData.moved = true;\n const offset = range(initData.offset - lengthX.value, -initData.rightWidth, initData.leftWidth);\n initData.pos = offset;\n },\n onSwipeEnd: (e: TouchEvent) => {\n if (props.disabled) {\n return;\n }\n initData.moving = false;\n setTimeout(() => {\n closedSure.value = false;\n }, 0);\n end();\n },\n });\n\n const setPanelWidth = () => {\n const leftWidth = leftRef.value?.clientWidth as number;\n const rightWidth = rightRef.value?.clientWidth as number;\n initData.leftWidth = leftWidth > 0 ? leftWidth : 0;\n initData.rightWidth = rightWidth > 0 ? rightWidth : 0;\n };\n\n const classes = computed(() => [`${name}`]);\n onMounted(async () => {\n setPanelWidth();\n renderMenuStatus();\n });\n onUnmounted(() => {\n stop();\n stopClickAway.value?.();\n });\n watch(\n () => props.opened,\n () => renderMenuStatus(),\n { deep: true },\n );\n watch(\n () => initData.pos,\n (newVal, oldVal) => {\n if (rightRef.value && (newVal < 0 || (newVal === 0 && oldVal < 0))) {\n updateRightMenuPosStyle(newVal);\n } else if (leftRef.value && (newVal > 0 || (newVal === 0 && oldVal > 0))) {\n updateLeftMenuPosStyle(newVal);\n }\n },\n );\n const updateRightMenuPosStyle = (value?: number) => {\n if (!rightRef.value) return;\n const pos = value || initData.pos;\n const children: any = rightRef.value.children || [];\n const wArr: number[] = [];\n for (let i = 0, len = children.length - 2; i < len; ++i) {\n const el = children[i] as HTMLElement;\n wArr.push((wArr[i - 1] || 0) + el.clientWidth);\n }\n for (let i = 0, len = children.length - 2; i < len; ++i) {\n const el = children[i] as HTMLElement;\n const w = (1 + pos / initData.rightWidth) * (wArr[i - 1] || 0);\n if (el) {\n el.style.transform = `translate3d(${-w}px, 0, 0)`;\n el.style.transition = initData.moving ? 'none' : `transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)`;\n }\n }\n };\n const updateLeftMenuPosStyle = (value?: number) => {\n if (!leftRef.value) return;\n const pos = value || initData.pos;\n const { children } = leftRef.value;\n const wArr: number[] = [];\n for (let i = 0, len = children.length - 2; i < len; ++i) {\n const el = children[i] as HTMLElement;\n wArr.push((wArr[i - 1] || 0) + el.clientWidth);\n }\n for (let i = 0, len = children.length - 2; i < len; ++i) {\n const el = children[i] as HTMLElement;\n const w = (1 - pos / initData.leftWidth) * (wArr[i - 1] || 0);\n if (el) {\n el.style.transform = `translate3d(${w}px, 0, 0)`;\n el.style.transition = initData.moving ? 'none' : `transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)`;\n }\n }\n };\n const stopClickAway = ref(\n useClickAway(\n swipeCellRef,\n () => {\n close();\n },\n { detectIframe: true },\n ),\n );\n const renderMenuStatus = () => {\n if (isBoolean(props.opened)) {\n // opened为boolean类型,判断默认打开\n if (props.opened && initData.rightWidth > 0) {\n open('toLeft');\n } else if (props.opened && initData.leftWidth > 0) {\n open('toRight');\n } else if (!props.opened && (initData.leftWidth > 0 || initData.rightWidth > 0)) {\n close();\n }\n } else if (isArray(props.opened)) {\n // opened为array类型,判断默认打开,同时设定左右action时优先打开右边\n if (props.opened[1] && initData.rightWidth > 0) {\n open('toLeft');\n } else if (props.opened[0] && initData.leftWidth > 0) {\n open('toRight');\n } else if ((!props.opened[1] && initData.rightWidth > 0) || (!props.opened[0] && initData.leftWidth > 0)) {\n close();\n }\n }\n };\n const end = () => {\n if (props.disabled) {\n return;\n }\n if (\n +initData.rightWidth > 0 &&\n ((-initData.offset < +initData.rightWidth && -initData.pos > +initData.rightWidth * threshold) ||\n // 处理回弹\n (-initData.offset === +initData.rightWidth && -initData.pos > +initData.rightWidth * (1 - threshold)))\n ) {\n open('toLeft');\n } else if (\n +initData.leftWidth > 0 &&\n ((initData.offset < +initData.leftWidth && initData.pos > +initData.leftWidth * threshold) ||\n // 处理回弹\n (initData.offset === +initData.leftWidth && initData.pos > +initData.leftWidth * (1 - threshold)))\n ) {\n open('toRight');\n } else if (initData.offset !== initData.pos) {\n // 仅在有发生侧滑的情况下自动关闭(由js控制是否异步关闭)\n close('force');\n }\n };\n const open = (direction: 'toRight' | 'toLeft') => {\n // 包括回弹open\n const isOpen = initData.status === 'open';\n\n initData.status = 'open';\n if (direction === 'toLeft') {\n initData.pos = -initData.rightWidth;\n if (initData.rightWidth && !isOpen) {\n props.onChange?.('right');\n }\n } else {\n initData.pos = initData.leftWidth;\n if (initData.leftWidth && !isOpen) {\n props.onChange?.('left');\n }\n }\n };\n const close = (type?: string) => {\n if (initData.status === 'close' && type !== 'force') {\n return;\n }\n sureMarginLeft.value = 0;\n sureMarginRight.value = 0;\n initData.status = 'close';\n initData.pos = 0;\n props.onChange?.(undefined);\n };\n const handleClickBtn = ({ action, source }: { action: SwipeActionItem; source: SwipeSource }) => {\n const clickFn = () => {\n if (autoBack) {\n close();\n }\n if (action?.onClick) {\n action.onClick();\n return;\n }\n props.onClick?.(action, source);\n };\n if (action?.sure) {\n showSure(action.sure, clickFn);\n return;\n }\n clickFn();\n };\n // 点击事件拦截,判定是否透传事件\n const handleCellClick = (e: Event) => {\n if (initData.moved) {\n preventDefault(e, true);\n }\n e.stopPropagation();\n };\n\n context.expose({\n showSure,\n });\n const renderLeft = () => {\n const leftContent = () => {\n if (Array.isArray(props.left)) {\n return props.left.map((btn) => {\n const btnClass = [`${swipeCellClass.value}__content`, btn.className || ''];\n const style = btn.style || 'height: 100%';\n const { icon: btnIcon } = btn;\n const { text: btnText } = btn;\n return (\n <div\n class={btnClass}\n style={style}\n onClick={(e: MouseEvent) => handleClickBtn({ action: btn, source: 'left' })}\n >\n {btnIcon ? <btnIcon class={`${swipeCellClass.value}__icon`} /> : null}\n {btnText ? <span class={`${swipeCellClass.value}__text`}>{btnText}</span> : null}\n </div>\n );\n });\n }\n return renderTNodeJSX('left');\n };\n\n return (\n <div\n ref={leftRef}\n class={`${swipeCellClass.value}__left`}\n style={{\n width: initData?.leftWidth ? `${initData.leftWidth}px` : 'auto',\n }}\n >\n {leftContent()}\n <div style={sureLeftBgStyle.value}></div>\n <div ref={sureLeftRef} style={sureLeftStyle.value} onClick={(e: MouseEvent) => handleSureClick}>\n {sureLeftContent.value}\n </div>\n </div>\n );\n };\n const renderRight = () => {\n const rightContent = () => {\n if (Array.isArray(props.right)) {\n return props.right.map((btn) => {\n const btnClass = [`${swipeCellClass.value}__content`, btn.className || ''];\n const style = btn.style || 'height: 100%';\n const { icon: btnIcon } = btn;\n const { text: btnText } = btn;\n return (\n <div class={btnClass} style={style} onClick={() => handleClickBtn({ action: btn, source: 'right' })}>\n {btnIcon && <btnIcon class={`${swipeCellClass.value}__icon`}></btnIcon>}\n {btnText && <span class={`${swipeCellClass.value}__text`}>{btnText}</span>}\n </div>\n );\n });\n }\n return renderTNodeJSX('right');\n };\n\n return (\n <div\n ref={rightRef}\n class={`${swipeCellClass.value}__right`}\n style={{\n width: initData.rightWidth ? `${initData.rightWidth}px` : 'auto',\n }}\n >\n {rightContent()}\n <div style={sureRightBgStyle.value}></div>\n <div ref={sureRightRef} style={sureRightStyle.value} onClick={(e: MouseEvent) => handleSureClick}>\n {sureRightContent.value}\n </div>\n </div>\n );\n };\n return () => {\n return (\n <div ref={swipeCellRef} class={swipeCellClass.value} onClick={handleCellClick}>\n <div class={`${swipeCellClass.value}__wrapper`} style={wrapperStyle.value}>\n {renderLeft()}\n {renderTNodeContent('default', 'content')}\n {renderRight()}\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","renderTNodeJSX","useTNodeJSX","renderTNodeContent","useContent","swipeCellClass","usePrefixClass","internalInstance","getCurrentInstance","leftRef","ref","rightRef","swipeCellRef","wrapperStyle","computed","transform","concat","initData","pos","transition","moving","position","marginLeft","sureMarginLeft","value","marginRight","sureMarginRight","distance","autoBack","threshold","reactive","moved","leftWidth","rightWidth","offset","status","_useSureConfirm","useSureConfirm","sureRightRef","sureLeftRef","showSureRight","showSureLeft","closedSure","sureRightContent","sureLeftContent","sureLeftBgStyle","sureRightBgStyle","sureRightStyle","sureLeftStyle","showSure","handleSureClick","range","num","min","max","Math","swipeDir","_useSwipe","useSwipe","onSwipeStart","e","disabled","setPanelWidth","onSwipe","absLenX","abs","lengthX","absLenY","lengthY","preventDefault","onSwipeEnd","setTimeout","end","stop","_leftRef$value","_rightRef$value","clientWidth","classes","onMounted","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","renderMenuStatus","onUnmounted","_stopClickAway$value","stopClickAway","call","watch","opened","deep","newVal","oldVal","updateRightMenuPosStyle","updateLeftMenuPosStyle","children","wArr","i","len","length","el","push","w","style","useClickAway","close","detectIframe","isBoolean","open","isArray","direction","isOpen","_props2$onChange","onChange","_props2$onChange2","type","_props2$onChange3","handleClickBtn","_ref2","action","source","clickFn","_props2$onClick","onClick","sure","handleCellClick","stopPropagation","expose","renderLeft","leftContent","Array","left","map","btn","btnClass","className","btnIcon","icon","btnText","text","_createVNode","width","renderRight","rightContent","right"],"mappings":"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"}