Skip to content

Commit 628fb86

Browse files
authored
Merge pull request #26 from ChillyLife11/master
New events "opening-started" and "closing-started" to track when sheet starts opening or closing
2 parents 2f179b1 + de33f02 commit 628fb86

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

README.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,16 @@ Assuming there is `const bottomSheet = ref()`
159159

160160
## Events
161161

162-
| Event | Description | Payload |
163-
| -------------- | -------------------------------------- | ----------------------- |
164-
| opened | Emitted when sheet finishes opening | - |
165-
| closed | Emitted when sheet finishes closing | - |
166-
| dragging-up | Emitted when user drags sheet upward | - |
167-
| dragging-down | Emitted when user drags sheet downward | - |
168-
| instinctHeight | Emitted when content height changes | height (number) |
169-
| snapped | Emitted when sheet finishes snapping | snapPointIndex (number) |
162+
| Event | Description | Payload |
163+
| -------------- | -------------------------------------- | ----------------------- |
164+
| opened | Emitted when sheet finishes opening | - |
165+
| opening-started | Emitted when sheet starts opening | - |
166+
| closed | Emitted when sheet finishes closing | - |
167+
| closing-started | Emitted when sheet starts closing | - |
168+
| dragging-up | Emitted when user drags sheet upward | - |
169+
| dragging-down | Emitted when user drags sheet downward | - |
170+
| instinctHeight | Emitted when content height changes | height (number) |
171+
| snapped | Emitted when sheet finishes snapping | snapPointIndex (number) |
170172

171173
## Acknowledgments
172174

packages/vue-spring-bottom-sheet/src/BottomSheet.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ const props = withDefaults(defineProps<BottomSheetProps>(), {
2424
2525
const emit = defineEmits<{
2626
(e: 'opened'): void
27+
(e: 'opening-started'): void
2728
(e: 'closed'): void
29+
(e: 'closing-started'): void
2830
(e: 'ready'): void
2931
(e: 'dragging-up'): void
3032
(e: 'dragging-down'): void
@@ -125,8 +127,13 @@ const backdropClick = () => {
125127
if (props.canBackdropClose) close()
126128
}
127129
130+
let isOpening = false
128131
const open = async () => {
132+
if (isOpening) return;
133+
129134
showSheet.value = true
135+
isOpening = true
136+
emit('opening-started')
130137
131138
if (props.blocking) {
132139
isWindowScrollLocked.value = true
@@ -194,6 +201,7 @@ const open = async () => {
194201
195202
window.addEventListener('keydown', handleEscapeKey)
196203
204+
isOpening = false
197205
if (props.blocking) {
198206
setTimeout(() => {
199207
if (heightValue.get() < 1) {
@@ -204,8 +212,13 @@ const open = async () => {
204212
}
205213
}
206214
215+
let isClosing = false
207216
const close = () => {
217+
if (isClosing) return
218+
208219
showSheet.value = false
220+
isClosing = true
221+
emit('closing-started')
209222
210223
if (props.blocking) {
211224
isWindowScrollLocked.value = false
@@ -220,6 +233,7 @@ const close = () => {
220233
221234
setTimeout(() => {
222235
emit('closed')
236+
isClosing = false
223237
}, props.duration)
224238
}
225239

0 commit comments

Comments
 (0)