Button / progress-bar with cloud synchronization animation in vanilla javascript, Vue.js and Web component formats
Button/progress-bar with cloud synchronization animation in vanilla JavaScript, Vue.js and Web component formats
This component is available in three versions:
src
directoryvanilla-javascript-version
directoryWeb component
- in the web-component-version
directoryThe code is self-explanatory
It’s built using Custom Elements - a well supported technology nowadays. For older browsers a polifill is available
<cloud-sync-button options='{
"loadColor": "#81d427",
"strokeColor": "#fff",
"btnColor": "#725fdf",
"titleStart": "Sync",
"titleEnd": "Done"
}' />
const aBtn = document.querySelector("cloud-sync-button");
...
aBtn.initSync();
aBtn.updateSync(10);
aBtn.completeSync();
aBtn.resetSync();
Vue component consists of one CloudSyncButton.vue
file that can be copy-pasted into your Vue.js project or can be plugged in as an NPM package:
npm install @vuesence/cloud-sync-button --save
Then you can use it in the your Vue code:
<template>
<div id="app">
<CloudSyncButton
title="Sync"
titleDone="Done"
@click.native="startSync"
:syncProgress="syncProgress"
:inSync="inSync"
:styling="{
loadColor: '#81d427',
strokeColor: '#fff',
btnColor: '#011e4a'
}"
/>
</div>
</template>
<script>
import CloudSyncButton from "@vuesence/cloud-sync-button";
export default {
name: "App",
components: {
CloudSyncButton,
},
data() {
return {
syncProgress: 0,
inSync: false,
};
},
methods: {
startSync() {
this.syncProgress = 0;
this.inSync = true;
},
stopSync() {
this.syncProgress = 0;
this.inSync = false;
},
completeSync() {
this.syncProgress = 100;
setTimeout(() => {
this.stopSync();
}, 2000);
},
},
};
</script>
Two reactive parameters handle the button state: inSync
- starts and stops the synchronization,
and syncProgress
- shows the synchronization progress.
startSync
, stopSync
and completeSync
methods are used to manage the button representation programmatically.
For more details please see an example of usage in the App.vue
https://vuesence.github.io/cloud-sync-button/
Try it on codesandbox.io
Any bugs, issues, feature and pull requests are welcome
Please use GitHub’s issue reporter or send me an email
Contribution is always welcome and recommended. Here is how:
@vuesence/cloud-sync-button package is freely distributable under the terms of the MIT license.