Skip to content

jambonn/vue-next-progressbar

Repository files navigation

Vue next progressbar

Slim progress bars for Vue 3.

Table of Contents

Installation

npm install @jambonn/vue-next-progressbar

or if you prefer yarn

yarn add @jambonn/vue-next-progressbar

Usage

Global

You may install Vue next progressbar globally:

import { createApp } from 'vue';
import { createRouter, createWebHistory } from 'vue-router';
import VueNextProgressbar from '@jambonn/vue-next-progressbar';
import App from './App.vue';

const app = createApp(App);
app.use(createRouter({
    history: createWebHistory(),
    routes: [],
}));
app.use(VueNextProgressbar, { router: true });
app.mount('#app');

Use in component

When install global Vue next progressbar, you can control progress in component

<template>
  <button type="button" @click="progressBar.start()">Shows the progress bar</button>
  <button type="button" @click="progressBar.done()">Completes the progress</button>
</template>
<script>
import { getCurrentInstance, inject } from 'vue';
export default {
  setup() {
    // Get from global properties
    const app = getCurrentInstance();
    const progressBar = app.appContext.config.globalProperties.$Progressbar;

    // Get from provide
    const injectProgressBar = inject('Progressbar');
    return { progressBar, injectProgressBar }
  }
}
</script>

Control progress

Simply call start() and done() to control the Vue next progress bar.

import { VueProgressbar } from '@jambonn/vue-next-progressbar';
VueProgressbar.start();
VueProgressbar.done();

Configuration

trickleSpeed

Adjust how often to trickle/increment, in ms.

import { createApp } from 'vue';
import VueNextProgressbar from '@jambonn/vue-next-progressbar';
import App from './App.vue';

const app = createApp(App);
const options = {
  trickleSpeed: 500, // default: 800
};
app.use(VueNextProgressbar, options);

Compiles and hot-reloads for development

yarn install
yarn dev

then navigate to http://localhost:8080

Compiles and minifies for production

yarn build

License

This project is licensed under the MIT License - see the LICENSE file for details.