AutoHideEmptyText.kt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package eu.mjdev.desktop.components.text
  2. import androidx.compose.desktop.ui.tooling.preview.Preview
  3. import androidx.compose.material.LocalTextStyle
  4. import androidx.compose.runtime.Composable
  5. import androidx.compose.ui.Modifier
  6. import androidx.compose.ui.graphics.Color
  7. import androidx.compose.ui.text.TextLayoutResult
  8. import androidx.compose.ui.text.TextStyle
  9. import androidx.compose.ui.text.font.FontFamily
  10. import androidx.compose.ui.text.font.FontStyle
  11. import androidx.compose.ui.text.font.FontWeight
  12. import androidx.compose.ui.text.style.TextAlign
  13. import androidx.compose.ui.text.style.TextDecoration
  14. import androidx.compose.ui.text.style.TextOverflow
  15. import androidx.compose.ui.unit.TextUnit
  16. import eu.mjdev.desktop.extensions.Compose.textFrom
  17. @Composable
  18. fun AutoHideEmptyText(
  19. text: Any? = "test",
  20. modifier: Modifier = Modifier,
  21. color: Color = Color.Unspecified,
  22. fontSize: TextUnit = TextUnit.Unspecified,
  23. fontStyle: FontStyle? = null,
  24. fontWeight: FontWeight? = null,
  25. fontFamily: FontFamily? = null,
  26. letterSpacing: TextUnit = TextUnit.Unspecified,
  27. textDecoration: TextDecoration? = null,
  28. textAlign: TextAlign? = null,
  29. lineHeight: TextUnit = TextUnit.Unspecified,
  30. overflow: TextOverflow = TextOverflow.Clip,
  31. softWrap: Boolean = true,
  32. singleLine: Boolean = false,
  33. maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
  34. minLines: Int = 1,
  35. onTextLayout: (TextLayoutResult) -> Unit = {},
  36. style: TextStyle = LocalTextStyle.current
  37. ) {
  38. val textAny = textFrom(text)
  39. if (textAny.isNotEmpty()) {
  40. TextAny(
  41. text = text,
  42. modifier = modifier,
  43. color = color,
  44. fontSize = fontSize,
  45. fontStyle = fontStyle,
  46. fontWeight = fontWeight,
  47. fontFamily = fontFamily,
  48. letterSpacing = letterSpacing,
  49. textDecoration = textDecoration,
  50. textAlign = textAlign,
  51. lineHeight = lineHeight,
  52. overflow = overflow,
  53. softWrap = softWrap,
  54. minLines = minLines,
  55. maxLines = maxLines,
  56. onTextLayout = onTextLayout,
  57. style = style
  58. )
  59. }
  60. }
  61. @Preview
  62. @Composable
  63. fun AutoHideEmptyTextPreview() = AutoHideEmptyText()