UNPKG

tdesign-mobile-vue

Version:
1 lines 10.9 kB
{"version":3,"file":"useSureConfirm.mjs","sources":["../../src/swipe-cell/useSureConfirm.ts"],"sourcesContent":["import {\n ref,\n computed,\n CSSProperties,\n h,\n nextTick,\n watch,\n ComponentInternalInstance,\n setBlockTracking,\n Ref,\n} from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { SwipeInitData } from './swipe-cell';\nimport { renderTNode } from '../shared';\nimport { SwipeActionItem } from './type';\nimport { TNode } from '../common';\n\n// 二次确认\nexport function useSureConfirm(instance: ComponentInternalInstance | null, initData: SwipeInitData) {\n const sureRightRef = ref<HTMLElement>();\n const sureLeftRef = ref<HTMLElement>();\n const showSureRight = ref(false);\n const showSureLeft = ref(false);\n // 左右侧margin,用于补足二次确认内容和按钮集合的宽度不一致时,位移保持动态效果\n const sureMarginRight = ref(0);\n const sureMarginLeft = ref(0);\n // 关闭时是否动效\n const closedSure = ref(false);\n\n const sureRightContent = ref();\n const sureLeftContent = ref();\n\n const handleSureClick = ref<SwipeActionItem['onClick']>();\n\n const sureRightBgStyle = computed<CSSProperties>(() => {\n const style = {\n display: 'inline-block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n transition: closedSure.value ? 'none' : 'background-color .6s cubic-bezier(0.18, 0.89, 0.32, 1)',\n transform: `translate3d(${initData.rightWidth}px, 0, 0)`,\n pointerEvents: 'none',\n } as CSSProperties;\n\n if (showSureRight.value) {\n style.backgroundColor = 'rgba(0,0,0,.5)';\n } else {\n style.backgroundColor = 'rgba(0,0,0,0)';\n }\n return style;\n });\n\n const sureLeftBgStyle = computed<CSSProperties>(() => {\n const style = {\n display: 'inline-block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n transition: closedSure.value ? 'none' : 'background-color .6s cubic-bezier(0.18, 0.89, 0.32, 1)',\n transform: `translate3d(0, 0, 0)`,\n pointerEvents: 'none',\n } as CSSProperties;\n\n if (showSureLeft.value) {\n style.backgroundColor = 'rgba(0,0,0,.5)';\n } else {\n style.backgroundColor = 'rgba(0,0,0,0)';\n }\n return style;\n });\n\n const sureRightStyle = computed<CSSProperties>(() => {\n const style = {\n display: 'inline-block',\n position: 'absolute',\n height: '100%',\n top: 0,\n minWidth: '100%',\n transition: closedSure.value ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)',\n transform: `translate3d(0, 0, 0)`,\n } as CSSProperties;\n\n if (showSureRight.value) {\n style.transform = `translate3d(0, 0, 0)`;\n } else {\n style.transform = `translate3d(${initData.rightWidth}px, 0, 0)`;\n }\n return style;\n });\n\n const sureLeftStyle = computed<CSSProperties>(() => {\n const style = {\n display: 'inline-block',\n position: 'absolute',\n height: '100%',\n top: 0,\n minWidth: '100%',\n transition: closedSure.value ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)',\n transform: `translate3d(0, 0, 0)`,\n } as CSSProperties;\n\n if (showSureLeft.value) {\n style.transform = `translate3d(0, 0, 0)`;\n } else {\n style.transform = `translate3d(${-initData.leftWidth}px, 0, 0)`;\n }\n return style;\n });\n\n watch(showSureRight, () => {\n if (initData.pos < 0) {\n if (showSureRight.value) {\n const sureRightWidth = sureRightRef.value?.clientWidth as number;\n sureMarginRight.value = Math.max(initData.rightWidth, sureRightWidth) - initData.rightWidth;\n } else {\n sureMarginRight.value = 0;\n }\n }\n });\n watch(showSureLeft, () => {\n if (initData.pos > 0) {\n if (showSureLeft.value) {\n const sureLeftWidth = sureLeftRef.value?.clientWidth as number;\n sureMarginLeft.value = Math.max(initData.leftWidth, sureLeftWidth) - initData.leftWidth;\n } else {\n sureMarginLeft.value = 0;\n }\n }\n });\n\n const showSure = (sure: string | TNode, onClick?: SwipeActionItem['onClick']) => {\n handleSureClick.value = onClick;\n\n let sureContent: Ref<any> = sureRightContent;\n let sureVisible: Ref<boolean> = showSureRight;\n if (initData.pos > 0) {\n sureContent = sureLeftContent;\n sureVisible = showSureLeft;\n }\n\n if (isString(sure) && instance?.slots[sure]) {\n sureContent.value = renderTNode(instance, sure);\n } else if (isFunction(sure)) {\n setBlockTracking(-1);\n sureContent.value = sure(h);\n setBlockTracking(1);\n } else {\n sureContent.value = sure;\n }\n\n nextTick(() => {\n sureVisible.value = true;\n });\n };\n\n return {\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 };\n}\n"],"names":["useSureConfirm","instance","initData","sureRightRef","ref","sureLeftRef","showSureRight","showSureLeft","sureMarginRight","sureMarginLeft","closedSure","sureRightContent","sureLeftContent","handleSureClick","sureRightBgStyle","computed","style","display","position","width","height","backgroundColor","transition","value","transform","concat","rightWidth","pointerEvents","sureLeftBgStyle","sureRightStyle","top","minWidth","sureLeftStyle","leftWidth","watch","pos","_sureRightRef$value","sureRightWidth","clientWidth","Math","max","_sureLeftRef$value","sureLeftWidth","showSure","sure","onClick","sureContent","sureVisible","isString","slots","renderTNode","isFunction","setBlockTracking","h","nextTick"],"mappings":"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"}