From a68f6cdb966f0ef1dfe87d0fa80a7af7b078cc9e Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sat, 29 Oct 2022 17:54:39 +0200 Subject: [PATCH] Restored scroll to top button --- .../com/jetpackduba/gitnuro/ui/log/Log.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt index baeb764..8119ff6 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt @@ -218,6 +218,42 @@ fun Log( ), adapter = rememberScrollbarAdapter(horizontalScrollState) ) + + val isFirstItemVisible by remember { + derivedStateOf { verticalScrollState.firstVisibleItemIndex > 0 } + } + + if (isFirstItemVisible) { + Box( + modifier = Modifier + .align(Alignment.TopCenter) + .padding(top = 16.dp) + .clip(RoundedCornerShape(50)) + .handMouseClickable { + scope.launch { + verticalScrollState.scrollToItem(0) + } + } + .background(MaterialTheme.colors.primary) + .padding(vertical = 4.dp, horizontal = 8.dp), + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon( + painterResource("align_top.svg"), + contentDescription = null, + tint = MaterialTheme.colors.onPrimary, + modifier = Modifier.size(20.dp), + ) + + Text( + text = "Scroll to top", + modifier = Modifier.padding(start = 8.dp), + color = MaterialTheme.colors.onPrimary, + style = MaterialTheme.typography.body2, + ) + } + } + } } } }