Skip to content

Commit 9b48c84

Browse files
authored
fix(Toast): prevent default on emits not working @zernonia (#1843)
* fix(Toast): prevent default on emits not working * chore: add jsdoc
1 parent 8138d42 commit 9b48c84

File tree

3 files changed

+30
-21
lines changed

3 files changed

+30
-21
lines changed

docs/content/meta/ToastRoot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
},
6767
{
6868
'name': 'swipeCancel',
69-
'description': '',
69+
'description': '<p>Event handler called when swipe interaction is cancelled. It can be prevented by calling <code>event.preventDefault</code>.</p>\n',
7070
'type': '[event: SwipeEvent]'
7171
},
7272
{

packages/core/src/Toast/ToastRoot.vue

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,35 +68,43 @@ const open = useVModel(props, 'open', emits, {
6868
@escape-key-down="emits('escapeKeyDown', $event)"
6969
@swipe-start="(event) => {
7070
emits('swipeStart', event);
71-
(event.currentTarget as HTMLElement).setAttribute('data-swipe', 'start');
71+
if (!event.defaultPrevented) {
72+
(event.currentTarget as HTMLElement).setAttribute('data-swipe', 'start');
73+
}
7274
}"
7375
@swipe-move="(event) => {
7476
emits('swipeMove', event);
75-
const { x, y } = event.detail.delta;
76-
const target = event.currentTarget as HTMLElement
77-
target.setAttribute('data-swipe', 'move');
78-
target.style.setProperty('--reka-toast-swipe-move-x', `${x}px`);
79-
target.style.setProperty('--reka-toast-swipe-move-y', `${y}px`);
77+
if (!event.defaultPrevented) {
78+
const { x, y } = event.detail.delta;
79+
const target = event.currentTarget as HTMLElement
80+
target.setAttribute('data-swipe', 'move');
81+
target.style.setProperty('--reka-toast-swipe-move-x', `${x}px`);
82+
target.style.setProperty('--reka-toast-swipe-move-y', `${y}px`);
83+
}
8084
}"
8185
@swipe-cancel="(event) => {
8286
emits('swipeCancel', event);
83-
const target = event.currentTarget as HTMLElement
84-
target.setAttribute('data-swipe', 'cancel');
85-
target.style.removeProperty('--reka-toast-swipe-move-x');
86-
target.style.removeProperty('--reka-toast-swipe-move-y');
87-
target.style.removeProperty('--reka-toast-swipe-end-x');
88-
target.style.removeProperty('--reka-toast-swipe-end-y');
87+
if (!event.defaultPrevented) {
88+
const target = event.currentTarget as HTMLElement
89+
target.setAttribute('data-swipe', 'cancel');
90+
target.style.removeProperty('--reka-toast-swipe-move-x');
91+
target.style.removeProperty('--reka-toast-swipe-move-y');
92+
target.style.removeProperty('--reka-toast-swipe-end-x');
93+
target.style.removeProperty('--reka-toast-swipe-end-y');
94+
}
8995
}"
9096
@swipe-end="(event) => {
9197
emits('swipeEnd', event);
92-
const { x, y } = event.detail.delta;
93-
const target = event.currentTarget as HTMLElement
94-
target.setAttribute('data-swipe', 'end');
95-
target.style.removeProperty('--reka-toast-swipe-move-x');
96-
target.style.removeProperty('--reka-toast-swipe-move-y');
97-
target.style.setProperty('--reka-toast-swipe-end-x', `${x}px`);
98-
target.style.setProperty('--reka-toast-swipe-end-y', `${y}px`);
99-
open = false;
98+
if (!event.defaultPrevented) {
99+
const { x, y } = event.detail.delta;
100+
const target = event.currentTarget as HTMLElement
101+
target.setAttribute('data-swipe', 'end');
102+
target.style.removeProperty('--reka-toast-swipe-move-x');
103+
target.style.removeProperty('--reka-toast-swipe-move-y');
104+
target.style.setProperty('--reka-toast-swipe-end-x', `${x}px`);
105+
target.style.setProperty('--reka-toast-swipe-end-y', `${y}px`);
106+
open = false;
107+
}
100108
}"
101109
>
102110
<slot

packages/core/src/Toast/ToastRootImpl.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export type ToastRootImplEmits = {
1717
swipeStart: [event: SwipeEvent]
1818
/** Event handler called during a swipe interaction. It can be prevented by calling `event.preventDefault`. */
1919
swipeMove: [event: SwipeEvent]
20+
/** Event handler called when swipe interaction is cancelled. It can be prevented by calling `event.preventDefault`. */
2021
swipeCancel: [event: SwipeEvent]
2122
/** Event handler called at the end of a swipe interaction. It can be prevented by calling `event.preventDefault`. */
2223
swipeEnd: [event: SwipeEvent]

0 commit comments

Comments
 (0)