From 70f67b6a8f60249856eede2ad163d46e598adfbb Mon Sep 17 00:00:00 2001 From: Vadim Date: Sun, 31 Jan 2021 21:24:13 +0300 Subject: [PATCH] Disable page change while page changing is in progress --- src/components/Carousel/Carousel.svelte | 32 ++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/Carousel/Carousel.svelte b/src/components/Carousel/Carousel.svelte index 5430367..20f9c7d 100644 --- a/src/components/Carousel/Carousel.svelte +++ b/src/components/Carousel/Carousel.svelte @@ -144,19 +144,35 @@ } } - function showPage(pageIndex, { offsetDelay, animated }) { - store.moveToPage({ pageIndex, pagesCount }) + let disabled = false + function safeChangePage(cb) { + if (disabled) return + cb() + disabled = true setTimeout(() => { - offsetPage(animated) - }, offsetDelay) + disabled = false + }, duration) + } + + function showPage(pageIndex, { offsetDelay, animated }) { + safeChangePage(() => { + store.moveToPage({ pageIndex, pagesCount }) + setTimeout(() => { + offsetPage(animated) + }, offsetDelay) + }) } function showPrevPage() { - store.prev({ infinite, pagesCount }) - offsetPage(true) + safeChangePage(() => { + store.prev({ infinite, pagesCount }) + offsetPage(true) + }) } function showNextPage() { - store.next({ infinite, pagesCount }) - offsetPage(true) + safeChangePage(() => { + store.next({ infinite, pagesCount }) + offsetPage(true) + }) } // gestures