0.1.8 • Published 5 years ago

vue-event-delayer v0.1.8

Weekly downloads
14
License
MIT
Repository
github
Last release
5 years ago

vue-event-delayer

Description:

A event delayer serves as component.

Inspiration

I need a undo functionality, which can be integrated into our project with minimum effort.

For example, we have a todo module, user can remove todo, but it will have 5 seconds to undo the remove action. And suppose we have other five modules that need this undo functionality, and each module has its own undo state ui design.

The delay part is easy, a setTimeout function will do the job, but it needs to be handled in a clean and managable way.

This component is my solution to it.

Installation

  npm install vue-event-delayer --save

You can import the library and use it as a plugin.

import Vue from 'vue'
import EventDelayer from 'vue-event-delayer'

Vue.use(EventDelayer)

Basic Usage

<template>
  <div id="app">
    <EventDelayer 
      :delay="5000" 
      ref="event-delayer" 
      slot-scope="{ registerAndExecute }"
    >
      <div 
        v-for="todo in todoList" 
        :key="todo.id"
      >
        <span>{{ todo.name }}</span>
        <button @click="registerAndExecute(removeTodo)">Remove Todo</button>
      </div>
    </EventDelayer>
  </div>
</template>

<script>
export default {
  name: 'todo',
  data () {
    return {
      todoList: [{}, {}, {}] // list of todo's 
    }
  },
  methods: {
    removeTodo () {
      // this function need to return a Promise
      return new Promise((resolve, reject) => {
        yourRemoveTodoApiCall().then(resolve).catch(reject)
      })
    }
  }
}
</script>
0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago