Security News
Input Validation Vulnerabilities Dominate MITRE's 2024 CWE Top 25 List
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
vue-loading-overlay
Advanced tools
Vue.js component for full screen loading indicator
Vue.js version | Package version | Branch |
---|---|---|
2.x | 3.x | 3.x |
3.x | 4.x | master |
# yarn
yarn add vue-loading-overlay@^4.0
# npm
npm install vue-loading-overlay@^4.0
<template>
<div class="vld-parent">
<loading v-model:active="isLoading"
:can-cancel="true"
:on-cancel="onCancel"
:is-full-page="fullPage"/>
<label><input type="checkbox" v-model="fullPage">Full page?</label>
<button @click.prevent="doAjax">fetch Data</button>
</div>
</template>
<script>
import Loading from 'vue-loading-overlay';
import 'vue-loading-overlay/dist/vue-loading.css';
export default {
data() {
return {
isLoading: false,
fullPage: true
}
},
components: {
Loading
},
methods: {
doAjax() {
this.isLoading = true;
// simulate AJAX
setTimeout(() => {
this.isLoading = false
}, 5000)
},
onCancel() {
console.log('User cancelled the loader.')
}
}
}
</script>
import {createApp} from 'vue';
import VueLoading from 'vue-loading-overlay';
import 'vue-loading-overlay/dist/vue-loading.css';
// Your app initialization logic goes here
const app = createApp({}).mount('#app')
app.use(VueLoading);
<template>
<form @submit.prevent="submit"
class="vld-parent"
ref="formContainer">
<!-- your form inputs goes here-->
<label><input type="checkbox" v-model="fullPage">Full page?</label>
<button type="submit">Login</button>
</form>
</template>
<script>
export default {
data() {
return {
fullPage: false
}
},
methods: {
submit() {
let loader = this.$loading.show({
// Optional parameters
container: this.fullPage ? null : this.$refs.formContainer,
canCancel: true,
onCancel: this.onCancel,
});
// simulate AJAX
setTimeout(() => {
loader.hide()
}, 5000)
},
onCancel() {
console.log('User cancelled the loader.')
}
}
}
</script>
The component accepts these props:
Attribute | Type | Default | Description |
---|---|---|---|
active | Boolean | false | Show loading by default when true , use it as v-model:active |
can-cancel | Boolean | false | Allow user to cancel by pressing ESC or clicking outside |
on-cancel | Function | ()=>{} | Do something upon cancel, works in conjunction with can-cancel |
is-full-page | Boolean | true | When false ; limit loader to its container^ |
transition | String | fade | Transition name |
color | String | #000 | Customize the color of loading icon |
height | Number | * | Customize the height of loading icon |
width | Number | * | Customize the width of loading icon |
loader | String | spinner | Name of icon shape you want use as loader, spinner or dots or bars |
background-color | String | #fff | Customize the overlay background color |
opacity | Number | 0.5 | Customize the overlay background opacity |
z-index | Number | 9999 | Customize the overlay z-index |
enforce-focus | Boolean | true | Force focus on loader |
lock-scroll | Boolean | false | Freeze the scrolling during full screen loader |
blur | String | 2px | Value for the CSS blur backdrop-filter. Set to null or an empty string to disable blurring |
is-full-page
is set to false
, the container element should be positioned as position: relative
. You can
use CSS helper class vld-parent
.height
and width
values may be varied based on the loader
prop valueThe component accepts these slots:
default
- Replace the animated icon with yoursbefore
- Place anything before the animated icon, you may need to style this.after
- Place anything after the animated icon, you may need to style this.this.$loading.show(?propsData,?slots)
import {h} from 'vue';
let loader = this.$loading.show({
// Pass props by their camelCased names
container: this.$refs.loadingContainer,
canCancel: true, // default false
onCancel: this.yourCallbackMethod,
color: '#000000',
loader: 'spinner',
width: 64,
height: 64,
backgroundColor: '#ffffff',
opacity: 0.5,
zIndex: 999,
}, {
// Pass slots by their names
default: h('your-custom-loader-component-name'),
});
// hide loader whenever you want
loader.hide();
You can set props and slots for all future instances when using as plugin
app.use(VueLoading, {
// props
color: 'red'
}, {
// slots
})
Further you can override any prop or slot when creating new instances
let loader = this.$loading.show({
color: 'blue'
}, {
// slots
});
<!-- Vue js -->
<script src="https://cdn.jsdelivr.net/npm/vue@3"></script>
<!-- Lastly add this package -->
<script src="https://cdn.jsdelivr.net/npm/vue-loading-overlay@4"></script>
<link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@4/dist/vue-loading.css" rel="stylesheet">
<!-- Init the plugin and component-->
<script>
const app = Vue.createApp({}).mount('#app')
app.use(VueLoading);
app.component('loading', VueLoading)
</script>
>=12.14
and yarn >=1.x
pre-installedyarn install
yarn start
http://localhost:9000
in your default web browser__test__
folder.yarn test
MIT License
FAQs
Vue.js component for full screen loading indicator.
The npm package vue-loading-overlay receives a total of 42,373 weekly downloads. As such, vue-loading-overlay popularity was classified as popular.
We found that vue-loading-overlay demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.