import { Image, Swiper } from "@queenjs/ui"; import { defineComponent, reactive, ref } from "vue"; import { array, string } from "vue-types"; export default defineComponent({ props: { data: array<string>().isRequired, current: string().isRequired, }, setup(props) { const carouselRef = ref(); const index = props.data.findIndex((d) => d == props.current); const state = reactive({ index: index, }); return () => { const { data } = props; return ( <div class="relative"> <div class="absolute w-1/1 top-15px let-0 text-center z-9"> {state.index + 1}/{data.length} </div> <Swiper onInit={(e) => (carouselRef.value = e)} options={{ slidesPerView: 1, initialSlide: state.index, on: { slideChange: (e: any) => { state.index = e.realIndex; }, }, }} > {data?.map((item, index) => ( <Swiper.Slider key={index} class="!h-100vh flex felx-col items-center justify-center" > <div class="flex-1 max-h-1/1 overflow-y-auto"> <Image src={item} class="w-1/1 !object-contain bg-light-50" size={800} /> </div> </Swiper.Slider> ))} </Swiper> </div> ); }; }, });