inventur/app/js/components/TweenedNumber.vue
2021-07-18 01:04:13 +02:00

63 lines
1.0 KiB
Vue

<template>
<span class="tweened">
{{ intAnimated }}
<span v-if="precision>0">
,{{ deciAnimated }}
</span>
{{ einheit }}
</span>
</template>
<script>
import gsap from 'gsap';
import './TweenedNumber.css';
export default {
name: "TweenedNumber",
props: {
wert: {
type: Number,
default: 0
},
einheit: {
type: String,
default: ""
},
precision: {
type: Number,
default: 0
}
},
data(){
return {
tweenedValue: this.wert,
}
},
computed: {
valueAnimated() {
return this.tweenedValue.toLocaleString(
"de-DE",
{
maximumFractionDigits: 2,
minimumFractionDigits: this.precision
}
);
},
intAnimated() {
return this.valueAnimated.split(',')[0];
},
deciAnimated() {
return this.valueAnimated.split(',')[1];
}
},
watch: {
wert: {
handler(newValue) {
gsap.to(this.$data, 0.5, {tweenedValue: newValue });
},
deep: true
}
}
}
</script>