40 lines
		
	
	
		
			No EOL
		
	
	
		
			856 B
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			No EOL
		
	
	
		
			856 B
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{#await promise}}
 | |
| <div class="loading-page">
 | |
|   {{#if trueValue}} <!-- hack to get the transition to work -->
 | |
|     <div transition:fade>
 | |
|       <LoadingSpinner />
 | |
|     </div>
 | |
|   {{/if}}
 | |
| </div>
 | |
| {{then constructor}}
 | |
| <:Component {constructor} :target />
 | |
| {{catch error}}
 | |
| <div>Component failed to load. Please try refreshing! {{error}}</div>
 | |
| {{/await}}
 | |
| <style>
 | |
|   .loading-page {
 | |
|     width: 100%;
 | |
|     min-height: 40vh;
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     justify-content: center;
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import { importTimeline } from '../_utils/asyncModules'
 | |
|   import LoadingSpinner from './LoadingSpinner.html'
 | |
|   import { fade } from 'svelte-transitions'
 | |
| 
 | |
|   export default {
 | |
|     data: () => ({
 | |
|       promise: importTimeline(),
 | |
|       trueValue: true
 | |
|     }),
 | |
|     components: {
 | |
|       LoadingSpinner
 | |
|     },
 | |
|     transitions: {
 | |
|       fade
 | |
|     }
 | |
|   }
 | |
| </script> |