bottombar: навигационная панель по дизайну «Новое меню»
Панель стала единой навигационной: слева назад (в Конференциях — чаты), далее ярлыки-разделы Почта · Карточки · Конференции (активный подсвечен), справа выдвижное меню. Профиль/Уведомления/Настройки/Создать убраны из панели (Профиль/Уведомления/Настройки — в выдвижном меню; бейдж уведомлений перенесён на кнопку меню). Создание раньше вызывалось ТОЛЬКО из панели → чтобы не потерять: - новый общий компонент F7CreateButton (зелёный круг «+»); - добавлен в шапку Файлов (→ меню создания) и Контактов (→ добавить контакт). Задачи/Поддержка уже имели свои кнопки; Почта — «+» в шапке. F7BottomBarConfig упрощён (единый layout), F7MobileBottomBar получил слоты SectionMail/SectionCards/SectionConferences + activeTabKey.
This commit is contained in:
+20
-8
@@ -48,6 +48,7 @@ import coil.compose.AsyncImage
|
||||
import coil.request.ImageRequest
|
||||
import ru.forbion.f7cloud.core.auth.AuthSession
|
||||
import ru.forbion.f7cloud.core.designsystem.F7Colors
|
||||
import ru.forbion.f7cloud.core.designsystem.F7CreateButton
|
||||
import ru.forbion.f7cloud.core.designsystem.F7ModuleScreen
|
||||
|
||||
@Composable
|
||||
@@ -76,11 +77,23 @@ fun ContactsScreen(
|
||||
loading = state.loading && state.contacts.isEmpty(),
|
||||
error = state.error,
|
||||
) {
|
||||
ContactsSearchBar(
|
||||
serverUrl = session.serverUrl,
|
||||
query = state.searchQuery,
|
||||
onQueryChange = vm::setSearchQuery,
|
||||
)
|
||||
// Поиск + кнопка создания контакта (создание раньше вызывалось из нижней
|
||||
// панели, теперь — из шапки, панель стала навигационной)
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 8.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
ContactsSearchBar(
|
||||
serverUrl = session.serverUrl,
|
||||
query = state.searchQuery,
|
||||
onQueryChange = vm::setSearchQuery,
|
||||
modifier = Modifier.weight(1f),
|
||||
)
|
||||
F7CreateButton(onClick = vm::openAddSheet, size = 40.dp)
|
||||
}
|
||||
if (state.syncing && state.contacts.isNotEmpty()) {
|
||||
Text(
|
||||
"Обновление…",
|
||||
@@ -297,12 +310,11 @@ private fun ContactsSearchBar(
|
||||
serverUrl: String,
|
||||
query: String,
|
||||
onQueryChange: (String) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val base = serverUrl.trimEnd('/')
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 8.dp)
|
||||
modifier = modifier
|
||||
.height(40.dp)
|
||||
.shadow(2.dp, RoundedCornerShape(100.dp), spotColor = Color(0xFFCBCBCB))
|
||||
.clip(RoundedCornerShape(100.dp))
|
||||
|
||||
@@ -41,6 +41,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import ru.forbion.f7cloud.core.auth.AuthSession
|
||||
import ru.forbion.f7cloud.core.designsystem.F7AlertDialog
|
||||
import ru.forbion.f7cloud.core.designsystem.F7Colors
|
||||
import ru.forbion.f7cloud.core.designsystem.F7CreateButton
|
||||
import ru.forbion.f7cloud.core.designsystem.F7ModuleScreen
|
||||
import ru.forbion.f7cloud.core.designsystem.F7OverlayDismissHandler
|
||||
import ru.forbion.f7cloud.core.designsystem.F7OutlinedField
|
||||
@@ -189,6 +190,9 @@ fun FilesScreen(
|
||||
FilesViewToggleButton(viewMode) {
|
||||
viewMode = if (viewMode == FilesViewMode.List) FilesViewMode.Grid else FilesViewMode.List
|
||||
}
|
||||
// Создание (загрузка/новая папка) — раньше вызывалось из нижней панели,
|
||||
// теперь кнопка в шапке (нижняя панель стала навигационной)
|
||||
F7CreateButton(onClick = { showCreateMenu = true }, size = 40.dp)
|
||||
}
|
||||
// Хлебные крошки
|
||||
val crumbSegments = state.currentPath.split("/").filter { it.isNotBlank() }
|
||||
|
||||
Reference in New Issue
Block a user