Vue Progress Path

0.0.2 · abandoned · verified Sun Apr 19

Vue Progress Path is a Vue.js 2.x library offering highly customizable progress bars and loading indicators. Its primary differentiator is the ability to render progress shapes using any custom SVG path, alongside built-in options like circles and semicircles, providing extensive design flexibility. The package is currently at version `0.0.2`. Despite its initial promise for versatile progress UIs, the project is explicitly noted as 'Work In Progress' and has not seen any updates or commits in over six years, indicating it is no longer actively maintained. Consequently, there is no ongoing release cadence, and it remains exclusively compatible with Vue 2.x, rendering it unsuitable for modern Vue 3 applications. Users should be aware that no further features, bug fixes, or security patches are anticipated.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart initializes a basic Vue 2 application, registers the vue-progress-path plugin, and demonstrates three types of progress indicators: a Material Design-like spinner, a semi-circle, and a custom SVG path. It includes controls to toggle indeterminate state, hide background, and reverse direction, along with a slider to manually adjust progress.

import Vue from 'vue';
import 'vue-progress-path/dist/vue-progress-path.css';
import VueProgress from 'vue-progress-path';

Vue.use(VueProgress);

new Vue({
  el: '#app',
  data() {
    return {
      progress: 0,
      indeterminate: false,
      counterClockwise: false,
      hideBackground: false,
    };
  },
  mounted() {
    setInterval(() => {
      if (this.indeterminate) return;
      this.progress = (this.progress + 5) % 105;
      if (this.progress >= 100) {
        this.progress = 0;
      }
    }, 200);
  },
  template: `
    <div id="app">
      <h1>Vue Progress Path Demo</h1>
      <p>Control progress with the input below:</p>
      <input type="range" v-model.number="progress" min="0" max="100" /> {{ progress }}%
      <br>
      <label>
        <input type="checkbox" v-model="indeterminate"> Indeterminate
      </label>
      <label>
        <input type="checkbox" v-model="hideBackground"> Hide Background
      </label>
      <label>
        <input type="checkbox" v-model="counterClockwise"> Counter Clockwise
      </label>

      <h3>Material-like Spinner</h3>
      <loading-progress
        :progress="progress"
        :indeterminate="indeterminate"
        :counter-clockwise="counterClockwise"
        :hide-background="hideBackground"
        size="64"
        rotate
        fillDuration="2"
        rotationDuration="1"
      />

      <h3>Semi-circle Progress</h3>
      <loading-progress
        :progress="progress"
        :indeterminate="indeterminate"
        :counter-clockwise="counterClockwise"
        :hide-background="hideBackground"
        shape="semicircle"
        size="64"
      />

      <h3>Custom SVG Path</h3>
      <loading-progress
        :progress="progress"
        :indeterminate="indeterminate"
        :counter-clockwise="counterClockwise"
        :hide-background="hideBackground"
        shape="M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"
        size="180"
        fill-duration="2"
      />
    </div>
  `,
});

view raw JSON →