npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@redgoose/vue-slideshow

v2.0.5

Published

![SLIDESHOW](https://i.ibb.co/2YHhDG2/app-icon.png)

Downloads

261

Readme

SLIDESHOW

vue-slideshow

가족앨범 사진들을 디스플레잉을 어떻게 할 수 있을까 고민하다가 슬라이드쇼 프로젝트를 시작하게 되었습니다.
예전에 만든 슬라이드쇼를 제대로 만들어본 경험으로 더 좋은 모습으로 만들고 했습니다.

슬라이드쇼의 목적은 브라우저 전체화면으로 사진을 한장씩 넘겨보는 Vue 컴포넌트 입니다. 이 프로그램의 특징을 요약하자면 다음과 같습니다.

  • 자동재생
  • 터치 디바이스 지원
  • 다국어
  • 트랜지션 타입 설정
  • 슬라이드 캡션
  • 다크모드
  • 키보드 단축키

Demo

https://redgoose-dev.github.io/slideshow/

Usage

이 프로젝트는 Vue Component로 사용할 수 있으며 다음과 같이 설치하고 사용합니다.

npm install -d @redgoose/vue-slideshow
bun add -d @redgoose/vue-slideshow

패키지를 설치하고 vue 컴포넌트에서 다음과 같이 코드를 추가합니다.

<template>
<Slideshow
  v-model:active="state.active"
  v-model:autoplay="state.autoplay"
  :preference="preference"
  :slides="slides"
  :language="language"
  :theme="state.theme"
  class="slideshow"/>
</template>

<script setup>
import { ref, reactive } from 'vue'
import Slideshow from '@redgoose/vue-slideshow'
import '@redgoose/vue-slideshow/style'

const state = reactive({
  active: '1',
  autoplay: true,
  theme: 'system',
})
const preference = ref({})
const slides = ref([])
const language = ref({})
</script>

<style scoped>
.slideshow {
  --slideshow-width: 640px;
  --slideshow-height: 480px;
}
</style>

정상적으로 작동된다면 다음과 같은 화면을 볼 수 있습니다.

slideshow preview

Props

슬라이드쇼 컴포넌트는 다음 props 값을 사용합니다.

preference

슬라이드쇼의 환경설정 값입니다. defaults.js 파일에서 defaultPreference값이 기본값이며 이 구조에서 값을 변경하여 설정을 고쳐서 사용할 수 있습니다.

slides

슬라이드 배열 데이터입니다. 이미지 주소, 썸네일 이미지 주소, 제목, 설명 값을 사용하며 다음과 같은 구조로 슬라이드 데이터를 만듭니다.

[
  {
    "src": "image.jpg",
    "thumbnail": "thumbnail.webp",
    "title": "slide title",
    "description": "slide description"
  },
  {
    "src": "image.jpg",
    "thumbnail": "thumbnail.webp",
    "title": "slide title",
    "description": "slide description"
  }
]

language

슬라이드쇼에서 사용하는 메시지 값 defaults.js 파일에서 defaultLanguage값이 기본값이며 이 값을 기반으로 값을 만들어 사용하면 됩니다.

active

활성화된 슬라이드 키값 v-model:active값으로 사용할 수 있고, v-model을 사용하지 않는다면 다음과 같이 컴포넌트를 구성할 수 있습니다.

<template>
<Slideshow :active="`1`" @update:active="onUpdateActive"/>
</template>

<script setup>
function onUpdateActive() {}
</script>

autoplay

슬라이드 자동재생 사용유무 v-model:active값으로 사용할 수 있고, v-model을 사용하지 않는다면 다음과 같이 컴포넌트를 구성할 수 있습니다.

<template>
<Slideshow :autoplay="true" @update:autoplay="onUpdateAutoplay"/>
</template>

<script setup>
function onUpdateAutoplay() {}
</script>

theme

슬라이드쇼 색상테마이며 주로 라이트모드, 다크모드로 사용됩니다. light, dark 값으로 사용할 수 있으며 값이 없으면 시스템 다크모드 설정을 따라갑니다.

Events

update:active

활성화된 슬라이드 키값이 바뀌었을때 발생하는 이벤트

<template>
<Slideshow :active="active" @update:active="onUpdateActive"/>
</template>

<script setup>
const active = ref('1')
function onUpdateActive(key) {
  console.log('onUpdateActive()', key)
  active.value = key
}
</script>

update:autoplay

슬라이드 자동재생 상태가 바뀌었을때 호출되는 이벤트

<template>
<Slideshow :autoplay="autoplay" @update:autoplay="onUpdateAutoplay"/>
</template>

<script setup>
const autoplay = ref(false)
function onUpdateAutoplay(sw) {
  console.log('onUpdateAutoplay()', sw)
  autoplay.value = sw
}
</script>

Methods

컴포넌트를 어딴 기능을 작동시킬 수 있습니다. 메서드를 사용하는 예제는 다음과 같습니다.


<template>
<Slideshow ref="$slideshow"/>
</template>

<script setup>
const $slideshow = ref()
// start
onMounted(() => {
  $slideshow.value.start() // start
  $slideshow.value.stop() // stop
  $slideshow.value.restart() // restart
  $slideshow.value.prev() // prev slide
  $slideshow.value.next() // next slide
  $slideshow.value.change('2') // change slide
  $slideshow.value.exportData() // export data
  $slideshow.value.getKeys() // get slides key
})
</script>

Slot

컴포넌트 슬롯 기능을 이용하여 슬라이드쇼 내부에 요소를 삽입할 수 있습니다. 예를들어 슬라이드쇼를 제어하는 버튼이나 현재 상태를 표시하는 오버레이 같은 것들을 직접 제작하여 사용할 수 있습니다.

<template>
<Slideshow>
  <nav>
    <button type="button" @click="">Menu</button>
  </nav>
</Slideshow>
</template>

<style scoped>
nav {
  position: absolute;
  right: 30px;
  top: 30px;
}
</style>