UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 12.9 kB
{"version":3,"file":"carousel.vue2.mjs","sources":["../../../../../../packages/components/carousel/src/carousel.vue"],"sourcesContent":["<template>\n <div\n ref=\"root\"\n :class=\"carouselClasses\"\n @mouseenter.stop=\"handleMouseEnter\"\n @mouseleave.stop=\"handleMouseLeave\"\n >\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n <button\n v-show=\"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n :aria-label=\"t('el.carousel.leftArrow')\"\n @mouseenter=\"handleButtonEnter('left')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(activeIndex - 1)\"\n >\n <ElIcon>\n <ArrowLeft />\n </ElIcon>\n </button>\n </transition>\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n <button\n v-show=\"\n (arrow === 'always' || hover) &&\n (loop || activeIndex < items.length - 1)\n \"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n :aria-label=\"t('el.carousel.rightArrow')\"\n @mouseenter=\"handleButtonEnter('right')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(activeIndex + 1)\"\n >\n <ElIcon>\n <ArrowRight />\n </ElIcon>\n </button>\n </transition>\n <div\n :class=\"ns.e('container')\"\n :style=\"containerStyle\"\n @transitionstart=\"handleTransitionStart\"\n @transitionend=\"handleTransitionEnd\"\n >\n <PlaceholderItem />\n <slot />\n </div>\n <items-sorter>\n <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n <li\n v-for=\"(item, index) in items\"\n v-show=\"isTwoLengthShow(index)\"\n :key=\"index\"\n :class=\"[\n ns.e('indicator'),\n ns.em('indicator', direction),\n ns.is('active', index === activeIndex),\n ]\"\n @mouseenter=\"throttledIndicatorHover(index)\"\n @click.stop=\"handleIndicatorClick(index)\"\n >\n <button\n :class=\"ns.e('button')\"\n :aria-label=\"t('el.carousel.indicator', { index: index + 1 })\"\n >\n <span v-if=\"hasLabel\">{{ item.props.label }}</span>\n </button>\n </li>\n </ul>\n </items-sorter>\n <svg\n v-if=\"motionBlur\"\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n style=\"display: none\"\n >\n <defs>\n <filter id=\"elCarouselHorizontal\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"12,0\" />\n </filter>\n <filter id=\"elCarouselVertical\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"0,10\" />\n </filter>\n </defs>\n </svg>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, unref } from 'vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { carouselEmits } from './carousel'\nimport { useCarousel } from './use-carousel'\n\nimport type { CarouselProps } from './carousel'\n\nconst COMPONENT_NAME = 'ElCarousel'\ndefineOptions({\n name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<CarouselProps>(), {\n initialIndex: 0,\n height: '',\n trigger: 'hover',\n autoplay: true,\n interval: 3000,\n indicatorPosition: '',\n arrow: 'hover',\n type: '',\n cardScale: 0.83,\n loop: true,\n direction: 'horizontal',\n pauseOnHover: true,\n})\nconst emit = defineEmits(carouselEmits)\nconst {\n root,\n activeIndex,\n exposeActiveIndex,\n arrowDisplay,\n hasLabel,\n hover,\n isCardType,\n items,\n isVertical,\n containerStyle,\n handleButtonEnter,\n handleButtonLeave,\n handleIndicatorClick,\n handleMouseEnter,\n handleMouseLeave,\n setActiveItem,\n prev,\n next,\n PlaceholderItem,\n isTwoLengthShow,\n ItemsSorter,\n throttledArrowClick,\n throttledIndicatorHover,\n} = useCarousel(props, emit, COMPONENT_NAME)\nconst ns = useNamespace('carousel')\n\nconst { t } = useLocale()\n\nconst carouselClasses = computed(() => {\n const classes = [ns.b(), ns.m(props.direction)]\n if (unref(isCardType)) {\n classes.push(ns.m('card'))\n }\n return classes\n})\n\nconst indicatorsClasses = computed(() => {\n const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n if (unref(hasLabel)) {\n classes.push(ns.em('indicators', 'labels'))\n }\n if (props.indicatorPosition === 'outside') {\n classes.push(ns.em('indicators', 'outside'))\n }\n if (unref(isVertical)) {\n classes.push(ns.em('indicators', 'right'))\n }\n return classes\n})\n\nfunction handleTransitionStart(e: TransitionEvent) {\n if (!props.motionBlur) return\n\n const kls = unref(isVertical)\n ? `${ns.namespace.value}-transitioning-vertical`\n : `${ns.namespace.value}-transitioning`\n ;(e.currentTarget as HTMLDivElement).classList.add(kls)\n}\n\nfunction handleTransitionEnd(e: TransitionEvent) {\n if (!props.motionBlur) return\n\n const kls = unref(isVertical)\n ? `${ns.namespace.value}-transitioning-vertical`\n : `${ns.namespace.value}-transitioning`\n ;(e.currentTarget as HTMLDivElement).classList.remove(kls)\n}\n\ndefineExpose({\n /** @description active slide index */\n activeIndex: exposeActiveIndex,\n /** @description manually switch slide, index of the slide to be switched to, starting from 0; or the `name` of corresponding `el-carousel-item` */\n setActiveItem,\n /** @description switch to the previous slide */\n prev,\n /** @description switch to the next slide */\n next,\n})\n</script>\n"],"names":["_createElementBlock","_withModifiers","_unref","_createBlock","_Transition","_createElementVNode","_createVNode","_vShow","_normalizeClass","_renderSlot","_openBlock","_Fragment","_renderList","_toDisplayString"],"mappings":"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"}