57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
|
|
|
|
|
|
export const useWorkingFormStore = defineStore('working_form', {
|
|
state: () => ({
|
|
content: null,
|
|
|
|
// Field being edited
|
|
selectedFieldIndex: null,
|
|
showEditFieldSidebar: null,
|
|
showAddFieldSidebar: null
|
|
}),
|
|
actions: {
|
|
set (form) {
|
|
this.content = form
|
|
},
|
|
setProperties (properties) {
|
|
this.content.properties = properties
|
|
},
|
|
openSettingsForField (index) {
|
|
// If field is passed, compute index
|
|
if (typeof index === 'object') {
|
|
index = this.content.properties.findIndex(prop => prop.id === index.id)
|
|
}
|
|
this.selectedFieldIndex = index
|
|
this.showEditFieldSidebar = true
|
|
this.showAddFieldSidebar = false
|
|
},
|
|
closeEditFieldSidebar () {
|
|
this.selectedFieldIndex = null
|
|
this.showEditFieldSidebar = false
|
|
this.showAddFieldSidebar = false
|
|
},
|
|
openAddFieldSidebar (index) {
|
|
// If field is passed, compute index
|
|
if (index !== null && typeof index === 'object') {
|
|
index = this.content.properties.findIndex(prop => prop.id === index.id)
|
|
}
|
|
this.selectedFieldIndex = index
|
|
this.showAddFieldSidebar = true
|
|
this.showEditFieldSidebar = false
|
|
},
|
|
closeAddFieldSidebar () {
|
|
this.selectedFieldIndex = null
|
|
this.showAddFieldSidebar = false
|
|
this.showEditFieldSidebar = false
|
|
},
|
|
reset() {
|
|
this.content = null
|
|
this.selectedFieldIndex = null
|
|
this.showEditFieldSidebar = null
|
|
this.showAddFieldSidebar = null
|
|
}
|
|
}
|
|
})
|