All files / plugins loading-screen.js

0% Statements 0/22
0% Branches 0/9
0% Functions 0/4
0% Lines 0/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                                                       
import Vue from 'vue'
 
const setup = ({ title, subtitle, screen }) => {
  window.scrollTo({ top: 0 })
  screen.querySelector('.title').textContent = title
  screen.querySelector('.subtitle').textContent = subtitle
}
 
const start = ({ page, screen }) => {
  page.style.display = 'none'
  screen.style.display = 'flex'
}
const finish = ({ page, screen, pageDisplayStyle }) => {
  screen.style.display = 'none'
  if (pageDisplayStyle === 'none') pageDisplayStyle = 'block'
  page.style.display = pageDisplayStyle
}
 
Vue.prototype.$withLoadingScreen = async (
  asyncFunc,
  { title, subtitle } = {
    title: 'Chargement...',
    subtitle: 'Veuillez patienter',
  }
) => {
  title = title || 'Chargement...'
  subtitle = subtitle || (title ? 'Chargement...' : 'Veuillez patienter')
  const page = document.getElementById('page')
  const screen = document.getElementById('loading-screen')
  const pageDisplayStyle = page.style.display
  setup({ screen, title, subtitle })
  start({ page, screen })
  await asyncFunc()
  finish({ page, screen, pageDisplayStyle })
}