- Detect offline & online events for your vue app.
- Built from scratch usign Vue 2 & Composition API with TypeScript
- For Vue >3.x version β
pnpm add v-offline@latest - For Vue >=2.7 version β
pnpm add v-offline@legacy - For Vue <2.7 version β
pnpm add v-offline@2.3.0
Live demo: v-offline.vinayakkulkarni.dev. The demo source is in example/. Run it locally with pnpm run demo:dev.
- vue
^3.x
pnpm add v-offline ping.jsCDN: UNPKG | jsDelivr (available as window.VOffline)
# install dependencies
$ pnpm install
# package the library
$ pnpm run build
# build the demo and deploy it to Cloudflare Workers
$ pnpm run deployGlobal component:
// main.ts
import { VOffline } from 'v-offline';
import { createApp } from 'vue';
const app = createApp({});
app.component('VOffline', VOffline);Or use locally
// component.vue
<script lang="ts">
import { defineComponent } from 'vue';
import { VOffline } from 'v-offline';
export default defineComponent({
components: {
VOffline,
},
});
</script>For Nuxt 3, create a file in plugins/v-offline.ts
import { VOffline } from 'v-offline';
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.component('VOffline', VOffline);
});then import the file in nuxt.config.{j|t}s:
export default {
// ...
plugins: [
// ...
{ src: '~/plugins/v-offline', mode: 'client' },
// ...
],
// ...
};<script setup lang="ts">
import { ref } from 'vue';
import { VOffline } from 'v-offline';
const online = ref(navigator.onLine);
function onNetworkChange(status: boolean) {
online.value = status;
}
</script>
<template>
<VOffline
online-class="online"
offline-class="offline"
@detected-condition="onNetworkChange"
>
<p>{{ online ? 'You are online' : 'You are offline' }}</p>
</VOffline>
</template>| Name | Type | Required? | Default | Description |
|---|---|---|---|---|
online-class |
String | No | '' | Styling the div which you want to give if you're online. |
offline-class |
String | No | '' | Styling the div which you want to give if you're offline. |
ping-url |
String | No | https://google.com | Pinging any url to double check if you're online or not. |
| Name | Returns | Description |
|---|---|---|
@detected-condition |
String | Emits a boolean value |
- Fork it ( https://github.com/vinayakkulkarni/v-offline/fork )
- Create your feature branch (
git checkout -b feat/new-feature) - Commit your changes (
git commit -Sam 'feat: add feature') - Push to the branch (
git push origin feat/new-feature) - Create a new Pull Request
Note:
- Please contribute using GitHub Flow
- Commits & PRs will be allowed only if the commit messages & PR titles follow the conventional commit standard, read more about it here
- PS. Ensure your commits are signed. Read why
- v-tweakpane β Vue 3 wrapper for Tweakpane GUI panels
- v-pip β Vue 3 wrapper for the Picture-in-Picture API
- v-intl β native Intl formatting components for Vue 3
- v-clappr β Vue 3 wrapper for the Clappr media player
- nxui β animated copy-paste UI components for Vue 3 and Nuxt
- shadscan-vue β UI-fundamentals audit for shadcn-vue apps
See every project at vinayakkulkarni.dev/projects and geoql.in.
v-offline Β© Vinayak, Released under the MIT License.
Authored and maintained by Vinayak Kulkarni with help from contributors (list).
vinayakkulkarni.dev Β· GitHub @vinayakkulkarni Β· Twitter @_vinayak_k