import { Props, ListDataItem, USEBtns } from './types'; import { Ref, ComputedRef } from 'vue'; /** * 实际移动思路: 通过触摸到移动中的距离, 来设置滚动的距离 * 实施: ** 触摸开始时: 记录开始Y坐标和触摸上一次所处的位移值(distance -> translateY) ** 触摸移动中: 通过当前Y坐标减去开始的Y坐标得到拖拽的距离, 然后实际需要移动的值=触摸上一次所处的位移值+拖拽的距离 */ /** * 理想移动到目标思路: 通过滚动是否是44(每一个li的固定高度)的倍数, 剩余的是否大于44/2, 大于则补足一个倍数, 小于则取消剩余部分 * 实施: 触摸结束时: ** 剩余数 = 实际需要的位移(distance -> translateY) % 44 ** distance = 剩余数>(44/2) ? distance + (44-剩余数): distance - 剩余数; */ /** * 惯性滑动思路: 通过滑动的速度来计算还需要滑动的距离 * 实施: ** 滑动的速度 = 滑动的距离/滑动的时间(触摸开始-触摸结束).toFixed(2) ** 还需要滑动的距离 = 滑动的速度 * 400 ** 滑动的速度 > 0.12 才开启惯性滑动 */ /** * 移动列 */ export declare const useHandMove: (props: Readonly>) => { show: Ref; currentValue: number[]; listData: Ref<{ id: number; list: number | number[]; }[], ListDataItem[] | { id: number; list: number | number[]; }[]>; distance: Ref; duration: Ref; filterNumber: ComputedRef<(num: number) => string | number>; getCurNum: (id: number, num: number) => number; onTouchstart: (e: TouchEvent, i: number) => void; onTouchmove: (e: TouchEvent, i: number) => void; onTouchend: (e: TouchEvent, i: number) => void; onMousedown: (e: MouseEvent, i: number) => void; }; /** * 按钮 */ export declare const useBtns: ({ props, emit, currentValue, modelValue }: USEBtns.Option) => { onCancel: () => void; onSure: () => void; };