@emanuele-em/nuxt-swipe
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Nuxt-Swipe

This Nuxt 3 module allows you to easily add swipe gestures to your Vue 3 App. With just a few lines of code, you can enable swiping on your website or web application.

Installation

To add this module to your Nuxt.js project, run the following command:

  npm i @emanuele-em/nuxt-swipe

Then, add nuxt-swipe to the modules section of your nuxt.config.js file:

  export default {
    modules: [
        '@emanuele-em/nuxt-swipe'
    ]
  }

Usage

To use the module, simply add <Swipe> component, it will be the component that will intercept the swipe gesture

For example:

<template>
    <Swipe>
        <slot />
    </Swipe>
</template>

The module will create a plugin that will emit the Swipe event only after some checks to make sure that the gesture is really a swipe gesture.

You can handle that event in the script section of your component, remember to import nuxtApp:

<script setup>

import { useNuxtApp } from '#app'

const nuxtApp = useNuxtApp()

nuxtApp.$bus.$on('swipe', (direction) => {
    switch (direction) {
        case 'left': 
            // swiped left, do things
            break;
        case 'right':
            // swiped right, do things
            break;
        case 'up':
            // swiped up, do things
            break;
        case 'down':
            // swiped down, do things
            break;
        default:
            break;
    }
})

</script>

Examples

Swipe navigation with Swipe component as Default Layout

layouts/default.vue

<template>
    <Swipe>
        <slot />
    </Swipe>
</template>
  
<script setup>
import { useNuxtApp, useRoute, navigateTo } from '#app'

const nuxtApp = useNuxtApp()
const routes = ['/', '/about']

nuxtApp.$bus.$on('swipe', (direction) => {
    let indexCurrentRoute = routes.indexOf(useRoute().path)
    if (direction === 'left' && routes[indexCurrentRoute + 1]) {
        indexCurrentRoute += 1
    }
    if (direction === 'right' && routes[indexCurrentRoute - 1]) {
        indexCurrentRoute -= 1
    }
    return navigateTo(routes[indexCurrentRoute])
})

</script>
  

Demo

demo-nuxt-swipe.pages.dev

Roadmap

  • Typescript correct syntax

  • Swipe handling during the touchEvent and not just at touchend

License

MIT

Package Sidebar

Install

npm i @emanuele-em/nuxt-swipe

Weekly Downloads

33

Version

1.0.2

License

MIT

Unpacked Size

7.62 kB

Total Files

10

Last publish

Collaborators

  • emanuele-em