Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Svelte Progressbar | 116 | 2 | 22 days ago | 32 | March 22, 2023 | 6 | mit | Svelte | ||
A multiseries, SVG progressbar component made with Svelte | ||||||||||
Learnunity | 76 | 4 years ago | C# | |||||||
examples for Unity teaching series | ||||||||||
Http Works | 30 | 9 years ago | mit | JavaScript | ||||||
A workshopper for http framework | ||||||||||
Icart | 20 | 2 years ago | 7 | bsd-2-clause | C++ | |||||
icart packages provides robot models regarding i-Cart series, simulation environments and ypspur control bridge on ROS. | ||||||||||
Vectrexia Emulator | 9 | 5 years ago | 2 | gpl-2.0 | C++ | |||||
Vectrex Emulator | ||||||||||
Marionette.progressview | 7 | 9 years ago | JavaScript | |||||||
A Flexible and customizable Backbone.Marionette Progress Series View. | ||||||||||
Ren Backend | 5 | 2 years ago | 4 | mit | TypeScript | |||||
Example backend for series/movies progress tracker | ||||||||||
Seen Chrome Extension | 5 | 7 years ago | mit | JavaScript | ||||||
TvSeries Progress Tracker - Chrome Extension | ||||||||||
Exploring Vue Tutorials | 3 | 3 years ago | Vue | |||||||
Pokemon App following Exploring Vue series in Ultimate Courses | ||||||||||
Everything Stays | 1 | 8 years ago | CSS | |||||||
A series of conceptual works in progress |
A multi-series SVG progress bar component made with Svelte 3. It can be rendered as a linear, radial (circular), semicircular or even custom-shaped progressbar. Progression bars and values are fully animated.
If rendered as a linear progressbar there are 2 styles supported:
No dependencies, only 35kb when minified (11kb gzipped)!
The current release is a substantial rewrite of much of the library, and as such it's not guaranteed to be compatible!
The following are the main differences with the previous release:
npm i @okrad/svelte-progressbar
Then you can use it like:
//main.js
import App from './App.svelte';
const app = new App({
target: document.body,
props: {
series: [20, 42]
}
});
export default app;
//App.svelte
<script>
import ProgressBar from "@okrad/svelte-progressbar";
export let series = [];
</script>
<ProgressBar {series} />
<button on:click={() => series = [50, 50]}>fill</button>
<button on:click={() => series = [0, 0]}>clear</button>
npm run package
Builds svelte files and transpiles ts into dist/ directory
Or...
npm run bundle
Creates minified index.js and index.mjs files in the bundle/ directory.
You can use the index.js bundle by including it in your html file, then instantiating the component:
const pb = new ProgressBar({
target: document.getElementById('demo'),
props: {
series: 20
}
});
This creates a standard progressbar with 20% progression.
const pb = new ProgressBar({
target: document.getElementById('demo'),
style: 'radial',
props: {
series: [20, 10]
}
});
This creates a radial progressbar with 2 series (20% + 10%).
ProgressBar(options): The constructor. Available props are:
series: 42
series: [10, 32]
series: [
{
perc: 10,
color: '#5AB6DF'
},
{
perc: 32,
color: '#65CEA7'
}
]
updateSeries(series): update all of the series. Since the "series" property is reactive, if you are using the component in a Svelte app, you can simply bind to it and change its value as needed.
updatePerc(perc, seriesId = 0): update the specified series progress percentage. Again, since the "series" property is reactive, if you are using the component in a Svelte app, you can simply bind to it and change its value as needed.
Within a svelte app, you can add a subcomponent to a radial progress bar:
<ProgressBar style='radial' series={[80]}>
<MySubcomponent ... />
</ProgressBar>
Or you can for example add an HTML fragment by using a foreignObject tag. In this case just make sure to explicitly set the namespace with the xmlns attribute:
<ProgressBar style='radial' series={[80]}>
<foreignObject x="0" y="0" width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<button on:click={...}>CLICKME</button>
</foreignObject>
</ProgressBar>
//Linear progress with single series with vanilla js
new ProgressBar({
target: document.getElementById('pb_container'),
props: {
series: [90]
}
});
//Linear progress as a Svelte component
<ProgressBar series={[90]}/>
//Linear progress with two series with vanilla js
new ProgressBar({
target: document.getElementById('pb_container'),
props: {
series: [40, 25]
}
});
//Linear progress with two series as a Svelte component
<ProgressBar series={[40, 25]}/>
//Linear progress with "thin" style and two series
new ProgressBar({
target: document.getElementById('demo3'),
props: {
style: 'thin',
series: [30, 15]
}
});
//Custom progress bar
<ProgressBar
style='custom'
series={[70]}
path="m 99.999994,28.641477 c 0,26.036253 -23.181375,32.218477 -49.999995,47.14281 C 25.522677,62.948324 0,54.67773 0,28.641477 10e-8,2.6052245 24.031722,-6.9568368 50.598798,6.1131375 78.0152,-7.6240828 99.999994,2.6052245 99.999994,28.641477 Z"/>
//Semicircular progress bar
new ProgressBar({
target: document.getElementById('demo3'),
props: {
style: 'semicircle',
series: [30]
}
});
//Or...
<ProgressBar style='semicircle' series={[30]}/>
//Radial progress bar with single series and thresholds
new ProgressBar({
target: document.getElementById('pb_container'),
props: {
style: 'radial',
series: [80],
thickness: 10,
thresholds: [
{
till: 50, //Color stays red from 0% to 50%
color: '#800000'
},
{
till: 100, //Color goes green from 51% to 100%
color: '#008000'
}
]
}
});
//Or...
<ProgressBar
style='radial'
series={[80]}
thickness={10}
thresholds={[
{
till: 50, //Color stays red from 0% to 50%
color: '#800000'
},
{
till: 100, //Color goes green from 51% to 100%
color: '#008000'
}
]}/>
Take a look at these working examples!
2023/05/16: Version 2.1.1
2023/02/21: Version 2.1.0
2023/02/21: Version 2.0.0
2021/02/23: Version 1.11.2.
2021/01/29: Version 1.11.1.
2021/01/22: Version 1.11.0.
2021/01/15: Version 1.10.0.
2020/11/23: Version 1.9.4.
2020/11/05: Version 1.9.3.
2020/11/02: Version 1.9.2. Removed "legacy" build
2020/10/27: Version 1.9.1. Improved TypeScript support.
2020/10/18: Version 1.9.0.
2020/09/22: Version 1.8.0. Add component composition handling in radial bars
2020/09/05: Version 1.7.1. Small fixes
2020/08/31: Version 1.7.0
2020/08/26: Version 1.6.2. Bugfixes for radial stacked progress bars
2020/08/12: Version 1.6.1. Semicircular bar fixes
2020/08/10: Version 1.6.0. Added semicircle bar style
2020/08/09: Version 1.5.0. series prop become reactive
2020/03/17: Version 1.4.0. Added thresholds, store refactorization
2020/02/07: Version 1.3.1. Added "addBackground", "bgColor", "stackSeries", "margin" parameters. Introduced "legacy" mode for compatibility with IE/Edge.
2019/08/07: Added dist task
2019/08/06: Refactored thin progressbars
2019/08/02: Added textSize parameter
2019/08/01: Handled svg viewport (width/height) while keeping proportions