Nuxt/examples/nuxt-prefetch/layouts/default.vue
Sébastien Chopin f319033928
feat(nuxt-link): Smart prefetching and $nuxt.isOffline (#4574)
* feat(nuxt-link): Improve <n-link> and add automatic prefetch

* Update packages/vue-app/template/components/nuxt-link.js

Co-Authored-By: Atinux <seb@orion.sh>

* add missing space

* feat(nuxt-link): Split in two components for smaller bundle

* fix(vue-app): Use requestIdleCallback

* chore(vue-app): Improve nuxt prefetch strategy for nuxt links

* chore(vue-app): Add .isOnline and handle it for prefetch

* chore(vue-app): Add .isOffline and use it

* chore(vue-app): Add .isOffline

* chore(server): Check is options.modern is given in dev mode

* chore(vue-app): Add intersection-observer polyfill if router.prefetchLinks is 'polyfill'

* chore(vue-app): Remove polyfill

* chore(vue-app): Use only process.client

* chore(vue-app): Add TS typings for .isOnline and isOffline

* chore(vue-app): Update typings by @kevinmarrec

* chore(vue-app): Reorder names

* examples(nuxt-prefetch): Add Nuxt prefetching example

* chore(vue-app): Add router.linkPrefetchedClass

* lint(vue-app): Fix lint

* chore(vue-app): Use intersectionRatio, recommend by @maoberlehner

* fix(lint): Fix linting issues

* lint(vue-app): Fix again (lol)

* types(vue-app): Update TS typings

* chore(vue-app): Update Vetur tags description

* fix(vue-app): Use prefetchClass

* chore(vue-app): Disable linkPrefetchedClass by default
2018-12-28 17:27:03 +01:00

58 lines
1.1 KiB
Vue

<template>
<div>
<div v-if="$nuxt.isOffline" class="offline">
You are offline
</div>
<div class="container">
<h1>{{ $route.name }}</h1>
<Nuxt />
</div>
</div>
</template>
<style>
body {
padding: 0;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
.container {
padding: 10px 20px;
padding-bottom: 40px;
}
.offline {
background: #3B8070;
color: white;
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 10px;
}
a {
display: block;
padding: 10px 10px 10px 0px;
margin: 20px 0;
font-size: 20px;
border-bottom: 2px #ddd solid;
color: #3B8070;
text-decoration: none;
transition: border-bottom-color 0.3s linear;
}
a:hover,
a.nuxt-link-exact-active {
background-color: rgb(245, 245, 245);
}
a.nuxt-link-prefetched:after {
content: '';
display: inline-block;
background: url('../assets/check.svg') no-repeat;
background-size: 14px;
width: 14px;
height: 14px;
position: relative;
right: -3px;
top: 1px;
}
</style>