diff --git a/frappe/public/js/form_builder/components/FieldTypes.vue b/frappe/public/js/form_builder/components/FieldTypes.vue index 3e10ea6b36..0c7def7811 100644 --- a/frappe/public/js/form_builder/components/FieldTypes.vue +++ b/frappe/public/js/form_builder/components/FieldTypes.vue @@ -2,7 +2,9 @@ import SearchBox from "./SearchBox.vue"; import draggable from "vuedraggable"; import { ref, computed } from "vue"; +import { useStore } from "../store"; +let store = useStore(); let search_text = ref(""); function clone_field(field) { @@ -27,12 +29,7 @@ let fields = computed(() => { }) .map(df => { let out = { - df: { - label: "", - fieldname: "", - fieldtype: df, - options: "", - }, + df: store.get_df(df), table_columns: [], new_field: true, }; diff --git a/frappe/public/js/form_builder/components/Section.vue b/frappe/public/js/form_builder/components/Section.vue index b3394342e7..fa56cb5c5f 100644 --- a/frappe/public/js/form_builder/components/Section.vue +++ b/frappe/public/js/form_builder/components/Section.vue @@ -10,19 +10,21 @@ let store = useStore(); let hovered = ref(false); +let visible_columns = computed(() => props.section.columns.filter(c => !c.remove)); + function add_column() { - if (props.section.columns.length < 4) { + if (visible_columns.value.length < 4) { props.section.columns.push({ - df: { fieldtype: "Column Break" }, + df: store.get_df("Column Break", "column_break_" + frappe.utils.get_random(4)), new_field: true, - fields: [] + fields: [], }); } } function remove_column() { - if (props.section.columns.length <= 1) return; + if (visible_columns.value.length <= 1) return; - let columns = props.section.columns.slice(); + let columns = visible_columns.value.slice(); let last_column_fields = columns.slice(-1)[0].fields.slice(); let index = columns.length - 1; columns = columns.slice(0, index); @@ -36,25 +38,24 @@ let section_options = computed(() => { return [ { label: __("Add section above"), - action: () => emit("add_section_above") + action: () => emit("add_section_above"), }, { label: __("Add column"), action: add_column, - condition: () => props.section.columns.length < 4 + condition: () => visible_columns.value.length < 4, }, { label: __("Remove column"), action: remove_column, - condition: () => props.section.columns.length > 1 + condition: () => visible_columns.value.length > 1, }, { label: __("Remove section"), - action: () => props.section.remove = true + action: () => props.section.remove = true, } ].filter(option => (option.condition ? option.condition() : true)); }); -