UNPKG

element-plus

Version:

A Component Library for Vue 3

217 lines (214 loc) 8.76 kB
import { createElementVNode, defineComponent, computed, unref, openBlock, createElementBlock, normalizeClass, withModifiers, createBlock, Transition, withCtx, withDirectives, createVNode, vShow, createCommentVNode, normalizeStyle, renderSlot, Fragment, renderList, toDisplayString } from 'vue'; import { ElIcon } from '../../icon/index.mjs'; import { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'; import '../../../hooks/index.mjs'; import { carouselProps, carouselEmits } from './carousel.mjs'; import { useCarousel } from './use-carousel.mjs'; import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs'; import { useNamespace } from '../../../hooks/use-namespace/index.mjs'; import { useLocale } from '../../../hooks/use-locale/index.mjs'; const _hoisted_1 = ["aria-label"]; const _hoisted_2 = ["aria-label"]; const _hoisted_3 = ["onMouseenter", "onClick"]; const _hoisted_4 = ["aria-label"]; const _hoisted_5 = { key: 0 }; const _hoisted_6 = { key: 3, xmlns: "http://www.w3.org/2000/svg", version: "1.1", style: { "display": "none" } }; const _hoisted_7 = /* @__PURE__ */ createElementVNode("defs", null, [ /* @__PURE__ */ createElementVNode("filter", { id: "elCarouselHorizontal" }, [ /* @__PURE__ */ createElementVNode("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "12,0" }) ]), /* @__PURE__ */ createElementVNode("filter", { id: "elCarouselVertical" }, [ /* @__PURE__ */ createElementVNode("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "0,10" }) ]) ], -1); const _hoisted_8 = [ _hoisted_7 ]; const COMPONENT_NAME = "ElCarousel"; const __default__ = defineComponent({ name: COMPONENT_NAME }); const _sfc_main = /* @__PURE__ */ defineComponent({ ...__default__, props: carouselProps, emits: carouselEmits, setup(__props, { expose, emit }) { const props = __props; const { root, activeIndex, arrowDisplay, hasLabel, hover, isCardType, items, isVertical, containerStyle, handleButtonEnter, handleButtonLeave, isTransitioning, handleIndicatorClick, handleMouseEnter, handleMouseLeave, handleTransitionEnd, setActiveItem, prev, next, PlaceholderItem, isTwoLengthShow, throttledArrowClick, throttledIndicatorHover } = useCarousel(props, emit, COMPONENT_NAME); const ns = useNamespace("carousel"); const { t } = useLocale(); const carouselClasses = computed(() => { const classes = [ns.b(), ns.m(props.direction)]; if (unref(isCardType)) { classes.push(ns.m("card")); } return classes; }); const carouselContainer = computed(() => { const classes = [ns.e("container")]; if (props.motionBlur && unref(isTransitioning)) { classes.push(unref(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`); } return classes; }); const indicatorsClasses = computed(() => { const classes = [ns.e("indicators"), ns.em("indicators", props.direction)]; if (unref(hasLabel)) { classes.push(ns.em("indicators", "labels")); } if (props.indicatorPosition === "outside") { classes.push(ns.em("indicators", "outside")); } if (unref(isVertical)) { classes.push(ns.em("indicators", "right")); } return classes; }); expose({ setActiveItem, prev, next }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { ref_key: "root", ref: root, class: normalizeClass(unref(carouselClasses)), onMouseenter: _cache[7] || (_cache[7] = withModifiers((...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args), ["stop"])), onMouseleave: _cache[8] || (_cache[8] = withModifiers((...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args), ["stop"])) }, [ unref(arrowDisplay) ? (openBlock(), createBlock(Transition, { key: 0, name: "carousel-arrow-left", persisted: "" }, { default: withCtx(() => [ withDirectives(createElementVNode("button", { type: "button", class: normalizeClass([unref(ns).e("arrow"), unref(ns).em("arrow", "left")]), "aria-label": unref(t)("el.carousel.leftArrow"), onMouseenter: _cache[0] || (_cache[0] = ($event) => unref(handleButtonEnter)("left")), onMouseleave: _cache[1] || (_cache[1] = (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)), onClick: _cache[2] || (_cache[2] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) - 1), ["stop"])) }, [ createVNode(unref(ElIcon), null, { default: withCtx(() => [ createVNode(unref(ArrowLeft)) ]), _: 1 }) ], 42, _hoisted_1), [ [ vShow, (_ctx.arrow === "always" || unref(hover)) && (props.loop || unref(activeIndex) > 0) ] ]) ]), _: 1 })) : createCommentVNode("v-if", true), unref(arrowDisplay) ? (openBlock(), createBlock(Transition, { key: 1, name: "carousel-arrow-right", persisted: "" }, { default: withCtx(() => [ withDirectives(createElementVNode("button", { type: "button", class: normalizeClass([unref(ns).e("arrow"), unref(ns).em("arrow", "right")]), "aria-label": unref(t)("el.carousel.rightArrow"), onMouseenter: _cache[3] || (_cache[3] = ($event) => unref(handleButtonEnter)("right")), onMouseleave: _cache[4] || (_cache[4] = (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)), onClick: _cache[5] || (_cache[5] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) + 1), ["stop"])) }, [ createVNode(unref(ElIcon), null, { default: withCtx(() => [ createVNode(unref(ArrowRight)) ]), _: 1 }) ], 42, _hoisted_2), [ [ vShow, (_ctx.arrow === "always" || unref(hover)) && (props.loop || unref(activeIndex) < unref(items).length - 1) ] ]) ]), _: 1 })) : createCommentVNode("v-if", true), createElementVNode("div", { class: normalizeClass(unref(carouselContainer)), style: normalizeStyle(unref(containerStyle)), onTransitionend: _cache[6] || (_cache[6] = (...args) => unref(handleTransitionEnd) && unref(handleTransitionEnd)(...args)) }, [ createVNode(unref(PlaceholderItem)), renderSlot(_ctx.$slots, "default") ], 38), _ctx.indicatorPosition !== "none" ? (openBlock(), createElementBlock("ul", { key: 2, class: normalizeClass(unref(indicatorsClasses)) }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(items), (item, index) => { return withDirectives((openBlock(), createElementBlock("li", { key: index, class: normalizeClass([ unref(ns).e("indicator"), unref(ns).em("indicator", _ctx.direction), unref(ns).is("active", index === unref(activeIndex)) ]), onMouseenter: ($event) => unref(throttledIndicatorHover)(index), onClick: withModifiers(($event) => unref(handleIndicatorClick)(index), ["stop"]) }, [ createElementVNode("button", { class: normalizeClass(unref(ns).e("button")), "aria-label": unref(t)("el.carousel.indicator", { index: index + 1 }) }, [ unref(hasLabel) ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(item.props.label), 1)) : createCommentVNode("v-if", true) ], 10, _hoisted_4) ], 42, _hoisted_3)), [ [vShow, unref(isTwoLengthShow)(index)] ]); }), 128)) ], 2)) : createCommentVNode("v-if", true), props.motionBlur ? (openBlock(), createElementBlock("svg", _hoisted_6, _hoisted_8)) : createCommentVNode("v-if", true) ], 34); }; } }); var Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "carousel.vue"]]); export { Carousel as default }; //# sourceMappingURL=carousel2.mjs.map