feat: visual03 로그 추가

This commit is contained in:
“hyeonggkim”
2025-10-17 09:50:02 +09:00
parent 64ca5bd37d
commit cebe9427d7
6 changed files with 95 additions and 41 deletions

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { Splide } from '@splidejs/vue-splide'
import type { ResponsiveOptions } from '@splidejs/splide'
import type { Splide as SplideType, ResponsiveOptions } from '@splidejs/splide'
interface Props {
autoplay?: boolean | string
@@ -15,6 +15,9 @@ const props = withDefaults(defineProps<Props>(), {
pagination: true,
})
const emit = defineEmits(['mounted', 'move', 'moved', 'arrowClick'])
const options = computed((): ResponsiveOptions => {
return {
type: 'fade',
@@ -36,10 +39,74 @@ const options = computed((): ResponsiveOptions => {
},
}
})
const handleSplideMounted = (splide: SplideType) => {
emit('mounted', splide)
splide.refresh()
// 화살표 버튼 클릭 이벤트 리스너 추가
nextTick(() => {
addArrowClickListeners(splide)
})
}
const handleMove = (
splide: SplideType,
newIndex: number,
oldIndex: number,
destIndex: number
) => {
emit('move', splide, newIndex, oldIndex, destIndex)
}
const handleMoved = (
splide: SplideType,
newIndex: number,
oldIndex: number,
destIndex: number
) => {
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))
}
}
</script>
<template>
<Splide :options="options" class="h-full">
<Splide
:options="options"
class="h-full"
@splide:mounted="handleSplideMounted"
@splide:move="handleMove"
@splide:moved="handleMoved"
>
<slot />
</Splide>
</template>

View File

@@ -56,9 +56,6 @@ const getButtonProps = (button: PageDataResourceGroup) => ({
})
const { useAnalyticsLogDataDirect } = useAnalytics()
// const logData = useAnalyticsLogDataDirect(props.resourcesData, props.pageVerTmplSeq)
console.log("🚀 11111~ getButtonProps ~ props.resourcesData:", getButtonProps(props.resourcesData[0]))
</script>
<template>

View File

@@ -6,7 +6,7 @@ const props = defineProps<{
pageVerTmplSeq: number
}>()
const { useAnalyticsLogDataDirect } = useAnalytics()
const logData = useAnalyticsLogDataDirect(props.resourcesData, props.pageVerTmplSeq)
const logData = useAnalyticsLogDataDirect(props.resourcesData.tracking, props.pageVerTmplSeq)
// YouTube 모달 스토어 사용
const modalStore = useModalStore()