Skip to content

Commit c8a021a

Browse files
committed
fix(toast): make hovering on the gap between each toast to stop the timer
1 parent 04ae398 commit c8a021a

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

.vitepress/custom/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { DefaultTheme } from "vitepress"
1+
import type { DefaultTheme } from 'vitepress'
22

33
export interface SidebarItem extends DefaultTheme.SidebarItem {
44
icon?: string

src/components/select/SelectTrigger.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const resetClass = computed(() => {
3535
>
3636
<span class="ui-SelectTriggerInner">
3737
<SelectValue :placeholder="props.placeholder">
38-
<template v-slot="{ selectedLabel, modelValue }">
38+
<template #default="{ selectedLabel, modelValue }">
3939
<slot
4040
v-if="selectedLabel.length"
4141
:selected-label="selectedLabel"

src/components/toast/ToastItem.vue

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ onMounted(() => {
9999
class="ui-ToastItem"
100100
:duration="message.duration"
101101
:data-expanded="paused"
102+
:data-visible="index < 3"
102103
:style="styleVars"
103104
@update:open="onOpenChange"
104105
@pause="onPause"
@@ -161,10 +162,23 @@ onMounted(() => {
161162
--toast-collapse-scale: calc(max(0, 1 - (var(--toast-index) * 0.06)));
162163
}
163164
165+
.ui-ToastItem::after {
166+
content: "";
167+
position: absolute;
168+
left: 0px;
169+
height: calc(var(--toast-gap) + 1px);
170+
bottom: 100%;
171+
width: 100%;
172+
}
173+
164174
.ui-ToastItem:where([data-swipe="move"]) {
165175
transition: none;
166176
}
167177
178+
.ui-ToastItem:where([data-visible="false"]) {
179+
display: none;
180+
}
181+
168182
:where(.ui-ToastViewport[data-x-position="left"]) .ui-ToastItem {
169183
left: 0;
170184
}
@@ -216,6 +230,7 @@ onMounted(() => {
216230
--toast-item-swipe-to-y: calc(100% + var(--toast-y-position))
217231
}
218232
233+
.ui-ToastItem:where([data-state="closed"]),
219234
.ui-ToastItem:where([data-swipe="closed"]) {
220235
animation: ui-fade-out 100ms ease-in;
221236
}

src/components/toast/ToastProvider.vue

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const props = withDefaults(defineProps<ToastProviderProps>(), {
2929
})
3030
3131
const forwarded = useForwardPropsWithout(props, ['position', 'size'])
32-
const manager = useToastManager()
32+
const { messages } = useToastManager()
3333
3434
const yPosition = computed(() => {
3535
return props.position.split('-')[0] as 'top' | 'bottom'
@@ -45,11 +45,6 @@ const swipeDirection = computed(() => {
4545
}
4646
return xPosition.value
4747
})
48-
49-
const messages = computed(() => {
50-
// only show latest 3 messages
51-
return manager.messages.value.slice(0, 3)
52-
})
5348
</script>
5449

5550
<template>

0 commit comments

Comments
 (0)