add vue state transitions for input result counts

This commit is contained in:
Xevion
2020-08-24 13:48:36 -05:00
parent abc815dee2
commit 1a5784acf3
3 changed files with 20 additions and 2 deletions
+5
View File
@@ -5908,6 +5908,11 @@
"integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=",
"dev": true "dev": true
}, },
"gsap": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/gsap/-/gsap-3.5.1.tgz",
"integrity": "sha512-EMV0RSUKZNeTUzLKAizGlwxVOUyif3/g8I3S1aA/hf3gbqwBvmQ02x1RdTBQNQMOpHCVBv9y/vaHwfctoAg8zw=="
},
"gzip-size": { "gzip-size": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz",
+1
View File
@@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"axios": "^0.20.0", "axios": "^0.20.0",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"gsap": "^3.5.1",
"jspdf": "^2.1.0", "jspdf": "^2.1.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-axios": "^2.1.5", "vue-axios": "^2.1.5",
+14 -2
View File
@@ -7,7 +7,7 @@
<md-field> <md-field>
<label>Font Family</label> <label>Font Family</label>
<md-input v-model="search"></md-input> <md-input v-model="search"></md-input>
<span class="md-suffix">{{ results.length }} ({{ shown.length }})</span> <span class="md-suffix">{{ animatedResults }}</span>
</md-field> </md-field>
</div> </div>
<md-list> <md-list>
@@ -67,6 +67,10 @@
.scroll-area { .scroll-area {
position: relative; position: relative;
} }
.md-field {
margin-top: 0.25em;
}
} }
.md-menu-content { .md-menu-content {
@@ -78,6 +82,7 @@
import axios from 'axios'; import axios from 'axios';
import InfiniteLoading from 'vue-infinite-loading'; import InfiniteLoading from 'vue-infinite-loading';
import vueCustomScrollbar from 'vue-custom-scrollbar' import vueCustomScrollbar from 'vue-custom-scrollbar'
import { gsap } from "gsap";
axios.baseURL = ''; axios.baseURL = '';
@@ -92,7 +97,8 @@ export default {
visible: false, visible: false,
shown: [], shown: [],
search: "", search: "",
selectedFont: null selectedFont: null,
tweenedResults: 0,
}), }),
methods: { methods: {
toggle() { toggle() {
@@ -137,6 +143,9 @@ export default {
return this.fonts.items return this.fonts.items
else else
return [] return []
},
animatedResults() {
return this.tweenedResults.toFixed(0);
} }
}, },
watch: { watch: {
@@ -150,6 +159,9 @@ export default {
let min = this.shown.length; let min = this.shown.length;
this.shown = this.results.slice(0, Math.min(min, 5) + 1); this.shown = this.results.slice(0, Math.min(min, 5) + 1);
} }
},
results: function (newValue) {
gsap.to(this.$data, {duration: 0.35, tweenedResults: newValue.length, ease: "power4"});
} }
} }
} }