Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewLightDark
import com.orange.ouds.app.R
import com.orange.ouds.app.ui.components.controlitem.ControlItemCustomizations
import com.orange.ouds.app.ui.components.controlitem.controlItemArguments
import com.orange.ouds.app.ui.components.onClickArgument
Expand Down Expand Up @@ -56,7 +54,8 @@ fun CheckboxItemDemoScreen(indeterminate: Boolean = false) {
private fun CheckboxItemDemoContent(state: CheckboxItemDemoState) {
with(state) {
Column {
CheckboxIdentifier.entries.forEach { identifier ->
CheckboxIdentifier.entries.forEachIndexed { index, identifier ->
val isLastItem = index == CheckboxIdentifier.entries.lastIndex
OudsCheckboxItem(
checked = when (identifier) {
CheckboxIdentifier.First -> checkedValues.first
Expand All @@ -75,7 +74,7 @@ private fun CheckboxItemDemoContent(state: CheckboxItemDemoState) {
reversed = reversed,
enabled = enabled,
readOnly = readOnly,
error = if (error) OudsError(stringResource(R.string.app_components_common_error_a11y)) else null
error = if (error) OudsError(if (isLastItem) errorMessage else "") else null
)
}
}
Expand All @@ -86,7 +85,8 @@ private fun CheckboxItemDemoContent(state: CheckboxItemDemoState) {
private fun IndeterminateCheckboxItemDemoContent(state: CheckboxItemDemoState) {
with(state) {
Column {
CheckboxIdentifier.entries.forEach { identifier ->
CheckboxIdentifier.entries.forEachIndexed { index, identifier ->
val isLastItem = index == CheckboxIdentifier.entries.lastIndex
OudsTriStateCheckboxItem(
state = when (identifier) {
CheckboxIdentifier.First -> toggleableStateValues.first
Expand All @@ -107,7 +107,7 @@ private fun IndeterminateCheckboxItemDemoContent(state: CheckboxItemDemoState) {
reversed = reversed,
enabled = enabled,
readOnly = readOnly,
error = if (error) OudsError(stringResource(R.string.app_components_common_error_a11y)) else null
error = if (error) OudsError(if (isLastItem) errorMessage else "") else null
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ fun rememberCheckboxItemDemoState(
enabled: Boolean = true,
readOnly: Boolean = false,
error: Boolean = false,
errorMessage: String = stringResource(id = R.string.app_components_common_errorMessage_label),
label: String = stringResource(id = R.string.app_components_common_label_label),
helperText: String? = null
) = rememberSaveable(
Expand All @@ -47,11 +48,12 @@ fun rememberCheckboxItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
helperText,
saver = CheckboxItemDemoState.Saver
) {
CheckboxItemDemoState(checkedValues, toggleableStateValues, icon, divider, reversed, enabled, readOnly, error, label, helperText)
CheckboxItemDemoState(checkedValues, toggleableStateValues, icon, divider, reversed, enabled, readOnly, error, errorMessage, label, helperText)
}

class CheckboxItemDemoState(
Expand All @@ -63,9 +65,10 @@ class CheckboxItemDemoState(
enabled: Boolean,
readOnly: Boolean,
error: Boolean,
errorMessage: String,
label: String,
helperText: String?
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, label, helperText) {
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, errorMessage, label, helperText) {

companion object {
val Saver = listSaver(
Expand All @@ -89,6 +92,7 @@ class CheckboxItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
helperText
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.orange.ouds.app.ui.utilities.ThemeDrawableResources
import com.orange.ouds.app.ui.utilities.composable.CustomizationSwitchItem
import com.orange.ouds.app.ui.utilities.composable.CustomizationTextField
import com.orange.ouds.core.component.OudsControlItemIcon
import com.orange.ouds.core.component.common.OudsError

data class ControlItemCustomization(val index: Int, val content: @Composable () -> Unit)

Expand All @@ -37,6 +38,7 @@ fun ControlItemCustomizations(state: ControlItemDemoState, extraCustomizations:
{ ControlItemEnabledCustomization(state = state) },
{ ControlItemReadOnlyCustomization(state = state) },
{ ControlItemErrorCustomization(state = state) },
{ ControlItemErrorMessageCustomization(state = state) },
{ ControlItemLabelCustomization(state = state) },
{ ControlItemHelperTextCustomization(state = state) }
)
Expand Down Expand Up @@ -115,6 +117,18 @@ private fun ControlItemErrorCustomization(state: ControlItemDemoState) {
}
}

@Composable
private fun ControlItemErrorMessageCustomization(state: ControlItemDemoState) {
with(state) {
CustomizationTextField(
label = stringResource(R.string.app_components_common_errorMessage_label),
value = errorMessage,
onValueChange = { value -> errorMessage = value },
enabled = errorMessageTextInputEnabled
)
}
}

@Composable
private fun ControlItemLabelCustomization(state: ControlItemDemoState) {
with(state) {
Expand All @@ -137,7 +151,7 @@ private fun ControlItemHelperTextCustomization(state: ControlItemDemoState) {
}
}

fun FunctionCall.Builder.controlItemArguments(state: ControlItemDemoState, themeDrawableResources: ThemeDrawableResources) = with(state) {
fun FunctionCall.Builder.controlItemArguments(state: ControlItemDemoState, themeDrawableResources: ThemeDrawableResources, hasErrorMessage: Boolean = false) = with(state) {
labelArgument(label)
if (!helperText.isNullOrBlank()) typedArgument("helperText", helperText)
if (icon) {
Expand All @@ -149,5 +163,9 @@ fun FunctionCall.Builder.controlItemArguments(state: ControlItemDemoState, theme
if (reversed) typedArgument("reversed", reversed)
if (!enabled) enabledArgument(enabled)
if (readOnly) typedArgument("readOnly", readOnly)
if (error) typedArgument("error", error)
if (error) {
constructorCallArgument<OudsError>("error") {
typedArgument("message", if (hasErrorMessage) errorMessage else "")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ open class ControlItemDemoState(
enabled: Boolean,
readOnly: Boolean,
error: Boolean,
errorMessage: String,
label: String,
helperText: String?
) {
Expand All @@ -40,6 +41,7 @@ open class ControlItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
helperText
)
Expand All @@ -54,7 +56,8 @@ open class ControlItemDemoState(
list[4] as Boolean,
list[5] as Boolean,
list[6] as String,
list[7] as String?
list[7] as String,
list[8] as String?
)
}
)
Expand All @@ -66,6 +69,7 @@ open class ControlItemDemoState(
var enabled: Boolean by mutableStateOf(enabled)
var readOnly: Boolean by mutableStateOf(readOnly)
var error: Boolean by mutableStateOf(error)
var errorMessage: String by mutableStateOf(errorMessage)
var label: String by mutableStateOf(label)
var helperText: String? by mutableStateOf(helperText)

Expand All @@ -77,4 +81,7 @@ open class ControlItemDemoState(

val errorSwitchEnabled: Boolean
get() = enabled && !readOnly

val errorMessageTextInputEnabled: Boolean
get() = error
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ private fun RadioButtonItemDemoBottomSheetContent(state: RadioButtonItemDemoStat
onCheckedChange = { outlined = it },
)
},
controlItemCustomization(8) {
controlItemCustomization(9) {
CustomizationTextField(
label = stringResource(R.string.app_components_radioButton_radioButtonItem_additionalLabel_label),
value = additionalLabel.orEmpty(),
Expand All @@ -77,7 +77,8 @@ private fun RadioButtonItemDemoBottomSheetContent(state: RadioButtonItemDemoStat
private fun RadioButtonItemDemoContent(state: RadioButtonItemDemoState) {
with(state) {
Column(modifier = Modifier.selectableGroup()) {
RadioButtonItemDemoState.values.forEach { radioButtonValue ->
RadioButtonItemDemoState.values.forEachIndexed { index, radioButtonValue ->
val isLastItem = index == RadioButtonItemDemoState.values.lastIndex
OudsRadioButtonItem(
selected = radioButtonValue == selectedValue,
onClick = { selectedValue = radioButtonValue },
Expand All @@ -90,7 +91,7 @@ private fun RadioButtonItemDemoContent(state: RadioButtonItemDemoState) {
reversed = reversed,
enabled = enabled,
readOnly = readOnly,
error = if (error) OudsError(stringResource(R.string.app_components_common_error_a11y)) else null
error = if (error) OudsError(if (isLastItem) errorMessage else "") else null
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ fun rememberRadioButtonItemDemoState(
enabled: Boolean = true,
readOnly: Boolean = false,
error: Boolean = false,
errorMessage: String = stringResource(id = R.string.app_components_common_errorMessage_label),
label: String = stringResource(id = R.string.app_components_common_label_label),
additionalLabel: String? = null,
helperText: String? = null
Expand All @@ -45,12 +46,13 @@ fun rememberRadioButtonItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
additionalLabel,
helperText,
saver = RadioButtonItemDemoState.Saver
) {
RadioButtonItemDemoState(selectedValue, icon, divider, outlined, reversed, enabled, readOnly, error, label, additionalLabel, helperText)
RadioButtonItemDemoState(selectedValue, icon, divider, outlined, reversed, enabled, readOnly, error, errorMessage, label, additionalLabel, helperText)
}

class RadioButtonItemDemoState(
Expand All @@ -62,10 +64,11 @@ class RadioButtonItemDemoState(
enabled: Boolean,
readOnly: Boolean,
error: Boolean,
errorMessage: String,
label: String,
additionalLabel: String?,
helperText: String?
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, label, helperText) {
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, errorMessage, label, helperText) {

companion object {
val values = listOf(1, 2)
Expand All @@ -92,6 +95,7 @@ class RadioButtonItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
list[2] as String?,
helperText
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@ package com.orange.ouds.app.ui.components.switch
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewLightDark
import com.orange.ouds.app.R
import com.orange.ouds.app.ui.components.controlitem.ControlItemCustomizations
import com.orange.ouds.app.ui.components.controlitem.controlItemArguments
import com.orange.ouds.app.ui.utilities.Code
Expand Down Expand Up @@ -56,7 +54,7 @@ private fun SwitchItemDemoContent(state: SwitchItemDemoState) {
reversed = reversed,
enabled = enabled,
readOnly = readOnly,
error = if (error) OudsError(stringResource(R.string.app_components_common_error_a11y)) else null
error = if (error) OudsError(errorMessage) else null
)
}
}
Expand All @@ -68,7 +66,7 @@ private fun Code.Builder.switchItemDemoCodeSnippet(state: SwitchItemDemoState, t
lambdaArgument("onCheckedChange") {
comment("Change state")
}
controlItemArguments(state, themeDrawableResources)
controlItemArguments(state, themeDrawableResources, true)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ fun rememberSwitchItemDemoState(
enabled: Boolean = true,
readOnly: Boolean = false,
error: Boolean = false,
errorMessage: String = stringResource(id = R.string.app_components_common_errorMessage_label),
text: String = stringResource(id = R.string.app_components_common_label_label),
helperText: String? = null
) = rememberSaveable(checked, icon, divider, reversed, enabled, readOnly, error, text, helperText, saver = SwitchItemDemoState.Saver) {
SwitchItemDemoState(checked, icon, divider, reversed, enabled, readOnly, error, text, helperText)
) = rememberSaveable(checked, icon, divider, reversed, enabled, readOnly, error, errorMessage, text, helperText, saver = SwitchItemDemoState.Saver) {
SwitchItemDemoState(checked, icon, divider, reversed, enabled, readOnly, error, errorMessage, text, helperText)
}

class SwitchItemDemoState(
Expand All @@ -45,9 +46,10 @@ class SwitchItemDemoState(
enabled: Boolean,
readOnly: Boolean,
error: Boolean,
errorMessage: String,
text: String,
helperText: String?
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, text, helperText) {
) : ControlItemDemoState(icon, divider, reversed, enabled, readOnly, error, errorMessage, text, helperText) {

companion object {

Expand All @@ -69,6 +71,7 @@ class SwitchItemDemoState(
enabled,
readOnly,
error,
errorMessage,
label,
helperText
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ private fun TextInputDemoBottomSheetContent(state: TextInputDemoState) {
enabled = errorSwitchEnabled
)
CustomizationTextField(
label = stringResource(R.string.app_components_textInput_errorDescription_label),
value = errorDescription,
onValueChange = { value -> errorDescription = value },
enabled = errorDescriptionTextInputEnabled
label = stringResource(R.string.app_components_common_errorMessage_label),
value = errorMessage,
onValueChange = { value -> errorMessage = value },
enabled = errorMessageTextInputEnabled
)
CustomizationTextField(
label = stringResource(R.string.app_components_common_label_label),
Expand Down Expand Up @@ -157,7 +157,7 @@ private fun TextInputDemoContent(state: TextInputDemoState) {
loader = if (hasLoader) OudsTextInputLoader(null) else null,
enabled = enabled,
readOnly = readOnly,
error = if (error) OudsError(errorDescription) else null,
error = if (error) OudsError(errorMessage) else null,
prefix = prefix,
suffix = suffix,
helperText = helperText,
Expand Down Expand Up @@ -196,7 +196,11 @@ private fun Code.Builder.textInputDemoCodeSnippet(state: TextInputDemoState, the
}
if (!enabled) typedArgument("enabled", false)
if (readOnly) typedArgument("readOnly", true)
if (error) typedArgument("error", true)
if (error) {
constructorCallArgument<OudsError>("error") {
typedArgument("message", errorMessage)
}
}
if (prefix.isNotEmpty()) typedArgument("prefix", prefix)
if (suffix.isNotEmpty()) typedArgument("suffix", suffix)
if (helperText.isNotEmpty()) typedArgument("helperText", helperText)
Expand Down
Loading