in plugin/src/main/kotlin/com/jetbrains/packagesearch/plugin/ui/panels/packages/PackageSearchCentralPanel.kt [21:57]
fun PackageSearchCentralPanel(
modifier: Modifier = Modifier,
onLinkClick: (String) -> Unit,
) = Column(modifier) {
val viewModel: PackageListViewModel = viewModel()
val searchQuery by viewModel.searchQueryStateFlow.collectAsState()
val isOnlineSearchEnabled by viewModel.isOnlineSearchEnabledFlow.collectAsState()
PackageSearchSearchBar(
onlineSearchEnabled = isOnlineSearchEnabled,
searchQuery = searchQuery,
onSearchQueryChange = { viewModel.setSearchQuery(it) },
onSearchQueryClear = { viewModel.clearSearchQuery() }
)
Divider(Orientation.Horizontal)
val packagesList by viewModel.packageListItemsFlow.collectAsState()
Box {
when {
packagesList.isEmpty() -> NoResultsToShow(onLinkClick)
else -> {
val isCompact by viewModel.isCompactFlow.collectAsState()
PackageSearchPackageList(
packagesList = packagesList,
isCompact = isCompact,
selectableLazyListState = viewModel.selectableLazyListState,
onPackageEvent = viewModel::onPackageListItemEvent,
)
VerticalScrollbar(
modifier = Modifier.fillMaxHeight().align(Alignment.CenterEnd),
scrollState = viewModel.selectableLazyListState.lazyListState,
)
}
}
val isLoading by viewModel.isLoadingFlow.collectAsState()
if (isLoading) IndeterminateHorizontalProgressBar(Modifier.fillMaxWidth())
}
}