diff --git a/layers/components/blocks/slide/CenterFocus.vue b/layers/components/blocks/slide/CenterFocus.vue index 0e39147..a7d362d 100644 --- a/layers/components/blocks/slide/CenterFocus.vue +++ b/layers/components/blocks/slide/CenterFocus.vue @@ -18,7 +18,7 @@ const props = withDefaults(defineProps(), { pagination: true, }) -const emit = defineEmits(['mounted', 'move', 'moved']) +const emit = defineEmits(['mounted', 'move', 'moved', 'arrowClick']) const isMultipleItems = computed(() => { return props.slideItemLength > 1 @@ -82,6 +82,11 @@ const style = computed(() => { const handleSplideMounted = (splide: SplideType) => { emit('mounted', splide) splide.refresh() + + // 화살표 버튼 클릭 이벤트 리스너 추가 + nextTick(() => { + addArrowClickListeners(splide) + }) } const handleMove = ( @@ -101,6 +106,37 @@ const handleMoved = ( ) => { emit('moved', splide, newIndex, oldIndex, destIndex) } + +const handleArrowClick = (direction: 'prev' | 'next', splide: SplideType) => { + const currentIndex = splide.index + const totalSlides = splide.length + + // 이동할 슬라이드 인덱스 계산 + let targetIndex: number + if (direction === 'next') { + targetIndex = currentIndex + 1 >= totalSlides ? 0 : currentIndex + 1 + } else { + targetIndex = currentIndex - 1 < 0 ? totalSlides - 1 : currentIndex - 1 + } + + emit('arrowClick', direction, targetIndex) +} + +// 화살표 버튼에 클릭 이벤트 리스너 추가 +const addArrowClickListeners = (splide: SplideType) => { + const prevArrow = splide.root.querySelector('.arrow-prev') + const nextArrow = splide.root.querySelector('.arrow-next') + + if (prevArrow) { + prevArrow.addEventListener('click', () => handleArrowClick('prev', splide)) + } + + if (nextArrow) { + nextArrow.addEventListener('click', () => handleArrowClick('next', splide)) + } +} + + diff --git a/layers/components/widgets/VideoPlay.vue b/layers/components/widgets/VideoPlay.vue index 3aca1a5..c96ee32 100644 --- a/layers/components/widgets/VideoPlay.vue +++ b/layers/components/widgets/VideoPlay.vue @@ -5,8 +5,8 @@ const props = defineProps<{ resourcesData: PageDataResourceGroup pageVerTmplSeq: number }>() -const { useAnalyticsLogData } = useAnalytics() -const logData = useAnalyticsLogData(props.resourcesData, props.pageVerTmplSeq) +const { useAnalyticsLogDataDirect } = useAnalytics() +const logData = useAnalyticsLogDataDirect(props.resourcesData, props.pageVerTmplSeq) // YouTube 모달 스토어 사용 const modalStore = useModalStore() @@ -20,6 +20,7 @@ const handleVideoPlayClick = () => {