From 8ebd823bb3346bbde434a9665bcacaf9ca63e98f Mon Sep 17 00:00:00 2001 From: chaeminseok Date: Wed, 10 Jul 2024 01:54:45 +0900 Subject: [PATCH] =?UTF-8?q?bug=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homePage/eventCarousel/EventCarousel.tsx | 113 ++++++++---------- 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/src/pages/homePage/eventCarousel/EventCarousel.tsx b/src/pages/homePage/eventCarousel/EventCarousel.tsx index 4759d920..cd4fb65d 100644 --- a/src/pages/homePage/eventCarousel/EventCarousel.tsx +++ b/src/pages/homePage/eventCarousel/EventCarousel.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { useNavigate } from "react-router-dom"; import * as S from "./EventCarousel.style"; @@ -12,102 +13,92 @@ interface EventItem { title1: string; title2: string; } + interface EventCarouselProps { EventCarouselContents: EventItem[]; arrows?: boolean; height?: number; infinite?: boolean; - innerShadow?: boolean; draggable?: boolean; - auto?: boolean; } + const EventCarousel: React.FC = ({ EventCarouselContents, arrows, - height, - infinite, - draggable, + height = 300, + infinite = true, + draggable = true, }) => { const navigate = useNavigate(); const { slideWidth, sliderRef } = useCarouselSize(); const slideList = infinite ? [ - EventCarouselContents.at(-1), + EventCarouselContents.slice(-1)[0], ...EventCarouselContents, - EventCarouselContents.at(0), + EventCarouselContents[0], ] : EventCarouselContents; + const { currentIndex, getSliderStyle, handleSliderNavigationClick, - handleSliderTransitionEnd, handlerSliderMoueDown, handleSliderTouchStart, + handleSliderTransitionEnd, } = useCarousel({ slideLength: slideList.length, infinite, slideWidth, }); + const onClickHandler = (id: number) => { navigate(`${PATH.MAIN_DETAIL}?id=${id}`); }; return ( - <> - - - {slideList?.map((content, index) => ( - - onClickHandler(content?.id ?? 0)} - /> - -
{content?.title1}
-
{content?.title2}
-
바로 예약하러 가기
-
-
- ))} -
- {arrows && ( - - 0} - > - - - - - - - )} -
- + + + {slideList.map((content, index) => ( + + onClickHandler(content?.id ?? 0)} + /> + +
{content?.title1}
+
{content?.title2}
+
바로 예약하러 가기
+
+
+ ))} +
+ {arrows && ( + + handleSliderNavigationClick(currentIndex - 1)} + $visible={infinite || currentIndex > 0} + > + Left + + handleSliderNavigationClick(currentIndex + 1)} + $visible={infinite || currentIndex < slideList.length - 1} + > + Right + + + )} +
); }; -EventCarousel.defaultProps = { - height: 300, - arrows: true, - infinite: true, - draggable: true, - innerShadow: false, - auto: false, -}; - export default EventCarousel;