semaphore/routes/_components/LazyTimeline.html

50 lines
1.0 KiB
HTML
Raw Normal View History

2018-01-19 08:51:51 +00:00
<div class="lazy-timeline">
{{#if loading}}
2018-01-15 07:24:27 +00:00
<div transition:fade>
2018-01-19 08:51:51 +00:00
<div class="loading-page">
<LoadingSpinner />
</div>
2018-01-15 07:24:27 +00:00
</div>
{{/if}}
2018-01-19 08:51:51 +00:00
{{#await promise}}
{{then constructor}}
<:Component {constructor} :timeline on:initialized="set({'loading': false})"/>
{{catch error}}
<div>Component failed to load. Please try refreshing! {{error}}</div>
{{/await}}
2018-01-15 07:24:27 +00:00
</div>
<style>
2018-01-19 08:51:51 +00:00
.lazy-timeline {
2018-01-15 07:24:27 +00:00
width: 100%;
2018-01-19 08:51:51 +00:00
min-height: 60vh;
}
.loading-page {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
2018-01-15 07:24:27 +00:00
display: flex;
align-items: center;
justify-content: center;
2018-01-19 08:51:51 +00:00
z-index: 50
2018-01-15 07:24:27 +00:00
}
</style>
<script>
import { importTimeline } from '../_utils/asyncModules'
import LoadingSpinner from './LoadingSpinner.html'
import { fade } from 'svelte-transitions'
export default {
data: () => ({
promise: importTimeline(),
2018-01-19 08:51:51 +00:00
loading: true
2018-01-15 07:24:27 +00:00
}),
components: {
LoadingSpinner
},
transitions: {
fade
}
}
</script>