Add autoplay
This commit is contained in:
@@ -36,6 +36,16 @@
|
||||
*/
|
||||
export let speed = 500
|
||||
|
||||
/**
|
||||
* Enables auto play of slides
|
||||
*/
|
||||
export let autoplay = false
|
||||
|
||||
/**
|
||||
* Auto play change interval
|
||||
*/
|
||||
export let autoplaySpeed = 3000
|
||||
|
||||
let pagesCount = 0
|
||||
let contentContainerWidth = 0
|
||||
let offset
|
||||
@@ -60,13 +70,30 @@
|
||||
moveToPage(initialPage)
|
||||
}
|
||||
|
||||
function applyAutoplay() {
|
||||
let interval
|
||||
if (autoplay) {
|
||||
interval = setInterval(() => {
|
||||
showNextPage()
|
||||
}, autoplaySpeed)
|
||||
}
|
||||
return {
|
||||
teardownAutoplay: () => {
|
||||
interval && clearInterval(interval)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
store.reset() // to init after hot reload
|
||||
applySlideSizes()
|
||||
|
||||
const { teardownAutoplay } = applyAutoplay()
|
||||
|
||||
window.addEventListener('resize', applySlideSizes)
|
||||
return () => {
|
||||
window.removeEventListener('resize', applySlideSizes)
|
||||
teardownAutoplay()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -79,11 +106,11 @@
|
||||
offset = -$store.currentItemIndex * contentContainerWidth
|
||||
}
|
||||
|
||||
function handlePrevClick() {
|
||||
function showPrevPage() {
|
||||
store.prev({ infinite, pagesCount })
|
||||
applyOffset()
|
||||
}
|
||||
function handleNextClick() {
|
||||
function showNextPage() {
|
||||
store.next({ infinite, pagesCount })
|
||||
applyOffset()
|
||||
}
|
||||
@@ -94,7 +121,7 @@
|
||||
<div class="side-container">
|
||||
<span
|
||||
class="clickable"
|
||||
on:click={handlePrevClick}
|
||||
on:click={showPrevPage}
|
||||
><</span>
|
||||
</div>
|
||||
{/if}
|
||||
@@ -116,7 +143,7 @@
|
||||
<div class="side-container">
|
||||
<span
|
||||
class="clickable"
|
||||
on:click={handleNextClick}
|
||||
on:click={showNextPage}
|
||||
>></span>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -24,7 +24,17 @@
|
||||
/**
|
||||
* Transition speed (ms)
|
||||
*/
|
||||
export let speed = 500
|
||||
export let speed = 500
|
||||
|
||||
/**
|
||||
* Enables auto play of slides
|
||||
*/
|
||||
export let autoplay = false
|
||||
|
||||
/**
|
||||
* Auto play change interval
|
||||
*/
|
||||
export let autoplaySpeed = 3000
|
||||
|
||||
const colors = [
|
||||
'#e5f9f0',
|
||||
@@ -47,6 +57,8 @@
|
||||
{slidesToShow}
|
||||
{initialPage}
|
||||
{speed}
|
||||
{autoplay}
|
||||
{autoplaySpeed}
|
||||
>
|
||||
{#each colors as color (color)}
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user