From 4342c4ec0793656c49730c3666be9fd0e3994064 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com> Date: Fri, 3 Mar 2023 18:01:40 +0100 Subject: [PATCH] Search bar --- .../createroom/root/CreateRoomRootScreen.kt | 75 ++++++++++++++++++- .../src/main/res/drawable/ic_search.xml | 26 +++++++ 2 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 libraries/designsystem/src/main/res/drawable/ic_search.xml diff --git a/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt b/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt index a48900349e..c1d9e8e05d 100644 --- a/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt +++ b/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt @@ -16,16 +16,27 @@ package io.element.android.features.createroom.root +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import io.element.android.libraries.designsystem.R import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.theme.components.CenterAlignedTopAppBar @@ -33,7 +44,8 @@ import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.libraries.ui.strings.R.string as StringR +import io.element.android.libraries.designsystem.R as DrawableR +import io.element.android.libraries.ui.strings.R as StringR @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -48,6 +60,18 @@ fun CreateRoomRootScreen( CreateRoomRootViewTopBar(onClosePressed = onClosePressed) } ) { + Column( + modifier = Modifier.padding(it) + ) { + SearchBar( + modifier = Modifier.padding(horizontal = 16.dp), + // TODO use resource string + placeHolderTitle = "Search for someone", + // TODO implement click behavior + onClickDescription = "", + onClick = {} + ) + } } } @@ -61,19 +85,62 @@ fun CreateRoomRootViewTopBar( modifier = modifier, title = { Text( - text = stringResource(id = StringR.start_chat), + text = stringResource(id = StringR.string.start_chat), fontSize = 16.sp, fontWeight = FontWeight.SemiBold, ) }, actions = { IconButton(onClick = onClosePressed) { - Icon(resourceId = R.drawable.ic_close, contentDescription = stringResource(id = StringR.action_close)) + Icon(resourceId = DrawableR.drawable.ic_close, contentDescription = stringResource(id = StringR.string.action_close)) } } ) } +// TODO export into design system package +// TODO comment that SearchBar is not yet implemented in Material3 compose +// and that TextField cannot be used since contentPadding cannot be changed +@Composable +fun SearchBar( + modifier: Modifier = Modifier, + placeHolderTitle: String, + onClickDescription: String = "", + onClick: () -> Unit = {}, +) { + Row( + modifier = modifier + .fillMaxWidth() + .height(48.dp) + .background( + color = MaterialTheme.colorScheme.surfaceVariant, + shape = RoundedCornerShape(28.dp), + ) + .clickable( + role = Role.Button, + onClickLabel = onClickDescription, + onClick = onClick, + ), + ) { + Text( + modifier = Modifier + .padding(horizontal = 16.dp) + .align(Alignment.CenterVertically) + .weight(1f) + .alpha(0.4f), + text = placeHolderTitle, + ) + Icon( + modifier = Modifier + .padding(horizontal = 16.dp) + .align(Alignment.CenterVertically) + .alpha(0.4f), + resourceId = DrawableR.drawable.ic_search, + contentDescription = stringResource(id = StringR.string.search) + ) + } +} + @Preview @Composable fun CreateRoomRootViewLightPreview(@PreviewParameter(CreateRoomRootStateProvider::class) state: CreateRoomRootState) = diff --git a/libraries/designsystem/src/main/res/drawable/ic_search.xml b/libraries/designsystem/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000000..f4b23a8463 --- /dev/null +++ b/libraries/designsystem/src/main/res/drawable/ic_search.xml @@ -0,0 +1,26 @@ + + + + +