vue-progressbar
Table of Contents
- Demo
- Requirements
- Installation
- Usage
- Constructor Options
- Implementation
- vue-router
- Methods
- Examples
- License
Demo
Requirements
- Vue.js
1.x
or2.x
Installation
# npm
$ npm install vue-progressbar
#yarn
$ yarn add vue-progressbar
Usage
main.js
import Vue from 'vue'
import VueProgressBar from 'vue-progressbar'
import App from './App'
const options = {
color: '#bffaf3',
failedColor: '#874b4b',
thickness: '5px',
transition: {
speed: '0.2s',
opacity: '0.6s',
termination: 300
},
autoRevert: true,
location: 'left',
inverse: false
}
Vue.use(VueProgressBar, options)
new Vue({
...App
}).$mount('#app')
Constructor Options, key, description, default, options, :---, ---, ---, ---, color
, color of the progress bar, 'rgb(143, 255, 199)'
, RGB
HEX
HSL
HSV
VEC
, failedColor
, color of the progress bar upon load fail, 'red'
, RGB
, HEX
, HSL
, HSV
, VEC
, thickness
, thickness of the progress bar, '2px'
, px
, em
, pt
, %
, vh
, vw
, transition
, transition speed/opacity/termination of the progress bar, {speed: '0.2s', opacity: '0.6s', termination: 300}
, speed
, opacity
, termination
, autoRevert
, will temporary color changes automatically revert upon completion or fail, true
, true
, false
, location
, change the location of the progress bar, top
, left
, right
, top
, bottom
, position
, change the position of the progress bar, fixed
, relative
, absolute
, fixed
, inverse
, inverse the direction of the progress bar, false
, true
, false
, autoFinish
, allow the progress bar to finish automatically when it is close to 100%, true
, true
, false
, ## Implementation
App.vue
<template>
<div id="app">
<!-- for example router view -->
<router-view></router-view>
<!-- set progressbar -->
<vue-progress-bar></vue-progress-bar>
</div>
</template>
<script>
export default {
mounted () {
// [App.vue specific] When App.vue is finish loading finish the progress bar
this.$Progress.finish()
},
created () {
// [App.vue specific] When App.vue is first loaded start the progress bar
this.$Progress.start()
// hook the progress bar to start before we move router-view
this.$router.beforeEach((to, from, next) => {
// does the page we want to go to have a meta.progress object
if (to.meta.progress !== undefined) {
let meta = to.meta.progress
// parse meta tags
this.$Progress.parseMeta(meta)
}
// start the progress bar
this.$Progress.start()
// continue to next page
next()
})
// hook the progress bar to finish after we've finished moving router-view
this.$router.afterEach((to, from) => {
// finish the progress bar
this.$Progress.finish()
})
}
}
</script>
vue-router
export default [
{
path: '/achievement',
name: 'achievement',
component: './components/Achievement.vue',
meta: {
progress: {
func: [
{call: 'color', modifier: 'temp', argument: '#ffb000'},
{call: 'fail', modifier: 'temp', argument: '#6e0000'},
{call: 'location', modifier: 'temp', argument: 'top'},
{call: 'transition', modifier: 'temp', argument: {speed: '1.5s', opacity: '0.6s', termination: 400}}
]
}
}
}
]
vue-router meta options, call, modifier, argument, example, :---, ---, ---, ---, color, set
, temp
, string
, {call: 'color', modifier: 'temp', argument: '#ffb000'}
, fail, set
, temp
, string
, {call: 'fail', modifier: 'temp', argument: '#ffb000'}
, location, set
, temp
, string
, {call: 'location', modifier: 'temp', argument: 'top'}
, transition, set
, temp
, object
, {call: 'transition', modifier: 'temp', argument: {speed: '0.6s', opacity: '0.6s', termination: 400}}
, # Methods, function, description, parameters, example, :---, ---, ---, ---, start, start the progress bar loading, N/A
, this.$Progress.start()
, finish, finish the progress bar loading, N/A
, this.$Progress.finish()
, fail, cause the progress bar to end and fail, N/A
, this.$Progress.fail()
, increase, increase the progress bar by a certain %, number: integer
, this.$Progress.increase(number)
, decrease, decrease the progress bar by a certain %, number: integer
, this.$Progress.decrease(number)
, set, set the progress bar %, number: integer
, this.$Progress.set(number)
, setFailColor, cause the fail color to permanently change, color: string
, this.$Progress.setFailColor(color)
, setColor, cause the progress color to permanently change, color: string
, this.$Progress.setColor(color)
, setLocation, cause the progress bar location to permanently change, location: string
, this.$Progress.setLocation(location)
, setTransition, cause the progress bar transition speed/opacity/termination to permanently change, transition: object
, this.$Progress.setTransition(transition)
, tempFailColor, cause the fail color to change (temporarily), color: string
, this.$Progress.tempFailColor(color)
, tempColor, cause the progress color to change (temporarily), color: string
, this.$Progress.tempColor(color)
, tempLocation, cause the progress bar location to change (temporarily), location: string
, this.$Progress.tempLocation(location)
, tempTransition, cause the progress bar location to change (temporarily), transition: object
, this.$Progress.tempTransition(transition)
, revertColor, cause the temporarily set progress color to revert back to it's previous color, N/A
, this.$Progress.revertColor()
, revertFailColor, cause the temporarily set fail color to revert back to it's previous color, N/A
, this.$Progress.revertFailColor()
, revertTransition, cause the temporarily set transition to revert back to it's previous state, N/A
, this.$Progress.revertTransition()
, revert, cause the temporarily set progress and/or fail color to their previous colors, N/A
, this.$Progress.revert()
, parseMeta, parses progress meta data, meta: object
, this.$Progress.parseMeta(meta)
, # Examples
Loading Data (vue-resource)
<script>
export default {
methods: {
test () {
this.$Progress.start()
this.$http.jsonp('http://api.rottentomatoes.com/api/public/v1.0/lists/movies/in_theaters.json?apikey=7waqfqbprs7pajbz28mqf6vz')
.then((response) => {
this.$Progress.finish()
}, (response) => {
this.$Progress.fail()
})
}
}
}
</script>
Accessing the progress bar externally through the vue instance (e.g. axios interceptors)
main.js
// main.js from Usage section
Vue.use(VueProgressBar, options)
export default new Vue({ // export the Vue instance
...App
}).$mount('#app')
api-axios.js
import axios from 'axios';
import app from '../main'; // import the instance
const instance = axios.create({
baseURL: '/api'
});
instance.interceptors.request.use(config => {
app.$Progress.start(); // for every request start the progress
return config;
});
instance.interceptors.response.use(response => {
app.$Progress.finish(); // finish when a response is received
return response;
});
export default instance; // export axios instance to be imported in your app