diff --git a/src/components/organisms/Carousel.svelte b/src/components/organisms/Carousel.svelte index be61786..5585004 100644 --- a/src/components/organisms/Carousel.svelte +++ b/src/components/organisms/Carousel.svelte @@ -13,6 +13,8 @@ let carousel: EmblaCarouselType let currentSlide = 0 let arrowDirection: string = null + $: isFirstSlide = currentSlide === 0 + $: isLastSlide = currentSlide === slides.length - 1 /** Navigate to specific slide */ @@ -28,10 +30,19 @@ * */ /** Move arrow and define direction on mousemove */ - const handleArrowMove = ({ offsetX, offsetY }: MouseEvent) => { + const handleArrowMove = (event: MouseEvent) => { + const { left, top, width } = carouselEl.getBoundingClientRect() + const offsetX = event.clientX - left + const offsetY = event.clientY - top + // Define direction - const { width } = carouselEl.getBoundingClientRect() - arrowDirection = offsetX < Math.round(width / 2) ? 'prev' : 'next' + if (isFirstSlide) { + arrowDirection = 'next' + } else if (isLastSlide) { + arrowDirection = 'prev' + } else { + arrowDirection = offsetX < Math.round(width / 2) ? 'prev' : 'next' + } // Move arrow arrowPosition.set({ @@ -70,15 +81,13 @@ }) -