Awesome
Vue2 Helpers
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
Features | Description |
---|---|
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
Features | Description |
---|---|
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.
Features | Description |
---|---|
createRouter (options: RouterOptions): Router | |
onBeforeRouteLeave (leaveGuard: NavigationGuard): void | |
onBeforeRouteUpdate (updateGuard: NavigationGuard): void | |
useRoute (): RouteLocationNormalized | Get Route instance |
useRouter (): Router | Get 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
Features | Description |
---|---|
createVuetify (options: UserVuetifyPreset): Vuetify | Create Vuetify Instance |
useVuetify (): Framework | Get Vuetify Instance. |
useTheme (): Theme | Get and set Theme variables. |
useDisplay (): Breakpoint | Get 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.
Props | Description |
---|---|
to | Target DOM (Specified by querySelector ) |
where | Insert innerHTML to target DOM. Accepts after or before . (Default is after ) |
disabled | boolean |
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
- Original version By ambit_tsai.
- Modified and add some feature by Logue.