1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3500 Primitives | Ui fixes (#2199)

This commit is contained in:
Konstantin Ivanov 2025-03-27 20:51:09 +01:00 committed by GitHub
parent 8abc29f526
commit 82ac6e47ec
Signed by: github
GPG key ID: B5690EEEBB952194
35 changed files with 270 additions and 78 deletions

View file

@ -22,6 +22,7 @@ import com.anytypeio.anytype.domain.page.CreateObject
import com.anytypeio.anytype.domain.primitives.FieldParser
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.search.SubscriptionEventChannel
import com.anytypeio.anytype.domain.types.CreateObjectType
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModel
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModelFactory
@ -143,6 +144,14 @@ object AllContentModule {
dispatchers: AppCoroutineDispatchers
): RemoveObjectsFromWorkspace = RemoveObjectsFromWorkspace(repo, dispatchers)
@Provides
@PerScreen
@JvmStatic
fun createObjectType(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CreateObjectType = CreateObjectType(repo, dispatchers)
@Module
interface Declarations {
@PerScreen

View file

@ -10,18 +10,23 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.fragment.compose.content
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.fragment.findNavController
import com.anytypeio.anytype.R
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.core_utils.ext.argString
import com.anytypeio.anytype.core_utils.ext.setupBottomSheetBehavior
import com.anytypeio.anytype.core_utils.ext.subscribe
import com.anytypeio.anytype.core_utils.ui.BaseBottomSheetComposeFragment
import com.anytypeio.anytype.di.common.componentManager
import com.anytypeio.anytype.feature_object_type.fields.ui.FieldsMainScreen
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeVmParams
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeVMFactory
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeViewModel
import javax.inject.Inject
import kotlin.getValue
import timber.log.Timber
class ObjectTypeFieldsFragment : BaseBottomSheetComposeFragment() {
@ -54,6 +59,27 @@ class ObjectTypeFieldsFragment : BaseBottomSheetComposeFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupBottomSheetBehavior(DEFAULT_PADDING_TOP)
subscribe(vm.commands) { command ->
Timber.d("Received command: $command")
when (command) {
is ObjectTypeCommand.OpenEditTypePropertiesScreen -> {
runCatching {
findNavController().navigate(
R.id.editTypePropertiesScreen,
EditTypePropertiesFragment.args(
objectId = command.typeId,
space = command.space
)
)
}.onFailure {
Timber.e(it, "Error while opening edit object type properties screen")
}
}
else -> {
// do nothing
}
}
}
}
override fun onStart() {

View file

@ -92,7 +92,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
}
ObjectTypeCommand.OpenFieldsScreen -> {
navComposeController.navigate(OBJ_TYPE_FIELDS)
navComposeController.navigate(OBJ_TYPE_PROPERTIES)
}
is ObjectTypeCommand.OpenEditTypePropertiesScreen -> {
@ -108,6 +108,10 @@ class ObjectTypeFragment : BaseComposeFragment() {
Timber.e(it, "Error while opening edit object type properties screen")
}
}
ObjectTypeCommand.CloseFieldsScreen -> {
navComposeController.popBackStack()
}
}
}
}
@ -149,7 +153,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
onTypeEvent = vm::onTypeEvent
)
}
composable(route = OBJ_TYPE_FIELDS) {
composable(route = OBJ_TYPE_PROPERTIES) {
FieldsMainScreen(
uiFieldsListState = vm.uiFieldsListState.collectAsStateWithLifecycle().value,
uiTitleState = vm.uiTitleState.collectAsStateWithLifecycle().value,
@ -232,7 +236,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
companion object {
private const val OBJ_TYPE_MAIN = "obj_type_main"
private const val OBJ_TYPE_FIELDS = "obj_fields"
private const val OBJ_TYPE_PROPERTIES = "obj_properties"
const val ARG_SPACE = "arg.object.type.space"
const val ARG_OBJECT_ID = "arg.object.type.object_id"

View file

@ -23,6 +23,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.unit.dp
import androidx.fragment.compose.AndroidFragment
import com.anytypeio.anytype.core_utils.ext.gone
import com.anytypeio.anytype.core_utils.insets.EDGE_TO_EDGE_MIN_SDK
import com.anytypeio.anytype.feature_object_type.R
import com.anytypeio.anytype.feature_object_type.ui.BottomSyncStatus
@ -187,6 +188,7 @@ private fun MainContentSet(
space = space
)
) { fragment ->
fragment.view?.findViewById<View>(R.id.topToolbar)?.gone()
fragment.view?.findViewById<View>(R.id.objectHeader)?.visibility =
View.GONE
}

View file

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="urn:oasis:names:tc:xliff:document:1.2">
<Transition
motion:constraintSetEnd="@+id/end"
@ -13,6 +14,17 @@
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@+id/topToolbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toTopOf="parent"
app:visibilityMode="ignore"
motion:visibilityMode="ignore">
<PropertySet android:visibility="gone" />
</Constraint>
<Constraint
android:id="@+id/objectHeader"
android:layout_width="0dp"
@ -106,6 +118,17 @@
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/topToolbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toTopOf="parent"
app:visibilityMode="ignore"
motion:visibilityMode="ignore">
<PropertySet android:visibility="gone" />
</Constraint>
<Constraint
android:id="@+id/objectHeader"
android:layout_width="0dp"

View file

@ -4,9 +4,12 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryCreateType
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryScreenRelation
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryScreenType
import com.anytypeio.anytype.analytics.base.EventsPropertiesKey
import com.anytypeio.anytype.analytics.base.sendEvent
import com.anytypeio.anytype.analytics.props.Props
import com.anytypeio.anytype.core_models.DVSortType
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.ObjectWrapper
@ -27,6 +30,7 @@ import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.page.CreateObject
import com.anytypeio.anytype.domain.primitives.FieldParser
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.types.CreateObjectType
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
import com.anytypeio.anytype.feature_allcontent.models.AllContentBottomMenu
import com.anytypeio.anytype.feature_allcontent.models.AllContentMenuMode
@ -112,7 +116,8 @@ class AllContentViewModel(
private val setObjectDetails: SetObjectDetails,
private val removeObjectsFromWorkspace: RemoveObjectsFromWorkspace,
private val userPermissionProvider: UserPermissionProvider,
private val fieldParser: FieldParser
private val fieldParser: FieldParser,
private val createObjectType: CreateObjectType
) : ViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
private val searchResultIds = MutableStateFlow<List<Id>>(emptyList())
@ -833,7 +838,39 @@ class AllContentViewModel(
when (item) {
UiContentItem.NewType -> {
viewModelScope.launch {
commands.emit(Command.OpenTypeCreation)
createObjectType.execute(
CreateObjectType.Params(
space = vmParams.spaceId.id,
name = ""
)
).fold(
onSuccess = { newType ->
val spaceParams = provideParams(vmParams.spaceId.id)
viewModelScope.sendEvent(
analytics = analytics,
eventName = libraryCreateType,
props = Props(
mapOf(
EventsPropertiesKey.permissions to spaceParams.permission,
EventsPropertiesKey.spaceType to spaceParams.spaceType
)
)
)
if (newType == null) {
Timber.e("Error while creating type")
return@fold
}
commands.emit(
NavigateToObjectType(
id = newType.id,
space = vmParams.spaceId.id
)
)
},
onFailure = {
Timber.e(it, "Error while creating type")
}
)
}
}
is UiContentItem.Type -> {

View file

@ -15,6 +15,7 @@ import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.page.CreateObject
import com.anytypeio.anytype.domain.primitives.FieldParser
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.types.CreateObjectType
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModel.VmParams
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
@ -36,7 +37,8 @@ class AllContentViewModelFactory @Inject constructor(
private val setObjectDetails: SetObjectDetails,
private val removeObjectsFromWorkspace: RemoveObjectsFromWorkspace,
private val userPermissionProvider: UserPermissionProvider,
private val fieldParser: FieldParser
private val fieldParser: FieldParser,
private val createObjectType: CreateObjectType
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T =
@ -56,6 +58,7 @@ class AllContentViewModelFactory @Inject constructor(
setObjectDetails = setObjectDetails,
removeObjectsFromWorkspace = removeObjectsFromWorkspace,
userPermissionProvider = userPermissionProvider,
fieldParser = fieldParser
fieldParser = fieldParser,
createObjectType = createObjectType
) as T
}

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_allcontent.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
import androidx.compose.foundation.layout.Box
@ -87,7 +88,11 @@ fun AllContentTopBarContainer(
onDismissRequest = { isMenuExpanded = false },
shape = RoundedCornerShape(size = 16.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
AllContentMenu(
uiMenuState = uiMenuState,

View file

@ -1,12 +1,13 @@
package com.anytypeio.anytype.feature_object_type.fields
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.feature_properties.add.UiEditTypePropertiesEvent
sealed class FieldEvent {
data object OnEditPropertyScreenDismiss : FieldEvent()
data object OnBackClick : FieldEvent()
data class OnFieldItemClick(val item: UiFieldsListItem) : FieldEvent()
sealed class FieldItemMenu : FieldEvent() {

View file

@ -36,7 +36,9 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
@ -69,6 +71,7 @@ import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem.Section
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListState
import com.anytypeio.anytype.feature_object_type.fields.UiLocalsFieldsInfoState
import com.anytypeio.anytype.feature_object_type.ui.TypeEvent
import com.anytypeio.anytype.feature_object_type.ui.UiIconState
import com.anytypeio.anytype.feature_object_type.ui.UiTitleState
import com.anytypeio.anytype.feature_properties.add.UiEditTypePropertiesEvent
@ -119,18 +122,20 @@ fun FieldsMainScreen(
modifier = Modifier
.nestedScroll(rememberNestedScrollInteropConnection())
.background(
color = colorResource(id = R.color.widget_background),
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)
color = colorResource(id = R.color.background_primary)
)
.fillMaxSize(),
containerColor = colorResource(id = R.color.transparent_black),
contentColor = colorResource(id = R.color.widget_background),
contentColor = colorResource(id = R.color.background_primary),
topBar = {
TopBar(
modifier = Modifier.fillMaxWidth(),
uiTitleState = uiTitleState,
uiIconState = uiIconState,
withDragger = withDragger
withDragger = withDragger,
onBackClick = {
fieldEvent(OnBackClick)
}
)
},
content = { paddingValues ->
@ -281,6 +286,7 @@ private fun TopBar(
withDragger: Boolean = true,
uiTitleState: UiTitleState,
uiIconState: UiIconState,
onBackClick: () -> Unit = {}
) {
val modifier = if (Build.VERSION.SDK_INT >= EDGE_TO_EDGE_MIN_SDK) {
modifier.windowInsetsPadding(WindowInsets.statusBars)
@ -290,8 +296,7 @@ private fun TopBar(
Column(
modifier = modifier
.background(
color = colorResource(id = R.color.widget_background),
shape = RoundedCornerShape(16.dp, 16.dp, 0.dp, 0.dp)
color = colorResource(id = R.color.background_primary),
)
) {
if (withDragger) {
@ -306,6 +311,25 @@ private fun TopBar(
.fillMaxWidth()
.height(48.dp)
) {
if (!withDragger) {
Box(
modifier = Modifier
.width(56.dp)
.height(48.dp)
.align(Alignment.CenterStart)
.noRippleThrottledClickable {
onBackClick()
},
contentAlignment = Alignment.Center
) {
Image(
modifier = Modifier.wrapContentSize(),
painter = painterResource(R.drawable.ic_default_top_back),
contentDescription = stringResource(R.string.content_desc_back_button)
)
}
}
Text(
modifier = Modifier
.wrapContentSize()
@ -526,6 +550,8 @@ private fun LazyItemScope.FieldItemDraggable(
) {
val isMenuExpanded = remember { mutableStateOf(false) }
val haptic = LocalHapticFeedback.current
ReorderableItem(
state = reorderingState,
key = item.id,
@ -554,6 +580,7 @@ private fun LazyItemScope.FieldItemDraggable(
fieldEvent(OnFieldItemClick(item = item))
},
onLongClick = {
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
// show your menu, only if NOT dragging
if (item.isPossibleToUnlinkFromType) {
isMenuExpanded.value = true

View file

@ -31,6 +31,8 @@ sealed class ObjectTypeCommand {
data object OpenFieldsScreen : ObjectTypeCommand()
data object CloseFieldsScreen : ObjectTypeCommand()
data class OpenEditTypePropertiesScreen(val typeId: Id, val space: Id) : ObjectTypeCommand()
}

View file

@ -16,6 +16,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -27,6 +28,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp
import com.anytypeio.anytype.core_ui.R
import com.anytypeio.anytype.core_ui.common.DefaultPreviews
@ -62,7 +64,8 @@ fun IconAndTitleWidget(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight(),
uiTitleState = uiTitleState,
initialName = uiTitleState.title,
enabled = uiTitleState.isEditable,
onTypeEvent = onTypeEvent,
)
}
@ -71,28 +74,35 @@ fun IconAndTitleWidget(
@Composable
fun NameField(
modifier: Modifier,
uiTitleState: UiTitleState,
initialName: String,
enabled: Boolean,
onTypeEvent: (TypeEvent) -> Unit
) {
var innerValue by remember(uiTitleState.title) { mutableStateOf(uiTitleState.title) }
var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(
TextFieldValue(initialName)
)
}
val focusManager = LocalFocusManager.current
val focusRequester = remember { FocusRequester() }
val keyboardController = LocalSoftwareKeyboardController.current
BasicTextField(
value = innerValue,
onValueChange = {
innerValue = it
value = textFieldValue,
onValueChange = { newValue ->
textFieldValue = newValue
onTypeEvent.invoke(
TypeEvent.OnObjectTypeTitleUpdate(
title = innerValue
title = textFieldValue.text
)
)
},
textStyle = HeadlineTitle.copy(color = colorResource(id = R.color.text_primary)),
singleLine = false,
enabled = uiTitleState.isEditable,
enabled = enabled,
cursorBrush = SolidColor(colorResource(id = R.color.text_primary)),
modifier = modifier
.padding(start = 12.dp, end = 20.dp)
@ -105,7 +115,7 @@ fun NameField(
focusManager.clearFocus()
onTypeEvent.invoke(
TypeEvent.OnObjectTypeTitleUpdate(
title = innerValue
title = textFieldValue.text
)
)
},
@ -116,7 +126,7 @@ fun NameField(
.height(32.dp),
contentAlignment = Alignment.CenterStart
) {
if (innerValue.isEmpty()) {
if (textFieldValue.text.isEmpty()) {
Text(
modifier = Modifier.wrapContentSize(),
text = stringResource(id = R.string.untitled),

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_object_type.ui.header
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxHeight
@ -145,6 +146,10 @@ fun TopToolbar(
},
shape = RoundedCornerShape(10.dp),
containerColor = colorResource(id = R.color.background_secondary),
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
DropdownMenuItem(
text = {

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_object_type.ui.icons
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.combinedClickable
@ -237,6 +238,10 @@ private fun IconPreviews(
shape = RoundedCornerShape(size = 20.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
Row(
modifier = Modifier.fillMaxWidth(),

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_object_type.ui.objects
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
@ -103,7 +104,11 @@ fun ObjectsHeader(
onDismissRequest = { isMenuExpanded = false },
shape = RoundedCornerShape(size = 16.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
when (val item = uiObjectsMenuState.objSetItem) {
UiMenuSetItem.CreateSet -> {

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_object_type.ui.templates
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.border
import androidx.compose.foundation.combinedClickable
@ -107,6 +108,10 @@ fun TemplatesList(
offset = DpOffset(
x = 20.dp,
y = (-300).dp
),
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
if (!item.isDefault) {

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_object_type.ui.templates
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.border
@ -203,6 +204,10 @@ private fun LazyItemScope.ItemContent(
shape = RoundedCornerShape(size = 10.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
if (!item.isDefault) {
DropdownMenuItem(

View file

@ -32,6 +32,7 @@ import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListState
import com.anytypeio.anytype.feature_object_type.fields.UiLocalsFieldsInfoState
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand.*
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeVmParams
import com.anytypeio.anytype.feature_object_type.ui.TypeEvent
import com.anytypeio.anytype.feature_object_type.ui.UiDeleteAlertState
@ -456,6 +457,7 @@ class ObjectTypeViewModel(
}
is TypeEvent.OnObjectTypeTitleUpdate -> {
uiTitleState.value = uiTitleState.value.copy(title = event.title)
updateTitle(event.title)
}
@ -698,7 +700,7 @@ class ObjectTypeViewModel(
FieldEvent.Section.OnAddToSidebarIconClick -> {
viewModelScope.launch {
commands.emit(
ObjectTypeCommand.OpenEditTypePropertiesScreen(
OpenEditTypePropertiesScreen(
typeId = vmParams.objectId,
space = vmParams.spaceId.id,
)
@ -747,6 +749,11 @@ class ObjectTypeViewModel(
}
is FieldEvent.EditProperty -> proceedWithEditPropertyEvent(event)
FieldEvent.OnBackClick -> {
viewModelScope.launch {
commands.emit(ObjectTypeCommand.CloseFieldsScreen)
}
}
}
}

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_properties.edit.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -111,6 +112,10 @@ fun PropertyEditScreen(
shape = RoundedCornerShape(size = 10.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
DropdownMenuItem(
modifier = Modifier.height(44.dp),

View file

@ -64,7 +64,8 @@ fun PropertyScreen(
modifier = modifier,
dragHandle = { DragHandle() },
scrimColor = colorResource(id = R.color.modal_screen_outside_background),
containerColor = colorResource(id = R.color.background_primary),
containerColor = colorResource(id = R.color.background_secondary),
contentColor = colorResource(id = R.color.background_secondary),
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
sheetState = bottomSheetState,
onDismissRequest = onDismissRequest,

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.feature_properties.edit.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -102,6 +103,10 @@ fun PropertyViewScreen(
shape = RoundedCornerShape(size = 10.dp),
containerColor = colorResource(id = R.color.background_primary),
shadowElevation = 5.dp,
border = BorderStroke(
width = 0.5.dp,
color = colorResource(id = R.color.background_secondary)
)
) {
DropdownMenuItem(
modifier = Modifier.height(44.dp),

View file

@ -1718,10 +1718,10 @@
<string name="space_settings_icon_title">Edit picture</string>
<string name="space_settings_save_button">Save</string>
<string name="object_type_add_property_screen_title">Дадаць уласцівасць</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1693,9 +1693,9 @@ Bitte mache hier genaue Angaben zu deinen Bedarf.</string>
<string name="space_settings_save_button">Speichern</string>
<string name="object_type_add_property_screen_title">Eigenschaft hinzufügen</string>
<string name="object_type_add_property_screen_create">Eigenschaft %1$s erstellen</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">Neue Eigenschaft</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1692,10 +1692,10 @@ En concreto,
<string name="space_settings_icon_title">Editar imagen</string>
<string name="space_settings_save_button">Guardar</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1689,10 +1689,10 @@ Merci de décrire ici vos besoins spécifiques.</string>
<string name="space_settings_icon_title">Modifier l\'image</string>
<string name="space_settings_save_button">Sauvegarder</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Formats des propriétés »</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Formats des propriétés</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1679,10 +1679,10 @@ Please provide specific details of your needs here.</string>
<string name="space_settings_icon_title">Sunting gambar</string>
<string name="space_settings_save_button">Simpan</string>
<string name="object_type_add_property_screen_title">Tambahkan properti</string>
<string name="object_type_add_property_screen_create">Buat properti \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Buat properti \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">Properti baru</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1692,7 +1692,7 @@ Geef alsjeblieft specifieke details van jouw wensen hier aan. </string>
<string name="space_settings_icon_title">Bewerk afbeelding</string>
<string name="space_settings_save_button">Sla op</string>
<string name="object_type_add_property_screen_title">Voeg eigenschap toe</string>
<string name="object_type_add_property_screen_create">Maak eigenschap \'%1$s\'\"</string>
<string name="object_type_add_property_screen_create">Maak eigenschap \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Eigenschappen formaten</string>
<string name="object_type_add_property_screen_section_existing">Bestaande eigenschappen</string>
<string name="object_type_add_property_screen_search_hint">Zoek of maak nieuwe</string>

View file

@ -1692,10 +1692,10 @@ Please provide specific details of your needs here.</string>
<string name="space_settings_icon_title">Edit picture</string>
<string name="space_settings_save_button">Save</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1689,10 +1689,10 @@ forneça detalhes específicos das suas necessidades aqui.</string>
<string name="space_settings_icon_title">Edit picture</string>
<string name="space_settings_save_button">Salvar</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1721,10 +1721,10 @@
<string name="space_settings_icon_title">Редактировать фотографию</string>
<string name="space_settings_save_button">Сохранить</string>
<string name="object_type_add_property_screen_title">Добавить свойство</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1692,10 +1692,10 @@ Lütfen ihtiyaçlarınızla ilgili özel ayrıntıları burada belirtin.</string
<string name="space_settings_icon_title">Resmi düzenle</string>
<string name="space_settings_save_button">Kaydet</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1718,10 +1718,10 @@ Please provide specific details of your needs here.</string>
<string name="space_settings_icon_title">Edit picture</string>
<string name="space_settings_save_button">Save</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1678,7 +1678,7 @@
<string name="object_type_add_property_screen_create">创建属性“%1$s”</string>
<string name="object_type_add_property_screen_section_types">属性格式”</string>
<string name="object_type_add_property_screen_section_existing">现有属性”</string>
<string name="object_type_add_property_screen_search_hint">搜索或新建\"</string>
<string name="object_type_add_property_screen_search_hint">搜索或新建</string>
<string name="new_property_hint">新建属性</string>
<string name="edit_property_limit_objects">将对象限制为</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1679,10 +1679,10 @@ Please provide specific details of your needs here.</string>
<string name="space_settings_icon_title">Edit picture</string>
<string name="space_settings_save_button">Save</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\"</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>
<string name="edit_property_limit_objects_all">Limit objects</string>

View file

@ -1970,10 +1970,10 @@ Please provide specific details of your needs here.</string>
<string name="space_settings_save_button">Save</string>
<string name="object_type_add_property_screen_title">Add property</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'"</string>
<string name="object_type_add_property_screen_section_types">Properties formats"</string>
<string name="object_type_add_property_screen_section_existing">Existing properties"</string>
<string name="object_type_add_property_screen_search_hint">Search or create new"</string>
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
<string name="object_type_add_property_screen_section_types">Properties formats</string>
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
<string name="new_property_hint">New property</string>
<string name="edit_property_limit_objects">Limit objects to</string>