diff --git a/frontend/pages/createDocument/edit/[[id]].vue b/frontend/pages/createDocument/edit/[[id]].vue index 54aface..2937290 100644 --- a/frontend/pages/createDocument/edit/[[id]].vue +++ b/frontend/pages/createDocument/edit/[[id]].vue @@ -91,6 +91,7 @@ const selectedProductcategorie = ref(null) const services = ref([]) const servicecategories = ref([]) const selectedServicecategorie = ref(null) +const collapsedTitleRowIds = ref(new Set()) const customers = ref([]) const contacts = ref([]) const contracts = ref([]) @@ -928,6 +929,45 @@ const getPositionAddMenuItems = (row) => [ })) ] +const toggleTitleSection = (rowId) => { + const nextCollapsedTitleRowIds = new Set(collapsedTitleRowIds.value) + + if (nextCollapsedTitleRowIds.has(rowId)) { + nextCollapsedTitleRowIds.delete(rowId) + } else { + nextCollapsedTitleRowIds.add(rowId) + } + + collapsedTitleRowIds.value = nextCollapsedTitleRowIds +} + +const hiddenDocumentRowIds = computed(() => { + const hiddenRowIds = new Set() + const collapsedTitleLevels = [] + + itemInfo.value.rows.forEach((row) => { + if (row.mode === 'title') { + const titleLevel = Math.min(Math.max(Number(row.titleLevel) || 1, 1), 3) + + while ( + collapsedTitleLevels.length > 0 + && collapsedTitleLevels[collapsedTitleLevels.length - 1] >= titleLevel + ) { + collapsedTitleLevels.pop() + } + + if (collapsedTitleLevels.length > 0) hiddenRowIds.add(row.id) + if (collapsedTitleRowIds.value.has(row.id)) collapsedTitleLevels.push(titleLevel) + } else if (collapsedTitleLevels.length > 0) { + hiddenRowIds.add(row.id) + } + }) + + return hiddenRowIds +}) + +const isDocumentRowHidden = (rowId) => hiddenDocumentRowIds.value.has(rowId) + const getFullWidthPositionColspan = () => deliveryNoteLikeDocumentTypes.includes(itemInfo.value.type) ? 5 : 8 const getTitlePositionColspan = () => deliveryNoteLikeDocumentTypes.includes(itemInfo.value.type) ? 4 : 7 @@ -2875,7 +2915,7 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { @end="setPosNumbers" >