anytype-kotlin-wild/core-ui/src/main/java/com/anytypeio/anytype/core_ui/relations/Common.kt

114 lines
3.9 KiB
Kotlin

package com.anytypeio.anytype.core_ui.relations
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
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.layout.wrapContentWidth
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.anytypeio.anytype.core_ui.R
import com.anytypeio.anytype.core_ui.foundation.noRippleClickable
import com.anytypeio.anytype.core_ui.views.PreviewTitle2Medium
import com.anytypeio.anytype.core_ui.views.Relations1
import com.anytypeio.anytype.presentation.relations.value.tagstatus.RelationsListItem
import com.anytypeio.anytype.presentation.relations.value.tagstatus.TagStatusAction
@Composable
fun CommonContainer(modifier: Modifier = Modifier, content: @Composable BoxScope.() -> Unit) {
Box(
modifier = modifier
.fillMaxWidth()
.height(52.dp)
.padding(horizontal = 20.dp),
content = content
)
}
@Composable
fun CircleIcon(number: String? = null, isSelected: Boolean, modifier: Modifier) {
if (isSelected && number != null) {
Box(
modifier = modifier
.background(
color = colorResource(id = R.color.palette_system_sky),
shape = CircleShape
)
) {
Text(
text = number,
style = PreviewTitle2Medium,
color = colorResource(id = R.color.text_white),
modifier = Modifier.align(Alignment.Center),
textAlign = TextAlign.Center
)
}
} else {
Box(
modifier = modifier
.border(
shape = CircleShape,
width = 1.5.dp,
color = colorResource(R.color.glyph_inactive)
)
)
}
}
@Composable
fun CheckedIcon(isSelected: Boolean, modifier: Modifier) {
if (isSelected) {
Image(
modifier = modifier,
painter = painterResource(id = R.drawable.ic_checkbox_selected),
contentDescription = "Selected"
)
} else {
Box(modifier)
}
}
@Composable
fun ItemTagOrStatusCreate(state: RelationsListItem.CreateItem, action: (TagStatusAction) -> Unit) {
CommonContainer(modifier = Modifier
.padding(top = 8.dp)
.noRippleClickable { action(TagStatusAction.Click(state)) }) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(end = 56.dp)
.align(alignment = Alignment.CenterStart),
verticalAlignment = Alignment.CenterVertically
) {
Image(
painter = painterResource(id = R.drawable.ic_default_plus),
contentDescription = "Create new tag"
)
val text = stringResource(id = R.string.relation_value_create_new, state.text)
Text(
text = text,
color = colorResource(id = R.color.text_primary),
modifier = Modifier
.wrapContentWidth()
.padding(start = 10.dp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = Relations1
)
}
}
}