vuejs-loading-screen
v1.10.2
Published
Blocking screen while process worked
Downloads
237
Readme
Vuejs Loading Screen
Using to block whlie client processed work. Please checkout Demo to see how does it look like.
Installation
For vue 2
npm i --save vuejs-loading-screen
or with vue 3
npm i --save vue3-loading-screen
Usage
Vue2:
import Vue from 'vue'
import loading from 'vuejs-loading-screen'
Vue.use(loading)
Vue3:
import {createApp} from 'vue'
import App from './App.vue'
import Loading from 'vue3-loading-screen'
const app = createApp(App)
app.use(Loading, /*{...}*/)
app.mount('#app')
From now you can use $isLoading
as globally function to trigger show/hide loading screen.
<template>
<h1>Welcome to VueLoading Screen</h1>
</template>
<script>
export default {
methods: {
sendHttpRequest () {
this.$isLoading(true) // show loading screen
this.$axios.post(url, params)
.then(({data}) => {
console.log(data)
})
.finally(() => {
this.$isLoading(false) // hide loading screen
})
}
},
mounted () {
this.sendHttpRequest()
}
}
</script>
Customization
If you want to modify such background, icon size, color, type, you just configure options such:
Vue.use(loading, {
bg: '#41b883ad',
icon: 'refresh',
size: 3,
icon_color: 'white',
})
or you can style the loading by yourself (TailwindCss as example):
Vue.use(loading, {
bg: '#41b883ad',
slot: `
<div class="px-5 py-3 bg-gray-800 rounded">
<h3 class="text-3xl text-white"><i class="fas fa-spinner fa-spin"></i> Loading...</h3>
</div>
`
})
Translate your custom text
Start from main.js
file
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import loading from 'vuejs-loading-screen'
// your i18n setup
Vue.use(VueI18n)
const messages = {
en: {
message: {
loading: 'Loading...'
}
},
km: {
message: {
loading: 'កំពុងដំណើរការ...'
}
}
}
const i18n = new VueI18n({
locale: 'en', // set locale
messages, // set locale messages
})
// config loading plugins
Vue.use(loading, {
bg: '#41b883ad',
slot: `
<div class="px-5 py-3 bg-gray-800 rounded">
<h3 class="text-3xl text-white"><i class="fas fa-spinner fa-spin"></i> ${ i18n.t('message.loading') }</h3>
</div>
`,
})
new Vue({
i18n,
...
}).$mount('#app');
And then with App.vue
file, we need to watch $i18n.locale
and then call $changeIsLoadingOptions
function to update plugin options.
watch: {
'$i18n.locale' () {
this.$changeIsLoadingOptions({slot: `
<div class="px-5 py-3 bg-gray-800 rounded">
<h3 class="text-3xl text-white"><i class="fas fa-spinner fa-spin"></i> ${ this.$t('message.loading') }</h3>
</div>
`})
}
}
Configurations
| Option | Value | Description |
| ------------- | -------------| -----|
| bg | default: '#41b883ad'
| : color string |
| icon | deault: 'fas fa-spinner'
| : support font-awesome |
| size | default: '3'
| : {1, 2, 3, 4, 5} string |
| icon_color | default: '#ffffff'
| : color string |
| slot | default: font-awesome
| : raw html |