Home

Awesome

Vue2 Helpers

jsdelivr CDN NPM Downloads Open in unpkg npm version Open in Gitpod Twitter Follow

A util package to use Vue 2 with Composition API easily. This fork supports Vuetify2.

@vue/composition-api is required separately when using under Vue 2.7.

Notice: Due to the implementation of patching vuex to support TypeScript5, it is necessary to include it in the package even if the project does not use vuex.

⬇️ Install

npm i -S @logue/vue2-helpers

or

yarn add -D @logue/vue2-helpers

📃 Usage

import { createVuexHelpers } from '@logue/vue2-helpers';
import { useRouter } from 'vue-router/composable';

const { useState } = createVuexHelpers<
    RootState, RootGetters, RootMutations, RootActions
>();
// Get a reactive and mutable ref object "stateA"
const { stateA } = useState('module', ['stateA']);

const router = useRouter();
router.push('/login');

✨ API

vue2-helpers

FeaturesDescription
createVuexHelpers<RootState, RootGetters, RootMutations, RootActions>(): {useState, useGetters, useMutations, useActions}The helper methods in return value are used to replace mapState, mapGetters, mapMutations, mapActions

CDN:

<script src="https://cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.global.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/index.iife.js"></script>

vue2-helpers/vuex

FeaturesDescription
createStore<S>(options: StoreOptions<S>): Store<S>
useStore<S = any>(): Store<S>Get Vuex store instance.

CDN:

<script src="https://cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.global.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/vuex.iife.js"></script>

vue2-helpers/vue-router

The dashed lines are left for compatibility, but since equivalent commands are supported on the vue-router side, they are flagged as deprecated. Please use them from now on.

FeaturesDescription
createRouter(options: RouterOptions): Router
onBeforeRouteLeave(leaveGuard: NavigationGuard): void
onBeforeRouteUpdate(updateGuard: NavigationGuard): void
useRoute(): RouteLocationNormalizedGet Route instance
useRouter(): RouterGet Router instance
router.isReady(): Promise<void>

CDN:

<script src="https://cdn.jsdelivr.net/npm/vue-router@3.6.5/dist/vue-router.global.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/vue-router.iife.js"></script>

vue2-helpers/vuetify

FeaturesDescription
createVuetify(options: UserVuetifyPreset): VuetifyCreate Vuetify Instance
useVuetify(): FrameworkGet Vuetify Instance.
useTheme(): ThemeGet and set Theme variables.
useDisplay(): BreakpointGet breakpoint, It's an API similar to Vuetify3's useDisplay.

CDN:

<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/vuetify.iife.js"></script>

vue-helpers/teleport

This is an alternative to vue3's teleport component. You can use the documentation provided by vue as a starting point to using this package.

It is mainly used for dynamic rewriting in the head tag and pouring Vue components into the DOM generated by external libraries other than Vue such as lightbox. This injected Vue component also contains Vue events.

PropsDescription
toTarget DOM (Specified by querySelector)
whereInsert innerHTML to target DOM. Accepts after or before. (Default is after)
disabledboolean

CDN:

<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/teleport.iife.js"></script>

Teleport Example

<template>
  <div>
    <button @click="modalOpen = true">
      Open full screen modal! (With teleport!)
    </button>

    <teleport to="body">
      <div v-if="modalOpen" class="modal">
        <div>
          I'm a teleported modal! (My parent is "body")
          <button @click="modalOpen = false">Close</button>
        </div>
      </div>
    </teleport>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';
import Teleport from '@logue/vue2-helpers/teleport';

export default defineComponent({
  components: {
    Teleport,
  },
  setup() {
    return {
      modalOpen: ref(false),
    };
  },
});
</script>

This component is rewritten to composition api of Mechazawa's vue2-teleport.

vue-helpers/h-demi (experimental)

This program is for library components developers. This is to resolve the incompatibility of the h function when creating a library that supports both Vue2 and Vue3. It is unnecessary if you do not use the h function.

See the address below for details. https://github.com/vueuse/vue-demi/issues/65

CDN:

<script src="https://cdn.jsdelivr.net/npm/vue-demi@latest/lib/index.iife.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@logue/vue2-helpers@latest/dist/h-demi.iife.js"></script>

License

Apache License Version 2.0