mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-13 08:41:46 +00:00
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
import Vue from 'vue'
|
|
|
|
const state = {}
|
|
|
|
const mutations = {
|
|
SET_FORM_DATA(state, { page, elementId, payload }) {
|
|
if (!page.formData) {
|
|
Vue.set(page, 'formData', {})
|
|
}
|
|
|
|
// When the payload is being initialized, if it
|
|
// doesn't have a 'touched' property, we set it to false
|
|
if (!Object.prototype.hasOwnProperty.call(payload, 'touched')) {
|
|
payload.touched = false
|
|
}
|
|
|
|
page.formData = { ...page.formData, [elementId]: payload }
|
|
},
|
|
REMOVE_FORM_DATA(state, { page, elementId }) {
|
|
page.formData = Object.fromEntries(
|
|
Object.entries(page.formData).filter(
|
|
([key]) => key !== elementId.toString()
|
|
)
|
|
)
|
|
},
|
|
SET_ELEMENT_TOUCHED(state, { page, elementId, wasTouched }) {
|
|
page.formData[elementId].touched = wasTouched
|
|
},
|
|
}
|
|
|
|
const actions = {
|
|
setFormData({ commit }, { page, elementId, payload }) {
|
|
commit('SET_FORM_DATA', { page, elementId, payload })
|
|
},
|
|
removeFormData({ commit }, { page, elementId }) {
|
|
commit('REMOVE_FORM_DATA', { page, elementId })
|
|
},
|
|
setElementTouched({ commit }, { page, elementId, wasTouched }) {
|
|
commit('SET_ELEMENT_TOUCHED', { page, elementId, wasTouched })
|
|
},
|
|
}
|
|
|
|
const getters = {
|
|
getFormData: (state) => (page) => {
|
|
return page.formData || {}
|
|
},
|
|
getElementTouched: (state, getters) => (page, elementId) => {
|
|
return page.formData[elementId].touched
|
|
},
|
|
}
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state,
|
|
actions,
|
|
getters,
|
|
mutations,
|
|
}
|