const state = { suppliers: { default: [], values: [] }, filteredSuppliers: { default: [], values: [] }, supplierSelected: { default: null, value: null }, addSupplier: { default: false, value: false }, showSupplierForm: { default: false, value: false } } const getters = { /** * * @param {*} state */ suppliers(state) { return state.suppliers.values }, /** * * @param {*} state */ visibleSuppliers(state) { return state.filteredSuppliers.values.length === 0 ? state.suppliers.values : state.filteredSuppliers.values }, /** * * @param {*} state */ supplierSelected(state) { return state.supplierSelected.value }, /** * * @param {*} state */ showSupplierForm(state) { return state.showSupplierForm.value } } const mutations = { /** * * @param {*} state * @param {*} payload */ setSuppliers(state, payload) { state.suppliers.values = [...payload] }, /** * * @param {*} state * @param {*} payload */ setSupplierSelected(state, payload) { state.supplierSelected.value = payload }, /** * * @param {*} state * @param {*} payload */ setFilteredSuppliers(state, payload) { state.filteredSuppliers.values = [...payload] }, /** * * @param {*} state * @param {*} payload */ setShowSupplierForm(state, payload) { state.showSupplierForm.value = !!payload } } const actions = { /** * * @param {*} param0 * @param {*} payload */ selectSupplier({ commit }, payload) { commit('setSupplierSelected', payload) }, /** * * @param {*} param0 * @param {*} payload */ filterSuppliers({ commit }, payload) { commit('setFilteredSuppliers', payload) }, /** * * @param {*} param0 */ showSupplierForm({ commit }) { commit('setShowSupplierForm', true) }, /** * * @param {*} param0 */ hideSupplierForm({ commit }) { commit('setShowSupplierForm', false) }, /** * * @param {*} param0 */ submitSupplier({ dispatch }, payload) { if (payload) { if (!payload.name || !payload.ruc || !payload.phone) { dispatch('notify', 'Complete los campos para guardar') return } dispatch('createSupplier', payload) } dispatch('hideSupplierForm') } } export default { state, getters, mutations, actions }