File tree Expand file tree Collapse file tree 2 files changed +24
-8
lines changed
packages/vue-spring-bottom-sheet/src Expand file tree Collapse file tree 2 files changed +24
-8
lines changed Original file line number Diff line number Diff line change @@ -159,14 +159,16 @@ Assuming there is `const bottomSheet = ref()`
159
159
160
160
## Events
161
161
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) |
170
172
171
173
## Acknowledgments
172
174
Original file line number Diff line number Diff line change @@ -24,7 +24,9 @@ const props = withDefaults(defineProps<BottomSheetProps>(), {
24
24
25
25
const emit = defineEmits <{
26
26
(e : ' opened' ): void
27
+ (e : ' opening-started' ): void
27
28
(e : ' closed' ): void
29
+ (e : ' closing-started' ): void
28
30
(e : ' ready' ): void
29
31
(e : ' dragging-up' ): void
30
32
(e : ' dragging-down' ): void
@@ -125,8 +127,13 @@ const backdropClick = () => {
125
127
if (props .canBackdropClose ) close ()
126
128
}
127
129
130
+ let isOpening = false
128
131
const open = async () => {
132
+ if (isOpening ) return ;
133
+
129
134
showSheet .value = true
135
+ isOpening = true
136
+ emit (' opening-started' )
130
137
131
138
if (props .blocking ) {
132
139
isWindowScrollLocked .value = true
@@ -194,6 +201,7 @@ const open = async () => {
194
201
195
202
window .addEventListener (' keydown' , handleEscapeKey )
196
203
204
+ isOpening = false
197
205
if (props .blocking ) {
198
206
setTimeout (() => {
199
207
if (heightValue .get () < 1 ) {
@@ -204,8 +212,13 @@ const open = async () => {
204
212
}
205
213
}
206
214
215
+ let isClosing = false
207
216
const close = () => {
217
+ if (isClosing ) return
218
+
208
219
showSheet .value = false
220
+ isClosing = true
221
+ emit (' closing-started' )
209
222
210
223
if (props .blocking ) {
211
224
isWindowScrollLocked .value = false
@@ -220,6 +233,7 @@ const close = () => {
220
233
221
234
setTimeout (() => {
222
235
emit (' closed' )
236
+ isClosing = false
223
237
}, props .duration )
224
238
}
225
239
You can’t perform that action at this time.
0 commit comments