CarouselPanel.vue 1.02 KB
<script setup lang="ts">
import { ElCarousel, ElCarouselItem } from "element-plus";
import { CaretBottom, CaretRight } from "@element-plus/icons-vue";

const props = defineProps({
  carouselInfo: {
    type: Object,
    default: () => { },
  },
});

const emits = defineEmits(["carouselChange"]);

const carouselChange = (current: number, prev: number) => {
  emits("carouselChange", current);
};

</script>

<template>
  <el-carousel :height="carouselInfo.height ?? '150px'" :indicator-position="carouselInfo.indicatorPosition ?? 'none'"
    :arrow="carouselInfo.arrow ?? 'hover'" :trigger="carouselInfo.trigger ?? 'hover'" :loop="carouselInfo.loop ?? true"
    :autoplay="carouselInfo.autoplay ?? true" :initial-index="carouselInfo.initialIndex ?? 0" @change="carouselChange">
    <el-carousel-item class="carousel-item" :class="[carouselInfo.itemClass]" v-for="(item, i) in carouselInfo.list" :key="'carousel' + i">
      <slot :carousel="item"></slot>
    </el-carousel-item>
  </el-carousel>
</template>

<style lang="scss" scoped></style>