Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 5x 5x 5x | <template> <img src="@/assets/img/Curve-Loading.gif" v-if="pending" alt="image" :class="setClassStyle()" /> <img v-else :src="img" alt="image" :class="setClassStyle()" /> </template> <script> import { getStrapiMedia } from "~/utils/medias"; export default { name: "PreloaderImage", props: { image: { required: true, type: String, }, classStyle: String, rounded: Boolean, }, data() { return { pending: true, img: "", }; }, watch: { image: function () { this.getImage(this.image); }, }, methods: { getStrapiMedia, getImage: function (image) { this.pending = true; fetch(this.getStrapiMedia(image)) .then((data) => (this.img = data.url)) .finally(() => (this.pending = false)); }, setClassStyle: function () { const rounded = this.rounded ? "border-round" : ""; if (this.classStyle) { return `${this.classStyle} ${rounded}`; } return `m-auto ${rounded}`; }, }, mounted() { this.getImage(this.image); }, }; </script> <style scoped> .vue-load-image { display: flex; height: 100%; } .border-round { border-radius: 10px; } </style> |