mirror of
https://github.com/JetBrains/intellij-platform-plugin-template.git
synced 2026-01-22 08:39:27 +00:00
Cleanup SearchBarWithAutoCompletion function parameters
This commit is contained in:
parent
a6435ba771
commit
5bae830655
@ -5,7 +5,6 @@ import androidx.compose.foundation.interaction.HoverInteraction
|
|||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.text.input.TextFieldState
|
import androidx.compose.foundation.text.input.TextFieldState
|
||||||
import androidx.compose.foundation.text.input.rememberTextFieldState
|
|
||||||
import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd
|
import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
@ -22,7 +21,6 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.window.PopupProperties
|
import androidx.compose.ui.window.PopupProperties
|
||||||
import androidx.compose.ui.zIndex
|
import androidx.compose.ui.zIndex
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.flow.onEach
|
|
||||||
import org.jetbrains.jewel.foundation.ExperimentalJewelApi
|
import org.jetbrains.jewel.foundation.ExperimentalJewelApi
|
||||||
import org.jetbrains.jewel.ui.component.Icon
|
import org.jetbrains.jewel.ui.component.Icon
|
||||||
import org.jetbrains.jewel.ui.component.PopupMenu
|
import org.jetbrains.jewel.ui.component.PopupMenu
|
||||||
@ -38,10 +36,10 @@ import org.jetbrains.plugins.template.weatherApp.services.SearchAutoCompletionIt
|
|||||||
internal fun <T> SearchBarWithAutoCompletion(
|
internal fun <T> SearchBarWithAutoCompletion(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<T>,
|
searchAutoCompletionItemProvider: SearchAutoCompletionItemProvider<T>,
|
||||||
textFieldState: TextFieldState = rememberTextFieldState(""),
|
textFieldState: TextFieldState,
|
||||||
searchFieldPlaceholder: String = "Type a place name...",
|
searchFieldPlaceholder: String = "Type a place name...",
|
||||||
onInputCleared: () -> Unit = {},
|
onClear: () -> Unit = {},
|
||||||
onItemAutocomplete: (T) -> Unit = {},
|
onSelectCompletion: (T) -> Unit = {},
|
||||||
) where T : Searchable, T : PreviewableItem {
|
) where T : Searchable, T : PreviewableItem {
|
||||||
val focusRequester = remember { FocusRequester() }
|
val focusRequester = remember { FocusRequester() }
|
||||||
|
|
||||||
@ -67,7 +65,7 @@ internal fun <T> SearchBarWithAutoCompletion(
|
|||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.handlePopupCompletionKeyEvents(popupController) { item ->
|
.handlePopupCompletionKeyEvents(popupController) { item ->
|
||||||
textFieldState.setTextAndPlaceCursorAtEnd(item.label)
|
textFieldState.setTextAndPlaceCursorAtEnd(item.label)
|
||||||
onItemAutocomplete(item)
|
onSelectCompletion(item)
|
||||||
}
|
}
|
||||||
.focusRequester(focusRequester),
|
.focusRequester(focusRequester),
|
||||||
placeholder = { Text(searchFieldPlaceholder) },
|
placeholder = { Text(searchFieldPlaceholder) },
|
||||||
@ -77,7 +75,7 @@ internal fun <T> SearchBarWithAutoCompletion(
|
|||||||
trailingIcon = {
|
trailingIcon = {
|
||||||
if (textFieldState.text.isNotBlank()) {
|
if (textFieldState.text.isNotBlank()) {
|
||||||
CloseIconButton {
|
CloseIconButton {
|
||||||
onInputCleared()
|
onClear()
|
||||||
textFieldState.setTextAndPlaceCursorAtEnd("")
|
textFieldState.setTextAndPlaceCursorAtEnd("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,9 +99,9 @@ internal fun <T> SearchBarWithAutoCompletion(
|
|||||||
) {
|
) {
|
||||||
popupController.filteredItems.forEach { item ->
|
popupController.filteredItems.forEach { item ->
|
||||||
selectableItem(
|
selectableItem(
|
||||||
popupController.isItemSelected(item),
|
popupController. isItemSelected(item),
|
||||||
onClick = {
|
onClick = {
|
||||||
onItemAutocomplete(item)
|
onSelectCompletion(item)
|
||||||
popupController.onItemAutocompleteConfirmed()
|
popupController.onItemAutocompleteConfirmed()
|
||||||
textFieldState.setTextAndPlaceCursorAtEnd(item.label)
|
textFieldState.setTextAndPlaceCursorAtEnd(item.label)
|
||||||
},
|
},
|
||||||
|
|||||||
@ -70,11 +70,11 @@ internal fun <T> SearchToolbarMenu(
|
|||||||
.align(Alignment.CenterVertically),
|
.align(Alignment.CenterVertically),
|
||||||
searchAutoCompletionItemProvider = searchAutoCompletionItemProvider,
|
searchAutoCompletionItemProvider = searchAutoCompletionItemProvider,
|
||||||
textFieldState = searchTextFieldState,
|
textFieldState = searchTextFieldState,
|
||||||
onInputCleared = {
|
onClear = {
|
||||||
isConfirmButtonVisible.value = false
|
isConfirmButtonVisible.value = false
|
||||||
previewItem.value = null
|
previewItem.value = null
|
||||||
},
|
},
|
||||||
onItemAutocomplete = { autocompletedItem ->
|
onSelectCompletion = { autocompletedItem ->
|
||||||
isConfirmButtonVisible.value = true
|
isConfirmButtonVisible.value = true
|
||||||
previewItem.value = autocompletedItem
|
previewItem.value = autocompletedItem
|
||||||
onSearchPerformed(autocompletedItem)
|
onSearchPerformed(autocompletedItem)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user