Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/swipe-cell/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,12 @@ export default {
right: {
type: [Array, Function] as PropType<TdSwipeCellProps['right']>,
},
/** 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态 */
/** 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态 */
onChange: Function as PropType<TdSwipeCellProps['onChange']>,
/** 操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件) */
onClick: Function as PropType<TdSwipeCellProps['onClick']>,
/** 滑动结束事件 */
onDragend: Function as PropType<TdSwipeCellProps['onDragend']>,
/** 滑动开始事件 */
onDragstart: Function as PropType<TdSwipeCellProps['onDragstart']>,
};
6 changes: 5 additions & 1 deletion src/swipe-cell/swipe-cell.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,20 @@ default | String / Slot / Function | - | Typescript:`string \| TNode`。[see m
disabled | Boolean | - | \- | N
left | Array / Slot / Function | - | Typescript:`Array<SwipeActionItem> \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
opened | Boolean / Array | false | Typescript:`boolean \| Array<boolean>` | N
right | Array / Slot / Function | - | Typescript:`Array<SwipeActionItem> \| TNode` `interface SwipeActionItem {text: string; className?: string; style?: string; sure?: string \| TNode; onClick?: () => void; [key: string]: any }`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts) | N
right | Array / Slot / Function | - | Typescript:`Array<SwipeActionItem> \| TNode` `interface SwipeActionItem {text: string; className?: string; style?: Styles; sure?: Sure; onClick?: () => void; [key: string]: any }` `type Sure = string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts) | N
onChange | Function | | Typescript:`(value: string) => void`<br/> | N
onClick | Function | | Typescript:`(action: SwipeActionItem, source: SwipeSource) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts)。<br/>`type SwipeSource = 'left' \| 'right'`<br/> | N
onDragend | Function | | Typescript:`() => void`<br/> | N
onDragstart | Function | | Typescript:`() => void`<br/> | N

### SwipeCell Events

name | params | description
-- | -- | --
change | `(value: string)` | \-
click | `(action: SwipeActionItem, source: SwipeSource)` | [see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts)。<br/>`type SwipeSource = 'left' \| 'right'`<br/>
dragend | \- | \-
dragstart | \- | \-

### SwipeCellInstanceFunctions 组件实例方法

Expand Down
10 changes: 7 additions & 3 deletions src/swipe-cell/swipe-cell.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,20 @@ default | String / Slot / Function | - | 操作项以外的内容,同 content
disabled | Boolean | - | 是否禁用滑动 | N
left | Array / Slot / Function | - | 左侧滑动操作项。所有行为同 `right`。TS 类型:`Array<SwipeActionItem> \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
opened | Boolean / Array | false | 操作项是否呈现为打开态,值为数组时表示分别控制左右滑动的展开和收起状态。TS 类型:`boolean \| Array<boolean>` | N
right | Array / Slot / Function | - | 右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', style: 'background-color: red', onClick: () => {} }]`。TS 类型:`Array<SwipeActionItem> \| TNode` `interface SwipeActionItem {text: string; className?: string; style?: string; sure?: string \| TNode; onClick?: () => void; [key: string]: any }`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts) | N
onChange | Function | | TS 类型:`(value: string) => void`<br/>菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态 | N
right | Array / Slot / Function | - | 右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', style: 'background-color: red', onClick: () => {} }]`。TS 类型:`Array<SwipeActionItem> \| TNode` `interface SwipeActionItem {text: string; className?: string; style?: Styles; sure?: Sure; onClick?: () => void; [key: string]: any }` `type Sure = string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts) | N
onChange | Function | | TS 类型:`(value: string) => void`<br/>菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态 | N
onClick | Function | | TS 类型:`(action: SwipeActionItem, source: SwipeSource) => void`<br/>操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts)。<br/>`type SwipeSource = 'left' \| 'right'`<br/> | N
onDragend | Function | | TS 类型:`() => void`<br/>滑动结束事件 | N
onDragstart | Function | | TS 类型:`() => void`<br/>滑动开始事件 | N

### SwipeCell Events

名称 | 参数 | 描述
-- | -- | --
change | `(value: string)` | 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态
change | `(value: string)` | 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态
click | `(action: SwipeActionItem, source: SwipeSource)` | 操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/swipe-cell/type.ts)。<br/>`type SwipeSource = 'left' \| 'right'`<br/>
dragend | \- | 滑动结束事件
dragstart | \- | 滑动开始事件

### SwipeCellInstanceFunctions 组件实例方法

Expand Down
5 changes: 3 additions & 2 deletions src/swipe-cell/swipe-cell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import {
onUnmounted,
} from 'vue';
import { isArray, isBoolean } from 'lodash-es';
import { useSwipe } from './useSwipe';
import props from './props';
import { useSwipe } from './useSwipe';
import config from '../config';
import { SwipeActionItem, SwipeSource } from './type';
import { useClickAway } from '../shared';
Expand Down Expand Up @@ -105,6 +105,7 @@ export default defineComponent({
swipeDir = 0;
initData.moved = false;
initData.offset = initData.pos;
props.onDragstart?.();
},
onSwipe: (e: TouchEvent) => {
const absLenX = Math.abs(lengthX.value);
Expand All @@ -127,7 +128,6 @@ export default defineComponent({
if (props.disabled || (!initData.moved && Math.abs(lengthX.value) < distance)) {
return;
}

if (showSureRight.value) {
closedSure.value = lengthX.value > 0 && initData.pos === 0;
showSureRight.value = false;
Expand All @@ -144,6 +144,7 @@ export default defineComponent({
if (props.disabled) {
return;
}
props.onDragend?.();
initData.moving = false;
setTimeout(() => {
closedSure.value = false;
Expand Down
18 changes: 14 additions & 4 deletions src/swipe-cell/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
* */

import { TNode } from '../common';
import { TNode, Styles } from '../common';

export interface TdSwipeCellProps {
/**
Expand Down Expand Up @@ -33,13 +33,21 @@ export interface TdSwipeCellProps {
*/
right?: Array<SwipeActionItem> | TNode;
/**
* 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态
* 菜单展开或者收回后将菜单的状态传递给父组件,值为数组时表示分别控制左右滑动的展开和收起状态
*/
onChange?: (value: string) => void;
/**
* 操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)
*/
onClick?: (action: SwipeActionItem, source: SwipeSource) => void;
/**
* 滑动结束事件
*/
onDragend?: () => void;
/**
* 滑动开始事件
*/
onDragstart?: () => void;
}

/** 组件实例方法 */
Expand All @@ -53,10 +61,12 @@ export interface SwipeCellInstanceFunctions {
export interface SwipeActionItem {
text: string;
className?: string;
style?: string;
sure?: string | TNode;
style?: Styles;
sure?: Sure;
onClick?: () => void;
[key: string]: any;
}

export type Sure = string | TNode;

export type SwipeSource = 'left' | 'right';
7 changes: 5 additions & 2 deletions src/swipe-cell/useSwipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ export function useSwipe(
const [x, y] = getTouchEventCoords(e);
updateCoordsStart(x, y);
updateCoordsEnd(x, y);
onSwipeStart?.(e);
},
listenerOptions,
),
Expand All @@ -133,7 +132,11 @@ export function useSwipe(
if (e.touches.length !== 1) return;
const [x, y] = getTouchEventCoords(e);
updateCoordsEnd(x, y);
if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;
if (!isSwiping.value && isThresholdExceeded.value) {
isSwiping.value = true;
onSwipeStart?.(e);
}

if (isSwiping.value) onSwipe?.(e);
},
listenerOptions,
Expand Down