Skip to content

Commit

Permalink
7953e better form editor (#580)
Browse files Browse the repository at this point in the history
* Form editor v2

* fix template test

* setFormDefaults when save

* fix form cleaning dark mode

* improvements on open sidebar

* UI polish

* Fix change type button

* Ability to drag & add multiple form blocks

---------

Co-authored-by: Chirag Chhatrala <chirag.chhatrala@gmail.com>
  • Loading branch information
JhumanJ and chiragchhatrala authored Sep 23, 2024
1 parent d6181cd commit 5dcd4ff
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
2 changes: 1 addition & 1 deletion client/components/open/forms/OpenForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ export default {
handleDragDropped(data) {
if (data.added) {
const targetIndex = this.getTargetFieldIndex(data.added.newIndex)
this.workingFormStore.addBlock(data.added.element, targetIndex)
this.workingFormStore.addBlock(data.added.element, targetIndex, false)
}
if (data.moved) {
const oldTargetIndex = this.getTargetFieldIndex(data.moved.oldIndex)
Expand Down
34 changes: 29 additions & 5 deletions client/stores/working_form.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export const useWorkingFormStore = defineStore("working_form", {
return data
},

addBlock(type, index = null) {
addBlock(type, index = null, openSettings = true) {
this.blockForm.type = type
this.blockForm.name = blocksTypes[type].default_block_name
const newBlock = this.prefillDefault(this.blockForm.data())
Expand Down Expand Up @@ -117,15 +117,39 @@ export const useWorkingFormStore = defineStore("working_form", {
const newFields = clonedeep(this.content.properties)
newFields.push(newBlock)
this.content.properties = newFields
this.openSettingsForField(
this.content.properties.length - 1,
)
if (openSettings) {
this.openSettingsForField(
this.content.properties.length - 1,
)
}
} else {
const fieldIndex = typeof index === "number" ? index : this.selectedFieldIndex + 1
const newFields = clonedeep(this.content.properties)
newFields.splice(fieldIndex, 0, newBlock)
this.content.properties = newFields
this.openSettingsForField(fieldIndex)
if (openSettings) {
this.openSettingsForField(fieldIndex)
}
}
},
removeField(field) {
this.internalRemoveField(field)
},
internalRemoveField(field) {
const index = this.objectToIndex(field)

if (index !== -1) {
useAlert().success('Ctrl + Z to undo',10000,{
title: 'Field removed',
actions: [{
label: 'Undo',
icon:"i-material-symbols-undo",
click: () => {
this.undo()
}
}]
})
this.content.properties.splice(index, 1)
}
},
removeField(field) {
Expand Down

0 comments on commit 5dcd4ff

Please sign in to comment.