# PathStore Vuex Plugin brings PathStore's API to Vuex (opens new window).

All methods from PathStore's API are registered as Vuex methods that trigger equivalent generic mutations. This way you get a reduced boilerplate Vuex development experience, while still having full visibility of Vuex mutations history in Vue Devtools.

Since Vuex modules use the root Vuex state, you can use PathStore Vuex Plugin's methods to set/get the state of Vuex modules as well.

You can use all Vuex features as before (getters/actions/mutations etc) along with PathStore Vuex Plugin's methods.

# Vuex Methods

Here's a quick list of the methods that are added to Vuex with the PathStore Vuex Plugin.
For more details you can refer to the PathStore API section

Method Short description Mutation
set(path, value) or set(map) Sets one or multiple values set
get(path) Retrieves a value get
toggle(path) Toggles a value to true/false toggle
del(path) or del(array) Deletes one or multiple properties del
pop(path) Removes and returns the last element of an array pop
push(path, value[, ...valueN]) Appends elements to the end of an array push
reverse(path) Reverses an array reverse
shift(path) Removes and returns the first element of an array shift
sort(path[, compareFunction]) Sorts an array sort
splice(path, index, [removeCount[, add]]) Removes or replaces array elements splice
unshift(path, value[, ...valueN]) Inserts elements to the beginning of an array unshift

# Installation

# Basic

Download the repo, extract pathStoreVuexPlugin.min.js out of the dist/umd folder and insert it in your page.

<script type="text/javascript" src="pathStoreVuexPlugin.min.js"></script>

# Module System

Install it via npm

npm i vue-path-store

Use the import statement to include it into your js

import { pathStoreVuexPlugin } from 'vue-path-store/dist/es/pathStoreVuexPlugin.js'

# Usage

PathStore Vuex Plugin is registered like any other Vuex plugin.

import Vue from 'vue'
import Vuex from 'vuex'
import { pathStoreVuexPlugin } from 'vue-path-store/dist/es/pathStoreVuexPlugin.js'

Vue.use(Vuex)

const store = new Vuex.Store({
  plugins: [pathStoreVuexPlugin],
  state: {
    count: 0,
    message: ''
  },
  // You can register mutations as usual
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

new Vue({
  el: '#app',
  store
})

Using it inside components

<template>
  <div>
    {{ $store.state.message }}
    <button @click="$store.set('message', 'New message')">
      Set message
    </button>
  </div>
</template>