VueEternalLoading right position
by gavrashenko
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css">
<script src="https://unpkg.com/vue@3.2.25/dist/vue.global.js"></script>
<script src="https://cdn.jsdelivr.net/gh/ts-pro/vue-eternal-loading/dist/vue-eternal-loading.umd.js"></script>
<div id="app">
<div class="container d-flex" style="overflow: scroll">
<div class="row flex-row flex-nowrap">
<img v-for="user in users" :key="user.id" :src="user.avatar" class="col" alt="...">
<vue-eternal-loading class="col-1" :load="load">
<template #loading>
<div class="spinner-border text-success" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</template>
</vue-eternal-loading>
</div>
</div>
</div>
CSS
.vue-eternal-loading>div {
margin: 10px;
text-align: center;
}
JavaScript
const URL = 'https://reqres.in/api/users';
const PAGE_SIZE = 5;
const App = {
data() {
return {
page: 1,
users: [],
}
},
methods: {
loadUsers(page) {
return fetch( `${URL}?delay=1&per_page=${PAGE_SIZE}&page=${page}`)
.then(res => res.json())
.then(res => res.data);
},
load(action) {
this.loadUsers(this.page).then((users) => {
this.users.push(...users);
this.page += 1;
action.loaded(users.length, PAGE_SIZE);
})
}
}
};
const app = Vue.createApp(App);
app.component('vue-eternal-loading', window.TSPro.VueEternalLoading);
app.mount('#app');