Skip to content

Commit

Permalink
[#141] Rename ComponentCustomizationChipRow to ComponentChipRow
Browse files Browse the repository at this point in the history
  • Loading branch information
florentmaitre committed Jul 26, 2022
1 parent 7847a0e commit 389bd62
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ import com.orange.ods.compose.component.list.OdsListItemScope
import com.orange.ods.compose.component.list.divider
import com.orange.ods.compose.component.list.iconType
import com.orange.ods.demo.R
import com.orange.ods.demo.ui.components.utilities.ComponentChip
import com.orange.ods.demo.ui.components.utilities.ComponentChipRow
import com.orange.ods.demo.ui.components.utilities.ComponentCustomizationBottomSheetScaffold
import com.orange.ods.demo.ui.components.utilities.ComponentCustomizationChip
import com.orange.ods.demo.ui.components.utilities.ComponentCustomizationChipRow
import com.orange.ods.demo.ui.utilities.composable.Subtitle
import com.orange.ods.demo.ui.utilities.composable.SwitchListItem
import com.orange.ods.utilities.extension.orElse
Expand All @@ -57,25 +57,25 @@ fun ComponentLists() {
@Composable
private fun ComponentListsBottomSheetContent(variantListsState: VariantListsState) {
Subtitle(textRes = R.string.component_list_size, withHorizontalPadding = true)
ComponentCustomizationChipRow(variantListsState.selectedSize) {
ComponentCustomizationChip(textRes = R.string.component_list_size_single_line, value = VariantListsState.Size.SingleLine)
ComponentCustomizationChip(textRes = R.string.component_list_size_two_line, value = VariantListsState.Size.TwoLine)
ComponentCustomizationChip(textRes = R.string.component_list_size_three_line, value = VariantListsState.Size.ThreeLine)
ComponentChipRow(variantListsState.selectedSize) {
ComponentChip(textRes = R.string.component_list_size_single_line, value = VariantListsState.Size.SingleLine)
ComponentChip(textRes = R.string.component_list_size_two_line, value = VariantListsState.Size.TwoLine)
ComponentChip(textRes = R.string.component_list_size_three_line, value = VariantListsState.Size.ThreeLine)
}

Subtitle(textRes = R.string.component_list_leading, withHorizontalPadding = true)
ComponentCustomizationChipRow(variantListsState.selectedLeading) {
ComponentCustomizationChip(textRes = R.string.component_list_leading_none, value = VariantListsState.Leading.None)
ComponentCustomizationChip(textRes = R.string.component_list_leading_icon, value = VariantListsState.Leading.Icon)
ComponentCustomizationChip(textRes = R.string.component_list_leading_circular_image, value = VariantListsState.Leading.CircularImage)
ComponentCustomizationChip(textRes = R.string.component_list_leading_square_image, value = VariantListsState.Leading.SquareImage)
ComponentCustomizationChip(textRes = R.string.component_list_leading_wide_image, value = VariantListsState.Leading.WideImage)
ComponentChipRow(variantListsState.selectedLeading) {
ComponentChip(textRes = R.string.component_list_leading_none, value = VariantListsState.Leading.None)
ComponentChip(textRes = R.string.component_list_leading_icon, value = VariantListsState.Leading.Icon)
ComponentChip(textRes = R.string.component_list_leading_circular_image, value = VariantListsState.Leading.CircularImage)
ComponentChip(textRes = R.string.component_list_leading_square_image, value = VariantListsState.Leading.SquareImage)
ComponentChip(textRes = R.string.component_list_leading_wide_image, value = VariantListsState.Leading.WideImage)
}

Subtitle(textRes = R.string.component_list_trailing, withHorizontalPadding = true)
ComponentCustomizationChipRow(variantListsState.selectedTrailing) {
ComponentChipRow(variantListsState.selectedTrailing) {
variantListsState.trailings.forEach { trailing ->
ComponentCustomizationChip(textRes = trailing.textResId, value = trailing)
ComponentChip(textRes = trailing.textResId, value = trailing)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
*
* Copyright 2021 Orange
*
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
* /
*/

package com.orange.ods.demo.ui.components.utilities

import androidx.annotation.StringRes
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.selection.selectableGroup
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import com.google.accompanist.flowlayout.FlowRow
import com.orange.ods.compose.component.chip.OdsChip
import com.orange.ods.demo.R

@Composable
fun <T> ComponentChipRow(selectedChip: MutableState<T>, content: @Composable ComponentChipRowScope<T>.() -> Unit) {
FlowRow(
modifier = Modifier
.fillMaxWidth()
.selectableGroup()
.padding(horizontal = dimensionResource(id = R.dimen.ods_screen_horizontal_margin)),
mainAxisSpacing = dimensionResource(id = R.dimen.spacing_s),
content = { ComponentChipRowScope(selectedChip).content() }
)
}

@ExperimentalMaterialApi
@Composable
fun <T> ComponentChipRowScope<T>.ComponentChip(@StringRes textRes: Int, value: T) {
OdsChip(
text = stringResource(id = textRes),
selected = selectedChip.value == value,
onClick = { selectedChip.value = value }
)
}

data class ComponentChipRowScope<T>(val selectedChip: MutableState<T>)
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,21 @@

package com.orange.ods.demo.ui.components.utilities

import androidx.annotation.StringRes
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.selection.selectableGroup
import androidx.compose.material.BottomSheetScaffold
import androidx.compose.material.BottomSheetScaffoldState
import androidx.compose.material.BottomSheetValue
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.google.accompanist.flowlayout.FlowRow
import com.orange.ods.compose.component.chip.OdsChip
import com.orange.ods.compose.component.list.OdsListItem
import com.orange.ods.demo.R
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -71,23 +64,3 @@ fun ComponentCustomizationBottomSheetScaffold(
Box(modifier = Modifier.padding(innerPadding), content = content)
}
}

@Composable
fun <T> ComponentCustomizationChipRow(selectedChip: MutableState<T>, content: @Composable ChipRowScope<T>.() -> Unit) {
FlowRow(
modifier = Modifier
.fillMaxWidth()
.selectableGroup()
.padding(horizontal = dimensionResource(id = R.dimen.ods_screen_horizontal_margin)),
mainAxisSpacing = dimensionResource(id = R.dimen.spacing_s),
content = { ChipRowScope(selectedChip).content() }
)
}

@ExperimentalMaterialApi
@Composable
fun <T> ChipRowScope<T>.ComponentCustomizationChip(@StringRes textRes: Int, value: T) {
OdsChip(text = stringResource(id = textRes), selected = selectedChip.value == value, onClick = { selectedChip.value = value })
}

data class ChipRowScope<T>(val selectedChip: MutableState<T>)

0 comments on commit 389bd62

Please sign in to comment.