From e6bc99d1440268d65d3b052437457129226b94fc Mon Sep 17 00:00:00 2001 From: NOrtmann1 Date: Thu, 8 Oct 2026 00:22:06 +0200 Subject: [PATCH] Update DocumentationEditScreen.kt --- .../edit/DocumentationEditScreen.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditScreen.kt b/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditScreen.kt index 073c005..cbf76c9 100644 --- a/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditScreen.kt +++ b/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditScreen.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons @@ -446,8 +447,28 @@ private fun DocumentationEditContent( onDeleteSignatureRequested: (signatureId: String) -> Unit, loadSignatureBitmap: suspend (documentationId: String, fileName: String) -> Bitmap?, ) { + val listState = rememberLazyListState() + + // Änderungswunsch: Beim Aufklappen eines Blocks dorthin scrollen, damit sein erster Eintrag + // sichtbar wird - wichtig bei langen Formularen, wenn ein weiter unten liegender Block + // aufgeklappt wird und sein Inhalt sonst unterhalb des sichtbaren Bereichs läge. Reagiert + // NUR auf tatsächliches Aufklappen (expandedBlockId wechselt zu einer konkreten Block-ID), + // nicht auf das Zuklappen (expandedBlockId wird null) - dort gibt es nichts, wohin gescrollt + // werden müsste. Da jeder Block GENAU EIN LazyColumn-Element ist (Kopfzeile + bei Bedarf + // aufgeklappter Inhalt gemeinsam, s. [BlockAccordionItem]) und die Block-Liste die ERSTEN + // Elemente der LazyColumn sind, landet der Block-Index 1:1 auf dem passenden + // LazyColumn-Index - der Block erscheint dadurch ganz oben im sichtbaren Bereich, sein + // erster Eintrag direkt darunter. + LaunchedEffect(expandedBlockId) { + val targetIndex = blocks.indexOfFirst { it.blockStateId == expandedBlockId } + if (targetIndex >= 0) { + listState.animateScrollToItem(targetIndex) + } + } + LazyColumn( modifier = modifier, + state = listState, contentPadding = PaddingValues(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp), ) {