Skip to content

Commit 4eef094

Browse files
committed
Add preview for rich text in control items
1 parent 82443d9 commit 4eef094

32 files changed

Lines changed: 140 additions & 2 deletions

File tree

core-test/src/main/java/com/orange/ouds/core/test/OudsCheckboxItemTest.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,10 @@ internal class OudsCheckboxItemTest {
7575
internal fun data() = OudsPreviewableComponent.CheckboxItem.ConstrainedMaxWidth.parameters
7676
}
7777
}
78-
}
78+
79+
class WithRichText : OudsComponentSnapshotTest(
80+
OudsPreviewableComponent.CheckboxItem.WithRichText,
81+
null,
82+
OudsComponentTestSuite.theme
83+
)
84+
}

core-test/src/main/java/com/orange/ouds/core/test/OudsRadioButtonItemTest.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,10 @@ internal class OudsRadioButtonItemTest {
7575
internal fun data() = OudsPreviewableComponent.RadioButtonItem.ConstrainedMaxWidth.parameters
7676
}
7777
}
78-
}
78+
79+
class WithRichText : OudsComponentSnapshotTest(
80+
OudsPreviewableComponent.RadioButtonItem.WithRichText,
81+
null,
82+
OudsComponentTestSuite.theme
83+
)
84+
}

core-test/src/main/java/com/orange/ouds/core/test/OudsSwitchItemTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,10 @@ internal class OudsSwitchItemTest {
6161
internal fun data() = OudsPreviewableComponent.SwitchItem.ConstrainedMaxWidth.parameters
6262
}
6363
}
64+
65+
class WithRichText : OudsComponentSnapshotTest(
66+
OudsPreviewableComponent.SwitchItem.WithRichText,
67+
null,
68+
OudsComponentTestSuite.theme
69+
)
6470
}

core/src/main/java/com/orange/ouds/core/component/OudsCheckboxItem.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import com.orange.ouds.core.utilities.OudsPreviewDevice
3939
import com.orange.ouds.core.utilities.OudsPreviewLightDark
4040
import com.orange.ouds.core.utilities.OudsPreviewableComponent
4141
import com.orange.ouds.core.utilities.PreviewEnumEntries
42+
import com.orange.ouds.core.utilities.buildPreviewAnnotatedErrorMessage
4243
import com.orange.ouds.core.utilities.getPreviewTheme
4344
import com.orange.ouds.theme.OudsThemeContract
4445

@@ -340,6 +341,28 @@ internal fun PreviewOudsCheckboxItemConstrainedMaxWidth(@PreviewParameter(OudsCo
340341
PreviewOudsCheckboxItemConstrainedMaxWidth(theme = getPreviewTheme(), constrainedMaxWidth = constrainedMaxWidth)
341342
}
342343

344+
@OudsPreviewLightDark
345+
@Composable
346+
@Suppress("PreviewShouldNotBeCalledRecursively")
347+
private fun PreviewOudsCheckboxItemWithRichText() {
348+
PreviewOudsCheckboxItemWithRichText(theme = getPreviewTheme(), darkThemeEnabled = isSystemInDarkTheme())
349+
}
350+
351+
@Composable
352+
internal fun PreviewOudsCheckboxItemWithRichText(
353+
theme: OudsThemeContract,
354+
darkThemeEnabled: Boolean
355+
) = OudsPreview(theme = theme, darkThemeEnabled = darkThemeEnabled) {
356+
OudsCheckboxItem(
357+
modifier = Modifier.padding(all = 10.dp),
358+
checked = true,
359+
label = "Label",
360+
onCheckedChange = {},
361+
divider = true,
362+
error = OudsError(buildPreviewAnnotatedErrorMessage()),
363+
)
364+
}
365+
343366
@Composable
344367
internal fun PreviewOudsCheckboxItemConstrainedMaxWidth(theme: OudsThemeContract, constrainedMaxWidth: Boolean) = OudsPreview(theme = theme) {
345368
OudsCheckboxItem(

core/src/main/java/com/orange/ouds/core/component/OudsRadioButtonItem.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.orange.ouds.core.utilities.OudsPreviewDevice
4242
import com.orange.ouds.core.utilities.OudsPreviewLightDark
4343
import com.orange.ouds.core.utilities.OudsPreviewableComponent
4444
import com.orange.ouds.core.utilities.PreviewEnumEntries
45+
import com.orange.ouds.core.utilities.buildPreviewAnnotatedErrorMessage
4546
import com.orange.ouds.core.utilities.getPreviewTheme
4647
import com.orange.ouds.theme.OudsThemeContract
4748

@@ -320,6 +321,28 @@ internal fun PreviewOudsRadioButtonItemConstrainedMaxWidth(theme: OudsThemeContr
320321
)
321322
}
322323

324+
@OudsPreviewLightDark
325+
@Composable
326+
@Suppress("PreviewShouldNotBeCalledRecursively")
327+
private fun PreviewOudsRadioButtonItemWithRichText() {
328+
PreviewOudsRadioButtonItemWithRichText(theme = getPreviewTheme(), darkThemeEnabled = isSystemInDarkTheme())
329+
}
330+
331+
@Composable
332+
internal fun PreviewOudsRadioButtonItemWithRichText(
333+
theme: OudsThemeContract,
334+
darkThemeEnabled: Boolean
335+
) = OudsPreview(theme = theme, darkThemeEnabled = darkThemeEnabled) {
336+
OudsRadioButtonItem(
337+
modifier = Modifier.padding(all = 10.dp),
338+
selected = true,
339+
label = "Label",
340+
onClick = {},
341+
divider = true,
342+
error = OudsError(buildPreviewAnnotatedErrorMessage()),
343+
)
344+
}
345+
323346
internal typealias OudsRadioButtonItemPreviewParameter = OudsControlItemPreviewParameter<Boolean, Boolean>
324347

325348
private val previewOutlinedValues = listOf(false, true, true)

core/src/main/java/com/orange/ouds/core/component/OudsSwitchItem.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ import com.orange.ouds.core.extensions.collectInteractionStateAsState
3535
import com.orange.ouds.core.utilities.LoremIpsumText
3636
import com.orange.ouds.core.utilities.OudsPreview
3737
import com.orange.ouds.core.utilities.OudsPreviewDevice
38+
import com.orange.ouds.core.utilities.OudsPreviewLightDark
3839
import com.orange.ouds.core.utilities.OudsPreviewableComponent
3940
import com.orange.ouds.core.utilities.PreviewEnumEntries
41+
import com.orange.ouds.core.utilities.buildPreviewAnnotatedErrorMessage
4042
import com.orange.ouds.core.utilities.getPreviewTheme
4143
import com.orange.ouds.theme.OudsThemeContract
4244

@@ -235,6 +237,29 @@ internal fun PreviewOudsSwitchItemConstrainedMaxWidth(theme: OudsThemeContract,
235237
)
236238
}
237239

240+
@OudsPreviewLightDark
241+
@Composable
242+
@Suppress("PreviewShouldNotBeCalledRecursively")
243+
private fun PreviewOudsSwitchItemWithRichText() {
244+
PreviewOudsSwitchItemWithRichText(theme = getPreviewTheme(), darkThemeEnabled = isSystemInDarkTheme())
245+
}
246+
247+
@Composable
248+
internal fun PreviewOudsSwitchItemWithRichText(
249+
theme: OudsThemeContract,
250+
darkThemeEnabled: Boolean
251+
) = OudsPreview(theme = theme, darkThemeEnabled = darkThemeEnabled) {
252+
OudsSwitchItem(
253+
modifier = Modifier.padding(all = 10.dp),
254+
checked = true,
255+
label = "Label",
256+
onCheckedChange = {},
257+
divider = true,
258+
error = OudsError(buildPreviewAnnotatedErrorMessage()),
259+
)
260+
}
261+
262+
238263
internal typealias OudsSwitchItemPreviewParameter = OudsControlItemPreviewParameter<Boolean, Nothing>
239264

240265
internal class OudsSwitchItemPreviewParameterProvider : OudsControlItemPreviewParameterProvider<Boolean, Nothing>(DefaultBooleanValues)

core/src/main/java/com/orange/ouds/core/utilities/OudsPreview.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ import androidx.compose.ui.tooling.preview.Preview
4141
import androidx.compose.ui.unit.Dp
4242
import androidx.compose.ui.unit.dp
4343
import androidx.compose.ui.unit.sp
44+
import com.orange.ouds.core.component.common.text.buildOudsAnnotatedErrorMessage
45+
import com.orange.ouds.core.component.common.text.withStrong
4446
import com.orange.ouds.core.extensions.isNightModeEnabled
4547
import com.orange.ouds.core.theme.LocalHighContrastModeEnabled
4648
import com.orange.ouds.core.theme.OudsTheme
@@ -114,6 +116,12 @@ internal fun OudsThemeContract.mapSettings(transform: (OudsThemeSettings) -> (Ou
114116

115117
internal fun getPreviewTheme(): OudsThemeContract = OrangeTheme(getPreviewOrangeFontFamily())
116118

119+
internal fun buildPreviewAnnotatedErrorMessage() = buildOudsAnnotatedErrorMessage {
120+
append("Error message with ")
121+
withStrong { append("strong") }
122+
append(" text")
123+
}
124+
117125
@Composable
118126
internal inline fun <reified T> getPreviewEnumEntry(): T? = LocalPreviewEnumEntry.current as? T
119127

core/src/main/java/com/orange/ouds/core/utilities/OudsPreviewableComponent.kt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ import com.orange.ouds.core.component.PreviewOudsCheckboxItemConstrainedMaxWidth
9191
import com.orange.ouds.core.component.PreviewOudsCheckboxItemHighContrastModeEnabled
9292
import com.orange.ouds.core.component.PreviewOudsCheckboxItemWithEdgeToEdgeDisabled
9393
import com.orange.ouds.core.component.PreviewOudsCheckboxItemWithLongDescription
94+
import com.orange.ouds.core.component.PreviewOudsCheckboxItemWithRichText
9495
import com.orange.ouds.core.component.PreviewOudsColoredBox
9596
import com.orange.ouds.core.component.PreviewOudsDivider
9697
import com.orange.ouds.core.component.PreviewOudsExtendedFloatingActionButton
@@ -115,13 +116,15 @@ import com.orange.ouds.core.component.PreviewOudsRadioButtonItemConstrainedMaxWi
115116
import com.orange.ouds.core.component.PreviewOudsRadioButtonItemHighContrastModeEnabled
116117
import com.orange.ouds.core.component.PreviewOudsRadioButtonItemWithDescriptionText
117118
import com.orange.ouds.core.component.PreviewOudsRadioButtonItemWithEdgeToEdgeDisabled
119+
import com.orange.ouds.core.component.PreviewOudsRadioButtonItemWithRichText
118120
import com.orange.ouds.core.component.PreviewOudsSmallFloatingActionButton
119121
import com.orange.ouds.core.component.PreviewOudsSuggestionChip
120122
import com.orange.ouds.core.component.PreviewOudsSwitch
121123
import com.orange.ouds.core.component.PreviewOudsSwitchItem
122124
import com.orange.ouds.core.component.PreviewOudsSwitchItemConstrainedMaxWidth
123125
import com.orange.ouds.core.component.PreviewOudsSwitchItemWithEdgeToEdgeDisabled
124126
import com.orange.ouds.core.component.PreviewOudsSwitchItemWithLongDescription
127+
import com.orange.ouds.core.component.PreviewOudsSwitchItemWithRichText
125128
import com.orange.ouds.core.component.PreviewOudsTag
126129
import com.orange.ouds.core.component.PreviewOudsTextArea
127130
import com.orange.ouds.core.component.PreviewOudsTextAreaConstrainedMaxWidth
@@ -411,6 +414,19 @@ interface OudsPreviewableComponent {
411414

412415
override fun isPreviewAvailable(darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean) = !darkThemeEnabled && !highContrastModeEnabled
413416
}
417+
418+
object WithRichText : OudsPreviewableComponent {
419+
420+
override val parameters: List<Any> = emptyList()
421+
422+
@Composable
423+
override fun Preview(theme: OudsThemeContract, darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean, parameter: Any?) {
424+
PreviewOudsCheckboxItemWithRichText(
425+
theme = theme,
426+
darkThemeEnabled = darkThemeEnabled
427+
)
428+
}
429+
}
414430
}
415431

416432
object Checkbox : OudsPreviewableComponent {
@@ -816,6 +832,18 @@ interface OudsPreviewableComponent {
816832
override fun isPreviewAvailable(darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean) = !darkThemeEnabled && !highContrastModeEnabled
817833
}
818834

835+
object WithRichText : OudsPreviewableComponent {
836+
837+
override val parameters: List<Any> = emptyList()
838+
839+
@Composable
840+
override fun Preview(theme: OudsThemeContract, darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean, parameter: Any?) {
841+
PreviewOudsRadioButtonItemWithRichText(
842+
theme = theme,
843+
darkThemeEnabled = darkThemeEnabled
844+
)
845+
}
846+
}
819847
}
820848

821849
object RadioButton : OudsPreviewableComponent {
@@ -909,6 +937,19 @@ interface OudsPreviewableComponent {
909937

910938
override fun isPreviewAvailable(darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean) = !darkThemeEnabled && !highContrastModeEnabled
911939
}
940+
941+
object WithRichText : OudsPreviewableComponent {
942+
943+
override val parameters: List<Any> = emptyList()
944+
945+
@Composable
946+
override fun Preview(theme: OudsThemeContract, darkThemeEnabled: Boolean, highContrastModeEnabled: Boolean, parameter: Any?) {
947+
PreviewOudsSwitchItemWithRichText(
948+
theme = theme,
949+
darkThemeEnabled = darkThemeEnabled
950+
)
951+
}
952+
}
912953
}
913954

914955
object Switch : OudsPreviewableComponent {
Loading
Loading

0 commit comments

Comments
 (0)