UNPKG

nuxt-swiper

Version:

[![npm](https://img.shields.io/npm/v/nuxt-swiper?style=flat-square)](https://www.npmjs.com/package/nuxt-swiper/) [![Downloads](https://img.shields.io/npm/dt/nuxt-swiper.svg?style=flat-square)](https://www.npmjs.com/package/nuxt-swiper) [![License](https:/

75 lines (74 loc) 2.36 kB
import { computed, nextTick, onMounted, ref, watch } from "vue"; export function useSwiper(swiperContainerRef, options) { const swiper = ref(); const isBeginning = computed(() => swiper.value?.isBeginning ?? true); const isEnd = computed(() => swiper.value?.isEnd ?? false); const activeIndex = computed(() => swiper.value?.activeIndex ?? 0); const realIndex = computed(() => swiper.value?.realIndex ?? 0); const slides = computed(() => swiper.value?.slides ?? []); const slidesPerView = computed(() => swiper.value?.slidesPerViewDynamic() ?? 0); const progress = computed(() => swiper.value?.progress ?? 0); const getNumberOfSlides = computed(() => swiper.value?.slides.length ?? 0); const next = (...params) => { if (!swiper.value) return; if (params.length === 0) swiper.value.slideNext(); else swiper.value.slideNext(...params); }; const to = (...params) => { if (!swiper.value) return; swiper.value.slideTo(...params); }; const reset = (...params) => { if (!swiper.value) return; if (params.length === 0) swiper.value.slideReset(); else swiper.value.slideReset(...params); }; const prev = (...params) => { if (!swiper.value) return; if (params.length === 0) swiper.value.slidePrev(); else swiper.value.slidePrev(...params); }; const checkSwiperRef = () => { const isSwiperContainer = swiperContainerRef.value?.nodeName === "SWIPER-CONTAINER"; if (!isSwiperContainer && swiper.value !== null && !options) { console.warn( '"useSwiper()" requires a ref and is tied to the %c`<swiper-container ref="swiperContainerRef"></swiper-container>` element.', "font-weight: bold;" ); } }; const _initialize = () => { if (swiperContainerRef.value && options !== void 0) { Object.assign(swiperContainerRef.value, options); swiperContainerRef.value?.initialize(); } swiper.value = swiperContainerRef?.value?.swiper; }; watch(swiper, () => checkSwiperRef()); onMounted(() => nextTick(() => _initialize())); return { // Instance instance: swiper, // Reactive state isBeginning, isEnd, activeIndex, realIndex, slides, slidesPerView, progress, getNumberOfSlides, // Navigation methods next, prev, to, reset }; }