2
0

SelectableOutlineEditText.kt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package eu.mjdev.desktop.components.input
  2. import androidx.compose.foundation.interaction.MutableInteractionSource
  3. import androidx.compose.foundation.text.KeyboardActions
  4. import androidx.compose.foundation.text.KeyboardOptions
  5. import androidx.compose.foundation.text.selection.SelectionContainer
  6. import androidx.compose.material.LocalTextStyle
  7. import androidx.compose.material.OutlinedTextField
  8. import androidx.compose.material.TextFieldColors
  9. import androidx.compose.material.TextFieldDefaults
  10. import androidx.compose.runtime.Composable
  11. import androidx.compose.ui.Modifier
  12. import androidx.compose.ui.graphics.Shape
  13. import androidx.compose.ui.text.TextStyle
  14. import androidx.compose.ui.text.input.TextFieldValue
  15. import androidx.compose.ui.text.input.VisualTransformation
  16. @Composable
  17. fun SelectableOutlineEditText(
  18. value: String = "",
  19. onValueChange: (String) -> Unit = {},
  20. modifier: Modifier = Modifier,
  21. enabled: Boolean = true,
  22. readOnly: Boolean = false,
  23. textStyle: TextStyle = TextStyle.Default,
  24. label: @Composable (() -> Unit)? = null,
  25. placeholder: @Composable (() -> Unit)? = null,
  26. leadingIcon: @Composable (() -> Unit)? = null,
  27. trailingIcon: @Composable (() -> Unit)? = null,
  28. isError: Boolean = false,
  29. visualTransformation: VisualTransformation = VisualTransformation.None,
  30. keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
  31. keyboardActions: KeyboardActions = KeyboardActions.Default,
  32. singleLine: Boolean = false,
  33. maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
  34. minLines: Int = 1,
  35. interactionSource: MutableInteractionSource? = null,
  36. shape: Shape = TextFieldDefaults.OutlinedTextFieldShape,
  37. colors: TextFieldColors = TextFieldDefaults.outlinedTextFieldColors()
  38. ) = SelectionContainer(
  39. modifier = modifier
  40. ) {
  41. OutlinedTextField(
  42. value = value,
  43. onValueChange = onValueChange,
  44. enabled = enabled,
  45. readOnly = readOnly,
  46. textStyle = textStyle,
  47. label = label,
  48. placeholder = placeholder,
  49. leadingIcon = leadingIcon,
  50. trailingIcon = trailingIcon,
  51. isError = isError,
  52. visualTransformation = visualTransformation,
  53. keyboardOptions = keyboardOptions,
  54. keyboardActions = keyboardActions,
  55. maxLines = maxLines,
  56. minLines = minLines,
  57. interactionSource = interactionSource,
  58. shape = shape,
  59. colors = colors
  60. )
  61. }
  62. @Suppress("unused")
  63. @Composable
  64. fun SelectableOutlineEditText(
  65. value: TextFieldValue,
  66. onValueChange: (TextFieldValue) -> Unit,
  67. modifier: Modifier = Modifier,
  68. enabled: Boolean = true,
  69. readOnly: Boolean = false,
  70. textStyle: TextStyle = LocalTextStyle.current,
  71. label: @Composable (() -> Unit)? = null,
  72. placeholder: @Composable (() -> Unit)? = null,
  73. leadingIcon: @Composable (() -> Unit)? = null,
  74. trailingIcon: @Composable (() -> Unit)? = null,
  75. isError: Boolean = false,
  76. visualTransformation: VisualTransformation = VisualTransformation.None,
  77. keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
  78. keyboardActions: KeyboardActions = KeyboardActions.Default,
  79. singleLine: Boolean = false,
  80. maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
  81. minLines: Int = 1,
  82. interactionSource: MutableInteractionSource? = null,
  83. shape: Shape = TextFieldDefaults.OutlinedTextFieldShape,
  84. colors: TextFieldColors = TextFieldDefaults.outlinedTextFieldColors()
  85. ) = SelectionContainer(
  86. modifier = modifier
  87. ) {
  88. OutlinedTextField(
  89. value = value,
  90. onValueChange = onValueChange,
  91. enabled = enabled,
  92. readOnly = readOnly,
  93. textStyle = textStyle,
  94. label = label,
  95. placeholder = placeholder,
  96. leadingIcon = leadingIcon,
  97. trailingIcon = trailingIcon,
  98. isError = isError,
  99. visualTransformation = visualTransformation,
  100. keyboardOptions = keyboardOptions,
  101. keyboardActions = keyboardActions,
  102. maxLines = maxLines,
  103. minLines = minLines,
  104. interactionSource = interactionSource,
  105. shape = shape,
  106. colors = colors
  107. )
  108. }