dev #257

Merged
flfeders merged 8 commits from dev into main 2026-11-04 10:35:20 +00:00
Showing only changes of commit 05b0c12841 - Show all commits

View File

@@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid';
import {useFunctions} from "~/composables/useFunctions.js"; import {useFunctions} from "~/composables/useFunctions.js";
import EntityModalButtons from "~/components/EntityModalButtons.vue"; import EntityModalButtons from "~/components/EntityModalButtons.vue";
import { documentTemplateHandlebars } from "~/utils/handlebars"; import { documentTemplateHandlebars } from "~/utils/handlebars";
import { getTitleSectionMove, moveTitleSection } from "~/utils/documentTitleSections.js";
const dataStore = useDataStore() const dataStore = useDataStore()
const profileStore = useProfileStore() const profileStore = useProfileStore()
@@ -1017,6 +1018,24 @@ const toggleTitleSection = (rowId) => {
collapsedTitleRowIds.value = nextCollapsedTitleRowIds collapsedTitleRowIds.value = nextCollapsedTitleRowIds
} }
const moveDocumentTitleSection = (rowId, direction) => {
if (itemInfo.value.type === 'cancellationInvoices') return
const rows = moveTitleSection(itemInfo.value.rows, rowId, direction)
if (rows === itemInfo.value.rows) return
itemInfo.value.rows = rows
setPosNumbers()
}
const getTitleSectionMoveMenuItems = (rowId) => [
{ label: 'Titelbereich nach oben', icon: 'i-heroicons-arrow-up', direction: 'up' },
{ label: 'Titelbereich nach unten', icon: 'i-heroicons-arrow-down', direction: 'down' }
].map(({ direction, ...item }) => ({
...item,
disabled: itemInfo.value.type === 'cancellationInvoices'
|| !getTitleSectionMove(itemInfo.value.rows, rowId, direction),
onSelect: () => moveDocumentTitleSection(rowId, direction)
}))
const hiddenDocumentRowIds = computed(() => { const hiddenDocumentRowIds = computed(() => {
const hiddenRowIds = new Set() const hiddenRowIds = new Set()
const collapsedTitleLevels = [] const collapsedTitleLevels = []
@@ -3116,7 +3135,7 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = {
v-model="itemInfo.rows" v-model="itemInfo.rows"
handle=".handle" handle=".handle"
tag="tbody" tag="tbody"
itemKey="pos" itemKey="id"
@end="setPosNumbers" @end="setPosNumbers"
> >
<template #item="{element: row}"> <template #item="{element: row}">
@@ -3141,6 +3160,21 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = {
@click="toggleTitleSection(row.id)" @click="toggleTitleSection(row.id)"
/> />
</UTooltip> </UTooltip>
<UDropdownMenu
v-if="row.mode === 'title' && itemInfo.type !== 'cancellationInvoices'"
:items="getTitleSectionMoveMenuItems(row.id)"
:content="{ align: 'start' }"
>
<UTooltip text="Titel mit untergeordneten Zeilen verschieben">
<UButton
class="shrink-0"
variant="ghost"
color="neutral"
icon="i-heroicons-arrows-up-down"
aria-label="Titel mit untergeordneten Zeilen verschieben"
/>
</UTooltip>
</UDropdownMenu>
</div> </div>
</td> </td>
<td <td