2
0

VerticalScrollableBox.kt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright (c) Milan Jurkulák 2024.
  3. * Contact:
  4. * e: mimoccc@gmail.com
  5. * e: mj@mjdev.org
  6. * w: https://mjdev.org
  7. */
  8. package eu.mjdev.desktop.components.custom
  9. import androidx.compose.desktop.ui.tooling.preview.Preview
  10. import androidx.compose.foundation.layout.Box
  11. import androidx.compose.foundation.layout.BoxScope
  12. import androidx.compose.foundation.lazy.LazyListState
  13. import androidx.compose.foundation.lazy.rememberLazyListState
  14. import androidx.compose.runtime.Composable
  15. import androidx.compose.ui.Alignment
  16. import androidx.compose.ui.Modifier
  17. import eu.mjdev.desktop.extensions.Compose.isLandscapeMode
  18. import eu.mjdev.desktop.extensions.Compose.preview
  19. import eu.mjdev.desktop.extensions.Compose.verticalTouchScrollable
  20. @Composable
  21. fun VerticalScrollableBox(
  22. modifier: Modifier = Modifier,
  23. contentAlignment: Alignment = Alignment.TopStart,
  24. propagateMinConstraints: Boolean = isLandscapeMode(),
  25. state: LazyListState = rememberLazyListState(),
  26. content: @Composable BoxScope.() -> Unit = {}
  27. ) = Box(
  28. modifier = modifier.verticalTouchScrollable(state),
  29. contentAlignment = contentAlignment,
  30. propagateMinConstraints = propagateMinConstraints,
  31. ) {
  32. content.invoke(this)
  33. }
  34. @Preview
  35. @Composable
  36. fun VerticalScrollableBoxPreview() = preview {
  37. VerticalScrollableBox()
  38. }