123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- const state = {
- cartItems: {
- default: [],
- values: []
- },
- cartTotal: {
- default: 0,
- value: 0
- }
- }
- const getters = {
- /**
- *
- * @param {*} state
- */
- cartItems(state) {
- return state.cartItems.values
- },
- /**
- *
- * @param {*} state
- */
- cartTotal(state) {
- return state.cartTotal.value
- }
- }
- const mutations = {
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setCartItems(state, payload) {
- state.cartItems.values = [...payload]
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setTotal(state, payload) {
- state.cartTotal.value = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- addToCart(state, payload) {
- let productFound = state.cartItems.values.find(item => item.id === payload.id)
- if(productFound) {
- payload.qty = (payload.qty || 0) + 1
- return
- }
- state.cartItems.values = [payload, ...state.cartItems.values]
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- removeFromCart(state, payload) {
- let foundIndex = state.cartItems.values.findIndex(item => item.id === payload.id)
- state.cartItems.values.splice(foundIndex, 1)
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- decrementFromCart(state, payload) {
- let productFound = state.cartItems.values.find(item => item.id === payload.id)
- productFound.qty = productFound.qty - 1
- },
- /**
- *
- * @param {*} state
- */
- computeTotal(state) {
- state.cartTotal.value = state.cartItems.values.reduce((sum, item) => sum + ((item.price || item.listPrice) * (item.qty || 1)), 0)
- }
- }
- const actions = {
- /**
- * Add item to cart or increment item quantity if exist
- * @param {*} param0
- * @param {*} payload
- */
- addToCart({ commit }, payload) {
- commit('addToCart', payload)
- commit('computeTotal')
- },
- /**
- * Remove item from cart
- * @param {*} param0
- * @param {*} payload
- */
- removeFromCart({ commit }, payload) {
- commit('removeFromCart', payload)
- commit('computeTotal')
- },
- /**
- * Decrement item quantity from cart
- * @param {*} param0
- * @param {*} payload
- */
- decrementFromCart({ commit }, payload) {
- if (payload.qty > 1) {
- commit('decrementFromCart', payload)
- } else {
- commit('removeFromCart', payload)
- }
- commit('computeTotal')
- }
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|