Skip to content

Commit

Permalink
feat(SwipeCell): add event param for before-close (#13039)
Browse files Browse the repository at this point in the history
  • Loading branch information
inottn authored Jul 31, 2024
1 parent 7942151 commit 423b0fe
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 11 deletions.
9 changes: 5 additions & 4 deletions packages/vant/src/swipe-cell/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,11 @@ export default {

### beforeClose Params

| Attribute | Description | Type |
| --------- | -------------- | ------------------------------------------ |
| name | Name | _string \| number_ |
| position | Click position | _'left' \| 'right' \| 'cell' \| 'outside'_ |
| Attribute | Description | Type |
| --- | --- | --- |
| event `v4.9.4` | The event object that triggers the closing action | _MouseEvent \| TouchEvent_ |
| name | Name | _string \| number_ |
| position | Click position | _'left' \| 'right' \| 'cell' \| 'outside'_ |

### Methods

Expand Down
7 changes: 4 additions & 3 deletions packages/vant/src/swipe-cell/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,10 @@ export default {

beforeClose 的第一个参数为对象,对象中包含以下属性:

| 参数名 | 说明 | 类型 |
| -------- | ---------------- | ------------------------------------------ |
| name | 标识符 | _string \| number_ |
| 参数名 | 说明 | 类型 |
| --- | --- | --- |
| event `v4.9.4` | 触发关闭的事件对象 | _MouseEvent \| TouchEvent_ |
| name | 标识符 | _string \| number_ |
| position | 关闭时的点击位置 | _'left' \| 'right' \| 'cell' \| 'outside'_ |

### 方法
Expand Down
12 changes: 9 additions & 3 deletions packages/vant/src/swipe-cell/SwipeCell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ export default defineComponent({
}
};

const onClick = (position: SwipeCellPosition = 'outside') => {
const onClick = (
position: SwipeCellPosition = 'outside',
event: MouseEvent | TouchEvent,
) => {
if (isInBeforeClosing) return;

emit('click', position);
Expand All @@ -171,6 +174,7 @@ export default defineComponent({
callInterceptor(props.beforeClose, {
args: [
{
event,
name: props.name,
position,
},
Expand All @@ -190,7 +194,7 @@ export default defineComponent({
if (stop) {
event.stopPropagation();
}
onClick(position);
onClick(position, event);
};

const renderSideContent = (
Expand All @@ -216,7 +220,9 @@ export default defineComponent({
close,
});

useClickAway(root, () => onClick('outside'), { eventName: 'touchstart' });
useClickAway(root, (event) => onClick('outside', event as TouchEvent), {
eventName: 'touchstart',
});

// useEventListener will set passive to `false` to eliminate the warning of Chrome
useEventListener('touchmove', onTouchMove, {
Expand Down
7 changes: 6 additions & 1 deletion packages/vant/src/swipe-cell/test/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ test('should allow to drag to show right part', async () => {
});

test('should call beforeClose before closing', async () => {
let event;
let position;
let clickPosition;
let usePromise;
Expand All @@ -58,7 +59,7 @@ test('should call beforeClose before closing', async () => {
}, 100);
});
} else {
({ position } = params);
({ event, position } = params);
}
},
},
Expand All @@ -70,12 +71,16 @@ test('should call beforeClose before closing', async () => {

wrapper.vm.open('left');
wrapper.trigger('click');

expect(event).toBeInstanceOf(MouseEvent);
expect(position).toEqual('cell');

wrapper.find('.van-swipe-cell__left').trigger('click');
expect(event).toBeInstanceOf(MouseEvent);
expect(position).toEqual('left');

wrapper.find('.van-swipe-cell__right').trigger('click');
expect(event).toBeInstanceOf(MouseEvent);
expect(position).toEqual('right');

wrapper.vm.close();
Expand Down

0 comments on commit 423b0fe

Please sign in to comment.