All Projects → ankurk91 → Vue Loading Overlay

ankurk91 / Vue Loading Overlay

Licence: mit
Vue.js component for full screen loading indicator 🌀

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vue Loading Overlay

Vue Loaders
Vue + loaders.css
Stars: ✭ 127 (-83.8%)
Mutual labels:  loader, loading, spinner, indicator
busy-load
A flexible loading-mask jQuery-plugin
Stars: ✭ 76 (-90.31%)
Mutual labels:  loader, overlay, spinner, loading
Ng Block Ui
Block UI Loader/Spinner for Angular
Stars: ✭ 135 (-82.78%)
Mutual labels:  loader, loading, spinner
Vue Wait
Complex Loader and Progress Management for Vue/Vuex and Nuxt Applications
Stars: ✭ 1,869 (+138.39%)
Mutual labels:  loader, loading, spinner
Whirl
CSS loading animations with minimal effort!
Stars: ✭ 774 (-1.28%)
Mutual labels:  loader, loading, spinner
Vue Full Loading
Full overlay loading with spinner for Vue
Stars: ✭ 148 (-81.12%)
Mutual labels:  loading, spinner, overlay
Css Spinner
small, elegant pure css spinner for ajax or loading animation
Stars: ✭ 1,013 (+29.21%)
Mutual labels:  loader, loading, spinner
Is Loading
Simple library to show visual feedback when loading data or any action that would take time
Stars: ✭ 232 (-70.41%)
Mutual labels:  loader, loading, overlay
Spinners React
Lightweight SVG/CSS spinners for React
Stars: ✭ 254 (-67.6%)
Mutual labels:  loader, loading, spinner
Ngx Ui Loader
Multiple Loaders / spinners and Progress bar for Angular 5, 6, 7 and 8+
Stars: ✭ 368 (-53.06%)
Mutual labels:  loader, loading, spinner
loading
Laravel package to add loading indicator to pages while page is loading.
Stars: ✭ 38 (-95.15%)
Mutual labels:  loader, spinner, indicator
React Native Loading Spinner Overlay
💈 React Native loading spinner overlay
Stars: ✭ 1,369 (+74.62%)
Mutual labels:  loading, spinner, overlay
React Loading Overlay
Loading overlays with fade, spinner, message support.
Stars: ✭ 218 (-72.19%)
Mutual labels:  loader, spinner, overlay
Vue Element Loading
⏳ Loading inside a container or full screen for Vue.js
Stars: ✭ 234 (-70.15%)
Mutual labels:  loader, loading, spinner
spinners-angular
Lightweight SVG/CSS spinners for Angular
Stars: ✭ 21 (-97.32%)
Mutual labels:  loader, spinner, loading
loading-indicator
🚦 Simple and customizable command line loading indicator
Stars: ✭ 18 (-97.7%)
Mutual labels:  spinner, loading, indicator
BalloonPopup
Forget Android Toast! BalloonPopup displays a round or squared popup and attaches it to a View, like a callout. Uses the Builder pattern for maximum ease. The popup can automatically hide and can persist when the value is updated.
Stars: ✭ 32 (-95.92%)
Mutual labels:  overlay, indicator
react-awesome-loaders
🚀 High quality, super responsive and completely customisable Loading Animations to insert into your website with single line of code.
Stars: ✭ 146 (-81.38%)
Mutual labels:  loader, spinner
ngx-smart-loader
Smart loader handler to manage loaders everywhere in Angular apps.
Stars: ✭ 28 (-96.43%)
Mutual labels:  loader, loading
Ngx Skeleton Loader
Make beautiful, animated loading skeletons that automatically adapt to your Angular apps
Stars: ✭ 278 (-64.54%)
Mutual labels:  loader, loading

Vue Loading Overlay Component

downloads jsdelivr npm-version github-tag build license ts

Vue.js component for full screen loading indicator

Demo or JSFiddle

Installation

# yarn
yarn add vue-loading-overlay

# npm
npm install vue-loading-overlay 

Usage

As component

<template>
    <div class="vld-parent">
        <loading :active.sync="isLoading" 
        :can-cancel="true" 
        :on-cancel="onCancel"
        :is-full-page="fullPage"></loading>
        
        <label><input type="checkbox" v-model="fullPage">Full page?</label>
        <button @click.prevent="doAjax">fetch Data</button>
    </div>
</template>

<script>
    // Import component
    import Loading from 'vue-loading-overlay';
    // Import stylesheet
    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>

As plugin

<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>
    import Vue from 'vue';
    // Import component
    import Loading from 'vue-loading-overlay';
    // Import stylesheet
    import 'vue-loading-overlay/dist/vue-loading.css';
    // Init plugin
    Vue.use(Loading);

    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>

Available props

The component accepts these props:

Attribute Type Default Description
active Boolean false Show loading by default when true, use the .sync modifier to make it two-way binding
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
  • ^When is-full-page is set to false, the container element should be positioned as position: relative. You can use CSS helper class vld-parent.
  • *The default height and width values may be varied based on the loader prop value

Available slots

The component accepts these slots:

  • default : Replace the animated icon with yours
  • before : 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.

API methods

Vue.$loading.show(?propsData,?slots)

let loader = Vue.$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: this.$createElement('your-custom-loader-component-name'),
});
// hide loader whenever you want
loader.hide();

Global configs

You can set props and slots for all future instances when using as plugin

Vue.use(Loading, {
  // props
  color: 'red'
},{
  // slots
})

Further you can override any prop or slot when creating new instances

let loader = Vue.$loading.show({
 color: 'blue'
},{
  // slots
});

Install in non-module environments (without webpack)

<!-- Vue js -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<!-- Lastly add this package -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-loading.css" rel="stylesheet">
<!-- Init the plugin and component-->
<script>
Vue.use(VueLoading);
Vue.component('loading', VueLoading)
</script>

Browser support

  • Modern browsers only

Run examples on your localhost

  • Clone this repo
  • Make sure you have node-js >=12.14 and yarn >=1.x pre-installed
  • Install dependencies - yarn install
  • Run webpack dev server - yarn start
  • This should open the demo page at http://localhost:9000 in your default web browser

Testing

  • This package is using Jest and vue-test-utils for testing.
  • Tests can be found in __test__ folder.
  • Execute tests with this command yarn test

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].