Loader.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template lang="pug">
  2. modal(name="pos-loader" transition="nice-modal-fade" @before-close="beforeClose" :classes="['v--modal', 'pos-loader']")
  3. simple-spinner(size="large" message="Cargando, espere...")
  4. </template>
  5. <script>
  6. import { mapGetters, mapActions } from 'vuex'
  7. import Spinner from 'vue-simple-spinner'
  8. export default {
  9. components: {
  10. 'simple-spinner': Spinner
  11. },
  12. computed: mapGetters({
  13. loaded: 'isLoaded'
  14. }),
  15. watch: {
  16. loaded(completed) {
  17. if (completed) {
  18. this.$modal.hide("pos-loader")
  19. } else {
  20. this.$modal.show("pos-loader")
  21. }
  22. }
  23. },
  24. methods: {
  25. beforeClose(e) {
  26. if (!this.loaded) {
  27. e.stop()
  28. }
  29. },
  30. ...mapActions([
  31. 'clear'
  32. ])
  33. },
  34. mounted() {
  35. this.clear()
  36. this.$modal.show("pos-loader")
  37. }
  38. }
  39. </script>
  40. <style lang="sass">
  41. .pos-loader
  42. display: flex
  43. align-items: center
  44. justify-content: center
  45. </style>