fix bottommsheet layout
This commit is contained in:
@@ -52,6 +52,7 @@ dependencies {
|
||||
implementation(libs.androidx.ui.graphics)
|
||||
implementation(libs.androidx.ui.tooling.preview)
|
||||
implementation(libs.androidx.material3)
|
||||
implementation(libs.androidx.foundation.layout.android)
|
||||
testImplementation(libs.junit)
|
||||
androidTestImplementation(libs.androidx.junit)
|
||||
androidTestImplementation(libs.androidx.espresso.core)
|
||||
|
||||
@@ -170,9 +170,6 @@ fun SearchTextFieldPrev() {
|
||||
fun SearchContextMenu(
|
||||
onSearch: (LksRequest) -> Unit
|
||||
) {
|
||||
|
||||
|
||||
|
||||
var name by remember { mutableStateOf("") }
|
||||
var surname by remember { mutableStateOf("") }
|
||||
var family by remember { mutableStateOf("") }
|
||||
@@ -180,9 +177,10 @@ fun SearchContextMenu(
|
||||
var group by remember { mutableStateOf("") }
|
||||
var departamnet by remember { mutableStateOf("") }
|
||||
|
||||
ContextMenuContainer {
|
||||
|
||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
modifier = Modifier.padding(horizontal = 24.dp)
|
||||
) {
|
||||
|
||||
SearchTextField(
|
||||
value = family,
|
||||
@@ -241,8 +239,6 @@ fun SearchContextMenu(
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun SearchContextMenuPrev() {
|
||||
@@ -314,7 +310,6 @@ fun LongPressCardContextMenu(
|
||||
onCopyName: (String) -> Unit,
|
||||
onCopyGroup: (String) -> Unit
|
||||
) {
|
||||
ContextMenuContainer {
|
||||
Column(verticalArrangement = Arrangement.spacedBy(16.dp)) {
|
||||
|
||||
Text(
|
||||
@@ -338,7 +333,6 @@ fun LongPressCardContextMenu(
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
package ru.megboyzz.lks.profile.ui.screens.sub
|
||||
|
||||
import android.view.ViewTreeObserver
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.ime
|
||||
import androidx.compose.material3.BottomSheetDefaults
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import kotlinx.coroutines.launch
|
||||
import ru.megboyzz.lks.profile.ui.components.SearchContextMenu
|
||||
import ru.megboyzz.lks.profile.ui.model.SearchViewModel
|
||||
@@ -18,15 +32,41 @@ fun SearchBottomSheet(onDismiss: () -> Unit) {
|
||||
|
||||
val viewModel by LocalMainActivity.current.viewModels<SearchViewModel>()
|
||||
|
||||
val sheetState = rememberModalBottomSheetState()
|
||||
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
val view = LocalView.current
|
||||
var isImeVisible by remember { mutableStateOf(false) }
|
||||
|
||||
// Observe keyboard visibility using ViewTreeObserver
|
||||
DisposableEffect(Unit) {
|
||||
val listener = ViewTreeObserver.OnPreDrawListener {
|
||||
// Check if the IME (keyboard) is visible
|
||||
isImeVisible = ViewCompat.getRootWindowInsets(view)
|
||||
?.isVisible(WindowInsetsCompat.Type.ime()) == true
|
||||
true
|
||||
}
|
||||
view.viewTreeObserver.addOnPreDrawListener(listener)
|
||||
onDispose {
|
||||
view.viewTreeObserver.removeOnPreDrawListener(listener)
|
||||
}
|
||||
}
|
||||
|
||||
ModalBottomSheet(
|
||||
sheetState = sheetState,
|
||||
onDismissRequest = onDismiss
|
||||
onDismissRequest = onDismiss,
|
||||
windowInsets = WindowInsets.ime,
|
||||
dragHandle = { BottomSheetDefaults.DragHandle() },
|
||||
modifier = Modifier.then(
|
||||
if (isImeVisible)
|
||||
Modifier.fillMaxHeight(1.0F) // Full height when keyboard is visible
|
||||
else
|
||||
Modifier.fillMaxHeight(0.73F) // Partial height when keyboard is hidden
|
||||
)
|
||||
) {
|
||||
SearchContextMenu { lksRequest ->
|
||||
viewModel.newSearch(lksRequest)
|
||||
onDismiss()
|
||||
coroutineScope.launch { sheetState.hide() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ jetbrainsKotlinJvm = "2.0.0"
|
||||
composeNavigation = "2.8.0-alpha08"
|
||||
room_version = "2.6.1"
|
||||
serialization = "1.6.3"
|
||||
foundationLayoutAndroid = "1.6.6"
|
||||
|
||||
[libraries]
|
||||
androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room_version" }
|
||||
@@ -38,6 +39,7 @@ androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit
|
||||
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
|
||||
navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "composeNavigation" }
|
||||
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization"}
|
||||
androidx-foundation-layout-android = { group = "androidx.compose.foundation", name = "foundation-layout-android", version.ref = "foundationLayoutAndroid" }
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||
|
||||
Reference in New Issue
Block a user