🚀 Improve Settings' animations

* Smoother expanding/collapsing animation
This commit is contained in:
Acclorite 2024-08-31 18:44:43 +03:00
parent 633cbecc75
commit b432b7a3e5
34 changed files with 51 additions and 187 deletions

View file

@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
@ -78,7 +77,7 @@ import ua.acclorite.book_story.presentation.ui.Transitions
*/ */
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun LazyItemScope.ColorPresetSetting( fun ColorPresetSetting(
state: State<SettingsState>, state: State<SettingsState>,
onEvent: (SettingsEvent) -> Unit, onEvent: (SettingsEvent) -> Unit,
backgroundColor: Color, backgroundColor: Color,
@ -96,7 +95,6 @@ fun LazyItemScope.ColorPresetSetting(
Column( Column(
Modifier Modifier
.animateItem()
.fillMaxWidth() .fillMaxWidth()
.padding(vertical = verticalPadding) .padding(vertical = verticalPadding)
) { ) {

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -18,13 +16,12 @@ import ua.acclorite.book_story.presentation.ui.DarkTheme
* If true, dark theme applied to the app's theme. * If true, dark theme applied to the app's theme.
*/ */
@Composable @Composable
fun LazyItemScope.DarkThemeSetting( fun DarkThemeSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.dark_theme_option), title = stringResource(id = R.string.dark_theme_option),
modifier = Modifier.animateItem(),
buttons = DarkTheme.entries.map { buttons = DarkTheme.entries.map {
ButtonItem( ButtonItem(
it.toString(), it.toString(),

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWi
* If true, user can fast change color presets in Reader with swipes. * If true, user can fast change color presets in Reader with swipes.
*/ */
@Composable @Composable
fun LazyItemScope.FastColorPresetChangeSetting( fun FastColorPresetChangeSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SwitchWithTitle( SwitchWithTitle(
selected = state.value.fastColorPresetChange!!, selected = state.value.fastColorPresetChange!!,
modifier = Modifier.animateItem(),
title = stringResource(id = R.string.fast_color_preset_change_option), title = stringResource(id = R.string.fast_color_preset_change_option),
description = stringResource(id = R.string.fast_color_preset_change_option_desc), description = stringResource(id = R.string.fast_color_preset_change_option_desc),
onClick = { onClick = {

View file

@ -1,18 +1,16 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.data.MainState import ua.acclorite.book_story.presentation.data.MainState
import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle
import ua.acclorite.book_story.presentation.ui.ExpandingTransition
import ua.acclorite.book_story.presentation.ui.PureDark import ua.acclorite.book_story.presentation.ui.PureDark
import ua.acclorite.book_story.presentation.ui.SlidingTransition
import ua.acclorite.book_story.presentation.ui.isDark import ua.acclorite.book_story.presentation.ui.isDark
/** /**
@ -20,17 +18,11 @@ import ua.acclorite.book_story.presentation.ui.isDark
* If true, enables Pure Dark (OLED) theme. * If true, enables Pure Dark (OLED) theme.
*/ */
@Composable @Composable
fun LazyItemScope.PureDarkSetting( fun PureDarkSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SlidingTransition( ExpandingTransition(visible = state.value.darkTheme!!.isDark()) {
modifier = Modifier.animateItem(
fadeInSpec = null,
fadeOutSpec = null
),
visible = state.value.darkTheme!!.isDark(),
) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.pure_dark_option), title = stringResource(id = R.string.pure_dark_option),
buttons = PureDark.entries.map { buttons = PureDark.entries.map {

View file

@ -1,13 +1,11 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
@ -16,7 +14,7 @@ import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.data.MainState import ua.acclorite.book_story.presentation.data.MainState
import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle import ua.acclorite.book_story.presentation.screens.settings.components.SegmentedButtonWithTitle
import ua.acclorite.book_story.presentation.ui.BookStoryTheme import ua.acclorite.book_story.presentation.ui.BookStoryTheme
import ua.acclorite.book_story.presentation.ui.SlidingTransition import ua.acclorite.book_story.presentation.ui.ExpandingTransition
import ua.acclorite.book_story.presentation.ui.Theme import ua.acclorite.book_story.presentation.ui.Theme
import ua.acclorite.book_story.presentation.ui.ThemeContrast import ua.acclorite.book_story.presentation.ui.ThemeContrast
import ua.acclorite.book_story.presentation.ui.isDark import ua.acclorite.book_story.presentation.ui.isDark
@ -27,7 +25,7 @@ import ua.acclorite.book_story.presentation.ui.isPureDark
* Lets user change theme contrast levels. * Lets user change theme contrast levels.
*/ */
@Composable @Composable
fun LazyItemScope.ThemeContrastSetting( fun ThemeContrastSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
@ -45,13 +43,7 @@ fun LazyItemScope.ThemeContrastSetting(
isPureDark = state.value.pureDark!!.isPureDark(context = LocalContext.current), isPureDark = state.value.pureDark!!.isPureDark(context = LocalContext.current),
themeContrast = state.value.themeContrast!! themeContrast = state.value.themeContrast!!
) { ) {
SlidingTransition( ExpandingTransition(visible = state.value.theme != Theme.DYNAMIC) {
modifier = Modifier.animateItem(
fadeInSpec = null,
fadeOutSpec = null
),
visible = state.value.theme != Theme.DYNAMIC,
) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.theme_contrast_option), title = stringResource(id = R.string.theme_contrast_option),
enabled = state.value.theme != Theme.DYNAMIC, enabled = state.value.theme != Theme.DYNAMIC,

View file

@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
@ -57,7 +56,7 @@ import ua.acclorite.book_story.presentation.ui.isPureDark
* Lets user change app's theme from available in [Constants.THEMES]. * Lets user change app's theme from available in [Constants.THEMES].
*/ */
@Composable @Composable
fun LazyItemScope.ThemeSetting( fun ThemeSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit, onMainEvent: (MainEvent) -> Unit,
verticalPadding: Dp = 8.dp, verticalPadding: Dp = 8.dp,
@ -70,7 +69,6 @@ fun LazyItemScope.ThemeSetting(
Column( Column(
Modifier Modifier
.animateItem()
.fillMaxWidth() .fillMaxWidth()
.padding(vertical = verticalPadding) .padding(vertical = verticalPadding)
) { ) {

View file

@ -46,7 +46,6 @@ fun LazyListScope.ColorsSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -54,9 +53,7 @@ fun LazyListScope.ColorsSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -78,9 +75,7 @@ fun LazyListScope.ColorsSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -43,7 +43,6 @@ fun LazyListScope.ThemePreferencesSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -51,9 +50,7 @@ fun LazyListScope.ThemePreferencesSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -88,9 +85,7 @@ fun LazyListScope.ThemePreferencesSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -18,13 +16,12 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.
* Lets user choose between all and folders structure for Browse. * Lets user choose between all and folders structure for Browse.
*/ */
@Composable @Composable
fun LazyItemScope.BrowseFilesStructureSetting( fun BrowseFilesStructureSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.browse_files_structure_option), title = stringResource(id = R.string.browse_files_structure_option),
modifier = Modifier.animateItem(),
buttons = BrowseFilesStructure.entries.map { buttons = BrowseFilesStructure.entries.map {
ButtonItem( ButtonItem(
it.toString(), it.toString(),

View file

@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.Checkbox import androidx.compose.material3.Checkbox
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -55,14 +54,13 @@ fun LazyListScope.BrowseFilterSetting(
* @param onClick OnClick callback. * @param onClick OnClick callback.
*/ */
@Composable @Composable
private fun LazyItemScope.FilterItem( private fun FilterItem(
item: String, item: String,
isSelected: Boolean, isSelected: Boolean,
onClick: () -> Unit onClick: () -> Unit
) { ) {
Row( Row(
modifier = Modifier modifier = Modifier
.animateItem()
.fillMaxWidth() .fillMaxWidth()
.clickable { .clickable {
onClick() onClick()

View file

@ -1,39 +1,30 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.data.MainState import ua.acclorite.book_story.presentation.data.MainState
import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
import ua.acclorite.book_story.presentation.ui.SlidingTransition import ua.acclorite.book_story.presentation.ui.ExpandingTransition
/** /**
* Browse Grid Size setting. * Browse Grid Size setting.
* Lets user specify grid size to be displayed. * Lets user specify grid size to be displayed.
*/ */
@Composable @Composable
fun LazyItemScope.BrowseGridSizeSetting( fun BrowseGridSizeSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SlidingTransition( ExpandingTransition(visible = state.value.browseLayout == BrowseLayout.GRID) {
modifier = Modifier.animateItem(
fadeInSpec = null,
fadeOutSpec = null
),
visible = state.value.browseLayout == BrowseLayout.GRID,
) {
SliderWithTitle( SliderWithTitle(
value = state.value.browseGridSize!! value = state.value.browseGridSize!!
to " ${stringResource(R.string.browse_grid_size_per_row)}", to " ${stringResource(R.string.browse_grid_size_per_row)}",
valuePlaceholder = stringResource(id = R.string.browse_grid_size_auto), valuePlaceholder = stringResource(id = R.string.browse_grid_size_auto),
showPlaceholder = state.value.browseAutoGridSize!!, showPlaceholder = state.value.browseAutoGridSize!!,
modifier = Modifier.animateItem(),
fromValue = 0, fromValue = 0,
toValue = 10, toValue = 10,
title = stringResource(id = R.string.browse_grid_size_option), title = stringResource(id = R.string.browse_grid_size_option),

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -18,13 +16,12 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.
* Lets user choose between layouts(list, grid). * Lets user choose between layouts(list, grid).
*/ */
@Composable @Composable
fun LazyItemScope.BrowseLayoutSetting( fun BrowseLayoutSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.browse_layout_option), title = stringResource(id = R.string.browse_layout_option),
modifier = Modifier.animateItem(),
buttons = BrowseLayout.entries.map { buttons = BrowseLayout.entries.map {
ButtonItem( ButtonItem(
it.toString(), it.toString(),

View file

@ -1,33 +1,25 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.data.MainState import ua.acclorite.book_story.presentation.data.MainState
import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure
import ua.acclorite.book_story.presentation.ui.SlidingTransition import ua.acclorite.book_story.presentation.ui.ExpandingTransition
/** /**
* Browse Pin Favorite Directories setting. * Browse Pin Favorite Directories setting.
* If true, shows all favorite directories in root directory and moves them to the top in nested directories. * If true, shows all favorite directories in root directory and moves them to the top in nested directories.
*/ */
@Composable @Composable
fun LazyItemScope.BrowsePinFavoriteDirectoriesSetting( fun BrowsePinFavoriteDirectoriesSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SlidingTransition( ExpandingTransition(visible = state.value.browseFilesStructure == BrowseFilesStructure.DIRECTORIES) {
modifier = Modifier.animateItem(
fadeInSpec = null,
fadeOutSpec = null
),
visible = state.value.browseFilesStructure == BrowseFilesStructure.DIRECTORIES
) {
SwitchWithTitle( SwitchWithTitle(
selected = state.value.browsePinFavoriteDirectories!!, selected = state.value.browsePinFavoriteDirectories!!,
title = stringResource(id = R.string.browse_pin_favorite_directories_option), title = stringResource(id = R.string.browse_pin_favorite_directories_option),

View file

@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowDownward import androidx.compose.material.icons.filled.ArrowDownward
@ -69,7 +68,7 @@ fun LazyListScope.BrowseSortOrderSetting(
* @param onClick OnClick callback. * @param onClick OnClick callback.
*/ */
@Composable @Composable
private fun LazyItemScope.SortItem( private fun SortItem(
item: BrowseSortOrder, item: BrowseSortOrder,
isSelected: Boolean, isSelected: Boolean,
isDescending: Boolean, isDescending: Boolean,
@ -77,7 +76,6 @@ private fun LazyItemScope.SortItem(
) { ) {
Row( Row(
modifier = Modifier modifier = Modifier
.animateItem()
.fillMaxWidth() .fillMaxWidth()
.clickable { .clickable {
onClick() onClick()

View file

@ -40,7 +40,6 @@ fun LazyListScope.BrowseFilterSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -48,9 +47,7 @@ fun LazyListScope.BrowseFilterSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -62,9 +59,7 @@ fun LazyListScope.BrowseFilterSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -43,7 +43,6 @@ fun LazyListScope.BrowseGeneralSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -51,9 +50,7 @@ fun LazyListScope.BrowseGeneralSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -88,9 +85,7 @@ fun LazyListScope.BrowseGeneralSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -40,7 +40,6 @@ fun LazyListScope.BrowseSortSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -48,9 +47,7 @@ fun LazyListScope.BrowseSortSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -62,9 +59,7 @@ fun LazyListScope.BrowseSortSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -36,9 +36,7 @@ fun LazyListScope.GeneralSettingsCategory(
) { ) {
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
@ -66,9 +64,7 @@ fun LazyListScope.GeneralSettingsCategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.general.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.general.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -18,13 +16,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.ChipsWit
* Changes app's language. * Changes app's language.
*/ */
@Composable @Composable
fun LazyItemScope.AppLanguageSetting( fun AppLanguageSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
ChipsWithTitle( ChipsWithTitle(
title = stringResource(id = R.string.language_option), title = stringResource(id = R.string.language_option),
modifier = Modifier.animateItem(),
chips = Constants.LANGUAGES.sortedBy { it.second }.map { chips = Constants.LANGUAGES.sortedBy { it.second }.map {
ButtonItem( ButtonItem(
it.first, it.first,

View file

@ -3,14 +3,12 @@ package ua.acclorite.book_story.presentation.screens.settings.nested.general.com
import android.Manifest import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Security import androidx.compose.material.icons.filled.Security
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.ExperimentalPermissionsApi
@ -29,7 +27,7 @@ import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent
@OptIn(ExperimentalPermissionsApi::class) @OptIn(ExperimentalPermissionsApi::class)
@SuppressLint("InlinedApi") @SuppressLint("InlinedApi")
@Composable @Composable
fun LazyItemScope.CheckForUpdatesSetting( fun CheckForUpdatesSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit, onMainEvent: (MainEvent) -> Unit,
onSettingsEvent: (SettingsEvent) -> Unit onSettingsEvent: (SettingsEvent) -> Unit
@ -62,7 +60,6 @@ fun LazyItemScope.CheckForUpdatesSetting(
SwitchWithTitle( SwitchWithTitle(
selected = state.value.checkForUpdates!!, selected = state.value.checkForUpdates!!,
modifier = Modifier.animateItem(),
title = stringResource(id = R.string.check_for_updates_option), title = stringResource(id = R.string.check_for_updates_option),
description = stringResource(id = R.string.check_for_updates_option_desc) description = stringResource(id = R.string.check_for_updates_option_desc)
) { ) {

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.general.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.general.components.settings
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -17,13 +15,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWi
*/ */
@SuppressLint("InlinedApi") @SuppressLint("InlinedApi")
@Composable @Composable
fun LazyItemScope.DoublePressExitSetting( fun DoublePressExitSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SwitchWithTitle( SwitchWithTitle(
selected = state.value.doublePressExit!!, selected = state.value.doublePressExit!!,
modifier = Modifier.animateItem(),
title = stringResource(id = R.string.double_press_exit_option), title = stringResource(id = R.string.double_press_exit_option),
description = stringResource(id = R.string.double_press_exit_option_desc) description = stringResource(id = R.string.double_press_exit_option_desc)
) { ) {

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWi
* Changes Reader's double click translation. * Changes Reader's double click translation.
*/ */
@Composable @Composable
fun LazyItemScope.DoubleClickTranslationSetting( fun DoubleClickTranslationSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SwitchWithTitle( SwitchWithTitle(
selected = state.value.doubleClickTranslation!!, selected = state.value.doubleClickTranslation!!,
modifier = Modifier.animateItem(),
title = stringResource(id = R.string.double_click_translation_option), title = stringResource(id = R.string.double_click_translation_option),
description = stringResource(id = R.string.double_click_translation_option_desc), description = stringResource(id = R.string.double_click_translation_option_desc),
onClick = { onClick = {

View file

@ -1,11 +1,9 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -19,7 +17,7 @@ import ua.acclorite.book_story.presentation.screens.settings.components.ChipsWit
* Changes Reader's font, uses fonts from [Constants.FONTS]. * Changes Reader's font, uses fonts from [Constants.FONTS].
*/ */
@Composable @Composable
fun LazyItemScope.FontFamilySetting( fun FontFamilySetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
@ -31,7 +29,6 @@ fun LazyItemScope.FontFamilySetting(
ChipsWithTitle( ChipsWithTitle(
title = stringResource(id = R.string.font_family_option), title = stringResource(id = R.string.font_family_option),
modifier = Modifier.animateItem(),
chips = Constants.FONTS chips = Constants.FONTS
.map { .map {
ButtonItem( ButtonItem(

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SliderWi
* Changes Reader's font size. * Changes Reader's font size.
*/ */
@Composable @Composable
fun LazyItemScope.FontSizeSetting( fun FontSizeSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SliderWithTitle( SliderWithTitle(
value = state.value.fontSize!! to "pt", value = state.value.fontSize!! to "pt",
modifier = Modifier.animateItem(),
fromValue = 10, fromValue = 10,
toValue = 35, toValue = 35,
title = stringResource(id = R.string.font_size_option), title = stringResource(id = R.string.font_size_option),

View file

@ -1,11 +1,9 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
@ -20,7 +18,7 @@ import ua.acclorite.book_story.presentation.screens.settings.components.Segmente
* Changes Reader's font style (Normal/Italic). * Changes Reader's font style (Normal/Italic).
*/ */
@Composable @Composable
fun LazyItemScope.FontStyleSetting( fun FontStyleSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
@ -32,7 +30,6 @@ fun LazyItemScope.FontStyleSetting(
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.font_style_option), title = stringResource(id = R.string.font_style_option),
modifier = Modifier.animateItem(),
buttons = listOf( buttons = listOf(
ButtonItem( ButtonItem(
id = "normal", id = "normal",

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SliderWi
* Changes Reader's letter spacing. * Changes Reader's letter spacing.
*/ */
@Composable @Composable
fun LazyItemScope.LetterSpacingSetting( fun LetterSpacingSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SliderWithTitle( SliderWithTitle(
value = state.value.letterSpacing!! to "pt", value = state.value.letterSpacing!! to "pt",
modifier = Modifier.animateItem(),
fromValue = -8, fromValue = -8,
toValue = 16, toValue = 16,
title = stringResource(id = R.string.letter_spacing_option), title = stringResource(id = R.string.letter_spacing_option),

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SliderWi
* Changes Reader's line height. * Changes Reader's line height.
*/ */
@Composable @Composable
fun LazyItemScope.LineHeightSetting( fun LineHeightSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SliderWithTitle( SliderWithTitle(
value = state.value.lineHeight!! to "pt", value = state.value.lineHeight!! to "pt",
modifier = Modifier.animateItem(),
fromValue = 1, fromValue = 1,
toValue = 24, toValue = 24,
title = stringResource(id = R.string.line_height_option), title = stringResource(id = R.string.line_height_option),

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SliderWi
* Changes Reader's paragraph height. * Changes Reader's paragraph height.
*/ */
@Composable @Composable
fun LazyItemScope.ParagraphHeightSetting( fun ParagraphHeightSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SliderWithTitle( SliderWithTitle(
value = state.value.paragraphHeight!! to "pt", value = state.value.paragraphHeight!! to "pt",
modifier = Modifier.animateItem(),
fromValue = 0, fromValue = 0,
toValue = 36, toValue = 36,
title = stringResource(id = R.string.paragraph_height_option), title = stringResource(id = R.string.paragraph_height_option),

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWi
* Changes Reader's paragraph indentation. * Changes Reader's paragraph indentation.
*/ */
@Composable @Composable
fun LazyItemScope.ParagraphIndentationSetting( fun ParagraphIndentationSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SwitchWithTitle( SwitchWithTitle(
selected = state.value.paragraphIndentation!!, selected = state.value.paragraphIndentation!!,
modifier = Modifier.animateItem(),
title = stringResource(id = R.string.paragraph_indentation_option) title = stringResource(id = R.string.paragraph_indentation_option)
) { ) {
onMainEvent( onMainEvent(

View file

@ -1,9 +1,7 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
@ -15,13 +13,12 @@ import ua.acclorite.book_story.presentation.screens.settings.components.SliderWi
* Changes Reader's side padding. * Changes Reader's side padding.
*/ */
@Composable @Composable
fun LazyItemScope.SidePaddingSetting( fun SidePaddingSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SliderWithTitle( SliderWithTitle(
value = state.value.sidePadding!! to "pt", value = state.value.sidePadding!! to "pt",
modifier = Modifier.animateItem(),
fromValue = 1, fromValue = 1,
toValue = 20, toValue = 20,
title = stringResource(id = R.string.side_padding_option), title = stringResource(id = R.string.side_padding_option),

View file

@ -1,10 +1,8 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.ButtonItem import ua.acclorite.book_story.domain.model.ButtonItem
@ -18,13 +16,12 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.
* Changes Reader's text alignment (Start/Justify/Center/End). * Changes Reader's text alignment (Start/Justify/Center/End).
*/ */
@Composable @Composable
fun LazyItemScope.TextAlignmentSetting( fun TextAlignmentSetting(
state: State<MainState>, state: State<MainState>,
onMainEvent: (MainEvent) -> Unit onMainEvent: (MainEvent) -> Unit
) { ) {
SegmentedButtonWithTitle( SegmentedButtonWithTitle(
title = stringResource(id = R.string.text_alignment_option), title = stringResource(id = R.string.text_alignment_option),
modifier = Modifier.animateItem(),
buttons = ReaderTextAlignment.entries.map { buttons = ReaderTextAlignment.entries.map {
ButtonItem( ButtonItem(
id = it.toString(), id = it.toString(),

View file

@ -43,7 +43,6 @@ fun LazyListScope.FontSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -51,9 +50,7 @@ fun LazyListScope.FontSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -88,9 +85,7 @@ fun LazyListScope.FontSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -44,7 +44,6 @@ fun LazyListScope.TextSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -52,9 +51,7 @@ fun LazyListScope.TextSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -96,9 +93,7 @@ fun LazyListScope.TextSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }

View file

@ -40,7 +40,6 @@ fun LazyListScope.TranslatorSubcategory(
title = title.invoke(), title = title.invoke(),
color = titleColor.invoke(), color = titleColor.invoke(),
modifier = Modifier modifier = Modifier
.animateItem()
.padding( .padding(
top = topPadding, top = topPadding,
bottom = 8.dp bottom = 8.dp
@ -48,9 +47,7 @@ fun LazyListScope.TranslatorSubcategory(
) )
} else { } else {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
.animateItem()
.height((topPadding - 8.dp).coerceAtLeast(0.dp))
) )
} }
} }
@ -64,9 +61,7 @@ fun LazyListScope.TranslatorSubcategory(
item { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier.height(bottomPadding)
.animateItem()
.height(bottomPadding)
) )
} }
} }