From 776a5889c17b9652772956db0f2c3ec761112c2b Mon Sep 17 00:00:00 2001 From: Siddharth Agarwal Date: Fri, 9 Aug 2024 13:21:59 +0530 Subject: [PATCH] Androapp 6259 mobile UI adapt showcase app for release (#280) * Add `ColumnComponentItemContainer` and update `ColumnComponentContainer` * Update `NoComponentSelectedScreen` design and add onClick param * Update action input group components showcase * Update group drop down * Update badge component showcase * Fix Group components drop down * Fix lint error for action input group components * Update basic text input group components showcase * Update button group components showcase * Update no group components showcase * Update option group components showcase * Fix `InputDropdown` modifier * Update bottom sheet group components showcase * Fix action input dropdown items label * Update list card and card details component showcase * Rename ColumnComponentContainer to ColumnScreenContainer and ColumnComponentItemContainer to ColumnContainerComponent * Update status bar colour of the app * Update snapshot test * Fix lint error * Fix background colour for group and component dropdown * Improve the usability --------- Co-authored-by: Siddharth Agarwal --- .../org/hisp/dhis/android/MainActivity.kt | 20 + .../kotlin/org/hisp/dhis/common/App.kt | 87 +- .../screens/{Components.kt => Groups.kt} | 4 +- .../screens/NoComponentSelectedScreen.kt | 35 +- .../screens/actionInputs/ActionInputsSreen.kt | 37 +- .../screens/actionInputs/InputAgeScreen.kt | 200 ++-- .../actionInputs/InputBarCodeScreen.kt | 166 ++-- .../actionInputs/InputCoordinateScreen.kt | 97 +- .../actionInputs/InputDateTimeScreen.kt | 214 ++--- .../screens/actionInputs/InputEmailScreen.kt | 134 ++- .../actionInputs/InputFileResourceScreen.kt | 146 +-- .../screens/actionInputs/InputImageScreen.kt | 129 ++- .../screens/actionInputs/InputLinkScreen.kt | 160 ++-- .../actionInputs/InputOrgUnitScreen.kt | 122 ++- .../actionInputs/InputPhoneNumberScreen.kt | 141 ++- .../actionInputs/InputPolygonScreen.kt | 93 +- .../screens/actionInputs/InputQRCodeScreen.kt | 100 +- .../actionInputs/InputSignatureScreen.kt | 125 ++- .../screens/actionInputs/LoginScreen.kt | 6 +- .../basicTextInputs/BasicTextInputsScreen.kt | 35 +- .../basicTextInputs/FormShellsScreen.kt | 6 +- .../basicTextInputs/InputIntegerScreen.kt | 104 +- .../basicTextInputs/InputLetterScreen.kt | 104 +- .../basicTextInputs/InputLongTextScreen.kt | 142 ++- .../InputNegativeIntegerScreen.kt | 120 ++- .../InputNotSupportedScreen.kt | 7 +- .../basicTextInputs/InputNumberScreen.kt | 123 ++- .../basicTextInputs/InputPercentageScreen.kt | 120 ++- .../InputPositiveIntegerOrZeroScreen.kt | 93 +- .../InputPositiveIntegerScreen.kt | 117 ++- .../basicTextInputs/InputTextScreen.kt | 125 ++- .../InputUnitIntervalScreen.kt | 129 ++- .../basicTextInputs/SupportingTextScreen.kt | 50 +- .../bottomSheets/BottomSheetHeaderScreen.kt | 139 ++- .../screens/bottomSheets/BottomSheetScreen.kt | 146 ++- .../bottomSheets/BottomSheetsScreen.kt | 17 +- .../bottomSheets/OrgTreeBottomSheetScreen.kt | 78 +- .../screens/buttons/ButtonBlockScreen.kt | 158 ++-- .../screens/buttons/ButtonCarouselScreen.kt | 44 +- .../common/screens/buttons/ButtonScreen.kt | 223 +++-- .../common/screens/buttons/ButtonsScreen.kt | 25 +- .../common/screens/buttons/CheckboxScreen.kt | 89 +- .../dhis/common/screens/buttons/FABScreen.kt | 141 ++- .../screens/buttons/IconButtonScreen.kt | 117 ++- .../screens/buttons/RadioButtonScreen.kt | 75 +- .../common/screens/buttons/SwitchScreen.kt | 39 +- .../common/screens/cards/CardDetailScreen.kt | 81 +- .../dhis/common/screens/cards/CardsScreen.kt | 9 +- .../common/screens/cards/ListCardScreen.kt | 894 +++++++++--------- .../components/GroupComponentDropDown.kt | 31 + .../common/screens/others/BadgesScreen.kt | 29 +- .../dhis/common/screens/others/ChipsScreen.kt | 159 ++-- .../common/screens/others/IndicatorScreen.kt | 4 +- .../common/screens/others/LegendScreen.kt | 148 ++- .../screens/others/MetadataAvatarScreen.kt | 4 +- .../common/screens/others/ProgressScreen.kt | 125 +-- .../common/screens/others/SearchBarScreen.kt | 50 +- .../common/screens/others/SectionScreen.kt | 138 ++- .../dhis/common/screens/others/TagsScreen.kt | 4 +- .../parameter/ParameterSelectorScreen.kt | 12 +- .../toggleableInputs/InputCheckBoxScreen.kt | 97 +- .../toggleableInputs/InputDropDownScreen.kt | 251 +++-- .../toggleableInputs/InputMatrixScreen.kt | 58 +- .../InputRadioButtonScreen.kt | 109 ++- .../toggleableInputs/InputSequentialScreen.kt | 55 +- .../toggleableInputs/InputYesNoFieldScreen.kt | 82 +- .../InputYesOnlyCheckBoxScreen.kt | 73 +- .../InputYesOnlySwitchScreen.kt | 87 +- .../MultiSelectInputScreen.kt | 268 +++--- .../toggleableInputs/ToggleableInputsSreen.kt | 28 +- .../ui/designsystem/AssistChipSnapshotTest.kt | 6 +- .../ui/designsystem/ButtonSnapshotTest.kt | 4 +- .../ui/designsystem/CardDetailSnapshotTest.kt | 7 +- .../mobile/ui/designsystem/FABSnapshotTest.kt | 7 +- .../ui/designsystem/InputAgeSnapshotTest.kt | 7 +- .../designsystem/InputCheckboxSnapshotTest.kt | 4 +- .../ui/designsystem/InputChipSnapshotTest.kt | 4 +- .../designsystem/InputDropDownSnapshotTest.kt | 4 +- .../InputIndicatorSnapshotTest.kt | 7 +- .../designsystem/InputMatrixSnapshotTest.kt | 7 +- .../InputRadioButtonSnapshotTest.kt | 4 +- .../InputSequentialSnapshotTest.kt | 7 +- .../ui/designsystem/LoginSnapshotTest.kt | 8 +- .../ui/designsystem/component/Container.kt | 53 +- .../designsystem/component/InputDropDown.kt | 7 +- .../ui/designsystem/component/InputStyle.kt | 2 +- ...ssistChipSnapshotTest_launchAssistChip.png | Bin 130 -> 19766 bytes ...uttonSnapshotTest_launchButtonSnapshot.png | Bin 130 -> 38931 bytes ...ardDetailSnapshotTest_launchCardDetail.png | Bin 131 -> 57720 bytes ...designsystem_FABSnapshotTest_launchFAB.png | Bin 130 -> 24643 bytes ...AgeSnapshotTest_launchInputAgeSnapshot.png | Bin 130 -> 68365 bytes ...eckboxSnapshotTest_launchInputCheckBox.png | Bin 130 -> 38913 bytes ...ystem_InputChipSnapshotTest_launchChip.png | Bin 129 -> 11470 bytes ...opDownSnapshotTest_launchInputDropDown.png | Bin 130 -> 42317 bytes ...catorSnapshotTest_launchIndicatorInput.png | Bin 130 -> 17654 bytes ...m_InputMatrixSnapshotTest_launchMatrix.png | Bin 130 -> 48665 bytes ...tonSnapshotTest_launchInputRadioButton.png | Bin 130 -> 42077 bytes ...putSequentialSnapshotTest_launchMatrix.png | Bin 130 -> 47028 bytes ...em_ListCardSnapshotTest_launchListCard.png | Bin 131 -> 123635 bytes ...em_LoginSnapshotTest_launchLoginScreen.png | Bin 130 -> 25407 bytes 100 files changed, 3704 insertions(+), 3812 deletions(-) rename common/src/commonMain/kotlin/org/hisp/dhis/common/screens/{Components.kt => Groups.kt} (85%) create mode 100644 common/src/commonMain/kotlin/org/hisp/dhis/common/screens/components/GroupComponentDropDown.kt diff --git a/android/src/main/java/org/hisp/dhis/android/MainActivity.kt b/android/src/main/java/org/hisp/dhis/android/MainActivity.kt index ef9acf5fe..b17de2cd7 100644 --- a/android/src/main/java/org/hisp/dhis/android/MainActivity.kt +++ b/android/src/main/java/org/hisp/dhis/android/MainActivity.kt @@ -3,10 +3,14 @@ package org.hisp.dhis.android import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle +import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.appcompat.app.AppCompatActivity +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.platform.LocalContext +import androidx.core.view.WindowCompat import org.hisp.dhis.common.App class MainActivity : AppCompatActivity() { @@ -14,6 +18,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContent { val res = LocalContext.current.resources + SetStatusBarColor() App( imageBitmapLoader = { BitmapFactory.decodeResource( @@ -27,3 +32,18 @@ class MainActivity : AppCompatActivity() { } } } + +@Composable +fun SetStatusBarColor() { + val context = LocalContext.current + val window = (context as? ComponentActivity)?.window + + SideEffect { + window?.let { + WindowCompat.getInsetsController(it, it.decorView).apply { + isAppearanceLightStatusBars = true + } + it.statusBarColor = 0xFFE2F2FF.toInt() + } + } +} diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/App.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/App.kt index 5d663b198..36503acb9 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/App.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/App.kt @@ -5,12 +5,14 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ImageBitmap -import org.hisp.dhis.common.screens.Components +import org.hisp.dhis.common.screens.Groups import org.hisp.dhis.common.screens.NoComponentSelectedScreen import org.hisp.dhis.common.screens.actionInputs.ActionInputsScreen import org.hisp.dhis.common.screens.basicTextInputs.BasicTextInputsScreen @@ -31,8 +33,11 @@ import org.hisp.dhis.common.screens.toggleableInputs.ToggleableInputsScreen import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState +import org.hisp.dhis.mobile.ui.designsystem.component.InputStyle import org.hisp.dhis.mobile.ui.designsystem.theme.DHIS2Theme +import org.hisp.dhis.mobile.ui.designsystem.theme.Shape import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing +import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor @Composable fun App(imageBitmapLoader: (() -> ImageBitmap)? = null) { @@ -45,50 +50,66 @@ fun App(imageBitmapLoader: (() -> ImageBitmap)? = null) { fun Main( imageBitmapLoader: (() -> ImageBitmap)?, ) { - val currentScreen = remember { mutableStateOf(Components.CARDS) } + val currentScreen = remember { mutableStateOf(Groups.NO_GROUP_SELECTED) } + var isComponentSelected by remember { mutableStateOf(false) } Column( verticalArrangement = Arrangement.spacedBy(Spacing.Spacing16), modifier = Modifier - .background(Color.White) - .padding(Spacing.Spacing16), + .background(SurfaceColor.Container), ) { val screenDropdownItemList = mutableListOf() - Components.entries.forEach { + Groups.entries.forEach { screenDropdownItemList.add(DropdownItem(it.label)) } - InputDropDown( - "Components", - dropdownItems = screenDropdownItemList.toList(), - onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, - onResetButtonClicked = { currentScreen.value = Components.NO_COMPONENT_SELECTED }, - state = InputShellState.UNFOCUSED, - selectedItem = DropdownItem(currentScreen.value.label), - ) + if (isComponentSelected) { + InputDropDown( + modifier = Modifier.padding( + start = Spacing.Spacing16, + end = Spacing.Spacing16, + top = Spacing.Spacing16, + ), + title = "Group", + dropdownItems = screenDropdownItemList.toList(), + onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, + onResetButtonClicked = { currentScreen.value = Groups.NO_GROUP_SELECTED }, + state = InputShellState.UNFOCUSED, + expanded = true, + selectedItem = DropdownItem(currentScreen.value.label), + inputStyle = InputStyle.DataInputStyle().apply { backGroundColor = SurfaceColor.SurfaceBright }, + ) - when (currentScreen.value) { - Components.ACTION_INPUTS -> ActionInputsScreen() - Components.BADGES -> BadgesScreen() - Components.BASIC_TEXT_INPUTS -> BasicTextInputsScreen() - Components.BOTTOM_SHEETS -> BottomSheetsScreen() - Components.BUTTONS -> ButtonsScreen() - Components.CARDS -> CardsScreen() - Components.CHIPS -> ChipsScreen() - Components.INDICATOR -> IndicatorScreen() - Components.LEGEND -> LegendScreen() - Components.METADATA_AVATAR -> MetadataAvatarScreen() - Components.PROGRESS_INDICATOR -> ProgressScreen() - Components.PARAMETER_SELECTOR -> ParameterSelectorScreen() - Components.SECTIONS -> SectionScreen() - Components.TOGGLEABLE_INPUTS -> ToggleableInputsScreen(imageBitmapLoader) - Components.TAGS -> TagsScreen() - Components.SEARCH_BAR -> SearchBarScreen() - Components.NO_COMPONENT_SELECTED -> NoComponentSelectedScreen() + when (currentScreen.value) { + Groups.ACTION_INPUTS -> ActionInputsScreen() + Groups.BADGES -> BadgesScreen() + Groups.BASIC_TEXT_INPUTS -> BasicTextInputsScreen() + Groups.BOTTOM_SHEETS -> BottomSheetsScreen() + Groups.BUTTONS -> ButtonsScreen() + Groups.CARDS -> CardsScreen() + Groups.CHIPS -> ChipsScreen() + Groups.INDICATOR -> IndicatorScreen() + Groups.LEGEND -> LegendScreen() + Groups.METADATA_AVATAR -> MetadataAvatarScreen() + Groups.PROGRESS_INDICATOR -> ProgressScreen() + Groups.PARAMETER_SELECTOR -> ParameterSelectorScreen() + Groups.SECTIONS -> SectionScreen() + Groups.TOGGLEABLE_INPUTS -> ToggleableInputsScreen(imageBitmapLoader) + Groups.TAGS -> TagsScreen() + Groups.SEARCH_BAR -> SearchBarScreen() + Groups.NO_GROUP_SELECTED -> NoComponentSelectedScreen() + } + } else { + NoComponentSelectedScreen( + modifier = Modifier + .background(Color.White, Shape.NoRounding), + ) { + isComponentSelected = !isComponentSelected + } } } } -fun getCurrentScreen(label: String): Components { - return Components.entries.firstOrNull { it.label == label } ?: Components.ACTION_INPUTS +fun getCurrentScreen(label: String): Groups { + return Groups.entries.firstOrNull { it.label == label } ?: Groups.ACTION_INPUTS } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Components.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Groups.kt similarity index 85% rename from common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Components.kt rename to common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Groups.kt index bf8fb927b..8c73b26df 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Components.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/Groups.kt @@ -1,6 +1,6 @@ package org.hisp.dhis.common.screens -enum class Components(val label: String) { +enum class Groups(val label: String) { ACTION_INPUTS("Action inputs"), BASIC_TEXT_INPUTS("Basic text Inputs"), BOTTOM_SHEETS("Bottom sheet components"), @@ -17,5 +17,5 @@ enum class Components(val label: String) { METADATA_AVATAR("Metadata Avatar"), INDICATOR("Indicators"), PARAMETER_SELECTOR("Parameter selector"), - NO_COMPONENT_SELECTED("No component selected"), + NO_GROUP_SELECTED("No group selected"), } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/NoComponentSelectedScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/NoComponentSelectedScreen.kt index dbf29db36..478321b6a 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/NoComponentSelectedScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/NoComponentSelectedScreen.kt @@ -1,9 +1,7 @@ package org.hisp.dhis.common.screens import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Category @@ -11,21 +9,27 @@ import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import org.hisp.dhis.mobile.ui.designsystem.component.Button +import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Title import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable -fun NoComponentSelectedScreen() { - Column( - modifier = Modifier.fillMaxSize(), +fun NoComponentSelectedScreen( + modifier: Modifier = Modifier, + onClick: (() -> Unit)? = null, +) { + ColumnScreenContainer( + modifier = modifier, verticalArrangement = Arrangement.Top, horizontalAlignment = Alignment.CenterHorizontally, ) { - Spacer(Modifier.size(Spacing.Spacing160)) + Spacer(Modifier.size(Spacing.Spacing120)) Icon( - modifier = Modifier.size(Spacing.Spacing80), + modifier = Modifier.size(Spacing.Spacing48), imageVector = Icons.Outlined.Category, tint = SurfaceColor.ContainerHighest, contentDescription = "Please choose an option", @@ -33,5 +37,22 @@ fun NoComponentSelectedScreen() { Spacer(Modifier.size(Spacing.Spacing16)) Title("Please select a component", textColor = TextColor.OnSurfaceLight) + + if (onClick != null) { + Spacer(Modifier.size(Spacing.Spacing24)) + + Button( + enabled = true, + style = ButtonStyle.KEYBOARDKEY, + text = "Select component", + icon = { + Icon( + imageVector = Icons.Outlined.Category, + contentDescription = "Please choose an option", + ) + }, + onClick = onClick, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/ActionInputsSreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/ActionInputsSreen.kt index d3033d3ad..2dacbbea7 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/ActionInputsSreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/ActionInputsSreen.kt @@ -4,13 +4,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun ActionInputsScreen() { - val currentScreen = remember { mutableStateOf(ActionInputs.INPUT_AGE) } + val currentScreen = remember { mutableStateOf(ActionInputs.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() ActionInputs.entries.forEach { @@ -18,13 +17,11 @@ fun ActionInputsScreen() { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = ActionInputs.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { ActionInputs.INPUT_QR_CODE -> InputQRCodeScreen() @@ -46,20 +43,20 @@ fun ActionInputsScreen() { } enum class ActionInputs(val label: String) { - LOGIN("Login"), - INPUT_AGE("Input Age"), - INPUT_BARCODE("Input Barcode"), - INPUT_COORDINATE("Input Coordinate"), - INPUT_DATE_TIME("Input Date Time"), - INPUT_EMAIL("Input Email"), - INPUT_FILE_RESOURCE("Input File Resource"), - INPUT_IMAGE("Input Image"), - INPUT_LINK("Input Link"), - INPUT_ORG_UNIT("Input Org. Unit"), - INPUT_PHONE_NUMBER("Input Phone Number"), - INPUT_POLYGON("Input Polygon"), - INPUT_QR_CODE("Input QR code"), - INPUT_SIGNATURE("Input Signature"), + LOGIN("Login component"), + INPUT_AGE("Input Age component"), + INPUT_BARCODE("Input Barcode component"), + INPUT_COORDINATE("Input Coordinate component"), + INPUT_DATE_TIME("Input Date Time component"), + INPUT_EMAIL("Input Email component"), + INPUT_FILE_RESOURCE("Input File Resource component"), + INPUT_IMAGE("Input Image component"), + INPUT_LINK("Input Link component"), + INPUT_ORG_UNIT("Input Org. Unit component"), + INPUT_PHONE_NUMBER("Input Phone Number component"), + INPUT_POLYGON("Input Polygon component"), + INPUT_QR_CODE("Input QR code component"), + INPUT_SIGNATURE("Input Signature component"), NO_COMPONENT_SELECTED("No component selected"), } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputAgeScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputAgeScreen.kt index b5565de6a..733b5a0ba 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputAgeScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputAgeScreen.kt @@ -9,116 +9,116 @@ import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.common.screens.previews.regularLegendList import org.hisp.dhis.mobile.ui.designsystem.component.AgeInputType import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputAge import org.hisp.dhis.mobile.ui.designsystem.component.InputAgeModel import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.LegendData -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.TimeUnitValues import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor @Composable fun InputAgeScreen() { - ColumnComponentContainer { - SubTitle("Horizontal Age Field Helper") - SubTitle("Input Age Component - Idle") + ColumnScreenContainer(title = ActionInputs.INPUT_AGE.label) { var inputType by remember { mutableStateOf(AgeInputType.None) } - InputAge( - InputAgeModel( - title = "Label", - inputType = inputType, - onValueChanged = { newInputType -> - inputType = newInputType - }, - ), - - ) - - SubTitle("Input Age Component - Idle Disabled") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.None, - state = InputShellState.DISABLED, - onValueChanged = { newInputType -> - inputType = newInputType - }, - ), - ) - - SubTitle("Input Age Component - Date Of Birth") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.DateOfBirth(TextFieldValue("01011985")), - state = InputShellState.DISABLED, - - onValueChanged = { newInputType -> - inputType = newInputType - }, - ), - - ) - - SubTitle("Input Age Component - Date Of Birth Required Error") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.DateOfBirth(TextFieldValue("010")), - state = InputShellState.ERROR, - isRequired = true, - - onValueChanged = { - // no-op - }, - ), - - ) - - SubTitle("Input Age Component - Age Disabled") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), - state = InputShellState.DISABLED, - - onValueChanged = { newInputType -> - inputType = newInputType - }, - ), - - ) - - SubTitle("Input Age Component - Age Required Error") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), - state = InputShellState.ERROR, - isRequired = true, - - onValueChanged = { - // no-op - }, - ), - - ) - - SubTitle("Input Age Component - Legend") - InputAge( - InputAgeModel( - title = "Label", - inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), - state = InputShellState.ERROR, - isRequired = true, - - onValueChanged = { - // no-op - }, - legendData = LegendData(SurfaceColor.CustomGreen, "Legend", popUpLegendDescriptionData = regularLegendList), - - ), - ) + ColumnComponentContainer("Input Age Component - Idle") { + InputAge( + InputAgeModel( + title = "Label", + inputType = inputType, + onValueChanged = { newInputType -> + inputType = newInputType + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Idle Disabled") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.None, + state = InputShellState.DISABLED, + onValueChanged = { newInputType -> + inputType = newInputType + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Date Of Birth") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.DateOfBirth(TextFieldValue("01011985")), + state = InputShellState.DISABLED, + + onValueChanged = { newInputType -> + inputType = newInputType + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Date Of Birth Required Error") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.DateOfBirth(TextFieldValue("010")), + state = InputShellState.ERROR, + isRequired = true, + + onValueChanged = { + // no-op + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Age Disabled") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), + state = InputShellState.DISABLED, + + onValueChanged = { newInputType -> + inputType = newInputType + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Age Required Error") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), + state = InputShellState.ERROR, + isRequired = true, + + onValueChanged = { + // no-op + }, + ), + ) + } + + ColumnComponentContainer("Input Age Component - Legend") { + InputAge( + InputAgeModel( + title = "Label", + inputType = AgeInputType.Age(value = TextFieldValue("56"), unit = TimeUnitValues.YEARS), + state = InputShellState.ERROR, + isRequired = true, + + onValueChanged = { + // no-op + }, + legendData = LegendData(SurfaceColor.CustomGreen, "Legend", popUpLegendDescriptionData = regularLegendList), + ), + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputBarCodeScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputBarCodeScreen.kt index 7c27b478d..f22b74820 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputBarCodeScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputBarCodeScreen.kt @@ -2,8 +2,6 @@ package org.hisp.dhis.common.screens.actionInputs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.HorizontalDivider @@ -21,107 +19,107 @@ import org.hisp.dhis.mobile.ui.designsystem.component.BarcodeBlock import org.hisp.dhis.mobile.ui.designsystem.component.BottomSheetShell import org.hisp.dhis.mobile.ui.designsystem.component.ButtonCarousel import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.Description +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputBarCode import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState import org.hisp.dhis.mobile.ui.designsystem.resource.provideStringResource -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputBarCodeScreen() { - ColumnComponentContainer { - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("889026a1-d01e-4d34-8209-81e8ed5c614b")) } - var showEnabledBarCodeBottomSheet by rememberSaveable { mutableStateOf(false) } + ColumnScreenContainer(title = ActionInputs.INPUT_BARCODE.label) { + ColumnComponentContainer("Default Input Barcode") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("889026a1-d01e-4d34-8209-81e8ed5c614b")) } + var showEnabledBarCodeBottomSheet by rememberSaveable { mutableStateOf(false) } - Description("Default Input Barcode", textColor = TextColor.OnSurfaceVariant) - InputBarCode( - "label", - state = InputShellState.UNFOCUSED, - onActionButtonClicked = { - showEnabledBarCodeBottomSheet = !showEnabledBarCodeBottomSheet - }, - inputTextFieldValue = inputValue1, - onValueChanged = { - inputValue1 = it ?: TextFieldValue() - }, - ) + if (showEnabledBarCodeBottomSheet) { + BottomSheetShell( + modifier = Modifier.testTag("LEGEND_BOTTOM_SHEET"), + title = provideStringResource("qr_code"), + icon = { + Icon( + imageVector = Icons.Outlined.Info, + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + content = { + Row(horizontalArrangement = Arrangement.Center) { + BarcodeBlock(data = inputValue1.text) + } + }, + buttonBlock = { + ButtonCarousel( + carouselButtonList = threeButtonCarousel, + ) + }, + ) { + showEnabledBarCodeBottomSheet = false + } + } - if (showEnabledBarCodeBottomSheet) { - BottomSheetShell( - modifier = Modifier.testTag("LEGEND_BOTTOM_SHEET"), - title = provideStringResource("qr_code"), - icon = { - Icon( - imageVector = Icons.Outlined.Info, - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - content = { - Row(horizontalArrangement = Arrangement.Center) { - BarcodeBlock(data = inputValue1.text) - } + InputBarCode( + "label", + state = InputShellState.UNFOCUSED, + onActionButtonClicked = { + showEnabledBarCodeBottomSheet = !showEnabledBarCodeBottomSheet }, - buttonBlock = { - ButtonCarousel( - carouselButtonList = threeButtonCarousel, - ) + inputTextFieldValue = inputValue1, + onValueChanged = { + inputValue1 = it ?: TextFieldValue() }, - ) { - showEnabledBarCodeBottomSheet = false - } + ) } - Spacer(Modifier.size(Spacing.Spacing18)) - var inputValue2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } - Description("Required field Input Barcode", textColor = TextColor.OnSurfaceVariant) - InputBarCode( - "label", - state = InputShellState.ERROR, - onActionButtonClicked = { - }, - inputTextFieldValue = inputValue2, - onValueChanged = { - inputValue2 = it ?: TextFieldValue() - }, - isRequiredField = true, - supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), - ) + ColumnComponentContainer("Required field Input Barcode") { + var inputValue2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } + InputBarCode( + "label", + state = InputShellState.ERROR, + onActionButtonClicked = { + }, + inputTextFieldValue = inputValue2, + onValueChanged = { + inputValue2 = it ?: TextFieldValue() + }, + isRequiredField = true, + supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), + ) + } - Spacer(Modifier.size(Spacing.Spacing18)) - var inputValue by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } - Description("Disabled Input Barcode", textColor = TextColor.OnSurfaceVariant) - InputBarCode( - "label", - state = InputShellState.DISABLED, - onActionButtonClicked = { - }, - inputTextFieldValue = inputValue, - onValueChanged = { - inputValue = it ?: TextFieldValue() - }, - ) + ColumnComponentContainer("Disabled Input Barcode") { + var inputValue by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } + InputBarCode( + "label", + state = InputShellState.DISABLED, + onActionButtonClicked = { + }, + inputTextFieldValue = inputValue, + onValueChanged = { + inputValue = it ?: TextFieldValue() + }, + ) + } - Spacer(Modifier.size(Spacing.Spacing18)) - var inputValue3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("889026a1-d01e-4d34-8209-81e8ed5c614b")) } - Description("Disabled Input Barcode with content", textColor = TextColor.OnSurfaceVariant) - InputBarCode( - "label", - state = InputShellState.DISABLED, - onActionButtonClicked = { - }, - inputTextFieldValue = inputValue3, - onValueChanged = { - inputValue3 = it ?: TextFieldValue() - }, - ) - Description("Barcode Block", textColor = TextColor.OnSurfaceVariant) + ColumnComponentContainer("Disabled Input Barcode with content") { + var inputValue3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("889026a1-d01e-4d34-8209-81e8ed5c614b")) } + InputBarCode( + "label", + state = InputShellState.DISABLED, + onActionButtonClicked = { + }, + inputTextFieldValue = inputValue3, + onValueChanged = { + inputValue3 = it ?: TextFieldValue() + }, + ) + } + SubTitle("Barcode Block") BarcodeBlock(data = "Barcode value") HorizontalDivider() BarcodeBlock(data = "889026a1-d01e-4d34-8209-81e8ed5c614b") diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputCoordinateScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputCoordinateScreen.kt index 4d21dedee..3c928a852 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputCoordinateScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputCoordinateScreen.kt @@ -1,73 +1,64 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Coordinates import org.hisp.dhis.mobile.ui.designsystem.component.InputCoordinate import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputCoordinateScreen() { - ColumnComponentContainer { - Title("Input Coordinates", textColor = TextColor.OnSurfaceVariant) - - SubTitle("Basic Input Coordinates ", textColor = TextColor.OnSurfaceVariant) - var coordinates by remember { mutableStateOf(null) } - InputCoordinate( - title = "Label", - state = InputShellState.UNFOCUSED, - coordinates = coordinates, - onResetButtonClicked = { - coordinates = null - }, - onUpdateButtonClicked = { - coordinates = Coordinates(latitude = 39.46263, longitude = -0.33617) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer(title = ActionInputs.INPUT_COORDINATE.label) { + ColumnComponentContainer("Basic Input Coordinates ") { + var coordinates by remember { mutableStateOf(null) } + InputCoordinate( + title = "Label", + state = InputShellState.UNFOCUSED, + coordinates = coordinates, + onResetButtonClicked = { + coordinates = null + }, + onUpdateButtonClicked = { + coordinates = Coordinates(latitude = 39.46263, longitude = -0.33617) + }, + ) + } - SubTitle("Disabled Input Coordinates without data ", textColor = TextColor.OnSurfaceVariant) - var coordinates1 by remember { - mutableStateOf(null) + ColumnComponentContainer("Disabled Input Coordinates without data ") { + var coordinates1 by remember { mutableStateOf(null) } + InputCoordinate( + title = "Label", + state = InputShellState.DISABLED, + coordinates = coordinates1, + onResetButtonClicked = { + coordinates1 = null + }, + onUpdateButtonClicked = { + coordinates1 = Coordinates(latitude = 39.46263, longitude = -0.33617) + }, + ) } - InputCoordinate( - title = "Label", - state = InputShellState.DISABLED, - coordinates = coordinates1, - onResetButtonClicked = { - coordinates1 = null - }, - onUpdateButtonClicked = { - coordinates1 = Coordinates(latitude = 39.46263, longitude = -0.33617) - }, - ) - SubTitle("Disabled Input Coordinates with data ", textColor = TextColor.OnSurfaceVariant) - var coordinates2 by remember { - mutableStateOf(Coordinates(latitude = 39.46263, longitude = -0.33617)) + ColumnComponentContainer("Disabled Input Coordinates with data ") { + var coordinates2 by remember { + mutableStateOf(Coordinates(latitude = 39.46263, longitude = -0.33617)) + } + InputCoordinate( + title = "Label", + state = InputShellState.DISABLED, + coordinates = coordinates2, + onResetButtonClicked = { + coordinates2 = null + }, + onUpdateButtonClicked = { + coordinates2 = Coordinates(latitude = 39.46263, longitude = -0.33617) + }, + ) } - InputCoordinate( - title = "Label", - state = InputShellState.DISABLED, - coordinates = coordinates2, - onResetButtonClicked = { - coordinates2 = null - }, - onUpdateButtonClicked = { - coordinates2 = Coordinates(latitude = 39.46263, longitude = -0.33617) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputDateTimeScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputDateTimeScreen.kt index 16236f07b..4462bba47 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputDateTimeScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputDateTimeScreen.kt @@ -8,19 +8,19 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.DateTimeActionType import org.hisp.dhis.mobile.ui.designsystem.component.InputDateTime import org.hisp.dhis.mobile.ui.designsystem.component.InputDateTimeModel import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.SelectableDates -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.internal.DateTimeTransformation import org.hisp.dhis.mobile.ui.designsystem.component.internal.DateTransformation import org.hisp.dhis.mobile.ui.designsystem.component.internal.TimeTransformation @Composable fun InputDateTimeScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ActionInputs.INPUT_DATE_TIME.label) { var date by remember { mutableStateOf(TextFieldValue("18122024", selection = TextRange(8))) } var time by remember { mutableStateOf(TextFieldValue("0930")) } var dateTime by remember { mutableStateOf(TextFieldValue("121119910230")) } @@ -29,112 +29,108 @@ fun InputDateTimeScreen() { var dateTimenoInput by remember { mutableStateOf(TextFieldValue("11112014")) } var hour24time by remember { mutableStateOf(TextFieldValue("1630")) } - SubTitle("Date Input (allowed dates from 01/09/2024 to 12/12/2024)") - InputDateTime( - InputDateTimeModel( - title = "Label", - inputTextFieldValue = date, - visualTransformation = DateTransformation(), - actionType = DateTimeActionType.DATE, - onValueChanged = { date = it ?: TextFieldValue() }, - selectableDates = SelectableDates("01092024", "12122024"), - ), - ) - - SubTitle("Time Input") - - InputDateTime( - InputDateTimeModel( - title = "Label", - inputTextFieldValue = dateTimenoInput, - visualTransformation = DateTransformation(), - actionType = DateTimeActionType.DATE, - onValueChanged = { dateTimenoInput = it ?: TextFieldValue() }, - allowsManualInput = false, - ), - ) - SubTitle("24 hour format Time Input") - - InputDateTime( - InputDateTimeModel( - - title = "Label", - inputTextFieldValue = hour24time, - visualTransformation = TimeTransformation(), - actionType = DateTimeActionType.TIME, - onValueChanged = { hour24time = it ?: TextFieldValue() }, - is24hourFormat = true, - ), - - ) - - SubTitle("12 hour format Time Input") - InputDateTime( - InputDateTimeModel( - - title = "Label", - inputTextFieldValue = time, - visualTransformation = TimeTransformation(), - actionType = DateTimeActionType.TIME, - onValueChanged = { time = it ?: TextFieldValue() }, - - ), - - ) - - SubTitle("Date-Time Input") - - InputDateTime( - InputDateTimeModel( - - title = "Label", - inputTextFieldValue = dateTime, - visualTransformation = DateTimeTransformation(), - actionType = DateTimeActionType.DATE_TIME, - onValueChanged = { dateTime = it ?: TextFieldValue() }, - ), - ) - - SubTitle("Date-Time Input 24 hour ") - - InputDateTime( - InputDateTimeModel( - - title = "Label", - inputTextFieldValue = dateTime24hour, - visualTransformation = DateTimeTransformation(), - actionType = DateTimeActionType.DATE_TIME, - onValueChanged = { dateTime24hour = it ?: TextFieldValue() }, - is24hourFormat = true, - ), - ) - - SubTitle("Disabled") - - InputDateTime( - InputDateTimeModel( - - title = "Label", - inputTextFieldValue = TextFieldValue(), - state = InputShellState.DISABLED, - onValueChanged = { - // no-op - }, - - ), - ) - SubTitle("Error") - - InputDateTime( - InputDateTimeModel( - title = "Label", - inputTextFieldValue = TextFieldValue(), - isRequired = true, - state = InputShellState.ERROR, - onValueChanged = { - // no-op - }, - ), - ) + ColumnComponentContainer("Date Input (allowed dates from 01/09/2024 to 12/12/2024)") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = date, + visualTransformation = DateTransformation(), + actionType = DateTimeActionType.DATE, + onValueChanged = { date = it ?: TextFieldValue() }, + selectableDates = SelectableDates("01092024", "12122024"), + ), + ) + } + + ColumnComponentContainer("Time Input") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = dateTimenoInput, + visualTransformation = DateTransformation(), + actionType = DateTimeActionType.DATE, + onValueChanged = { dateTimenoInput = it ?: TextFieldValue() }, + allowsManualInput = false, + ), + ) + } + + ColumnComponentContainer("24 hour format Time Input") { + InputDateTime( + InputDateTimeModel( + + title = "Label", + inputTextFieldValue = hour24time, + visualTransformation = TimeTransformation(), + actionType = DateTimeActionType.TIME, + onValueChanged = { hour24time = it ?: TextFieldValue() }, + is24hourFormat = true, + ), + ) + } + + ColumnComponentContainer("12 hour format Time Input") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = time, + visualTransformation = TimeTransformation(), + actionType = DateTimeActionType.TIME, + onValueChanged = { time = it ?: TextFieldValue() }, + ), + ) + } + + ColumnComponentContainer("Date-Time Input") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = dateTime, + visualTransformation = DateTimeTransformation(), + actionType = DateTimeActionType.DATE_TIME, + onValueChanged = { dateTime = it ?: TextFieldValue() }, + ), + ) + } + + ColumnComponentContainer("Date-Time Input 24 hour ") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = dateTime24hour, + visualTransformation = DateTimeTransformation(), + actionType = DateTimeActionType.DATE_TIME, + onValueChanged = { dateTime24hour = it ?: TextFieldValue() }, + is24hourFormat = true, + ), + ) + } + + ColumnComponentContainer("Disabled") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = TextFieldValue(), + state = InputShellState.DISABLED, + onValueChanged = { + // no-op + }, + ), + ) + } + + ColumnComponentContainer("Error") { + InputDateTime( + InputDateTimeModel( + title = "Label", + inputTextFieldValue = TextFieldValue(), + isRequired = true, + state = InputShellState.ERROR, + onValueChanged = { + // no-op + }, + ), + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputEmailScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputEmailScreen.kt index 9bd652228..93ab27ca6 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputEmailScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputEmailScreen.kt @@ -1,101 +1,95 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputEmail import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputEmailScreen() { - ColumnComponentContainer { - Title("Input Email component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Email ", textColor = TextColor.OnSurfaceVariant) - var inputText1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } + ColumnScreenContainer(ActionInputs.INPUT_EMAIL.label) { + ColumnComponentContainer("Basic Email ") { + var inputText1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } - InputEmail( - title = "Label", - supportingText = listOf(SupportingTextData("Example: name@example.com")), - inputTextFieldValue = inputText1, - onValueChanged = { - inputText1 = it ?: TextFieldValue() - }, - onEmailActionCLicked = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Basic Email with content ", textColor = TextColor.OnSurfaceVariant) - var inputText2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue("fatiman92@gmail.com"), + InputEmail( + title = "Label", + supportingText = listOf(SupportingTextData("Example: name@example.com")), + inputTextFieldValue = inputText1, + onValueChanged = { + inputText1 = it ?: TextFieldValue() + }, + onEmailActionCLicked = {}, + state = InputShellState.UNFOCUSED, ) } - InputEmail( - title = "Label", - supportingText = listOf(SupportingTextData("Example: name@example.com")), - inputTextFieldValue = inputText2, - onValueChanged = { - inputText2 = it ?: TextFieldValue() - }, - onEmailActionCLicked = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Email with content ") { + var inputText2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue("fatiman92@gmail.com"), + ) + } - SubTitle("Error Email with content ", textColor = TextColor.OnSurfaceVariant) - var inputText3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue("fatiman92@gmail.com"), + InputEmail( + title = "Label", + supportingText = listOf(SupportingTextData("Example: name@example.com")), + inputTextFieldValue = inputText2, + onValueChanged = { + inputText2 = it ?: TextFieldValue() + }, + onEmailActionCLicked = {}, + state = InputShellState.UNFOCUSED, ) } - InputEmail( - title = "Label", - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Enter a valid email address", SupportingTextState.ERROR)), - inputTextFieldValue = inputText3, - onValueChanged = { - inputText3 = it ?: TextFieldValue() - }, - onEmailActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Error Email with content ") { + var inputText3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue("fatiman92@gmail.com"), + ) + } - SubTitle("Error Email required field ", textColor = TextColor.OnSurfaceVariant) - var inputText4 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(), + InputEmail( + title = "Label", + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Enter a valid email address", SupportingTextState.ERROR)), + inputTextFieldValue = inputText3, + onValueChanged = { + inputText3 = it ?: TextFieldValue() + }, + onEmailActionCLicked = {}, ) } - InputEmail( - title = "Label", - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Enter email address", SupportingTextState.ERROR)), - inputTextFieldValue = inputText4, - isRequiredField = true, - onValueChanged = { - inputText4 = it ?: TextFieldValue() - }, - onEmailActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Disabled Email with content ", textColor = TextColor.OnSurfaceVariant) + ColumnComponentContainer("Error Email required field ") { + var inputText4 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(), + ) + } + InputEmail( + title = "Label", + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Enter email address", SupportingTextState.ERROR)), + inputTextFieldValue = inputText4, + isRequiredField = true, + onValueChanged = { + inputText4 = it ?: TextFieldValue() + }, + onEmailActionCLicked = {}, + ) + } + } + + ColumnComponentContainer("Disabled Email with content ") { var inputText5 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf( TextFieldValue("fatiman92@gmail.com"), diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputFileResourceScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputFileResourceScreen.kt index 4b575f1f2..1166a9274 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputFileResourceScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputFileResourceScreen.kt @@ -6,6 +6,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputFileResource import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.UploadFileState @@ -13,9 +14,7 @@ import org.hisp.dhis.mobile.ui.designsystem.resource.provideStringResource @Composable fun InputFileResourceScreen() { - ColumnComponentContainer( - title = "Input File Component", - ) { + ColumnScreenContainer(title = ActionInputs.INPUT_FILE_RESOURCE.label) { var currentFileName = "filename.extension" var currentFileWeight = "524kb" val currentFileName2 = "filename.extension" @@ -23,74 +22,77 @@ fun InputFileResourceScreen() { var inputFileResourceState by remember { mutableStateOf(UploadFileState.ADD) } - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName, - fileWeight = currentFileWeight, - uploadFileState = inputFileResourceState, - onSelectFile = { - inputFileResourceState = UploadFileState.LOADED - }, - onUploadFile = {}, - onClear = { - inputFileResourceState = UploadFileState.ADD - }, - ) - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName, - fileWeight = currentFileWeight, - onSelectFile = { - currentFileName = "file" - currentFileWeight = "weight" - }, - onUploadFile = {}, - ) - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName, - fileWeight = currentFileWeight, - uploadFileState = UploadFileState.UPLOADING, - inputShellState = InputShellState.FOCUSED, - onSelectFile = {}, - onUploadFile = {}, - ) - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName2, - fileWeight = currentFileWeight2, - uploadFileState = UploadFileState.LOADED, - onSelectFile = {}, - onUploadFile = {}, - ) - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName, - fileWeight = currentFileWeight, - inputShellState = InputShellState.DISABLED, - onSelectFile = { - currentFileName = "file" - currentFileWeight = "weight" - }, - onUploadFile = {}, - ) - InputFileResource( - title = "Label", - buttonText = provideStringResource("add_file"), - fileName = currentFileName, - fileWeight = currentFileWeight, - inputShellState = InputShellState.DISABLED, - uploadFileState = UploadFileState.LOADED, - onSelectFile = { - currentFileName = "file" - currentFileWeight = "weight" - }, - onUploadFile = {}, - ) + ColumnComponentContainer("Default state") { + InputFileResource( + title = "Label", + buttonText = provideStringResource("add_file"), + fileName = currentFileName, + fileWeight = currentFileWeight, + uploadFileState = inputFileResourceState, + onSelectFile = { + inputFileResourceState = UploadFileState.LOADED + }, + onUploadFile = {}, + onClear = { + inputFileResourceState = UploadFileState.ADD + }, + ) + } + + ColumnComponentContainer("Selected state") { + InputFileResource( + title = "Label", + buttonText = provideStringResource("add_file"), + fileName = currentFileName2, + fileWeight = currentFileWeight2, + uploadFileState = UploadFileState.LOADED, + onSelectFile = {}, + onUploadFile = {}, + ) + } + + ColumnComponentContainer("Loading state") { + InputFileResource( + title = "Label", + buttonText = provideStringResource("add_file"), + fileName = currentFileName, + fileWeight = currentFileWeight, + uploadFileState = UploadFileState.UPLOADING, + inputShellState = InputShellState.FOCUSED, + onSelectFile = {}, + onUploadFile = {}, + ) + } + + ColumnComponentContainer("Disabled state") { + InputFileResource( + title = "Label", + buttonText = provideStringResource("add_file"), + fileName = currentFileName, + fileWeight = currentFileWeight, + inputShellState = InputShellState.DISABLED, + onSelectFile = { + currentFileName = "file" + currentFileWeight = "weight" + }, + onUploadFile = {}, + ) + } + + ColumnComponentContainer("Disabled state with selected file") { + InputFileResource( + title = "Label", + buttonText = provideStringResource("add_file"), + fileName = currentFileName, + fileWeight = currentFileWeight, + inputShellState = InputShellState.DISABLED, + uploadFileState = UploadFileState.LOADED, + onSelectFile = { + currentFileName = "file" + currentFileWeight = "weight" + }, + onUploadFile = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputImageScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputImageScreen.kt index 52526cd5f..1b47bc264 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputImageScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputImageScreen.kt @@ -1,97 +1,90 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size 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.Modifier import androidx.compose.ui.graphics.painter.Painter import mobile_ui.common.generated.resources.Res import mobile_ui.common.generated.resources.sample import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ImageBlock import org.hisp.dhis.mobile.ui.designsystem.component.InputImage import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title import org.hisp.dhis.mobile.ui.designsystem.component.UploadState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor import org.jetbrains.compose.resources.painterResource import java.util.Timer import kotlin.concurrent.schedule @Composable fun InputImageScreen() { - ColumnComponentContainer { - Title("Input Image", textColor = TextColor.OnSurfaceVariant) + ColumnScreenContainer(title = ActionInputs.INPUT_IMAGE.label) { + ColumnComponentContainer("Basic Input Image ") { + var uploadState by rememberSaveable { mutableStateOf(UploadState.ADD) } + val sampleImage = provideSampleImage() - SubTitle("Basic Input Image ", textColor = TextColor.OnSurfaceVariant) - var uploadState by rememberSaveable { mutableStateOf(UploadState.ADD) } - val sampleImage = provideSampleImage() + InputImage( + title = "Label", + uploadState = uploadState, + load = { sampleImage }, + painterFor = { remember { it } }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = { + uploadState = UploadState.ADD + }, + onAddButtonClicked = { + uploadState = UploadState.UPLOADING + Timer().schedule(1000) { + uploadState = UploadState.LOADED + } + }, + ) + } - InputImage( - title = "Label", - uploadState = uploadState, - load = { sampleImage }, - painterFor = { remember { it } }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = { - uploadState = UploadState.ADD - }, - onAddButtonClicked = { - uploadState = UploadState.UPLOADING - Timer().schedule(1000) { - uploadState = UploadState.LOADED - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Image without data ") { + val uploadState1 by rememberSaveable { mutableStateOf(UploadState.ADD) } + InputImage( + title = "Label", + state = InputShellState.DISABLED, + uploadState = uploadState1, + load = { }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = {}, + onAddButtonClicked = {}, + ) + } - SubTitle("Disabled Input Image without data ", textColor = TextColor.OnSurfaceVariant) - val uploadState1 by rememberSaveable { mutableStateOf(UploadState.ADD) } - InputImage( - title = "Label", - state = InputShellState.DISABLED, - uploadState = uploadState1, - load = { }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = {}, - onAddButtonClicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Image with data ") { + val uploadState2 by rememberSaveable { mutableStateOf(UploadState.LOADED) } + val sampleImage2 = provideSampleImage() + InputImage( + title = "Label", + state = InputShellState.DISABLED, + uploadState = uploadState2, + load = { sampleImage2 }, + painterFor = { it }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = { }, + onAddButtonClicked = {}, + ) + } - SubTitle("Disabled Input Image with data ", textColor = TextColor.OnSurfaceVariant) - val uploadState2 by rememberSaveable { mutableStateOf(UploadState.LOADED) } - val sampleImage2 = provideSampleImage() - InputImage( - title = "Label", - state = InputShellState.DISABLED, - uploadState = uploadState2, - load = { sampleImage2 }, - painterFor = { it }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = { }, - onAddButtonClicked = {}, - ) - - SubTitle("Image Block", textColor = TextColor.OnSurfaceVariant) - - val sampleImage3 = provideSampleImage() - ImageBlock( - title = "Label", - load = { sampleImage3 }, - painterFor = { remember { it } }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - ) + ColumnComponentContainer("Image Block") { + val sampleImage3 = provideSampleImage() + ImageBlock( + title = "Label", + load = { sampleImage3 }, + painterFor = { remember { it } }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputLinkScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputLinkScreen.kt index bd4b5bd9b..b1e515b85 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputLinkScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputLinkScreen.kt @@ -1,108 +1,102 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputLink import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputLinkScreen() { - ColumnComponentContainer { - Title("Input Link component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Link ", textColor = TextColor.OnSurfaceVariant) - var inputText1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnScreenContainer(title = ActionInputs.INPUT_LINK.label) { + ColumnComponentContainer("Basic Link ") { + var inputText1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - InputLink( - title = "Label", - supportingText = listOf(SupportingTextData("Example: example.com")), - inputTextFieldValue = inputText1, - onValueChanged = { - if (it != null) { - inputText1 = it - } - }, - onLinkActionCLicked = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputLink( + title = "Label", + supportingText = listOf(SupportingTextData("Example: example.com")), + inputTextFieldValue = inputText1, + onValueChanged = { + if (it != null) { + inputText1 = it + } + }, + onLinkActionCLicked = {}, + state = InputShellState.UNFOCUSED, + ) + } - SubTitle("Basic Link with invalid link ", textColor = TextColor.OnSurfaceVariant) - var inputText2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("example.")) } + ColumnComponentContainer("Basic Link with invalid link ") { + var inputText2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("example.")) } - InputLink( - title = "Label", - supportingText = listOf(SupportingTextData("Example: example.com")), - inputTextFieldValue = inputText2, - onValueChanged = { - if (it != null) { - inputText2 = it - } - }, - onLinkActionCLicked = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputLink( + title = "Label", + supportingText = listOf(SupportingTextData("Example: example.com")), + inputTextFieldValue = inputText2, + onValueChanged = { + if (it != null) { + inputText2 = it + } + }, + onLinkActionCLicked = {}, + state = InputShellState.UNFOCUSED, + ) + } - SubTitle("Basic Link with valid link ", textColor = TextColor.OnSurfaceVariant) - var inputText3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue(("example.com"))) } + ColumnComponentContainer("Basic Link with valid link ") { + var inputText3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue(("example.com"))) } - InputLink( - title = "Label", - supportingText = listOf(SupportingTextData("Example: example.com")), - inputTextFieldValue = inputText3, - onValueChanged = { - if (it != null) { - inputText3 = it - } - }, - onLinkActionCLicked = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputLink( + title = "Label", + supportingText = listOf(SupportingTextData("Example: example.com")), + inputTextFieldValue = inputText3, + onValueChanged = { + if (it != null) { + inputText3 = it + } + }, + onLinkActionCLicked = {}, + state = InputShellState.UNFOCUSED, + ) + } - SubTitle("Error Link required field ", textColor = TextColor.OnSurfaceVariant) - var inputText4 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - InputLink( - title = "Label", - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), - inputTextFieldValue = inputText4, - isRequiredField = true, - onValueChanged = { - if (it != null) { - inputText4 = it - } - }, - onLinkActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Error Link required field ") { + var inputText4 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputLink( + title = "Label", + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), + inputTextFieldValue = inputText4, + isRequiredField = true, + onValueChanged = { + if (it != null) { + inputText4 = it + } + }, + onLinkActionCLicked = {}, + ) + } - SubTitle("Disabled Link with content ", textColor = TextColor.OnSurfaceVariant) - var inputText5 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("example.com")) } - InputLink( - title = "Label", - state = InputShellState.DISABLED, - inputTextFieldValue = inputText5, - onValueChanged = { - if (it != null) { - inputText5 = it - } - }, - onLinkActionCLicked = {}, - ) + ColumnComponentContainer("Disabled Link with content ") { + var inputText5 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("example.com")) } + InputLink( + title = "Label", + state = InputShellState.DISABLED, + inputTextFieldValue = inputText5, + onValueChanged = { + if (it != null) { + inputText5 = it + } + }, + onLinkActionCLicked = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputOrgUnitScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputOrgUnitScreen.kt index 176cdc23c..22a2d7f48 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputOrgUnitScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputOrgUnitScreen.kt @@ -1,87 +1,81 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputOrgUnit import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputOrgUnitScreen() { - ColumnComponentContainer { - Title("Input Org. unit component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Org. unit ", textColor = TextColor.OnSurfaceVariant) - var inputText1 by rememberSaveable { mutableStateOf("") } + ColumnScreenContainer(title = ActionInputs.INPUT_ORG_UNIT.label) { + ColumnComponentContainer("Basic Org. unit ") { + var inputText1 by rememberSaveable { mutableStateOf("") } - InputOrgUnit( - title = "Label", - inputText = inputText1, - onValueChanged = { - if (it != null) { - inputText1 = it - } - }, - onOrgUnitActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputOrgUnit( + title = "Label", + inputText = inputText1, + onValueChanged = { + if (it != null) { + inputText1 = it + } + }, + onOrgUnitActionCLicked = {}, + ) + } - SubTitle("Basic Org. unit with content ", textColor = TextColor.OnSurfaceVariant) - var inputText2 by rememberSaveable { mutableStateOf("PHC Fakename") } + ColumnComponentContainer("Basic Org. unit with content ") { + var inputText2 by rememberSaveable { mutableStateOf("PHC Fakename") } - InputOrgUnit( - title = "Label", - inputText = inputText2, - onValueChanged = { - if (it != null) { - inputText2 = it - } - }, - onOrgUnitActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputOrgUnit( + title = "Label", + inputText = inputText2, + onValueChanged = { + if (it != null) { + inputText2 = it + } + }, + onOrgUnitActionCLicked = {}, + ) + } - SubTitle("Error Org. unit required field ", textColor = TextColor.OnSurfaceVariant) - var inputText3 by rememberSaveable { mutableStateOf("") } + ColumnComponentContainer("Error Org. unit required field ") { + var inputText3 by rememberSaveable { mutableStateOf("") } - InputOrgUnit( - title = "Label", - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), - inputText = inputText3, - isRequiredField = true, - onValueChanged = { - if (it != null) { - inputText3 = it - } - }, - onOrgUnitActionCLicked = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputOrgUnit( + title = "Label", + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), + inputText = inputText3, + isRequiredField = true, + onValueChanged = { + if (it != null) { + inputText3 = it + } + }, + onOrgUnitActionCLicked = {}, + ) + } - SubTitle("Disabled Org. unit with content ", textColor = TextColor.OnSurfaceVariant) - var inputText5 by rememberSaveable { mutableStateOf("PHC Fakename") } - InputOrgUnit( - title = "Label", - state = InputShellState.DISABLED, - inputText = inputText5, - onValueChanged = { - if (it != null) { - inputText5 = it - } - }, - onOrgUnitActionCLicked = {}, - ) + ColumnComponentContainer("Disabled Org. unit with content ") { + var inputText5 by rememberSaveable { mutableStateOf("PHC Fakename") } + InputOrgUnit( + title = "Label", + state = InputShellState.DISABLED, + inputText = inputText5, + onValueChanged = { + if (it != null) { + inputText5 = it + } + }, + onOrgUnitActionCLicked = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPhoneNumberScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPhoneNumberScreen.kt index 095438ff5..c2ad46edb 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPhoneNumberScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPhoneNumberScreen.kt @@ -1,97 +1,92 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.Description +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPhoneNumber import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputPhoneNumberScreen() { - ColumnComponentContainer( - title = "Input Phone Number", + ColumnScreenContainer( + title = ActionInputs.INPUT_PHONE_NUMBER.label, ) { var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("Default Input Phone Number", textColor = TextColor.OnSurfaceVariant) - InputPhoneNumber( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - onCallActionClicked = { - // no-op - }, - onFocusChanged = {}, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Default Input Phone Number") { + InputPhoneNumber( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + onCallActionClicked = { + // no-op + }, + onFocusChanged = {}, + state = InputShellState.UNFOCUSED, + ) + } var inputValue2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("Disabled Input Phone Number Without Phone Number", textColor = TextColor.OnSurfaceVariant) - InputPhoneNumber( - title = "Label", - inputTextFieldValue = inputValue2, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue2 = it - } - }, - onCallActionClicked = { - // no-op - }, - onFocusChanged = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Phone Number Without Phone Number") { + InputPhoneNumber( + title = "Label", + inputTextFieldValue = inputValue2, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue2 = it + } + }, + onCallActionClicked = { + // no-op + }, + onFocusChanged = {}, + ) + } var inputValue3 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1111111")) } - Description("Disabled Input Phone Number With Phone Number", textColor = TextColor.OnSurfaceVariant) - InputPhoneNumber( - title = "Label", - inputTextFieldValue = inputValue3, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue3 = it - } - }, - onCallActionClicked = { - // no-op - }, - onFocusChanged = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Phone Number With Phone Number") { + InputPhoneNumber( + title = "Label", + inputTextFieldValue = inputValue3, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue3 = it + } + }, + onCallActionClicked = { + // no-op + }, + onFocusChanged = {}, + ) + } var inputValue4 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("Error Input Phone Number", textColor = TextColor.OnSurfaceVariant) - InputPhoneNumber( - title = "Label", - inputTextFieldValue = inputValue4, - state = InputShellState.ERROR, - isRequiredField = true, - onValueChanged = { - if (it != null) { - inputValue4 = it - } - }, - onCallActionClicked = { - // no-op - }, - onFocusChanged = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Error Input Phone Number") { + InputPhoneNumber( + title = "Label", + inputTextFieldValue = inputValue4, + state = InputShellState.ERROR, + isRequiredField = true, + onValueChanged = { + if (it != null) { + inputValue4 = it + } + }, + onCallActionClicked = { + // no-op + }, + onFocusChanged = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPolygonScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPolygonScreen.kt index 87df4bd4d..cb44a65a1 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPolygonScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputPolygonScreen.kt @@ -1,67 +1,60 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPolygon import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputPolygonScreen() { - ColumnComponentContainer { - Title("Input Polygon", textColor = TextColor.OnSurfaceVariant) + ColumnScreenContainer(title = ActionInputs.INPUT_POLYGON.label) { + ColumnComponentContainer("Basic Input Polygon ") { + var polygonCaptured by rememberSaveable { mutableStateOf(false) } + InputPolygon( + title = "Label", + polygonAdded = polygonCaptured, + onResetButtonClicked = { + polygonCaptured = false + }, + onUpdateButtonClicked = { + polygonCaptured = true + }, + ) + } - SubTitle("Basic Input Polygon ", textColor = TextColor.OnSurfaceVariant) - var polygonCaptured by rememberSaveable { mutableStateOf(false) } - InputPolygon( - title = "Label", - polygonAdded = polygonCaptured, - onResetButtonClicked = { - polygonCaptured = false - }, - onUpdateButtonClicked = { - polygonCaptured = true - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Polygon without data ") { + var polygonCaptured1 by rememberSaveable { mutableStateOf(false) } + InputPolygon( + title = "Label", + state = InputShellState.DISABLED, + polygonAdded = polygonCaptured1, + onResetButtonClicked = { + polygonCaptured1 = false + }, + onUpdateButtonClicked = { + polygonCaptured1 = true + }, + ) + } - SubTitle("Disabled Input Polygon without data ", textColor = TextColor.OnSurfaceVariant) - var polygonCaptured1 by rememberSaveable { mutableStateOf(false) } - InputPolygon( - title = "Label", - state = InputShellState.DISABLED, - polygonAdded = polygonCaptured1, - onResetButtonClicked = { - polygonCaptured1 = false - }, - onUpdateButtonClicked = { - polygonCaptured1 = true - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Disabled Input Polygon with data ", textColor = TextColor.OnSurfaceVariant) - var polygonCaptured2 by rememberSaveable { mutableStateOf(true) } - InputPolygon( - title = "Label", - state = InputShellState.DISABLED, - polygonAdded = polygonCaptured2, - onResetButtonClicked = { - polygonCaptured2 = false - }, - onUpdateButtonClicked = { - polygonCaptured2 = true - }, - ) + ColumnComponentContainer("Disabled Input Polygon with data ") { + var polygonCaptured2 by rememberSaveable { mutableStateOf(true) } + InputPolygon( + title = "Label", + state = InputShellState.DISABLED, + polygonAdded = polygonCaptured2, + onResetButtonClicked = { + polygonCaptured2 = false + }, + onUpdateButtonClicked = { + polygonCaptured2 = true + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputQRCodeScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputQRCodeScreen.kt index c6fb15ec9..5e45c6199 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputQRCodeScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputQRCodeScreen.kt @@ -2,8 +2,6 @@ package org.hisp.dhis.common.screens.actionInputs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.Icon @@ -19,39 +17,21 @@ import org.hisp.dhis.common.screens.previews.threeButtonCarousel import org.hisp.dhis.mobile.ui.designsystem.component.BottomSheetShell import org.hisp.dhis.mobile.ui.designsystem.component.ButtonCarousel import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.Description +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputQRCode import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.QrCodeBlock import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState import org.hisp.dhis.mobile.ui.designsystem.resource.provideStringResource -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputQRCodeScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ActionInputs.INPUT_QR_CODE.label) { var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("889026a1-d01e-4d34-8209-81e8ed5c614b")) } var showEnabledQRBottomSheet by rememberSaveable { mutableStateOf(false) } - Description("Default Input QR code", textColor = TextColor.OnSurfaceVariant) - InputQRCode( - "label", - state = InputShellState.UNFOCUSED, - onQRButtonClicked = { - showEnabledQRBottomSheet = !showEnabledQRBottomSheet - }, - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - - ) - if (showEnabledQRBottomSheet) { BottomSheetShell( modifier = Modifier.testTag("LEGEND_BOTTOM_SHEET"), @@ -78,38 +58,54 @@ fun InputQRCodeScreen() { } } + ColumnComponentContainer("Default Input QR code") { + InputQRCode( + "label", + state = InputShellState.UNFOCUSED, + onQRButtonClicked = { + showEnabledQRBottomSheet = !showEnabledQRBottomSheet + }, + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + ) + } + var inputValue2 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("Required field Input QR code", textColor = TextColor.OnSurfaceVariant) - InputQRCode( - "label", - state = InputShellState.ERROR, - onQRButtonClicked = { - }, - inputTextFieldValue = inputValue2, - onValueChanged = { - if (it != null) { - inputValue2 = it - } - }, - isRequiredField = true, - supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Required field Input QR code") { + InputQRCode( + "label", + state = InputShellState.ERROR, + onQRButtonClicked = { + }, + inputTextFieldValue = inputValue2, + onValueChanged = { + if (it != null) { + inputValue2 = it + } + }, + isRequiredField = true, + supportingText = listOf(SupportingTextData("Required", SupportingTextState.ERROR)), + ) + } - Spacer(Modifier.size(Spacing.Spacing18)) var inputValue by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("Disabled Input QR code", textColor = TextColor.OnSurfaceVariant) - InputQRCode( - "label", - state = InputShellState.DISABLED, - onQRButtonClicked = { - }, - inputTextFieldValue = inputValue, - onValueChanged = { - if (it != null) { - inputValue = it - } - }, - ) + ColumnComponentContainer("Disabled Input QR code") { + InputQRCode( + "label", + state = InputShellState.DISABLED, + onQRButtonClicked = { + }, + inputTextFieldValue = inputValue, + onValueChanged = { + if (it != null) { + inputValue = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputSignatureScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputSignatureScreen.kt index 01fd0c9e4..bb4737215 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputSignatureScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/InputSignatureScreen.kt @@ -1,94 +1,87 @@ package org.hisp.dhis.common.screens.actionInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size 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.Modifier import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import mobile_ui.common.generated.resources.Res import mobile_ui.common.generated.resources.sample_signature import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputSignature -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor import org.jetbrains.compose.resources.painterResource @Composable fun InputSignatureScreen() { - ColumnComponentContainer { - Title("Input Signature", textColor = TextColor.OnSurfaceVariant) + ColumnScreenContainer(title = ActionInputs.INPUT_SIGNATURE.label) { + ColumnComponentContainer("Basic Input Signature ") { + var sampleSignature0 by rememberSaveable { mutableStateOf(null) } - SubTitle("Basic Input Signature ", textColor = TextColor.OnSurfaceVariant) - var sampleSignature0 by rememberSaveable { mutableStateOf(null) } + InputSignature( + title = "Label", + load = { sampleSignature0 }, + painterFor = sampleSignature0?.let { imageBitmap -> + { + BitmapPainter(imageBitmap) + } + }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = { + sampleSignature0 = null + }, + onSaveSignature = { + sampleSignature0 = it + }, + ) + } - InputSignature( - title = "Label", - load = { sampleSignature0 }, - painterFor = sampleSignature0?.let { imageBitmap -> - { - BitmapPainter(imageBitmap) - } - }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = { - sampleSignature0 = null - }, - onSaveSignature = { - sampleSignature0 = it - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Signature ") { + val sampleSignature = provideSampleImage() - SubTitle("Basic Input Signature ", textColor = TextColor.OnSurfaceVariant) - val sampleSignature = provideSampleImage() + InputSignature( + title = "Label", + load = { sampleSignature }, + painterFor = { remember { it } }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = { + }, + onSaveSignature = {}, + ) + } - InputSignature( - title = "Label", - load = { sampleSignature }, - painterFor = { remember { it } }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = { - }, - onSaveSignature = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Signature without data ") { + InputSignature( + title = "Label", + state = InputShellState.DISABLED, + load = { }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = {}, + onSaveSignature = {}, + ) + } - SubTitle("Disabled Input Signature without data ", textColor = TextColor.OnSurfaceVariant) - InputSignature( - title = "Label", - state = InputShellState.DISABLED, - load = { }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = {}, - onSaveSignature = {}, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Disabled Input Signature with data ", textColor = TextColor.OnSurfaceVariant) - val sampleSignature2 = provideSampleImage() - InputSignature( - title = "Label", - state = InputShellState.DISABLED, - load = { sampleSignature2 }, - painterFor = { it }, - onDownloadButtonClick = {}, - onShareButtonClick = {}, - onResetButtonClicked = { }, - onSaveSignature = {}, - ) + ColumnComponentContainer("Disabled Input Signature with data ") { + val sampleSignature2 = provideSampleImage() + InputSignature( + title = "Label", + state = InputShellState.DISABLED, + load = { sampleSignature2 }, + painterFor = { it }, + onDownloadButtonClick = {}, + onShareButtonClick = {}, + onResetButtonClicked = { }, + onSaveSignature = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/LoginScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/LoginScreen.kt index 7d327fdff..fec941326 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/LoginScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/actionInputs/LoginScreen.kt @@ -13,7 +13,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPassword import org.hisp.dhis.mobile.ui.designsystem.component.InputQRCode import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @@ -23,7 +23,7 @@ import org.hisp.dhis.mobile.ui.designsystem.component.model.InputUserModel @Composable fun LoginScreen() { - ColumnComponentContainer(title = "Login") { + ColumnScreenContainer(title = ActionInputs.LOGIN.label) { var server by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("https://play.dhis2.org/40")) } var userName by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("android")) } var password by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("password")) } @@ -60,12 +60,10 @@ fun LoginScreen() { Icon( imageVector = Icons.AutoMirrored.Outlined.Login, contentDescription = "Login button", - ) }, modifier = Modifier.fillMaxWidth(), enabled = (password.text.isNotEmpty() && userName.text.isNotEmpty() && server.text.isNotEmpty()), - ) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/BasicTextInputsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/BasicTextInputsScreen.kt index 3c10e11be..a7585e27e 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/BasicTextInputsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/BasicTextInputsScreen.kt @@ -4,13 +4,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun BasicTextInputsScreen() { - val currentScreen = remember { mutableStateOf(BasicTextInputs.INPUT_TEXT) } + val currentScreen = remember { mutableStateOf(BasicTextInputs.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() BasicTextInputs.entries.forEach { @@ -18,13 +17,11 @@ fun BasicTextInputsScreen() { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = BasicTextInputs.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { BasicTextInputs.FORM_SHELLS -> FormShellsScreen() @@ -45,19 +42,19 @@ fun BasicTextInputsScreen() { } enum class BasicTextInputs(val label: String) { - FORM_SHELLS("Form Shells"), - INPUT_INTEGER("Input Integer"), - INPUT_LETTER("Input Letter"), - INPUT_LONG_TEXT("Input Long Text"), - INPUT_NEGATIVE_INTEGER("Input Negative Integer"), - INPUT_NOT_SUPPORTED("Input Not Supported"), - INPUT_NUMBER("Input Number"), - INPUT_PERCENTAGE("Input Percentage"), - INPUT_POSITIVE_INTEGER("Input Positive Integer"), - INPUT_POSITIVE_INTEGER_OR_ZERO("Input Positive Integer Or Zero"), - INPUT_TEXT("Input Text"), - INPUT_UNIT_INTERVAL("Input Unit Interval"), - SUPPORTING_TEXT("Supporting text"), + FORM_SHELLS("Form Shells component"), + INPUT_INTEGER("Input Integer component"), + INPUT_LETTER("Input Letter component"), + INPUT_LONG_TEXT("Input Long Text component"), + INPUT_NEGATIVE_INTEGER("Input Negative Integer component"), + INPUT_NOT_SUPPORTED("Input Not Supported component"), + INPUT_NUMBER("Input Number component"), + INPUT_PERCENTAGE("Input Percentage component"), + INPUT_POSITIVE_INTEGER("Input Positive Integer component"), + INPUT_POSITIVE_INTEGER_OR_ZERO("Input Positive or Zero Integer component"), + INPUT_TEXT("Input Text component"), + INPUT_UNIT_INTERVAL("Input Unit Interval component"), + SUPPORTING_TEXT("Supporting Text component"), NO_COMPONENT_SELECTED("No component selected"), } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/FormShellsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/FormShellsScreen.kt index eb486f119..3e9d6d464 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/FormShellsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/FormShellsScreen.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.common.screens.previews.lorem import org.hisp.dhis.common.screens.previews.regularLegendList -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Description import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputText @@ -26,7 +26,7 @@ import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun FormShellsScreen() { - ColumnComponentContainer(title = "Form Shells") { + ColumnScreenContainer(title = BasicTextInputs.FORM_SHELLS.label) { SubTitle("Outer frames for form elements", TextColor.OnSurface) Description("Focused/Unfocused", TextColor.OnSurface) var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Input")) } @@ -183,7 +183,6 @@ fun FormShellsScreen() { } }, state = InputShellState.UNFOCUSED, - ) Spacer(Modifier.size(Spacing.Spacing18)) @@ -306,5 +305,6 @@ fun FormShellsScreen() { }, state = InputShellState.UNFOCUSED, ) + Spacer(Modifier.size(Spacing.Spacing18)) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputIntegerScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputIntegerScreen.kt index 308a5eb70..2786caf77 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputIntegerScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputIntegerScreen.kt @@ -1,78 +1,68 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputInteger import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputIntegerScreen() { - ColumnComponentContainer { - Title("Input Integer component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Input Integer", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_INTEGER.label) { + ColumnComponentContainer("Basic Input Integer") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } + InputInteger( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + inputValue1 = it ?: TextFieldValue() + }, + state = InputShellState.UNFOCUSED, + ) + } - InputInteger( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - inputValue1 = it ?: TextFieldValue() - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Integer with error") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } + InputInteger( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + inputValueError = it ?: TextFieldValue() + }, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), + ) + } - SubTitle("Basic Input Integer with error", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } + ColumnComponentContainer("Disabled Input Integer ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputInteger( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + inputValue6 = it ?: TextFieldValue() + }, + ) + } - InputInteger( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - inputValueError = it ?: TextFieldValue() - }, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Input Integer ", textColor = TextColor.OnSurfaceVariant) - InputInteger( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - inputValue6 = it ?: TextFieldValue() - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } - - SubTitle("Disabled Input Integer with content ", textColor = TextColor.OnSurfaceVariant) - InputInteger( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - inputValue7 = it ?: TextFieldValue() - }, - ) + ColumnComponentContainer("Disabled Input Integer with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } + InputInteger( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + inputValue7 = it ?: TextFieldValue() + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLetterScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLetterScreen.kt index ec19b0eda..55a1f8b35 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLetterScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLetterScreen.kt @@ -1,78 +1,68 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputLetter import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputLetterScreen() { - ColumnComponentContainer { - Title("Input Letter component", textColor = TextColor.OnSurfaceVariant) - SubTitle(" Basic Input Letter", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_LETTER.label) { + ColumnComponentContainer(" Basic Input Letter") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputLetter( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + inputValue1 = it ?: TextFieldValue() + }, + state = InputShellState.UNFOCUSED, + ) + } - InputLetter( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - inputValue1 = it ?: TextFieldValue() - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer(" Basic Input Letter with error") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputLetter( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + inputValueError = it ?: TextFieldValue() + }, + supportingText = listOf(SupportingTextData("Letters only. eg. A, B, C", SupportingTextState.ERROR)), + state = InputShellState.ERROR, + ) + } - SubTitle(" Basic Input Letter with error", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnComponentContainer("Disabled Input Letter ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputLetter( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + inputValue6 = it ?: TextFieldValue() + }, + ) + } - InputLetter( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - inputValueError = it ?: TextFieldValue() - }, - supportingText = listOf(SupportingTextData("Letters only. eg. A, B, C", SupportingTextState.ERROR)), - state = InputShellState.ERROR, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Input Letter ", textColor = TextColor.OnSurfaceVariant) - InputLetter( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - inputValue6 = it ?: TextFieldValue() - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("A")) } - - SubTitle("Disabled Input Letter with content ", textColor = TextColor.OnSurfaceVariant) - InputLetter( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - inputValue7 = it ?: TextFieldValue() - }, - ) + ColumnComponentContainer("Disabled Input Letter with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("A")) } + InputLetter( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + inputValue7 = it ?: TextFieldValue() + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLongTextScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLongTextScreen.kt index 13264704e..861be5139 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLongTextScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputLongTextScreen.kt @@ -1,104 +1,94 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.common.screens.previews.lorem_medium import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputLongText import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputLongTextScreen() { - ColumnComponentContainer { - Title("Input Long Text component", textColor = TextColor.OnSurfaceVariant) - SubTitle(" Basic Input Long Text", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(lorem_medium), - + ColumnScreenContainer(title = BasicTextInputs.INPUT_LONG_TEXT.label) { + ColumnComponentContainer(" Basic Input Long Text") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(lorem_medium), + ) + } + InputLongText( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, ) } - InputLongText( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle(" Basic Input Long Text with error message", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(lorem_medium), + ColumnComponentContainer(" Basic Input Long Text with error message") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(lorem_medium), + ) + } + InputLongText( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + if (it != null) { + inputValueError = it + } + }, + supportingText = listOf( + SupportingTextData( + "100000/1000000 characters used", + state = SupportingTextState.ERROR, + ), + ), + state = InputShellState.ERROR, ) } - InputLongText( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - if (it != null) { - inputValueError = it - } - }, - supportingText = listOf( - SupportingTextData( - "100000/1000000 characters used", - state = SupportingTextState.ERROR, - ), - ), - state = InputShellState.ERROR, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(""), + ColumnComponentContainer("Disabled Input Long Text ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(""), + ) + } + InputLongText( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, ) } - SubTitle("Disabled Input Long Text ", textColor = TextColor.OnSurfaceVariant) - InputLongText( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Content")) } - - SubTitle("Disabled Input text with content ", textColor = TextColor.OnSurfaceVariant) - InputLongText( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input text with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Content")) } + InputLongText( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNegativeIntegerScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNegativeIntegerScreen.kt index 4a7342673..95b60dd96 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNegativeIntegerScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNegativeIntegerScreen.kt @@ -1,86 +1,76 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputNegativeInteger import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputNegativeIntegerScreen() { - ColumnComponentContainer { - Title("Input Negative Integer component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Input Negative Integer", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("-12")) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_NEGATIVE_INTEGER.label) { + ColumnComponentContainer("Basic Input Negative Integer") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("-12")) } + InputNegativeInteger( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, + ) + } - InputNegativeInteger( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Integer with error") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputNegativeInteger( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + if (it != null) { + inputValueError = it + } + }, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), + ) + } - SubTitle("Basic Input Integer with error", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnComponentContainer("Disabled Input Negative Integer ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputNegativeInteger( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - InputNegativeInteger( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - if (it != null) { - inputValueError = it - } - }, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Input Negative Integer ", textColor = TextColor.OnSurfaceVariant) - InputNegativeInteger( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } - - SubTitle("Disabled Input Negative Integer with content ", textColor = TextColor.OnSurfaceVariant) - InputNegativeInteger( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input Negative Integer with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } + InputNegativeInteger( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNotSupportedScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNotSupportedScreen.kt index 6dea6fe9b..fc2e9354c 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNotSupportedScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNotSupportedScreen.kt @@ -2,11 +2,14 @@ package org.hisp.dhis.common.screens.basicTextInputs import androidx.compose.runtime.Composable import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputNotSupported @Composable fun InputNotSupportedScreen() { - ColumnComponentContainer { - InputNotSupported(title = "Label") + ColumnScreenContainer(title = BasicTextInputs.INPUT_NOT_SUPPORTED.label) { + ColumnComponentContainer { + InputNotSupported(title = "Label") + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNumberScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNumberScreen.kt index c69e9b640..3d06024c9 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNumberScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputNumberScreen.kt @@ -1,87 +1,76 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.Description +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputNumber import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title import org.hisp.dhis.mobile.ui.designsystem.component.internal.RegExValidations -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputNumberScreen() { - ColumnComponentContainer { - Title("Input Number component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Input Number", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - Description("British decimal notation", textColor = TextColor.OnSurfaceVariant) - InputNumber( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - notation = RegExValidations.BRITISH_DECIMAL_NOTATION, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer(title = BasicTextInputs.INPUT_NUMBER.label) { + ColumnComponentContainer("Basic Input Number") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputNumber( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + notation = RegExValidations.BRITISH_DECIMAL_NOTATION, + state = InputShellState.UNFOCUSED, + ) + } - Description("European decimal notation", textColor = TextColor.OnSurfaceVariant) - var inputValueEuropean by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnComponentContainer("European decimal notation") { + var inputValueEuropean by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputNumber( + title = "Label", + inputTextFieldValue = inputValueEuropean, + onValueChanged = { + if (it != null) { + inputValueEuropean = it + } + }, + notation = RegExValidations.EUROPEAN_DECIMAL_NOTATION, + state = InputShellState.UNFOCUSED, + ) + } - InputNumber( - title = "Label", - inputTextFieldValue = inputValueEuropean, - onValueChanged = { - if (it != null) { - inputValueEuropean = it - } - }, - notation = RegExValidations.EUROPEAN_DECIMAL_NOTATION, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Number ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputNumber( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Input Number ", textColor = TextColor.OnSurfaceVariant) - InputNumber( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("86")) } - - SubTitle("Disabled Input Number with content ", textColor = TextColor.OnSurfaceVariant) - InputNumber( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input Number with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("86")) } + InputNumber( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPercentageScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPercentageScreen.kt index c64c30a30..1095e68d3 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPercentageScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPercentageScreen.kt @@ -1,84 +1,74 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPercentage import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputPercentageScreen() { - ColumnComponentContainer { - Title("Input Percentage component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Percentage ", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_PERCENTAGE.label) { + ColumnComponentContainer("Basic Percentage ") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } + InputPercentage( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, + ) + } - InputPercentage( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Percentage required field") { + var inputValueRequired by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputPercentage( + title = "Label", + inputTextFieldValue = inputValueRequired, + onValueChanged = { + if (it != null) { + inputValueRequired = it + } + }, + state = InputShellState.ERROR, + isRequiredField = true, + ) + } - SubTitle("Basic Percentage required field", textColor = TextColor.OnSurfaceVariant) - var inputValueRequired by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnComponentContainer("Disabled Percentage ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputPercentage( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - InputPercentage( - title = "Label", - inputTextFieldValue = inputValueRequired, - onValueChanged = { - if (it != null) { - inputValueRequired = it - } - }, - state = InputShellState.ERROR, - isRequiredField = true, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Percentage ", textColor = TextColor.OnSurfaceVariant) - InputPercentage( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } - - SubTitle("Disabled Percentage with content ", textColor = TextColor.OnSurfaceVariant) - InputPercentage( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Percentage with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } + InputPercentage( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerOrZeroScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerOrZeroScreen.kt index 361469c7b..ae996e1bd 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerOrZeroScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerOrZeroScreen.kt @@ -1,71 +1,62 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPositiveIntegerOrZero import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputPositiveIntegerOrZeroScreen() { - ColumnComponentContainer { - Title("Input Positive or Zero Integer component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Input Integer", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("123")) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_POSITIVE_INTEGER_OR_ZERO.label) { + ColumnComponentContainer("Basic Input Integer") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("123")) } + InputPositiveIntegerOrZero( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, + ) + } - InputPositiveIntegerOrZero( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Integer with error") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputPositiveIntegerOrZero( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + if (it != null) { + inputValueError = it + } + }, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), + ) + } - SubTitle("Basic Input Integer with error", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - InputPositiveIntegerOrZero( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - if (it != null) { - inputValueError = it - } - }, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } - - SubTitle("Disabled Input Integer with content ", textColor = TextColor.OnSurfaceVariant) - InputPositiveIntegerOrZero( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input Integer with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } + InputPositiveIntegerOrZero( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerScreen.kt index 9fedce22d..0cdeafc83 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputPositiveIntegerScreen.kt @@ -1,85 +1,78 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPositiveInteger import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputPositiveIntegerScreen() { - ColumnComponentContainer { - Title("Input Positive Integer component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic Input Integer", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } + ColumnScreenContainer(title = BasicTextInputs.INPUT_POSITIVE_INTEGER.label) { + ColumnComponentContainer("Basic Input Integer") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("12")) } - InputPositiveInteger( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Basic Input Integer with error", textColor = TextColor.OnSurfaceVariant) - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputPositiveInteger( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, + ) + } - InputPositiveInteger( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - if (it != null) { - inputValueError = it - } - }, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Integer with error") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputPositiveInteger( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + if (it != null) { + inputValueError = it + } + }, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Numbers only", SupportingTextState.ERROR)), + ) + } - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + ColumnComponentContainer("Disabled Input Integer ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - SubTitle("Disabled Input Integer ", textColor = TextColor.OnSurfaceVariant) - InputPositiveInteger( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputPositiveInteger( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } - - SubTitle("Disabled Input Integer with content ", textColor = TextColor.OnSurfaceVariant) - InputPositiveInteger( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input Integer with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("1234")) } + InputPositiveInteger( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputTextScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputTextScreen.kt index f5318eec3..4eb829fb0 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputTextScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputTextScreen.kt @@ -1,88 +1,79 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputText -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputTextScreen() { - ColumnComponentContainer { - Title("Input text component", textColor = TextColor.OnSurfaceVariant) - SubTitle(" Basic Input text", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue("Input"), + ColumnScreenContainer(title = BasicTextInputs.INPUT_TEXT.label) { + ColumnComponentContainer(" Basic Input text") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue("Input"), + ) + } + val autoCompleteList = listOf("red", "yellow", "blue", "orange", "purple", "green") + InputText( + autoCompleteList = autoCompleteList, + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, ) } - val autoCompleteList = listOf("red", "yellow", "blue", "orange", "purple", "green") - InputText( - autoCompleteList = autoCompleteList, - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Input text with error ") - var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Input")) } - - InputText( - title = "Label", - inputTextFieldValue = inputValueError, - onValueChanged = { - if (it != null) { - inputValueError = it - } - }, - state = InputShellState.ERROR, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } - - SubTitle("Disabled Input text ", textColor = TextColor.OnSurfaceVariant) - InputText( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Input text with error ") { + var inputValueError by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Input")) } + InputText( + title = "Label", + inputTextFieldValue = inputValueError, + onValueChanged = { + if (it != null) { + inputValueError = it + } + }, + state = InputShellState.ERROR, + ) + } - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Content")) } + ColumnComponentContainer("Disabled Input text ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } + InputText( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - SubTitle("Disabled Input text with content ", textColor = TextColor.OnSurfaceVariant) - InputText( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled Input text with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("Content")) } + InputText( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputUnitIntervalScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputUnitIntervalScreen.kt index 1665d50fe..961af03c2 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputUnitIntervalScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/InputUnitIntervalScreen.kt @@ -1,93 +1,82 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputUnitInterval -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputUnitIntervalScreen() { - ColumnComponentContainer { - Title("Unit Interval", textColor = TextColor.OnSurfaceVariant) - SubTitle("Keyboard: Numbers. Range between 0 and 1", textColor = TextColor.OnSurfaceVariant) - SubTitle("Basic unit interval ", textColor = TextColor.OnSurfaceVariant) - var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("0.25")) } - - InputUnitInterval( - title = "Label", - inputTextFieldValue = inputValue1, - onValueChanged = { - if (it != null) { - inputValue1 = it - } - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Basic unit interval required field", textColor = TextColor.OnSurfaceVariant) - var inputValueRequired by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(), + ColumnScreenContainer(title = BasicTextInputs.INPUT_UNIT_INTERVAL.label) { + ColumnComponentContainer("Basic unit interval - Keyboard: Numbers. Range between 0 and 1 ") { + var inputValue1 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("0.25")) } + InputUnitInterval( + title = "Label", + inputTextFieldValue = inputValue1, + onValueChanged = { + if (it != null) { + inputValue1 = it + } + }, + state = InputShellState.UNFOCUSED, ) } - InputUnitInterval( - title = "Label", - inputTextFieldValue = inputValueRequired, - onValueChanged = { - if (it != null) { - inputValueRequired = it - } - }, - state = InputShellState.ERROR, - isRequiredField = true, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { - mutableStateOf( - TextFieldValue(), + ColumnComponentContainer("Basic unit interval required field") { + var inputValueRequired by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(), + ) + } + InputUnitInterval( + title = "Label", + inputTextFieldValue = inputValueRequired, + onValueChanged = { + if (it != null) { + inputValueRequired = it + } + }, + state = InputShellState.ERROR, + isRequiredField = true, ) } - SubTitle("Disabled unit interval ", textColor = TextColor.OnSurfaceVariant) - InputUnitInterval( - title = "Label", - inputTextFieldValue = inputValue6, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue6 = it - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - - var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("0.19")) } + ColumnComponentContainer("Disabled unit interval ") { + var inputValue6 by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf( + TextFieldValue(), + ) + } + InputUnitInterval( + title = "Label", + inputTextFieldValue = inputValue6, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue6 = it + } + }, + ) + } - SubTitle("Disabled unit interval with content ", textColor = TextColor.OnSurfaceVariant) - InputUnitInterval( - title = "Label", - inputTextFieldValue = inputValue7, - state = InputShellState.DISABLED, - onValueChanged = { - if (it != null) { - inputValue7 = it - } - }, - ) + ColumnComponentContainer("Disabled unit interval with content ") { + var inputValue7 by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("0.19")) } + InputUnitInterval( + title = "Label", + inputTextFieldValue = inputValue7, + state = InputShellState.DISABLED, + onValueChanged = { + if (it != null) { + inputValue7 = it + } + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/SupportingTextScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/SupportingTextScreen.kt index d7204756f..661c1f946 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/SupportingTextScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/basicTextInputs/SupportingTextScreen.kt @@ -1,42 +1,32 @@ package org.hisp.dhis.common.screens.basicTextInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.lorem import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.SupportingText import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun SupportingTextScreen() { - ColumnComponentContainer(title = "Supporting Text") { - SubTitle("Standard Supporting Text") - SupportingText("Supporting text") - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Standard Warning Supporting Text") - SupportingText("Supporting Text", SupportingTextState.WARNING) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Standard Error Supporting Text") - SupportingText("Supporting Text", SupportingTextState.ERROR) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Overflow Default Supporting Text") - SupportingText( - lorem, - ) - SubTitle("Overflow Warning Supporting Text") - SupportingText( - lorem, - SupportingTextState.WARNING, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Overflow Error Supporting Text") - SupportingText( - lorem, - SupportingTextState.ERROR, - ) + ColumnScreenContainer(title = BasicTextInputs.SUPPORTING_TEXT.label) { + ColumnComponentContainer("Standard Supporting Text") { + SupportingText("Supporting Text") + } + ColumnComponentContainer("Standard Warning Supporting Text") { + SupportingText("Supporting Text", SupportingTextState.WARNING) + } + ColumnComponentContainer("Standard Error Supporting Text") { + SupportingText("Supporting Text", SupportingTextState.ERROR) + } + ColumnComponentContainer("Overflow Default Supporting Text") { + SupportingText(lorem) + } + ColumnComponentContainer("Overflow Warning Supporting Text") { + SupportingText(lorem, SupportingTextState.WARNING) + } + ColumnComponentContainer("Overflow Error Supporting Text") { + SupportingText(lorem, SupportingTextState.ERROR) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetHeaderScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetHeaderScreen.kt index a9bfc649c..446f3d8e3 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetHeaderScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetHeaderScreen.kt @@ -2,8 +2,6 @@ package org.hisp.dhis.common.screens.bottomSheets import androidx.compose.foundation.border import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.HelpOutline import androidx.compose.material.icons.outlined.BookmarkBorder @@ -13,92 +11,89 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import org.hisp.dhis.mobile.ui.designsystem.component.BottomSheetHeader import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun BottomSheetHeaderScreen() { - ColumnComponentContainer(title = "Bottom Sheet Header") { - SubTitle("With Icon", TextColor.OnSurface) - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - subTitle = "Subtitle", - description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", - icon = { - Icon( - imageVector = Icons.Outlined.BookmarkBorder, - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - ) + ColumnScreenContainer(title = BottomSheets.BOTTOM_SHEET_HEADER.label) { + ColumnComponentContainer("With Icon") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + subTitle = "Subtitle", + description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", + icon = { + Icon( + imageVector = Icons.Outlined.BookmarkBorder, + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + ) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Without Icon", TextColor.OnSurface) - - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - subTitle = "Subtitle", - description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", - ) + ColumnComponentContainer("Without Icon") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + subTitle = "Subtitle", + description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", + ) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Without Icon, without subtitle", TextColor.OnSurface) - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", - ) + ColumnComponentContainer("Without Icon, without subtitle") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", + ) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Without Icon, subtitle or description", TextColor.OnSurface) - - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - ) + ColumnComponentContainer("Without Icon, subtitle or description") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + ) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("With Icon, without subtitle or description", TextColor.OnSurface) - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - icon = { - Icon( - imageVector = Icons.AutoMirrored.Outlined.HelpOutline, - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - ) + ColumnComponentContainer("With Icon, without subtitle or description") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + icon = { + Icon( + imageVector = Icons.AutoMirrored.Outlined.HelpOutline, + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + ) + } } - SubTitle("Bottom sheet shell with header, content and buttons", TextColor.OnSurface) - Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { - BottomSheetHeader( - title = "Title", - subTitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit", - description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", - headerTextAlignment = TextAlign.Start, - icon = { - Icon( - imageVector = Icons.AutoMirrored.Outlined.HelpOutline, - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - ) + ColumnComponentContainer("Bottom sheet shell with header text aligned to start") { + Box(modifier = Modifier.border(Spacing.Spacing1, color = TextColor.OnDisabledSurface)) { + BottomSheetHeader( + title = "Title", + subTitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis, urna vitae lacinia feugiat", + headerTextAlignment = TextAlign.Start, + icon = { + Icon( + imageVector = Icons.AutoMirrored.Outlined.HelpOutline, + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + ) + } } - SubTitle("Bottom sheet shell with header text aligned to start", TextColor.OnSurface) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetScreen.kt index a7168ca1c..e9c84e2fa 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredWidth -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState @@ -33,9 +32,8 @@ import org.hisp.dhis.mobile.ui.designsystem.component.ButtonBlock import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColorStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.LegendRange -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor @Composable @@ -61,7 +59,7 @@ fun BottomSheetScreen() { ) }, content = { - Column() { + Column { LegendRange( regularLegendList, ) @@ -131,7 +129,7 @@ fun BottomSheetScreen() { ) }, content = { - Column() { + Column { LegendRange( longLegendList, ) @@ -176,7 +174,7 @@ fun BottomSheetScreen() { ) }, content = { - Column() { + Column { LegendRange( regularLegendList, ) @@ -237,7 +235,7 @@ fun BottomSheetScreen() { ) }, content = { - Column() { + Column { LegendRange( regularLegendList, ) @@ -300,7 +298,7 @@ fun BottomSheetScreen() { ) }, content = { - Column() { + Column { LegendRange( regularLegendList, ) @@ -330,7 +328,7 @@ fun BottomSheetScreen() { onSearchQueryChanged = { searchQuery = it }, onSearch = { searchQuery = it }, content = { - Column() { + Column { LegendRange( regularLegendList, ) @@ -383,84 +381,84 @@ fun BottomSheetScreen() { } } - ColumnComponentContainer { - SubTitle("Legend type bottom sheet shell") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showLegendBottomSheetShell = !showLegendBottomSheetShell + ColumnScreenContainer(title = BottomSheets.BOTTOM_SHEET.label) { + ColumnComponentContainer("Legend type bottom sheet shell") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showLegendBottomSheetShell = !showLegendBottomSheetShell + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell with scrollable content") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetShellScrollableContent = !showBottomSheetShellScrollableContent + ColumnComponentContainer("Bottom sheet shell with scrollable content") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetShellScrollableContent = !showBottomSheetShellScrollableContent + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell with with maximum expansion ") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetShellMaxExpansion = !showBottomSheetShellScrollableContent + ColumnComponentContainer("Bottom sheet shell with with maximum expansion ") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetShellMaxExpansion = !showBottomSheetShellScrollableContent + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell with single button") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetShellSingleButton = !showBottomSheetShellSingleButton + ColumnComponentContainer("Bottom sheet shell with single button") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetShellSingleButton = !showBottomSheetShellSingleButton + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell with two buttons") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetShellTwoButtons = !showBottomSheetShellTwoButtons + ColumnComponentContainer("Bottom sheet shell with two buttons") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetShellTwoButtons = !showBottomSheetShellTwoButtons + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell with search bar") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetWithSearchBar = !showBottomSheetWithSearchBar + ColumnComponentContainer("Bottom sheet shell with search bar") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetWithSearchBar = !showBottomSheetWithSearchBar + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell without title") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetWithoutTitle = !showBottomSheetWithoutTitle + ColumnComponentContainer("Bottom sheet shell without title") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetWithoutTitle = !showBottomSheetWithoutTitle + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - SubTitle("Bottom sheet shell without content") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Modal", - ) { - showBottomSheetWithoutContent = !showBottomSheetWithoutContent + ColumnComponentContainer("Bottom sheet shell without content") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Modal", + ) { + showBottomSheetWithoutContent = !showBottomSheetWithoutContent + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetsScreen.kt index 519f0740b..73b45487b 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/BottomSheetsScreen.kt @@ -4,27 +4,24 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun BottomSheetsScreen() { - val currentScreen = remember { mutableStateOf(BottomSheets.BOTTOM_SHEET) } + val currentScreen = remember { mutableStateOf(BottomSheets.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() BottomSheets.entries.forEach { - if (it != BottomSheets.BOTTOM_SHEET) { + if (it != BottomSheets.NO_COMPONENT_SELECTED) { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = BottomSheets.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { BottomSheets.BOTTOM_SHEET -> BottomSheetScreen() @@ -35,9 +32,9 @@ fun BottomSheetsScreen() { } enum class BottomSheets(val label: String) { - BOTTOM_SHEET("Bottom Sheet "), - BOTTOM_SHEET_HEADER("Bottom Sheet Header"), - ORG_TREE_BOTTOM_SHEET("Org Tree Bottom Sheet"), + BOTTOM_SHEET("Bottom Sheet component"), + BOTTOM_SHEET_HEADER("Bottom Sheet Header component"), + ORG_TREE_BOTTOM_SHEET("Org Tree Bottom Sheet component"), NO_COMPONENT_SELECTED("No component selected"), } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/OrgTreeBottomSheetScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/OrgTreeBottomSheetScreen.kt index 5c01bdd77..627d056a6 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/OrgTreeBottomSheetScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/bottomSheets/OrgTreeBottomSheetScreen.kt @@ -1,7 +1,5 @@ package org.hisp.dhis.common.screens.bottomSheets -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -9,7 +7,6 @@ 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.Modifier import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @@ -23,10 +20,9 @@ import org.hisp.dhis.common.screens.previews.lorem_short import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.OrgBottomSheet import org.hisp.dhis.mobile.ui.designsystem.component.OrgTreeItem -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun OrgTreeBottomSheetScreen() { @@ -119,50 +115,50 @@ fun OrgTreeBottomSheetScreen() { ) } - ColumnComponentContainer { - SubTitle("Org Tree Bottom Sheet") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show One Org Tree Bottom Sheet", - ) { - showOneOrgTreeBottomSheet = !showOneOrgTreeBottomSheet + ColumnScreenContainer(title = BottomSheets.ORG_TREE_BOTTOM_SHEET.label) { + ColumnComponentContainer("Org Tree Bottom Sheet with single item") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show One Org Tree Bottom Sheet", + ) { + showOneOrgTreeBottomSheet = !showOneOrgTreeBottomSheet + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - - SubTitle("Org Tree Bottom Sheet") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Two Org Tree Bottom Sheet", - ) { - showTwoOrgTreeBottomSheet = !showTwoOrgTreeBottomSheet + + ColumnComponentContainer("Org Tree Bottom Sheet with multiple items") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Two Org Tree Bottom Sheet", + ) { + showTwoOrgTreeBottomSheet = !showTwoOrgTreeBottomSheet + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - - SubTitle("Org Tree Bottom Sheet") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Org Tree Bottom Sheet", - ) { - showMediumOrgTreeBottomSheet = !showMediumOrgTreeBottomSheet + + ColumnComponentContainer("Org Tree Bottom Sheet with medium items") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Org Tree Bottom Sheet", + ) { + showMediumOrgTreeBottomSheet = !showMediumOrgTreeBottomSheet + } } - Spacer(modifier = Modifier.size(Spacing.Spacing10)) - - SubTitle("Org Tree Bottom Sheet") - Button( - enabled = true, - ButtonStyle.FILLED, - text = "Show Large Org Tree Bottom Sheet", - ) { - showLargeOrgTreeBottomSheet = !showLargeOrgTreeBottomSheet + + ColumnComponentContainer("Org Tree Bottom Sheet with large items") { + Button( + enabled = true, + ButtonStyle.FILLED, + text = "Show Large Org Tree Bottom Sheet", + ) { + showLargeOrgTreeBottomSheet = !showLargeOrgTreeBottomSheet + } } } } private class OrgTreeItemsFakeRepo { - private val originalOrgTreeItems = listOf( OrgTreeItem( uid = "12", diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonBlockScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonBlockScreen.kt index 44cafb0f6..a47251542 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonBlockScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonBlockScreen.kt @@ -1,8 +1,6 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material3.Icon @@ -12,89 +10,93 @@ import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonBlock import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.TextButtonSelector import org.hisp.dhis.mobile.ui.designsystem.component.Title import org.hisp.dhis.mobile.ui.designsystem.resource.provideStringResource -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun ButtonBlockScreen() { - ColumnComponentContainer { - Title("Button block") - SubTitle("One button style") - ButtonBlock( - primaryButton = { - Button( - style = ButtonStyle.KEYBOARDKEY, - icon = { - Icon( - imageVector = Icons.Filled.Add, - contentDescription = "Button", - ) - }, - enabled = true, - text = "Label", - onClick = { - }, - modifier = Modifier.fillMaxWidth(), - ) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer(title = ButtonScreens.BUTTON_BLOCK.label) { + ColumnComponentContainer("One button style") { + ButtonBlock( + primaryButton = { + Button( + style = ButtonStyle.KEYBOARDKEY, + icon = { + Icon( + imageVector = Icons.Filled.Add, + contentDescription = "Button", + ) + }, + enabled = true, + text = "Label", + onClick = { + }, + modifier = Modifier.fillMaxWidth(), + ) + }, + ) + } + + ColumnComponentContainer("Two button style") { + ButtonBlock( + primaryButton = { + Button( + style = ButtonStyle.KEYBOARDKEY, + icon = { + Icon( + imageVector = Icons.Filled.Add, + contentDescription = "Button", + ) + }, + enabled = true, + text = "Label", + onClick = { + }, + modifier = Modifier.fillMaxWidth(), + ) + }, + secondaryButton = { + Button( + style = ButtonStyle.KEYBOARDKEY, + icon = { + Icon( + imageVector = Icons.Filled.Add, + contentDescription = "Button", + ) + }, + enabled = true, + text = "Label", + onClick = { + }, + modifier = Modifier.fillMaxWidth(), + ) + }, + ) + } - SubTitle("Two button style") - ButtonBlock( - primaryButton = { - Button( - style = ButtonStyle.KEYBOARDKEY, - icon = { - Icon( - imageVector = Icons.Filled.Add, - contentDescription = "Button", - ) - }, - enabled = true, - text = "Label", - onClick = { - }, - modifier = Modifier.fillMaxWidth(), - ) - }, - secondaryButton = { - Button( - style = ButtonStyle.KEYBOARDKEY, - icon = { - Icon( - imageVector = Icons.Filled.Add, - contentDescription = "Button", - ) - }, - enabled = true, - text = "Label", - onClick = { - }, - modifier = Modifier.fillMaxWidth(), - ) - }, - ) Title("Text Button Selectors") - SubTitle("Enabled") - TextButtonSelector( - firstOptionText = provideStringResource("date_birth"), - onClickFirstOption = {}, - middleText = provideStringResource("or"), - secondOptionText = provideStringResource("age"), - onClickSecondOption = {}, - ) - SubTitle("Disabled") - TextButtonSelector( - enabled = false, - firstOptionText = provideStringResource("date_birth"), - onClickFirstOption = {}, - middleText = provideStringResource("or"), - secondOptionText = provideStringResource("age"), - onClickSecondOption = {}, - ) + + ColumnComponentContainer("Enabled") { + TextButtonSelector( + firstOptionText = provideStringResource("date_birth"), + onClickFirstOption = {}, + middleText = provideStringResource("or"), + secondOptionText = provideStringResource("age"), + onClickSecondOption = {}, + ) + } + + ColumnComponentContainer("Disabled") { + TextButtonSelector( + enabled = false, + firstOptionText = provideStringResource("date_birth"), + onClickFirstOption = {}, + middleText = provideStringResource("or"), + secondOptionText = provideStringResource("age"), + onClickSecondOption = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonCarouselScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonCarouselScreen.kt index f1c255641..9ed4c90d1 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonCarouselScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonCarouselScreen.kt @@ -1,29 +1,21 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FileDownload import androidx.compose.material3.Icon import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.fiveButtonCarousel import org.hisp.dhis.common.screens.previews.overflowButtonCarousel import org.hisp.dhis.common.screens.previews.threeButtonCarousel import org.hisp.dhis.mobile.ui.designsystem.component.ButtonCarousel import org.hisp.dhis.mobile.ui.designsystem.component.CarouselButtonData import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer @Composable fun ButtonCarouselScreen() { - ColumnComponentContainer { - Title("Carousel Buttons") - RowComponentContainer( - title = "Simple Carousel Button", - ) { + ColumnScreenContainer(title = ButtonScreens.CAROUSEL_BUTTONS.label) { + ColumnComponentContainer("Simple Carousel Button") { ButtonCarousel( carouselButtonList = listOf( CarouselButtonData( @@ -40,25 +32,21 @@ fun ButtonCarouselScreen() { ), ) } - RowComponentContainer( - title = "Buttons Carousel", - ) { - Column( - Modifier.fillMaxWidth(), - ) { - ButtonCarousel( - carouselButtonList = threeButtonCarousel, - ) - ButtonCarousel( - carouselButtonList = fiveButtonCarousel, - ) + ColumnComponentContainer("Buttons Carousel") { + ButtonCarousel( + carouselButtonList = threeButtonCarousel, + ) + + ButtonCarousel( + carouselButtonList = fiveButtonCarousel, + ) + } - SubTitle("Overflow case") - ButtonCarousel( - carouselButtonList = overflowButtonCarousel, - ) - } + ColumnComponentContainer("Overflow case") { + ButtonCarousel( + carouselButtonList = overflowButtonCarousel, + ) } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonScreen.kt index 0ed5a2ab1..f1f56291b 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonScreen.kt @@ -1,153 +1,150 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.ButtonPreview import org.hisp.dhis.common.screens.previews.ButtonPreviewWithIcon import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColorStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun ButtonScreen() { - ColumnComponentContainer() { - Title("Buttons") - SubTitle("Filled") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.FILLED) - ButtonPreview("Label", ButtonStyle.FILLED, false) - } - RowComponentContainer { - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED) - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false) + ColumnScreenContainer(title = ButtonScreens.BUTTON.label) { + ColumnComponentContainer("Filled") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.FILLED) + ButtonPreview("Label", ButtonStyle.FILLED, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED) + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Outlined") - RowComponentContainer() { - ButtonPreview("Label") - ButtonPreview("Label", ButtonStyle.OUTLINED, false) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label") - ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false) + ColumnComponentContainer("Outlined") { + RowComponentContainer { + ButtonPreview("Label") + ButtonPreview("Label", ButtonStyle.OUTLINED, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label") + ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Text") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.TEXT) - ButtonPreview("Label", ButtonStyle.TEXT, false) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT) - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false) + ColumnComponentContainer("Text") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.TEXT) + ButtonPreview("Label", ButtonStyle.TEXT, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT) + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Elevated") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.ELEVATED) - ButtonPreview("Label", ButtonStyle.ELEVATED, false) + ColumnComponentContainer("Elevated") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.ELEVATED) + ButtonPreview("Label", ButtonStyle.ELEVATED, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.ELEVATED) + ButtonPreviewWithIcon("Label", ButtonStyle.ELEVATED, false) + } } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.ELEVATED) - ButtonPreviewWithIcon("Label", ButtonStyle.ELEVATED, false) - } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Tonal") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.TONAL) - ButtonPreview("Label", ButtonStyle.TONAL, false) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.TONAL) - ButtonPreviewWithIcon("Label", ButtonStyle.TONAL, false) + ColumnComponentContainer("Tonal") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.TONAL) + ButtonPreview("Label", ButtonStyle.TONAL, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.TONAL) + ButtonPreviewWithIcon("Label", ButtonStyle.TONAL, false) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Keyboard") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.KEYBOARDKEY) - ButtonPreview("Label", ButtonStyle.KEYBOARDKEY, false) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.KEYBOARDKEY) - ButtonPreviewWithIcon("Label", ButtonStyle.KEYBOARDKEY, false) + ColumnComponentContainer("Keyboard") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.KEYBOARDKEY) + ButtonPreview("Label", ButtonStyle.KEYBOARDKEY, false) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.KEYBOARDKEY) + ButtonPreviewWithIcon("Label", ButtonStyle.KEYBOARDKEY, false) + } } Title("Error Buttons") - SubTitle("Filled") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.FILLED, true, ColorStyle.ERROR) - ButtonPreview("Label", ButtonStyle.FILLED, false, ColorStyle.ERROR) - } - RowComponentContainer { - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, true, ColorStyle.ERROR) - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false, ColorStyle.ERROR) + ColumnComponentContainer("Filled") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.FILLED, true, ColorStyle.ERROR) + ButtonPreview("Label", ButtonStyle.FILLED, false, ColorStyle.ERROR) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, true, ColorStyle.ERROR) + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false, ColorStyle.ERROR) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Outlined") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.OUTLINED, true, ColorStyle.ERROR) - ButtonPreview("Label", ButtonStyle.OUTLINED, false, ColorStyle.ERROR) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, true, ColorStyle.ERROR) - ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false, ColorStyle.ERROR) + ColumnComponentContainer("Outlined") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.OUTLINED, true, ColorStyle.ERROR) + ButtonPreview("Label", ButtonStyle.OUTLINED, false, ColorStyle.ERROR) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, true, ColorStyle.ERROR) + ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false, ColorStyle.ERROR) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Text") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.TEXT, true, ColorStyle.ERROR) - ButtonPreview("Label", ButtonStyle.TEXT, false, ColorStyle.ERROR) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, true, ColorStyle.ERROR) - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false, ColorStyle.ERROR) + ColumnComponentContainer("Text") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.TEXT, true, ColorStyle.ERROR) + ButtonPreview("Label", ButtonStyle.TEXT, false, ColorStyle.ERROR) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, true, ColorStyle.ERROR) + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false, ColorStyle.ERROR) + } } - Spacer(Modifier.size(Spacing.Spacing18)) Title("Warning Buttons") - SubTitle("Filled") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.FILLED, true, ColorStyle.WARNING) - ButtonPreview("Label", ButtonStyle.FILLED, false, ColorStyle.WARNING) - } - RowComponentContainer { - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, true, ColorStyle.WARNING) - ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false, ColorStyle.WARNING) + ColumnComponentContainer("Filled") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.FILLED, true, ColorStyle.WARNING) + ButtonPreview("Label", ButtonStyle.FILLED, false, ColorStyle.WARNING) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, true, ColorStyle.WARNING) + ButtonPreviewWithIcon("Label", ButtonStyle.FILLED, false, ColorStyle.WARNING) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Outlined") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.OUTLINED, true, ColorStyle.WARNING) - ButtonPreview("Label", ButtonStyle.OUTLINED, false, ColorStyle.WARNING) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, true, ColorStyle.WARNING) - ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false, ColorStyle.WARNING) + ColumnComponentContainer("Outlined") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.OUTLINED, true, ColorStyle.WARNING) + ButtonPreview("Label", ButtonStyle.OUTLINED, false, ColorStyle.WARNING) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, true, ColorStyle.WARNING) + ButtonPreviewWithIcon("Label", ButtonStyle.OUTLINED, false, ColorStyle.WARNING) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Text") - RowComponentContainer() { - ButtonPreview("Label", ButtonStyle.TEXT, true, ColorStyle.WARNING) - ButtonPreview("Label", ButtonStyle.TEXT, false, ColorStyle.WARNING) - } - RowComponentContainer() { - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, true, ColorStyle.WARNING) - ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false, ColorStyle.WARNING) + ColumnComponentContainer("Text") { + RowComponentContainer { + ButtonPreview("Label", ButtonStyle.TEXT, true, ColorStyle.WARNING) + ButtonPreview("Label", ButtonStyle.TEXT, false, ColorStyle.WARNING) + } + RowComponentContainer { + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, true, ColorStyle.WARNING) + ButtonPreviewWithIcon("Label", ButtonStyle.TEXT, false, ColorStyle.WARNING) + } } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonsScreen.kt index e14067b99..3039a8d48 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/ButtonsScreen.kt @@ -4,13 +4,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun ButtonsScreen() { - val currentScreen = remember { mutableStateOf(ButtonScreens.BUTTON) } + val currentScreen = remember { mutableStateOf(ButtonScreens.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() ButtonScreens.entries.forEach { @@ -18,13 +17,11 @@ fun ButtonsScreen() { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = ButtonScreens.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { ButtonScreens.BUTTON -> ButtonScreen() @@ -40,14 +37,14 @@ fun ButtonsScreen() { } enum class ButtonScreens(val label: String) { - BUTTON("Button"), - BUTTON_BLOCK("Button block"), - CAROUSEL_BUTTONS("Carousel buttons"), - CHECK_BOX("Check Box"), - FAB("FAB"), - ICON_BUTTON("Icon Button"), - RADIO("Radio"), - SWITCH("Switch"), + BUTTON("Button component"), + BUTTON_BLOCK("Button block component"), + CAROUSEL_BUTTONS("Carousel button component"), + CHECK_BOX("Check Box component"), + FAB("FAB component"), + ICON_BUTTON("Icon Button component"), + RADIO("Radio component"), + SWITCH("Switch component"), NO_COMPONENT_SELECTED("No component selected"), } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/CheckboxScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/CheckboxScreen.kt index c6f3c7636..0b3983190 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/CheckboxScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/CheckboxScreen.kt @@ -1,23 +1,19 @@ package org.hisp.dhis.common.screens.buttons import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.CheckboxPreview import org.hisp.dhis.common.screens.previews.TextCheckboxPreview import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxBlock import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Orientation -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun CheckboxScreen() { @@ -54,57 +50,50 @@ fun CheckboxScreen() { ) } - ColumnComponentContainer( - title = "CheckBox", + ColumnScreenContainer( + title = ButtonScreens.CHECK_BOX.label, content = { - SubTitle( - text = "Text Check Box", - ) - TextCheckboxPreview(state1, true, option1) { - state1 = it + ColumnComponentContainer("Text Check Box") { + TextCheckboxPreview(state1, true, option1) { + state1 = it + } + TextCheckboxPreview(state2, true, option2) { state2 = it } + TextCheckboxPreview(state3, false, option3) { state3 = it } + TextCheckboxPreview(state4, enabled = false, text = option4) { state4 = it } } - TextCheckboxPreview(state2, true, option2) { state2 = it } - TextCheckboxPreview(state3, false, option3) { state3 = it } - TextCheckboxPreview(state4, enabled = false, text = option4) { state4 = it } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle( - text = "Simple Check Box", - ) - Row { - CheckboxPreview(state5, enabled = true) { state5 = it } - CheckboxPreview(state6, enabled = false) { state6 = it } + ColumnComponentContainer("Simple Check Box") { + Row { + CheckboxPreview(state5, enabled = true) { state5 = it } + CheckboxPreview(state6, enabled = false) { state6 = it } + } + Row { + CheckboxPreview(state7, enabled = true) { state7 = it } + CheckboxPreview(state8, enabled = false) { state8 = it } + } } - Row { - CheckboxPreview(state7, enabled = true) { state7 = it } - CheckboxPreview(state8, enabled = false) { state8 = it } - } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle( - text = "Horizontal Check Box Block", - ) - CheckBoxBlock( - Orientation.HORIZONTAL, - checkBoxesStatesHorizontal, - onItemChange = { checkBoxData -> - val index = checkBoxesStatesHorizontal.withIndex().first { it.value.uid == checkBoxData.uid }.index - checkBoxesStatesHorizontal[index] = checkBoxData.copy(checked = !checkBoxData.checked) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Horizontal Check Box Block") { + CheckBoxBlock( + Orientation.HORIZONTAL, + checkBoxesStatesHorizontal, + onItemChange = { checkBoxData -> + val index = checkBoxesStatesHorizontal.withIndex().first { it.value.uid == checkBoxData.uid }.index + checkBoxesStatesHorizontal[index] = checkBoxData.copy(checked = !checkBoxData.checked) + }, + ) + } - SubTitle( - text = "Vertical Check Box Block", - ) - CheckBoxBlock( - Orientation.VERTICAL, - checkBoxesStatesVertical, - onItemChange = { checkBoxData -> - val index = checkBoxesStatesVertical.withIndex().first { it.value.uid == checkBoxData.uid }.index - checkBoxesStatesVertical[index] = checkBoxData.copy(checked = !checkBoxData.checked) - }, - ) + ColumnComponentContainer("Vertical Check Box Block") { + CheckBoxBlock( + Orientation.VERTICAL, + checkBoxesStatesVertical, + onItemChange = { checkBoxData -> + val index = checkBoxesStatesVertical.withIndex().first { it.value.uid == checkBoxData.uid }.index + checkBoxesStatesVertical[index] = checkBoxData.copy(checked = !checkBoxData.checked) + }, + ) + } }, ) } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/FABScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/FABScreen.kt index 201257ee0..56a7d4713 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/FABScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/FABScreen.kt @@ -1,94 +1,89 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FileDownload import androidx.compose.material3.Icon import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ExtendedFAB import org.hisp.dhis.mobile.ui.designsystem.component.FAB import org.hisp.dhis.mobile.ui.designsystem.component.FABStyle -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun FABScreen() { - ColumnComponentContainer( - title = "FABs", + ColumnScreenContainer( + title = ButtonScreens.FAB.label, ) { - FAB( - style = FABStyle.SURFACE, - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) + ColumnComponentContainer("Default FABs") { + FAB( + style = FABStyle.SURFACE, + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) - FAB( - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) + FAB( + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) - FAB( - style = FABStyle.SECONDARY, - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) + FAB( + style = FABStyle.SECONDARY, + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) + } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle(text = "Extended FABs buttons") + ColumnComponentContainer("Extended FABs buttons") { + ExtendedFAB( + style = FABStyle.SURFACE, + text = "Label", + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) - ExtendedFAB( - style = FABStyle.SURFACE, - text = "Label", - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) + ExtendedFAB( + text = "Label", + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) - ExtendedFAB( - text = "Label", - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) - - ExtendedFAB( - text = "Label", - style = FABStyle.SECONDARY, - onClick = {}, - icon = { - Icon( - imageVector = Icons.Outlined.FileDownload, - contentDescription = "File download Button", - ) - }, - ) - - Spacer(Modifier.size(Spacing.Spacing18)) + ExtendedFAB( + text = "Label", + style = FABStyle.SECONDARY, + onClick = {}, + icon = { + Icon( + imageVector = Icons.Outlined.FileDownload, + contentDescription = "File download Button", + ) + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/IconButtonScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/IconButtonScreen.kt index e04e2573d..25ac9c216 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/IconButtonScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/IconButtonScreen.kt @@ -9,74 +9,71 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import org.hisp.dhis.common.screens.previews.IconButtonPreview import org.hisp.dhis.common.screens.previews.SquareIconButtonPreview -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.IconButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.Title import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun IconButtonScreen() { - ColumnComponentContainer( - content = { - // SquareIconButton - Title("Icon Buttons") - RowComponentContainer( - title = "Square", - content = { - SquareIconButtonPreview() - SquareIconButtonPreview(false) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer(title = ButtonScreens.ICON_BUTTON.label) { + // SquareIconButton + RowComponentContainer( + title = "Square", + content = { + SquareIconButtonPreview() + SquareIconButtonPreview(false) + }, + ) + Spacer(Modifier.size(Spacing.Spacing18)) - // IconButton - RowComponentContainer( - title = "Standard", - content = { - IconButtonPreview() - IconButtonPreview(false) - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + // IconButton + RowComponentContainer( + title = "Standard", + content = { + IconButtonPreview() + IconButtonPreview(false) + }, + ) + Spacer(Modifier.size(Spacing.Spacing18)) - RowComponentContainer( - title = "Filled", - content = { - Row( - horizontalArrangement = Arrangement.spacedBy(10.dp), - ) { - IconButtonPreview(true, IconButtonStyle.FILLED) - IconButtonPreview(false, IconButtonStyle.FILLED) - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + RowComponentContainer( + title = "Filled", + content = { + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp), + ) { + IconButtonPreview(true, IconButtonStyle.FILLED) + IconButtonPreview(false, IconButtonStyle.FILLED) + } + }, + ) + Spacer(Modifier.size(Spacing.Spacing18)) - RowComponentContainer( - title = "Tonal", - content = { - Row( - horizontalArrangement = Arrangement.spacedBy(10.dp), - ) { - IconButtonPreview(true, IconButtonStyle.TONAL) - IconButtonPreview(false, IconButtonStyle.TONAL) - } - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + RowComponentContainer( + title = "Tonal", + content = { + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp), + ) { + IconButtonPreview(true, IconButtonStyle.TONAL) + IconButtonPreview(false, IconButtonStyle.TONAL) + } + }, + ) + Spacer(Modifier.size(Spacing.Spacing18)) - RowComponentContainer( - title = "Outlined", - content = { - Row( - horizontalArrangement = Arrangement.spacedBy(10.dp), - ) { - IconButtonPreview(true, IconButtonStyle.OUTLINED) - IconButtonPreview(false, IconButtonStyle.OUTLINED) - } - }, - ) - }, - ) + RowComponentContainer( + title = "Outlined", + content = { + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp), + ) { + IconButtonPreview(true, IconButtonStyle.OUTLINED) + IconButtonPreview(false, IconButtonStyle.OUTLINED) + } + }, + ) + Spacer(Modifier.size(Spacing.Spacing18)) + } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/RadioButtonScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/RadioButtonScreen.kt index 847fefc3e..bc40fd6b8 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/RadioButtonScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/RadioButtonScreen.kt @@ -1,22 +1,19 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.RadioButtonPreview import org.hisp.dhis.common.screens.previews.TextRadioButtonPreview import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Orientation import org.hisp.dhis.mobile.ui.designsystem.component.RadioButtonBlock import org.hisp.dhis.mobile.ui.designsystem.component.RadioButtonData import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun RadioButtonScreen() { @@ -51,42 +48,44 @@ fun RadioButtonScreen() { mutableStateOf(radioButtonDataItemsHorizontal[0]) } - ColumnComponentContainer("Radio Buttons") { - SubTitle("Text Radio Button") - - TextRadioButtonPreview(selected == option1, true, option1) { - selected = option1 - } - TextRadioButtonPreview(selected == option2, true, option2) { - selected = option2 - } - TextRadioButtonPreview(selected == option3, true, option3) { - selected = option3 - } - TextRadioButtonPreview(selected == option4, false, option4) { - selected = option1 + ColumnScreenContainer(title = ButtonScreens.RADIO.label) { + ColumnComponentContainer("Text Radio Button") { + TextRadioButtonPreview(selected == option1, true, option1) { + selected = option1 + } + TextRadioButtonPreview(selected == option2, true, option2) { + selected = option2 + } + TextRadioButtonPreview(selected == option3, true, option3) { + selected = option3 + } + TextRadioButtonPreview(selected == option4, false, option4) { + selected = option1 + } } - Spacer(Modifier.size(Spacing.Spacing18)) - // RadioButton - SubTitle("Radio Button") - RowComponentContainer { - RadioButtonPreview(selected = true, enabled = true) - RadioButtonPreview(selected = true, enabled = false) - } - RowComponentContainer { - RadioButtonPreview(selected = false, enabled = true) - RadioButtonPreview(selected = false, enabled = false) + + ColumnComponentContainer("Radio Button") { + Column { + RowComponentContainer { + RadioButtonPreview(selected = true, enabled = true) + RadioButtonPreview(selected = true, enabled = false) + } + RowComponentContainer { + RadioButtonPreview(selected = false, enabled = true) + RadioButtonPreview(selected = false, enabled = false) + } + } } - Spacer(Modifier.size(Spacing.Spacing18)) - // RadioButtonBlock - SubTitle("Horizontal Radio Button Block") - RadioButtonBlock(Orientation.HORIZONTAL, radioButtonDataItemsHorizontal, selectedItemHorizontal) { - selectedItemHorizontal = it + + ColumnComponentContainer("Horizontal Radio Button Block") { + RadioButtonBlock(Orientation.HORIZONTAL, radioButtonDataItemsHorizontal, selectedItemHorizontal) { + selectedItemHorizontal = it + } } - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Vertical Radio Button Block") - RadioButtonBlock(Orientation.VERTICAL, radioButtonDataItemsVertical, selectedItemVertical) { - selectedItemVertical = it + ColumnComponentContainer("Vertical Radio Button Block") { + RadioButtonBlock(Orientation.VERTICAL, radioButtonDataItemsVertical, selectedItemVertical) { + selectedItemVertical = it + } } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/SwitchScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/SwitchScreen.kt index d67855167..a1141e741 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/SwitchScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/buttons/SwitchScreen.kt @@ -1,41 +1,34 @@ package org.hisp.dhis.common.screens.buttons -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.Switch -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun SwitchScreen() { - ColumnComponentContainer { - Title("Switches") - SubTitle("Toggled enabled and disabled switch") - var switchOne by remember { mutableStateOf(true) } - var switchTwo by remember { mutableStateOf(true) } - var switchThree by remember { mutableStateOf(false) } - var switchFour by remember { mutableStateOf(false) } - - RowComponentContainer { - Switch(isChecked = switchOne, onCheckedChange = { switchOne = !it }) - Switch(isChecked = switchTwo, onCheckedChange = { switchTwo = !it }, enabled = false) + ColumnScreenContainer(title = ButtonScreens.SWITCH.label) { + ColumnComponentContainer("Toggled enabled and disabled switch") { + var switchOne by remember { mutableStateOf(true) } + var switchTwo by remember { mutableStateOf(true) } + RowComponentContainer { + Switch(isChecked = switchOne, onCheckedChange = { switchOne = !it }) + Switch(isChecked = switchTwo, onCheckedChange = { switchTwo = !it }, enabled = false) + } } - Spacer(Modifier.size(Spacing.Spacing6)) - SubTitle("Untoggled enabled and disabled switch") - - RowComponentContainer { - Switch(isChecked = switchThree, onCheckedChange = { switchThree = !it }) - Switch(isChecked = switchFour, onCheckedChange = { switchFour = !it }, enabled = false) + ColumnComponentContainer("Unselected enabled and disabled switch") { + var switchThree by remember { mutableStateOf(false) } + var switchFour by remember { mutableStateOf(false) } + RowComponentContainer { + Switch(isChecked = switchThree, onCheckedChange = { switchThree = !it }) + Switch(isChecked = switchFour, onCheckedChange = { switchFour = !it }, enabled = false) + } } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardDetailScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardDetailScreen.kt index 80369caad..f5b57b841 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardDetailScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardDetailScreen.kt @@ -10,50 +10,55 @@ import org.hisp.dhis.common.screens.previews.teiDetailList import org.hisp.dhis.mobile.ui.designsystem.component.AdditionalInfoItemColor import org.hisp.dhis.mobile.ui.designsystem.component.CardDetail import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InfoBar import org.hisp.dhis.mobile.ui.designsystem.component.InfoBarData import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun CardDetailScreen() { - ColumnComponentContainer(title = "List Card Components") { - InfoBar( - InfoBarData( - text = "Not Synced", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "not synced", - tint = TextColor.OnSurfaceLight, - ) - }, - actionText = "Sync", - onClick = {}, - color = TextColor.OnSurfaceLight, - backgroundColor = Color(0xFFEFF6FA), - ), - ) - InfoBar( - InfoBarData( - text = "Enrollment completed", - icon = { - Icon( - imageVector = Icons.Filled.CheckCircle, - contentDescription = "not synced", - tint = AdditionalInfoItemColor.SUCCESS.color, - ) - }, - color = AdditionalInfoItemColor.SUCCESS.color, - backgroundColor = AdditionalInfoItemColor.SUCCESS.color.copy(alpha = 0.1f), - ), - ) + ColumnScreenContainer(title = Cards.CARD_DETAIL.label) { + ColumnComponentContainer("Info Bar") { + InfoBar( + InfoBarData( + text = "Not Synced", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "not synced", + tint = TextColor.OnSurfaceLight, + ) + }, + actionText = "Sync", + onClick = {}, + color = TextColor.OnSurfaceLight, + backgroundColor = Color(0xFFEFF6FA), + ), + ) + InfoBar( + InfoBarData( + text = "Enrollment completed", + icon = { + Icon( + imageVector = Icons.Filled.CheckCircle, + contentDescription = "not synced", + tint = AdditionalInfoItemColor.SUCCESS.color, + ) + }, + color = AdditionalInfoItemColor.SUCCESS.color, + backgroundColor = AdditionalInfoItemColor.SUCCESS.color.copy(alpha = 0.1f), + ), + ) + } - CardDetail( - avatar = null, - title = "Narayan Khanna, M, 32", - additionalInfoList = teiDetailList, - expandLabelText = "Show more", - shrinkLabelText = "Show less", - ) + ColumnComponentContainer("Card Detail") { + CardDetail( + avatar = null, + title = "Narayan Khanna, M, 32", + additionalInfoList = teiDetailList, + expandLabelText = "Show more", + shrinkLabelText = "Show less", + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardsScreen.kt index ec5e35d98..66b2a9e76 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/CardsScreen.kt @@ -4,13 +4,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun CardsScreen() { - val currentScreen = remember { mutableStateOf(Cards.CARD_DETAIL) } + val currentScreen = remember { mutableStateOf(Cards.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() Cards.entries.forEach { @@ -18,13 +17,11 @@ fun CardsScreen() { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = Cards.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { Cards.CARD_DETAIL -> CardDetailScreen() diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/ListCardScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/ListCardScreen.kt index 937ff8a5d..bd6ae012e 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/ListCardScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/cards/ListCardScreen.kt @@ -1,8 +1,6 @@ package org.hisp.dhis.common.screens.cards -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Event import androidx.compose.material.icons.outlined.Sync @@ -31,491 +29,485 @@ import org.hisp.dhis.mobile.ui.designsystem.component.AvatarStyle import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ListCard import org.hisp.dhis.mobile.ui.designsystem.component.ListCardDescriptionModel import org.hisp.dhis.mobile.ui.designsystem.component.ListCardTitleModel import org.hisp.dhis.mobile.ui.designsystem.component.MetadataAvatar -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.resource.provideDHIS2Icon -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun ListCardScreen() { - ColumnComponentContainer(title = "List Card Components") { + ColumnScreenContainer(title = Cards.LIST_CARD.label) { var showLoading1 by remember { mutableStateOf(false) } - SubTitle("Tei list:") - SubTitle("With shadow") - ListCard( - listAvatar = { - Avatar( - textAvatar = "P", - style = AvatarStyle.TEXT, - ) - }, - title = ListCardTitleModel(text = "Palak Khanna, F, 61"), - lastUpdated = "5 hours", - additionalInfoList = basicAdditionalItemList.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading1 = !showLoading1 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading1, - ) - var showLoading2 by remember { - mutableStateOf(false) - } - ListCard( - listAvatar = { - Avatar( - textAvatar = "P", - style = AvatarStyle.TEXT, - ) - }, - title = ListCardTitleModel(text = "Palak Khanna, F, 61"), - lastUpdated = "5 hours", - additionalInfoList = basicAdditionalItemListWithLongKeyText.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading2 = !showLoading2 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading2, - ) - var showLoading3 by remember { - mutableStateOf(false) - } - ListCard( - listAvatar = { - Avatar( - textAvatar = "P", - style = AvatarStyle.TEXT, - ) - }, - title = ListCardTitleModel(text = "Palak Khanna, F, 61"), - lastUpdated = "5 hours", - additionalInfoList = basicAdditionalItemListWithMediumKeyText.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading3 = !showLoading3 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading3, - ) - var showLoading4 by remember { - mutableStateOf(false) - } - ListCard( - listAvatar = { - Avatar( - textAvatar = "P", - style = AvatarStyle.TEXT, - ) - }, - title = ListCardTitleModel(text = "Palak Khanna, F, 61"), - lastUpdated = "5 hours", - additionalInfoList = basicAdditionalItemListWithLongValue.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading4 = !showLoading4 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading4, - ) - var showLoading5 by remember { - mutableStateOf(false) - } - ListCard( - listAvatar = { - Avatar( - imagePainter = provideDHIS2Icon("dhis2_microscope_outline"), - style = AvatarStyle.IMAGE, - ) - }, - title = ListCardTitleModel(text = "Kunal Choudary, M, 55"), - lastUpdated = "24 min", - additionalInfoList = enrollmentCompletedList.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading5 = !showLoading5 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading5, - ) - SubTitle("Without shadow") - - var showLoading6 by remember { - mutableStateOf(false) - } - ListCard( - shadow = false, - listAvatar = { - Avatar( - metadataAvatar = { - MetadataAvatar( - icon = { - Icon( - painter = provideDHIS2Icon("dhis2_microscope_outline"), - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - ) - }, - style = AvatarStyle.METADATA, - ) - }, - title = ListCardTitleModel(text = "Anita Mathews, F, 72"), - lastUpdated = "5 hours", - additionalInfoList = fullItemList.toMutableList(), - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { showLoading6 = !showLoading6 }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading6, - ) - - var showLoading7 by remember { - mutableStateOf(false) - } - val errorList = remember { + val eventsTimelineTeiDashboardList = remember { mutableStateListOf( - AdditionalInfoItem(key = "Phone", value = "+234 123 111 6785"), AdditionalInfoItem(key = "Date of birth", value = "12/12/1945"), ) } - val eventsTimelineTeiDashboardList = remember { - mutableStateListOf( - AdditionalInfoItem(key = "Date of birth", value = "12/12/1945"), + ColumnComponentContainer("Tei list with shadow") { + ListCard( + listAvatar = { + Avatar( + textAvatar = "P", + style = AvatarStyle.TEXT, + ) + }, + title = ListCardTitleModel(text = "Palak Khanna, F, 61"), + lastUpdated = "5 hours", + additionalInfoList = basicAdditionalItemList.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading1 = !showLoading1 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading1, + ) + var showLoading2 by remember { + mutableStateOf(false) + } + ListCard( + listAvatar = { + Avatar( + textAvatar = "P", + style = AvatarStyle.TEXT, + ) + }, + title = ListCardTitleModel(text = "Palak Khanna, F, 61"), + lastUpdated = "5 hours", + additionalInfoList = basicAdditionalItemListWithLongKeyText.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading2 = !showLoading2 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading2, + ) + var showLoading3 by remember { + mutableStateOf(false) + } + ListCard( + listAvatar = { + Avatar( + textAvatar = "P", + style = AvatarStyle.TEXT, + ) + }, + title = ListCardTitleModel(text = "Palak Khanna, F, 61"), + lastUpdated = "5 hours", + additionalInfoList = basicAdditionalItemListWithMediumKeyText.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading3 = !showLoading3 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading3, + ) + var showLoading4 by remember { + mutableStateOf(false) + } + ListCard( + listAvatar = { + Avatar( + textAvatar = "P", + style = AvatarStyle.TEXT, + ) + }, + title = ListCardTitleModel(text = "Palak Khanna, F, 61"), + lastUpdated = "5 hours", + additionalInfoList = basicAdditionalItemListWithLongValue.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading4 = !showLoading4 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading4, + ) + var showLoading5 by remember { + mutableStateOf(false) + } + ListCard( + listAvatar = { + Avatar( + imagePainter = provideDHIS2Icon("dhis2_microscope_outline"), + style = AvatarStyle.IMAGE, + ) + }, + title = ListCardTitleModel(text = "Kunal Choudary, M, 55"), + lastUpdated = "24 min", + additionalInfoList = enrollmentCompletedList.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading5 = !showLoading5 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading5, ) } - val errorItem = AdditionalInfoItem( - icon = { - Icon( - imageVector = Icons.Outlined.SyncProblem, - contentDescription = "Icon Button", - tint = AdditionalInfoItemColor.ERROR.color, - ) - }, - value = "Sync warning", - color = AdditionalInfoItemColor.ERROR.color, - isConstantItem = true, - ) - - ListCard( - listAvatar = { - Avatar( - textAvatar = "A", - style = AvatarStyle.TEXT, - ) - }, - title = ListCardTitleModel(text = "Aditi Singh, F, 61"), - lastUpdated = "5 hours", - additionalInfoList = errorList, - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { - if (!showLoading7) { - errorList.remove(errorItem) - } else { - errorList.add(errorItem) - } - showLoading7 = !showLoading7 - }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - loading = showLoading7, - ) - Spacer(Modifier.size(Spacing.Spacing16)) - SubTitle("Single events list:") - SubTitle("With shadow:") + ColumnComponentContainer("Without shadow") { + var showLoading6 by remember { + mutableStateOf(false) + } + ListCard( + shadow = false, + listAvatar = { + Avatar( + metadataAvatar = { + MetadataAvatar( + icon = { + Icon( + painter = provideDHIS2Icon("dhis2_microscope_outline"), + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + ) + }, + style = AvatarStyle.METADATA, + ) + }, + title = ListCardTitleModel(text = "Anita Mathews, F, 72"), + lastUpdated = "5 hours", + additionalInfoList = fullItemList.toMutableList(), + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { showLoading6 = !showLoading6 }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading6, + ) - ListCard( - title = ListCardTitleModel(text = "12/18/2021"), - lastUpdated = "now", - additionalInfoList = basicAdditionalItemList, - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { }, - modifier = Modifier.fillMaxWidth(), + var showLoading7 by remember { + mutableStateOf(false) + } + val errorList = remember { + mutableStateListOf( + AdditionalInfoItem(key = "Phone", value = "+234 123 111 6785"), + AdditionalInfoItem(key = "Date of birth", value = "12/12/1945"), ) - }, - onCardClick = {}, - ) - Spacer(Modifier.size(Spacing.Spacing16)) - SubTitle("Without shadow:") + } - ListCard( - shadow = false, - title = ListCardTitleModel(text = "12/18/2021"), - lastUpdated = "now", - additionalInfoList = basicAdditionalItemList, - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = { }, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - ) - Spacer(Modifier.size(Spacing.Spacing16)) - SubTitle("Events in timeline in TEI dashboard:") - SubTitle("With shadow:") + val errorItem = AdditionalInfoItem( + icon = { + Icon( + imageVector = Icons.Outlined.SyncProblem, + contentDescription = "Icon Button", + tint = AdditionalInfoItemColor.ERROR.color, + ) + }, + value = "Sync warning", + color = AdditionalInfoItemColor.ERROR.color, + isConstantItem = true, + ) - ListCard( - listAvatar = { - Avatar( - metadataAvatar = { - MetadataAvatar( - icon = { - Icon( - painter = provideDHIS2Icon("dhis2_baby_male_0203m_positive"), - contentDescription = "Button", + ListCard( + listAvatar = { + Avatar( + textAvatar = "A", + style = AvatarStyle.TEXT, + ) + }, + title = ListCardTitleModel(text = "Aditi Singh, F, 61"), + lastUpdated = "5 hours", + additionalInfoList = errorList, + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { + if (!showLoading7) { + errorList.remove(errorItem) + } else { + errorList.add(errorItem) + } + showLoading7 = !showLoading7 + }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + loading = showLoading7, + ) + } - ) - }, - iconTint = Color(0xFF11D9D9), - size = AvatarSize.Large, - ) - }, - style = AvatarStyle.METADATA, - ) - }, - title = ListCardTitleModel(text = "12/18/2021 at 16:30"), - lastUpdated = "now", - additionalInfoList = eventsTimelineTeiDashboardList, - actionButton = { - Button( - style = ButtonStyle.TONAL, - text = "Retry sync", - icon = { - Icon( - imageVector = Icons.Outlined.Sync, - contentDescription = "Icon Button", - tint = TextColor.OnPrimaryContainer, - ) - }, - onClick = {}, - modifier = Modifier.fillMaxWidth(), - ) - }, - onCardClick = {}, - ) - Spacer(Modifier.size(Spacing.Spacing16)) + ColumnComponentContainer("Single events list with shadow") { + ListCard( + title = ListCardTitleModel(text = "12/18/2021"), + lastUpdated = "now", + additionalInfoList = basicAdditionalItemList, + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + ) + } - SubTitle("Without shadow:") - ListCard( - shadow = false, - listAvatar = { - Avatar( - metadataAvatar = { - MetadataAvatar( - icon = { - Icon( - painter = provideDHIS2Icon("dhis2_baby_male_0203m_positive"), - contentDescription = "Button", + ColumnComponentContainer("Single events list without shadow:") { + ListCard( + shadow = false, + title = ListCardTitleModel(text = "12/18/2021"), + lastUpdated = "now", + additionalInfoList = basicAdditionalItemList, + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = { }, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + ) + } - ) - }, - iconTint = Color(0xFF11D9D9), - size = AvatarSize.Large, - ) - }, - style = AvatarStyle.METADATA, - ) - }, - title = ListCardTitleModel(text = "12/18/2021 at 16:30"), - description = ListCardDescriptionModel(text = "Birth"), - lastUpdated = "now", - additionalInfoList = eventsTimelineTeiDashboardList, - onCardClick = {}, - ) + ColumnComponentContainer("Events in timeline in TEI dashboard with shadow") { + ListCard( + listAvatar = { + Avatar( + metadataAvatar = { + MetadataAvatar( + icon = { + Icon( + painter = provideDHIS2Icon("dhis2_baby_male_0203m_positive"), + contentDescription = "Button", + ) + }, + iconTint = Color(0xFF11D9D9), + size = AvatarSize.Large, + ) + }, + style = AvatarStyle.METADATA, + ) + }, + title = ListCardTitleModel(text = "12/18/2021 at 16:30"), + lastUpdated = "now", + additionalInfoList = eventsTimelineTeiDashboardList, + actionButton = { + Button( + style = ButtonStyle.TONAL, + text = "Retry sync", + icon = { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = "Icon Button", + tint = TextColor.OnPrimaryContainer, + ) + }, + onClick = {}, + modifier = Modifier.fillMaxWidth(), + ) + }, + onCardClick = {}, + ) + } - SubTitle("ListCards for events displayed in TEI dashboard:") + ColumnComponentContainer("Events in timeline in TEI dashboard without shadow:") { + ListCard( + shadow = false, + listAvatar = { + Avatar( + metadataAvatar = { + MetadataAvatar( + icon = { + Icon( + painter = provideDHIS2Icon("dhis2_baby_male_0203m_positive"), + contentDescription = "Button", + ) + }, + iconTint = Color(0xFF11D9D9), + size = AvatarSize.Large, + ) + }, + style = AvatarStyle.METADATA, + ) + }, + title = ListCardTitleModel(text = "12/18/2021 at 16:30"), + description = ListCardDescriptionModel(text = "Birth"), + lastUpdated = "now", + additionalInfoList = eventsTimelineTeiDashboardList, + onCardClick = {}, + ) + } - val eventsInTeiDashboardTitleStyle = MaterialTheme.typography.titleSmall + ColumnComponentContainer("ListCards for events displayed in TEI dashboard:") { + val eventsInTeiDashboardTitleStyle = MaterialTheme.typography.titleSmall - ListCard( + ListCard( - title = ListCardTitleModel(text = "Scheduled for 09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), - additionalInfoList = listOf( - AdditionalInfoItem( - icon = { - Icon( - imageVector = Icons.Outlined.Event, - contentDescription = "Icon Button", - tint = AdditionalInfoItemColor.SUCCESS.color, - ) - }, - value = "In 60 days", - color = AdditionalInfoItemColor.SUCCESS.color, - isConstantItem = true, + title = ListCardTitleModel(text = "Scheduled for 09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), + additionalInfoList = listOf( + AdditionalInfoItem( + icon = { + Icon( + imageVector = Icons.Outlined.Event, + contentDescription = "Icon Button", + tint = AdditionalInfoItemColor.SUCCESS.color, + ) + }, + value = "In 60 days", + color = AdditionalInfoItemColor.SUCCESS.color, + isConstantItem = true, + ), ), + onCardClick = {}, + ) - ), - onCardClick = {}, - ) - - ListCard( + ListCard( - title = ListCardTitleModel(text = "09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), - description = ListCardDescriptionModel(text = "Treatment visits"), - additionalInfoList = listOf( - AdditionalInfoItem( - icon = { - Icon( - imageVector = Icons.Outlined.Event, - contentDescription = "Icon Button", - tint = AdditionalInfoItemColor.SUCCESS.color, - ) - }, - value = "In 60 days", - color = AdditionalInfoItemColor.SUCCESS.color, - isConstantItem = true, + title = ListCardTitleModel(text = "09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), + description = ListCardDescriptionModel(text = "Treatment visits"), + additionalInfoList = listOf( + AdditionalInfoItem( + icon = { + Icon( + imageVector = Icons.Outlined.Event, + contentDescription = "Icon Button", + tint = AdditionalInfoItemColor.SUCCESS.color, + ) + }, + value = "In 60 days", + color = AdditionalInfoItemColor.SUCCESS.color, + isConstantItem = true, + ), + AdditionalInfoItem(key = "Drug resistance", value = "Monoresistance"), + AdditionalInfoItem(key = "treatment", value = "Initial regiment- first-line drugs"), ), - AdditionalInfoItem(key = "Drug resistance", value = "Monoresistance"), - AdditionalInfoItem(key = "treatment", value = "Initial regiment- first-line drugs"), - ), - onCardClick = {}, - ) - ListCard( - listAvatar = { - Avatar( - metadataAvatar = { - MetadataAvatar( - icon = { - Icon( - painter = provideDHIS2Icon("dhis2_microscope_outline"), - contentDescription = "Button", - tint = SurfaceColor.Primary, - ) - }, - ) - }, - style = AvatarStyle.METADATA, - ) - }, - title = ListCardTitleModel(text = "Scheduled for 09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), - additionalInfoList = listOf( - AdditionalInfoItem( - icon = { - Icon( - imageVector = Icons.Outlined.Event, - contentDescription = "Icon Button", - tint = AdditionalInfoItemColor.SUCCESS.color, - ) - }, - value = "In 60 days", - color = AdditionalInfoItemColor.SUCCESS.color, - isConstantItem = true, + onCardClick = {}, + ) + ListCard( + listAvatar = { + Avatar( + metadataAvatar = { + MetadataAvatar( + icon = { + Icon( + painter = provideDHIS2Icon("dhis2_microscope_outline"), + contentDescription = "Button", + tint = SurfaceColor.Primary, + ) + }, + ) + }, + style = AvatarStyle.METADATA, + ) + }, + title = ListCardTitleModel(text = "Scheduled for 09/18/2021", style = eventsInTeiDashboardTitleStyle, color = TextColor.OnSurface), + additionalInfoList = listOf( + AdditionalInfoItem( + icon = { + Icon( + imageVector = Icons.Outlined.Event, + contentDescription = "Icon Button", + tint = AdditionalInfoItemColor.SUCCESS.color, + ) + }, + value = "In 60 days", + color = AdditionalInfoItemColor.SUCCESS.color, + isConstantItem = true, + ), + AdditionalInfoItem(key = "Drug resistance", value = "Monoresistance"), + AdditionalInfoItem(key = "treatment", value = "Initial regiment- first-line drugs"), ), - AdditionalInfoItem(key = "Drug resistance", value = "Monoresistance"), - AdditionalInfoItem(key = "treatment", value = "Initial regiment- first-line drugs"), - ), - onCardClick = {}, - ) - Spacer(Modifier.size(Spacing.Spacing16)) + onCardClick = {}, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/components/GroupComponentDropDown.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/components/GroupComponentDropDown.kt new file mode 100644 index 000000000..66bb7cba0 --- /dev/null +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/components/GroupComponentDropDown.kt @@ -0,0 +1,31 @@ +package org.hisp.dhis.common.screens.components + +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem +import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown +import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState +import org.hisp.dhis.mobile.ui.designsystem.component.InputStyle +import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing +import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor + +@Composable +fun GroupComponentDropDown( + modifier: Modifier = Modifier, + dropdownItems: List, + onItemSelected: (DropdownItem) -> Unit, + onResetButtonClicked: () -> Unit, + selectedItem: DropdownItem? = null, +) { + InputDropDown( + modifier = modifier.padding(horizontal = Spacing.Spacing16), + title = "Component", + dropdownItems = dropdownItems, + onItemSelected = onItemSelected, + onResetButtonClicked = onResetButtonClicked, + selectedItem = selectedItem, + state = InputShellState.UNFOCUSED, + inputStyle = InputStyle.DataInputStyle().apply { backGroundColor = SurfaceColor.SurfaceBright }, + ) +} diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/BadgesScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/BadgesScreen.kt index 590fd7ee7..fc60fa352 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/BadgesScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/BadgesScreen.kt @@ -3,22 +3,25 @@ package org.hisp.dhis.common.screens.others import androidx.compose.runtime.Composable import org.hisp.dhis.mobile.ui.designsystem.component.Badge import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ErrorBadge @Composable fun BadgesScreen() { - ColumnComponentContainer(title = "Badges") { - Badge() - Badge(text = "3") - Badge(text = "32") - Badge(text = "321") - Badge(text = "4321") - } - ColumnComponentContainer(title = "Error badges") { - ErrorBadge() - ErrorBadge(text = "3") - ErrorBadge(text = "32") - ErrorBadge(text = "321") - ErrorBadge(text = "4321") + ColumnScreenContainer(title = "Badge component") { + ColumnComponentContainer("Basic badges") { + Badge() + Badge(text = "3") + Badge(text = "32") + Badge(text = "321") + Badge(text = "4321") + } + ColumnComponentContainer("Error badges") { + ErrorBadge() + ErrorBadge(text = "3") + ErrorBadge(text = "32") + ErrorBadge(text = "321") + ErrorBadge(text = "4321") + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ChipsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ChipsScreen.kt index 770aaeca0..be9db47f8 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ChipsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ChipsScreen.kt @@ -1,6 +1,5 @@ package org.hisp.dhis.common.screens.others -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search @@ -14,94 +13,94 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.AssistChip import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.FilterChip import org.hisp.dhis.mobile.ui.designsystem.component.InputChip -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun ChipsScreen() { - ColumnComponentContainer { - SubTitle("Input Chips") - var isSelected by remember { mutableStateOf(false) } - var isSelected1 by remember { mutableStateOf(true) } - var isSelected2 by remember { mutableStateOf(false) } - var isSelected3 by remember { mutableStateOf(true) } - InputChip(label = "Label", selected = isSelected, onSelected = { isSelected = it }) - InputChip(label = "Label", selected = !isSelected1, onSelected = { isSelected1 = !it }) - InputChip( - label = "Label", - selected = !isSelected2, - withTrailingIcon = true, - onSelected = { isSelected2 = !it }, - onIconSelected = {}, - ) - InputChip( - label = "Label", - selected = !isSelected3, - withTrailingIcon = true, - onSelected = { isSelected3 = !it }, - onIconSelected = {}, - ) - InputChip( - label = "Label", - enabled = false, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer("Chip component") { + ColumnComponentContainer("Input Chips") { + var isSelected by remember { mutableStateOf(false) } + var isSelected1 by remember { mutableStateOf(true) } + var isSelected2 by remember { mutableStateOf(false) } + var isSelected3 by remember { mutableStateOf(true) } + InputChip(label = "Label", selected = isSelected, onSelected = { isSelected = it }) + InputChip(label = "Label", selected = !isSelected1, onSelected = { isSelected1 = !it }) + InputChip( + label = "Label", + selected = !isSelected2, + withTrailingIcon = true, + onSelected = { isSelected2 = !it }, + onIconSelected = {}, + ) + InputChip( + label = "Label", + selected = !isSelected3, + withTrailingIcon = true, + onSelected = { isSelected3 = !it }, + onIconSelected = {}, + ) + InputChip( + label = "Label", + enabled = false, + ) + } - SubTitle("Input Chips With badges") - InputChip(label = "Label", selected = false, badge = "3") - InputChip(label = "Label", selected = true, badge = "3") - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Input Chips With badges") { + InputChip(label = "Label", selected = false, badge = "3") + InputChip(label = "Label", selected = true, badge = "3") + } - SubTitle("Filter Chips") - var isSelected4 by remember { mutableStateOf(false) } - FilterChip(label = "Label", selected = isSelected4, onSelected = { isSelected4 = it }) - FilterChip(label = "Label", selected = !isSelected4, onSelected = { isSelected4 = !it }) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Filter Chips") { + var isSelected4 by remember { mutableStateOf(false) } + FilterChip(label = "Label", selected = isSelected4, onSelected = { isSelected4 = it }) + FilterChip(label = "Label", selected = !isSelected4, onSelected = { isSelected4 = !it }) + } - SubTitle("Filter Chips With badges") - FilterChip(label = "Label", selected = true, badge = "3") - FilterChip(label = "Label", selected = false, badge = "3") - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Filter Chips With badges") { + FilterChip(label = "Label", selected = true, badge = "3") + FilterChip(label = "Label", selected = false, badge = "3") + } - SubTitle("Assist Chips") - AssistChip( - label = "Label", - onClick = { }, - ) - AssistChip( - label = "Label", - icon = { - Icon( - imageVector = Icons.Filled.Search, - contentDescription = "search icon", - modifier = Modifier - .size(AssistChipDefaults.IconSize), - ) - }, - onClick = { }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Assist Chips") { + AssistChip( + label = "Label", + onClick = { }, + ) + AssistChip( + label = "Label", + icon = { + Icon( + imageVector = Icons.Filled.Search, + contentDescription = "search icon", + modifier = Modifier + .size(AssistChipDefaults.IconSize), + ) + }, + onClick = { }, + ) + } - SubTitle("Assist Chips With badges") - AssistChip( - label = "Label", - icon = { - Icon( - imageVector = Icons.Filled.Search, - contentDescription = "search icon", - modifier = Modifier - .size(AssistChipDefaults.IconSize), - ) - }, - onClick = {}, - badge = "2", - ) - AssistChip( - label = "Label", - onClick = {}, - badge = "4", - ) + ColumnComponentContainer("Assist Chips With badges") { + AssistChip( + label = "Label", + icon = { + Icon( + imageVector = Icons.Filled.Search, + contentDescription = "search icon", + modifier = Modifier + .size(AssistChipDefaults.IconSize), + ) + }, + onClick = {}, + badge = "2", + ) + AssistChip( + label = "Label", + onClick = {}, + badge = "4", + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/IndicatorScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/IndicatorScreen.kt index 2dcacced2..24a809f0a 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/IndicatorScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/IndicatorScreen.kt @@ -2,12 +2,12 @@ package org.hisp.dhis.common.screens.others import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Indicator @Composable fun IndicatorScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = "Indicator component") { Indicator( title = "Systolic and diastolic pressure", content = "120 mmHg / 80 mmHg", diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/LegendScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/LegendScreen.kt index 8093087ba..c11f8e4d1 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/LegendScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/LegendScreen.kt @@ -1,99 +1,97 @@ package org.hisp.dhis.common.screens.others -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Legend import org.hisp.dhis.mobile.ui.designsystem.component.LegendData import org.hisp.dhis.mobile.ui.designsystem.component.LegendDescriptionData import org.hisp.dhis.mobile.ui.designsystem.component.LegendRange -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor @Composable fun LegendScreen() { - ColumnComponentContainer(title = "Legend") { - SubTitle("Green Legend") - Legend(LegendData(SurfaceColor.CustomGreen, "Legend")) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnScreenContainer(title = "Legend component") { + ColumnComponentContainer("Green Legend") { + Legend(LegendData(SurfaceColor.CustomGreen, "Legend")) + } - SubTitle("Orange Legend") - Legend(LegendData(SurfaceColor.Warning, "Legend")) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Orange Legend") { + Legend(LegendData(SurfaceColor.Warning, "Legend")) + } - SubTitle("Pink Legend") - Legend( - LegendData( - SurfaceColor.CustomPink, - "Lorem ipsum dolor sit amet," + - " consectetur adipiscing elit. Maecenas dolor lacus," + - " aliquam. Lorem ipsum dolor sit amet," + - " consectetur adipiscing elit. Maecenas dolor lacus,", - ), - ) + ColumnComponentContainer("Pink Legend") { + Legend( + LegendData( + SurfaceColor.CustomPink, + "Lorem ipsum dolor sit amet," + + " consectetur adipiscing elit. Maecenas dolor lacus," + + " aliquam. Lorem ipsum dolor sit amet," + + " consectetur adipiscing elit. Maecenas dolor lacus,", + ), + ) + } + + ColumnComponentContainer("Legend with popup description") { + Legend( + LegendData( + color = SurfaceColor.CustomGreen, + title = "Legend with popup", + popUpLegendDescriptionData = listOf( + LegendDescriptionData( + color = SurfaceColor.CustomGreen, + text = "Item 1", + range = 0..300, + ), + LegendDescriptionData( + color = SurfaceColor.CustomGreen, + text = "Item 2", + range = 301..600, + ), + ), + ), + ) - SubTitle("Legend with popup description") - Legend( - LegendData( - color = SurfaceColor.CustomGreen, - title = "Legend with popup", - popUpLegendDescriptionData = listOf( + LegendRange( + listOf( LegendDescriptionData( - color = SurfaceColor.CustomGreen, - text = "Item 1", - range = 0..300, + SurfaceColor.CustomGreen, + "Legend", + IntRange(0, 30), ), LegendDescriptionData( - color = SurfaceColor.CustomGreen, - text = "Item 2", - range = 301..600, + SurfaceColor.CustomGreen, + "Lorem ipsum dolor sit amet, " + + "consectetur adipiscing elit. Maecenas dolor lacus, " + + "aliquam. Lorem ipsum dolor sit amet, " + + "consectetur adipiscing elit. Maecenas dolor lacus, " + + "aliquam.Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + IntRange(0, 30), ), ), - ), - ) - - LegendRange( - listOf( - LegendDescriptionData( - SurfaceColor.CustomGreen, - "Legend", - IntRange(0, 30), - ), - LegendDescriptionData( - SurfaceColor.CustomGreen, - "Lorem ipsum dolor sit amet, " + - "consectetur adipiscing elit. Maecenas dolor lacus, " + - "aliquam. Lorem ipsum dolor sit amet, " + - "consectetur adipiscing elit. Maecenas dolor lacus, " + - "aliquam.Lorem ipsum dolor sit amet, consectetur adipiscing elit.", - IntRange(0, 30), - ), - ), - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ) + } - SubTitle("Legend Range ") - LegendRange( - listOf( - LegendDescriptionData( - SurfaceColor.CustomGreen, - "Low", - IntRange(0, 5), - ), - LegendDescriptionData(SurfaceColor.CustomYellow, "Medium", IntRange(5, 10)), - LegendDescriptionData(SurfaceColor.Warning, "High", IntRange(10, 20)), - LegendDescriptionData(SurfaceColor.CustomPink, "Very high", IntRange(20, 40)), - LegendDescriptionData(SurfaceColor.CustomBrown, "Extreme", IntRange(40, 120)), - LegendDescriptionData( - SurfaceColor.CustomGray, - "Lorem ipsum dolor sit amet, " + - "consectetur adipiscing elit. Fusce convallis", - IntRange(120, 1000), + ColumnComponentContainer("Legend Range ") { + LegendRange( + listOf( + LegendDescriptionData( + SurfaceColor.CustomGreen, + "Low", + IntRange(0, 5), + ), + LegendDescriptionData(SurfaceColor.CustomYellow, "Medium", IntRange(5, 10)), + LegendDescriptionData(SurfaceColor.Warning, "High", IntRange(10, 20)), + LegendDescriptionData(SurfaceColor.CustomPink, "Very high", IntRange(20, 40)), + LegendDescriptionData(SurfaceColor.CustomBrown, "Extreme", IntRange(40, 120)), + LegendDescriptionData( + SurfaceColor.CustomGray, + "Lorem ipsum dolor sit amet, " + + "consectetur adipiscing elit. Fusce convallis", + IntRange(120, 1000), + ), ), - ), - ) + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/MetadataAvatarScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/MetadataAvatarScreen.kt index 11132271b..004110d07 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/MetadataAvatarScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/MetadataAvatarScreen.kt @@ -4,7 +4,7 @@ import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import org.hisp.dhis.mobile.ui.designsystem.component.AvatarSize -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.MetadataAvatar import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer import org.hisp.dhis.mobile.ui.designsystem.resource.provideDHIS2Icon @@ -12,7 +12,7 @@ import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor @Composable fun MetadataAvatarScreen() { - ColumnComponentContainer(title = "Metadata Avatar") { + ColumnScreenContainer(title = "Metadata Avatar component") { RowComponentContainer { MetadataAvatar( icon = { diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ProgressScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ProgressScreen.kt index 6a8f637c7..83d4a6351 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ProgressScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/ProgressScreen.kt @@ -1,90 +1,101 @@ package org.hisp.dhis.common.screens.others -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ProgressIndicator import org.hisp.dhis.mobile.ui.designsystem.component.ProgressIndicatorType import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable internal fun ProgressScreen() { - ColumnComponentContainer(title = "Progress Indicator") { - SubTitle("Linear indicator") - ProgressIndicator( - progress = 0.25f, - type = ProgressIndicatorType.LINEAR, - hasError = false, - ) - ProgressIndicator( - progress = 0.50f, - type = ProgressIndicatorType.LINEAR, - hasError = false, - ) - ProgressIndicator( - progress = 0.75f, - type = ProgressIndicatorType.LINEAR, - hasError = false, - ) - ProgressIndicator( - progress = 0.45f, - type = ProgressIndicatorType.LINEAR, - hasError = false, - ) - ProgressIndicator( - type = ProgressIndicatorType.LINEAR, - hasError = false, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Linear indicator - Error") - ProgressIndicator( - progress = 0.70f, - type = ProgressIndicatorType.LINEAR, - hasError = true, - ) - ProgressIndicator( - type = ProgressIndicatorType.LINEAR, - hasError = true, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Circular indicator") - RowComponentContainer { + ColumnScreenContainer(title = "Progress Indicator component") { + ColumnComponentContainer("Linear indicator") { ProgressIndicator( progress = 0.25f, - type = ProgressIndicatorType.CIRCULAR, + type = ProgressIndicatorType.LINEAR, hasError = false, ) ProgressIndicator( progress = 0.50f, - type = ProgressIndicatorType.CIRCULAR, + type = ProgressIndicatorType.LINEAR, hasError = false, ) ProgressIndicator( progress = 0.75f, - type = ProgressIndicatorType.CIRCULAR, + type = ProgressIndicatorType.LINEAR, hasError = false, ) ProgressIndicator( - progress = 1f, - type = ProgressIndicatorType.CIRCULAR, + progress = 0.45f, + type = ProgressIndicatorType.LINEAR, hasError = false, ) ProgressIndicator( - progress = 0.6f, + type = ProgressIndicatorType.LINEAR, + hasError = false, + ) + } + + ColumnComponentContainer("Linear indicator - Error") { + ProgressIndicator( + progress = 0.70f, + type = ProgressIndicatorType.LINEAR, + hasError = true, + ) + ProgressIndicator( + type = ProgressIndicatorType.LINEAR, + hasError = true, + ) + } + + ColumnComponentContainer("Circular indicator") { + RowComponentContainer { + ProgressIndicator( + progress = 0.25f, + type = ProgressIndicatorType.CIRCULAR, + hasError = false, + ) + ProgressIndicator( + progress = 0.50f, + type = ProgressIndicatorType.CIRCULAR, + hasError = false, + ) + ProgressIndicator( + progress = 0.75f, + type = ProgressIndicatorType.CIRCULAR, + hasError = false, + ) + ProgressIndicator( + progress = 1f, + type = ProgressIndicatorType.CIRCULAR, + hasError = false, + ) + ProgressIndicator( + progress = 0.6f, + type = ProgressIndicatorType.CIRCULAR, + hasError = false, + ) + } + ProgressIndicator( type = ProgressIndicatorType.CIRCULAR, hasError = false, ) } - ProgressIndicator( - type = ProgressIndicatorType.CIRCULAR, - hasError = false, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Circular indicator - Error") + + ColumnComponentContainer("Circular indicator - Error") { + RowComponentContainer { + ProgressIndicator( + progress = 0.70f, + type = ProgressIndicatorType.CIRCULAR, + hasError = true, + ) + ProgressIndicator( + type = ProgressIndicatorType.CIRCULAR, + hasError = true, + ) + } + } RowComponentContainer { ProgressIndicator( progress = 0.70f, diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SearchBarScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SearchBarScreen.kt index 0291692c7..500465bd8 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SearchBarScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SearchBarScreen.kt @@ -6,40 +6,34 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.SearchBar -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun SearchBarScreen() { - ColumnComponentContainer { - var text by rememberSaveable { - mutableStateOf("") + ColumnScreenContainer(title = "Search bar component") { + ColumnComponentContainer("Search bar") { + var text by rememberSaveable { + mutableStateOf("") + } + SearchBar( + text = text, + onQueryChange = { + text = it + }, + ) } - var text2 by rememberSaveable { - mutableStateOf("Input") + ColumnComponentContainer("Search bar") { + var text2 by rememberSaveable { + mutableStateOf("Input") + } + SearchBar( + text = text2, + onQueryChange = { + text2 = it + }, + ) } - - Title("Search bar component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Search bar", textColor = TextColor.OnSurfaceVariant) - - SearchBar( - text = text, - onQueryChange = { - text = it - }, - ) - - Title("Search bar component", textColor = TextColor.OnSurfaceVariant) - SubTitle("Search bar", textColor = TextColor.OnSurfaceVariant) - - SearchBar( - text = text2, - onQueryChange = { - text2 = it - }, - ) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SectionScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SectionScreen.kt index b84aca60e..f449cf3b4 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SectionScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/SectionScreen.kt @@ -1,32 +1,25 @@ package org.hisp.dhis.common.screens.others -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.common.screens.previews.lorem import org.hisp.dhis.common.screens.previews.lorem_medium import org.hisp.dhis.common.screens.previews.lorem_short import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputText import org.hisp.dhis.mobile.ui.designsystem.component.Section import org.hisp.dhis.mobile.ui.designsystem.component.SectionState -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun SectionScreen() { - ColumnComponentContainer(title = "Section Header") { - SubTitle("Collapsible header") - - Column { + ColumnScreenContainer(title = "Section Header component") { + ColumnComponentContainer("Collapsible header") { Section( title = "Section title", description = null, @@ -89,69 +82,68 @@ fun SectionScreen() { ) } - Spacer(Modifier.size(Spacing.Spacing18)) - - SubTitle("Flat header") - Section( - title = "Section title", - description = null, - completedFields = 2, - totalFields = 3, - state = SectionState.FIXED, - errorCount = 0, - warningCount = 0, - content = { TestingFields() }, - onNextSection = { }, - onSectionClick = { }, - ) - Section( - title = "Section title", - description = lorem, - completedFields = 2, - totalFields = 3, - state = SectionState.FIXED, - errorCount = 2, - warningCount = 1, - content = { TestingFields() }, - onNextSection = { }, - onSectionClick = { }, - ) - Section( - title = "Section title", - description = lorem_short, - completedFields = 2, - totalFields = 3, - state = SectionState.FIXED, - errorCount = 0, - warningCount = 0, - content = { TestingFields() }, - onNextSection = { }, - onSectionClick = { }, - ) - Section( - title = "Section title", - description = lorem_medium, - completedFields = 2, - totalFields = 3, - state = SectionState.FIXED, - errorCount = 0, - warningCount = 0, - content = { TestingFields() }, - onNextSection = { }, - onSectionClick = { }, - ) - Section( - title = "Section title Section title Section title Section title Section title", - description = lorem_medium, - completedFields = 2, - totalFields = 3, - state = SectionState.FIXED, - errorCount = 0, - warningCount = 0, - content = { TestingFields() }, - onNextSection = { }, - onSectionClick = { }, - ) + ColumnComponentContainer("Flat header") { + Section( + title = "Section title", + description = null, + completedFields = 2, + totalFields = 3, + state = SectionState.FIXED, + errorCount = 0, + warningCount = 0, + content = { TestingFields() }, + onNextSection = { }, + onSectionClick = { }, + ) + Section( + title = "Section title", + description = lorem, + completedFields = 2, + totalFields = 3, + state = SectionState.FIXED, + errorCount = 2, + warningCount = 1, + content = { TestingFields() }, + onNextSection = { }, + onSectionClick = { }, + ) + Section( + title = "Section title", + description = lorem_short, + completedFields = 2, + totalFields = 3, + state = SectionState.FIXED, + errorCount = 0, + warningCount = 0, + content = { TestingFields() }, + onNextSection = { }, + onSectionClick = { }, + ) + Section( + title = "Section title", + description = lorem_medium, + completedFields = 2, + totalFields = 3, + state = SectionState.FIXED, + errorCount = 0, + warningCount = 0, + content = { TestingFields() }, + onNextSection = { }, + onSectionClick = { }, + ) + Section( + title = "Section title Section title Section title Section title Section title", + description = lorem_medium, + completedFields = 2, + totalFields = 3, + state = SectionState.FIXED, + errorCount = 0, + warningCount = 0, + content = { TestingFields() }, + onNextSection = { }, + onSectionClick = { }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/TagsScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/TagsScreen.kt index 873c9a3c8..df77b9bd9 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/TagsScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/others/TagsScreen.kt @@ -2,11 +2,11 @@ package org.hisp.dhis.common.screens.others import androidx.compose.runtime.Composable import org.hisp.dhis.common.screens.previews.TagsPreview -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer @Composable fun TagsScreen() { - ColumnComponentContainer(title = "Tags") { + ColumnScreenContainer(title = "Tag component") { TagsPreview() } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/parameter/ParameterSelectorScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/parameter/ParameterSelectorScreen.kt index 49cd14910..765563424 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/parameter/ParameterSelectorScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/parameter/ParameterSelectorScreen.kt @@ -1,8 +1,5 @@ package org.hisp.dhis.common.screens.parameter -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.QrCode2 import androidx.compose.material3.Icon @@ -12,11 +9,11 @@ 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.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.AgeInputType import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem import org.hisp.dhis.mobile.ui.designsystem.component.InputAge import org.hisp.dhis.mobile.ui.designsystem.component.InputAgeModel @@ -142,7 +139,6 @@ fun ParameterSelectorScreen() { ageInputType = it }, ), - ) }, status = when (ageInputType) { @@ -212,7 +208,6 @@ fun ParameterSelectorScreen() { onValueChanged = {}, format = "ddMMYYYY", ), - ) }, onExpand = {}, @@ -383,10 +378,7 @@ fun ParameterSelectorScreen() { ), ) - Column( - modifier = Modifier - .verticalScroll(rememberScrollState()), - ) { + ColumnScreenContainer(title = "Parameter Selector component") { items.forEach { ParameterSelectorItem( model = it, diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputCheckBoxScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputCheckBoxScreen.kt index b0deeca68..a5ef55068 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputCheckBoxScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputCheckBoxScreen.kt @@ -1,18 +1,14 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputCheckBox import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.Orientation -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun InputCheckBoxScreen() { @@ -58,49 +54,52 @@ fun InputCheckBoxScreen() { ) } - ColumnComponentContainer("Checkboxes") { - SubTitle("Vertical") - InputCheckBox( - title = "Label", - checkBoxData = checkBoxDataItemsVertical, - onItemChange = { checkBoxData -> - val index = checkBoxDataItemsVertical.withIndex().first { it.value.uid == checkBoxData.uid }.index - checkBoxDataItemsVertical[index] = checkBoxData.copy(checked = !checkBoxData.checked) - }, - onClearSelection = { checkBoxDataItemsVertical.replaceAll { it.copy(checked = false) } }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputCheckBox( - title = "Label", - checkBoxData = checkBoxDataItemsError, - state = InputShellState.ERROR, - onItemChange = { checkBoxData -> - val index = checkBoxDataItemsError.withIndex().first { it.value.uid == checkBoxData.uid }.index - checkBoxDataItemsError[index] = checkBoxData.copy(checked = !checkBoxData.checked) - }, - onClearSelection = { checkBoxDataItemsError.replaceAll { it.copy(checked = false) } }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputCheckBox( - title = "Label", - checkBoxData = checkBoxDataItemsDisabled, - state = InputShellState.DISABLED, - onItemChange = { }, - onClearSelection = { }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Horizontal") - InputCheckBox( - title = "Label", - checkBoxData = checkBoxDataItemsHorizontal, - orientation = Orientation.HORIZONTAL, - onItemChange = { checkBoxData -> - val index = checkBoxDataItemsHorizontal.withIndex().first { it.value.uid == checkBoxData.uid }.index - checkBoxDataItemsHorizontal[index] = checkBoxData.copy(checked = !checkBoxData.checked) - }, - onClearSelection = { checkBoxDataItemsHorizontal.replaceAll { it.copy(checked = false) } }, - state = InputShellState.UNFOCUSED, - ) + ColumnScreenContainer(ToggleableInputs.INPUT_CHECK_BOX.label) { + ColumnComponentContainer("Basic state with vertical orientation") { + InputCheckBox( + title = "Label", + checkBoxData = checkBoxDataItemsVertical, + onItemChange = { checkBoxData -> + val index = checkBoxDataItemsVertical.withIndex().first { it.value.uid == checkBoxData.uid }.index + checkBoxDataItemsVertical[index] = checkBoxData.copy(checked = !checkBoxData.checked) + }, + onClearSelection = { checkBoxDataItemsVertical.replaceAll { it.copy(checked = false) } }, + state = InputShellState.UNFOCUSED, + ) + } + ColumnComponentContainer("Error state with vertical orientation") { + InputCheckBox( + title = "Label", + checkBoxData = checkBoxDataItemsError, + state = InputShellState.ERROR, + onItemChange = { checkBoxData -> + val index = checkBoxDataItemsError.withIndex().first { it.value.uid == checkBoxData.uid }.index + checkBoxDataItemsError[index] = checkBoxData.copy(checked = !checkBoxData.checked) + }, + onClearSelection = { checkBoxDataItemsError.replaceAll { it.copy(checked = false) } }, + ) + } + ColumnComponentContainer("Disabled state with vertical orientation") { + InputCheckBox( + title = "Label", + checkBoxData = checkBoxDataItemsDisabled, + state = InputShellState.DISABLED, + onItemChange = { }, + onClearSelection = { }, + ) + } + ColumnComponentContainer("Basic state with horizontal orientation") { + InputCheckBox( + title = "Label", + checkBoxData = checkBoxDataItemsHorizontal, + orientation = Orientation.HORIZONTAL, + onItemChange = { checkBoxData -> + val index = checkBoxDataItemsHorizontal.withIndex().first { it.value.uid == checkBoxData.uid }.index + checkBoxDataItemsHorizontal[index] = checkBoxData.copy(checked = !checkBoxData.checked) + }, + onClearSelection = { checkBoxDataItemsHorizontal.replaceAll { it.copy(checked = false) } }, + state = InputShellState.UNFOCUSED, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputDropDownScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputDropDownScreen.kt index ccec61683..099ccfa21 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputDropDownScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputDropDownScreen.kt @@ -1,27 +1,21 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputStyle -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData -import org.hisp.dhis.mobile.ui.designsystem.component.Title -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing -import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor @Composable fun InputDropDownScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ToggleableInputs.INPUT_DROPDOWN.label) { val options = listOf( DropdownItem("Option 1"), DropdownItem("Option 2"), @@ -34,138 +28,135 @@ fun InputDropDownScreen() { DropdownItem("Option 9"), DropdownItem("Option 10"), ) - Title("Input Dropdown", textColor = TextColor.OnSurfaceVariant) - - SubTitle("Basic Input Dropdown with < 7 inputs", textColor = TextColor.OnSurfaceVariant) var selectedItem by remember { mutableStateOf(null) } - InputDropDown( - title = "Label", - state = InputShellState.UNFOCUSED, - dropdownItems = options.take(6), - onResetButtonClicked = { - selectedItem = null - }, - onItemSelected = { - selectedItem = it - }, - selectedItem = selectedItem, - ) - InputDropDown( - title = "Label - With supporting text", - state = InputShellState.UNFOCUSED, - dropdownItems = options.take(6), - onResetButtonClicked = { - selectedItem = null - }, - onItemSelected = { - selectedItem = it - }, - selectedItem = selectedItem, - supportingTextData = listOf( - SupportingTextData(text = "Options"), - ), - ) + ColumnComponentContainer("Basic Input Dropdown with < 7 inputs") { + InputDropDown( + title = "Label", + state = InputShellState.UNFOCUSED, + dropdownItems = options.take(6), + onResetButtonClicked = { + selectedItem = null + }, + onItemSelected = { + selectedItem = it + }, + selectedItem = selectedItem, + ) - InputDropDown( - title = "Label - Parameter Style", - inputStyle = InputStyle.ParameterInputStyle(), - state = InputShellState.UNFOCUSED, - dropdownItems = options.take(6), - onResetButtonClicked = { - selectedItem = null - }, - onItemSelected = { - selectedItem = it - }, - selectedItem = selectedItem, - ) + InputDropDown( + title = "Label - With supporting text", + state = InputShellState.UNFOCUSED, + dropdownItems = options.take(6), + onResetButtonClicked = { + selectedItem = null + }, + onItemSelected = { + selectedItem = it + }, + selectedItem = selectedItem, + supportingTextData = listOf( + SupportingTextData(text = "Options"), + ), + ) - Spacer(Modifier.size(Spacing.Spacing18)) + InputDropDown( + title = "Label - Parameter Style", + inputStyle = InputStyle.ParameterInputStyle(), + state = InputShellState.UNFOCUSED, + dropdownItems = options.take(6), + onResetButtonClicked = { + selectedItem = null + }, + onItemSelected = { + selectedItem = it + }, + selectedItem = selectedItem, + ) + } - SubTitle("Basic Input Dropdown with >= 7 inputs", textColor = TextColor.OnSurfaceVariant) - var selectedItem4 by remember { mutableStateOf(null) } - InputDropDown( - title = "Label", - state = InputShellState.UNFOCUSED, - dropdownItems = options, - onResetButtonClicked = { - selectedItem4 = null - }, - onItemSelected = { - selectedItem4 = it - }, - selectedItem = selectedItem4, - ) + ColumnComponentContainer("Basic Input Dropdown with >= 7 inputs") { + var selectedItem4 by remember { mutableStateOf(null) } + InputDropDown( + title = "Label", + state = InputShellState.UNFOCUSED, + dropdownItems = options, + onResetButtonClicked = { + selectedItem4 = null + }, + onItemSelected = { + selectedItem4 = it + }, + selectedItem = selectedItem4, + ) + } - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Basic Input Dropdown with content ") { + var selectedItem1 by remember { mutableStateOf(options[0]) } + InputDropDown( + title = "Label", + state = InputShellState.UNFOCUSED, + dropdownItems = options, + onResetButtonClicked = { + selectedItem1 = null + }, + onItemSelected = { + selectedItem1 = it + }, + selectedItem = selectedItem1, + ) + } - SubTitle("Basic Input Dropdown with content ", textColor = TextColor.OnSurfaceVariant) - var selectedItem1 by remember { mutableStateOf(options[0]) } - InputDropDown( - title = "Label", - state = InputShellState.UNFOCUSED, - dropdownItems = options, - onResetButtonClicked = { - selectedItem1 = null - }, - onItemSelected = { - selectedItem1 = it - }, - selectedItem = selectedItem1, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Error Input Dropdown ") { + var selectedItem2 by remember { mutableStateOf(null) } + InputDropDown( + title = "Label", + state = InputShellState.ERROR, + dropdownItems = options, + onResetButtonClicked = { + selectedItem2 = null + }, + onItemSelected = { + selectedItem2 = it + }, + selectedItem = selectedItem2, + ) + } - SubTitle("Error Input Dropdown ", textColor = TextColor.OnSurfaceVariant) - var selectedItem2 by remember { mutableStateOf(null) } - InputDropDown( - title = "Label", - state = InputShellState.ERROR, - dropdownItems = options, - onResetButtonClicked = { - selectedItem2 = null - }, - onItemSelected = { - selectedItem2 = it - }, - selectedItem = selectedItem2, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Disabled Input Dropdown with content ") { + var selectedItem3 by remember { mutableStateOf(options[1]) } + InputDropDown( + title = "Label", + state = InputShellState.DISABLED, + dropdownItems = options, + onResetButtonClicked = { + selectedItem3 = null + }, + onItemSelected = { + selectedItem3 = it + }, + selectedItem = selectedItem3, + ) + } - SubTitle("Disabled Input Dropdown with content ", textColor = TextColor.OnSurfaceVariant) - var selectedItem3 by remember { mutableStateOf(options[1]) } - InputDropDown( - title = "Label", - state = InputShellState.DISABLED, - dropdownItems = options, - onResetButtonClicked = { - selectedItem3 = null - }, - onItemSelected = { - selectedItem3 = it - }, - selectedItem = selectedItem3, - ) - Spacer(Modifier.size(Spacing.Spacing18)) + ColumnComponentContainer("Input Dropdown with 5000 items ") { + val dropdownItems = mutableListOf() + for (i in 1..5000) { + dropdownItems.add(DropdownItem("$i")) + } - SubTitle("Input Dropdown with 5000 items ", textColor = TextColor.OnSurfaceVariant) - val dropdownItems = mutableListOf() - for (i in 1..5000) { - dropdownItems.add(DropdownItem("$i")) + InputDropDown( + title = "Label", + state = InputShellState.UNFOCUSED, + dropdownItems = dropdownItems, + onResetButtonClicked = { + selectedItem = null + }, + onItemSelected = { + selectedItem = it + }, + selectedItem = selectedItem, + ) } - - InputDropDown( - title = "Label", - state = InputShellState.UNFOCUSED, - dropdownItems = dropdownItems, - onResetButtonClicked = { - selectedItem = null - }, - onItemSelected = { - selectedItem = it - }, - selectedItem = selectedItem, - ) - Spacer(Modifier.size(Spacing.Spacing18)) } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputMatrixScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputMatrixScreen.kt index e585dbb82..d40acb53f 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputMatrixScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputMatrixScreen.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputMatrix import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.internal.ImageCardData @@ -70,33 +71,36 @@ fun InputMatrixScreen(imageBitmapLoader: (() -> ImageBitmap)?) { val sampleImage = provideSampleImages( inputCardData.filterIsInstance().map { it }, ) - ColumnComponentContainer(title = "Input Matrix") { - InputMatrix( - title = "Label", - data = inputCardData.filterNotNull(), - selectedData = matrixSelectedItem, - onSelectionChanged = { newSelectedItem -> - matrixSelectedItem = if (matrixSelectedItem == newSelectedItem) { - null - } else { - newSelectedItem - } - }, - state = InputShellState.UNFOCUSED, - painterFor = sampleImage, - ) - - InputMatrix( - title = "Label", - data = inputCardData.filterNotNull(), - selectedData = matrixSelectedItem, - state = InputShellState.DISABLED, - itemCount = 3, - onSelectionChanged = { - // no-op - }, - painterFor = sampleImage, - ) + ColumnScreenContainer(title = ToggleableInputs.INPUT_MATRIX.label) { + ColumnComponentContainer("Basic state") { + InputMatrix( + title = "Label", + data = inputCardData.filterNotNull(), + selectedData = matrixSelectedItem, + onSelectionChanged = { newSelectedItem -> + matrixSelectedItem = if (matrixSelectedItem == newSelectedItem) { + null + } else { + newSelectedItem + } + }, + state = InputShellState.UNFOCUSED, + painterFor = sampleImage, + ) + } + ColumnComponentContainer("Disabled state") { + InputMatrix( + title = "Label", + data = inputCardData.filterNotNull(), + selectedData = matrixSelectedItem, + state = InputShellState.DISABLED, + itemCount = 3, + onSelectionChanged = { + // no-op + }, + painterFor = sampleImage, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputRadioButtonScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputRadioButtonScreen.kt index 9e0fe9150..b9a6c038d 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputRadioButtonScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputRadioButtonScreen.kt @@ -1,24 +1,20 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.common.screens.previews.lorem import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputRadioButton import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.Orientation import org.hisp.dhis.mobile.ui.designsystem.component.RadioButtonData -import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun InputRadioButtonScreen() { @@ -72,59 +68,62 @@ fun InputRadioButtonScreen() { mutableStateOf(radioButtonDataItemsHorizontal[0]) } var showSupportingText by remember { mutableStateOf(false) } - ColumnComponentContainer("Radio Buttons") { + ColumnScreenContainer(ToggleableInputs.INPUT_RADIO_BUTTON.label) { Button(text = "Click to show/Hide supporting text") { showSupportingText = !showSupportingText } - SubTitle("Vertical") - InputRadioButton( - title = "Label", - radioButtonData = radioButtonDataItemsVertical, - itemSelected = selectedItemVertical, - onItemChange = { - selectedItemVertical = it - }, - state = InputShellState.UNFOCUSED, - supportingText = if (showSupportingText) { - listOf( - SupportingTextData("Required", state = SupportingTextState.ERROR), - SupportingTextData(lorem + lorem + lorem, state = SupportingTextState.WARNING), - ) - } else { - emptyList() - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputRadioButton( - title = "Label", - radioButtonData = radioButtonDataItemsError, - state = InputShellState.ERROR, - itemSelected = selectedItemError, - onItemChange = { - selectedItemError = it - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputRadioButton( - title = "Label", - radioButtonData = radioButtonDataItemsDisabled, - state = InputShellState.DISABLED, - onItemChange = { - selectedItemDisabled = it - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - SubTitle("Horizontal") - InputRadioButton( - title = "Label", - radioButtonData = radioButtonDataItemsHorizontal, - orientation = Orientation.HORIZONTAL, - itemSelected = selectedItemHorizontal, - onItemChange = { - selectedItemHorizontal = it - }, - state = InputShellState.UNFOCUSED, - ) + ColumnComponentContainer("Basic state with vertical orientation") { + InputRadioButton( + title = "Label", + radioButtonData = radioButtonDataItemsVertical, + itemSelected = selectedItemVertical, + onItemChange = { + selectedItemVertical = it + }, + state = InputShellState.UNFOCUSED, + supportingText = if (showSupportingText) { + listOf( + SupportingTextData("Required", state = SupportingTextState.ERROR), + SupportingTextData(lorem + lorem + lorem, state = SupportingTextState.WARNING), + ) + } else { + emptyList() + }, + ) + } + ColumnComponentContainer("Error state with vertical orientation") { + InputRadioButton( + title = "Label", + radioButtonData = radioButtonDataItemsError, + state = InputShellState.ERROR, + itemSelected = selectedItemError, + onItemChange = { + selectedItemError = it + }, + ) + } + ColumnComponentContainer("Disabled state with vertical orientation") { + InputRadioButton( + title = "Label", + radioButtonData = radioButtonDataItemsDisabled, + state = InputShellState.DISABLED, + onItemChange = { + selectedItemDisabled = it + }, + ) + } + ColumnComponentContainer("Basic state with horizontal orientation") { + InputRadioButton( + title = "Label", + radioButtonData = radioButtonDataItemsHorizontal, + orientation = Orientation.HORIZONTAL, + itemSelected = selectedItemHorizontal, + onItemChange = { + selectedItemHorizontal = it + }, + state = InputShellState.UNFOCUSED, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputSequentialScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputSequentialScreen.kt index d0352f92d..eebd8858b 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputSequentialScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputSequentialScreen.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputSequential import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.internal.ImageCardData @@ -72,32 +73,36 @@ fun InputSequentialScreen(imageBitmapLoader: (() -> ImageBitmap)?) { inputCardData.filterIsInstance().map { it }, ) - ColumnComponentContainer(title = "Input Sequential") { - InputSequential( - title = "Label", - data = inputCardData.filterNotNull(), - selectedData = sequentialSelectedItem, - onSelectionChanged = { newSelectedItem -> - sequentialSelectedItem = if (sequentialSelectedItem == newSelectedItem) { - null - } else { - newSelectedItem - } - }, - state = InputShellState.UNFOCUSED, - painterFor = painterFor, - ) + ColumnScreenContainer(title = ToggleableInputs.INPUT_SEQUENTIAL.label) { + ColumnComponentContainer("Basic state") { + InputSequential( + title = "Label", + data = inputCardData.filterNotNull(), + selectedData = sequentialSelectedItem, + onSelectionChanged = { newSelectedItem -> + sequentialSelectedItem = if (sequentialSelectedItem == newSelectedItem) { + null + } else { + newSelectedItem + } + }, + state = InputShellState.UNFOCUSED, + painterFor = painterFor, + ) + } - InputSequential( - title = "Label", - data = inputCardData.filterNotNull(), - selectedData = sequentialSelectedItem, - state = InputShellState.DISABLED, - onSelectionChanged = { - // no-op - }, - painterFor = painterFor, - ) + ColumnComponentContainer("Disabled state") { + InputSequential( + title = "Label", + data = inputCardData.filterNotNull(), + selectedData = sequentialSelectedItem, + state = InputShellState.DISABLED, + onSelectionChanged = { + // no-op + }, + painterFor = painterFor, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesNoFieldScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesNoFieldScreen.kt index dbe9f69fe..7c539c97e 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesNoFieldScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesNoFieldScreen.kt @@ -1,20 +1,17 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputYesNoField import org.hisp.dhis.mobile.ui.designsystem.component.InputYesNoFieldValues import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun InputYesNoFieldScreen() { @@ -30,40 +27,47 @@ fun InputYesNoFieldScreen() { mutableStateOf(null) } - ColumnComponentContainer("Yes/No Field") { - InputYesNoField( - title = "Label", - itemSelected = selectedItem, - onItemChange = { - selectedItem = it - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesNoField( - title = "Label", - itemSelected = selectedItem1, - onItemChange = { - selectedItem1 = it - }, - state = InputShellState.UNFOCUSED, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesNoField( - title = "Label", - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), - itemSelected = selectedItemError, - onItemChange = { - selectedItemError = it - }, - ) - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesNoField( - title = "Label", - state = InputShellState.DISABLED, - onItemChange = { - }, - ) + ColumnScreenContainer(ToggleableInputs.INPUT_YES_NO_FIELD.label) { + ColumnComponentContainer("Basic state") { + InputYesNoField( + title = "Label", + itemSelected = selectedItem, + onItemChange = { + selectedItem = it + }, + state = InputShellState.UNFOCUSED, + ) + } + ColumnComponentContainer("Selected state") { + InputYesNoField( + title = "Label", + itemSelected = selectedItem1, + onItemChange = { + selectedItem1 = it + }, + state = InputShellState.UNFOCUSED, + ) + } + + ColumnComponentContainer("Error state") { + InputYesNoField( + title = "Label", + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), + itemSelected = selectedItemError, + onItemChange = { + selectedItemError = it + }, + ) + } + + ColumnComponentContainer("Disabled state") { + InputYesNoField( + title = "Label", + state = InputShellState.DISABLED, + onItemChange = { + }, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlyCheckBoxScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlyCheckBoxScreen.kt index 4de1cc80d..f4fd5951c 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlyCheckBoxScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlyCheckBoxScreen.kt @@ -1,24 +1,21 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputYesOnlyCheckBox import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun InputYesOnlyCheckBoxScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ToggleableInputs.INPUT_YES_ONLY_CHECKBOX.label) { var checkboxData by remember { mutableStateOf(CheckBoxData(uid = "0", checked = false, enabled = true, textInput = "Label")) } @@ -34,38 +31,48 @@ fun InputYesOnlyCheckBoxScreen() { val checkboxData4 by remember { mutableStateOf(CheckBoxData(uid = "0", checked = true, enabled = true, textInput = "Label")) } - InputYesOnlyCheckBox( - checkBoxData = checkboxData, - state = InputShellState.UNFOCUSED, - ) { - checkboxData = checkboxData.copy(checked = !checkboxData.checked) + ColumnComponentContainer("Basic state") { + InputYesOnlyCheckBox( + checkBoxData = checkboxData, + state = InputShellState.UNFOCUSED, + ) { + checkboxData = checkboxData.copy(checked = !checkboxData.checked) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlyCheckBox( - checkBoxData = checkboxData1, - state = InputShellState.UNFOCUSED, - ) { - checkboxData1 = checkboxData1.copy(checked = !checkboxData.checked) + + ColumnComponentContainer("Selected state") { + InputYesOnlyCheckBox( + checkBoxData = checkboxData1, + state = InputShellState.UNFOCUSED, + ) { + checkboxData1 = checkboxData1.copy(checked = !checkboxData.checked) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlyCheckBox( - checkBoxData = checkboxData2, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), - ) { - checkboxData2 = checkboxData2.copy(checked = !checkboxData.checked) + + ColumnComponentContainer("Error state") { + InputYesOnlyCheckBox( + checkBoxData = checkboxData2, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), + ) { + checkboxData2 = checkboxData2.copy(checked = !checkboxData.checked) + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlyCheckBox( - checkBoxData = checkboxData3, - state = InputShellState.DISABLED, - ) { + + ColumnComponentContainer("Disabled selected state") { + InputYesOnlyCheckBox( + checkBoxData = checkboxData3, + state = InputShellState.DISABLED, + ) { + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlyCheckBox( - checkBoxData = checkboxData4, - state = InputShellState.DISABLED, - ) { + + ColumnComponentContainer("Disabled state") { + InputYesOnlyCheckBox( + checkBoxData = checkboxData4, + state = InputShellState.DISABLED, + ) { + } } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlySwitchScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlySwitchScreen.kt index c713d0c30..18ddac3b9 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlySwitchScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/InputYesOnlySwitchScreen.kt @@ -1,67 +1,74 @@ package org.hisp.dhis.common.screens.toggleableInputs -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputYesOnlySwitch import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextData import org.hisp.dhis.mobile.ui.designsystem.component.SupportingTextState -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing @Composable fun InputYesOnlySwitchScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ToggleableInputs.INPUT_YES_ONLY_SWITCH.label) { var isSelected by rememberSaveable { mutableStateOf(false) } var isSelected1 by rememberSaveable { mutableStateOf(true) } var isSelected2 by rememberSaveable { mutableStateOf(false) } var isSelected3 by rememberSaveable { mutableStateOf(true) } var isSelected4 by rememberSaveable { mutableStateOf(false) } - InputYesOnlySwitch( - title = "Label", - isChecked = isSelected, - state = InputShellState.UNFOCUSED, - ) { - isSelected = !isSelected + ColumnComponentContainer("Basic state") { + InputYesOnlySwitch( + title = "Label", + isChecked = isSelected, + state = InputShellState.UNFOCUSED, + ) { + isSelected = !isSelected + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlySwitch( - title = "Label", - isChecked = isSelected1, - state = InputShellState.UNFOCUSED, - ) { - isSelected1 = !isSelected1 + + ColumnComponentContainer("Selected state") { + InputYesOnlySwitch( + title = "Label", + isChecked = isSelected1, + state = InputShellState.UNFOCUSED, + ) { + isSelected1 = !isSelected1 + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlySwitch( - title = "Label", - isChecked = isSelected2, - state = InputShellState.ERROR, - supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), - ) { - isSelected2 = !isSelected2 + + ColumnComponentContainer("Error state") { + InputYesOnlySwitch( + title = "Label", + isChecked = isSelected2, + state = InputShellState.ERROR, + supportingText = listOf(SupportingTextData("Error text", SupportingTextState.ERROR)), + ) { + isSelected2 = !isSelected2 + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlySwitch( - title = "Label", - isChecked = isSelected3, - state = InputShellState.DISABLED, - ) { - isSelected3 = !isSelected3 + + ColumnComponentContainer("Disabled selected state") { + InputYesOnlySwitch( + title = "Label", + isChecked = isSelected3, + state = InputShellState.DISABLED, + ) { + isSelected3 = !isSelected3 + } } - Spacer(Modifier.size(Spacing.Spacing18)) - InputYesOnlySwitch( - title = "Label", - isChecked = isSelected4, - state = InputShellState.DISABLED, - ) { - isSelected4 = !isSelected4 + + ColumnComponentContainer("Disabled state") { + InputYesOnlySwitch( + title = "Label", + isChecked = isSelected4, + state = InputShellState.DISABLED, + ) { + isSelected4 = !isSelected4 + } } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/MultiSelectInputScreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/MultiSelectInputScreen.kt index c00ae4cdf..84e71258e 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/MultiSelectInputScreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/MultiSelectInputScreen.kt @@ -4,12 +4,13 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputMultiSelection import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun MultiSelectInputScreen() { - ColumnComponentContainer { + ColumnScreenContainer(title = ToggleableInputs.MULTI_SELECT.label) { val multiSelect1Items = mutableStateListOf( CheckBoxData( uid = "uid-1", @@ -82,139 +83,152 @@ fun MultiSelectInputScreen() { ), ) - InputMultiSelection( - items = emptyList(), - title = "Multi Select Empty", - state = InputShellState.UNFOCUSED, - onItemsSelected = { _ -> - // no-op - }, - onClearItemSelection = { - // no-op - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) - - InputMultiSelection( - items = multiSelect1Items, - title = "Multi Select 1", - state = InputShellState.UNFOCUSED, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } - multiSelect1Items[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelect1Items.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("Basic state with no inputs") { + InputMultiSelection( + items = emptyList(), + title = "Multi Select Empty", + state = InputShellState.UNFOCUSED, + onItemsSelected = { _ -> + // no-op + }, + onClearItemSelection = { + // no-op + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } - InputMultiSelection( - items = multiSelect1Items, - title = "Multi Select 1 Error", - state = InputShellState.ERROR, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } - multiSelect1Items[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelect1Items.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("Basic state with <=7 inputs") { + InputMultiSelection( + items = multiSelect1Items, + title = "Multi Select 1", + state = InputShellState.UNFOCUSED, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } + multiSelect1Items[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelect1Items.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } - InputMultiSelection( - items = multiSelect1Items, - title = "Multi Select 1 Disabled", - state = InputShellState.DISABLED, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } - multiSelect1Items[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelect1Items.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("Error state") { + InputMultiSelection( + items = multiSelect1Items, + title = "Multi Select 1 Error", + state = InputShellState.ERROR, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } + multiSelect1Items[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelect1Items.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } - InputMultiSelection( - items = multiSelect2Items, - title = "Multi Select 2", - state = InputShellState.UNFOCUSED, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelect2Items.indexOfFirst { it.uid == selectedItem.uid } - multiSelect2Items[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelect2Items.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("Disabled state") { + InputMultiSelection( + items = multiSelect1Items, + title = "Multi Select 1 Disabled", + state = InputShellState.DISABLED, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelect1Items.indexOfFirst { it.uid == selectedItem.uid } + multiSelect1Items[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelect1Items.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } - InputMultiSelection( - items = multiSelect2Items, - title = "Multi Select 2 Disabled", - state = InputShellState.DISABLED, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelect2Items.indexOfFirst { it.uid == selectedItem.uid } - multiSelect2Items[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelect2Items.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("Basic state with >=7 inputs") { + InputMultiSelection( + items = multiSelect2Items, + title = "Multi Select 2", + state = InputShellState.UNFOCUSED, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelect2Items.indexOfFirst { it.uid == selectedItem.uid } + multiSelect2Items[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelect2Items.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } - val multiSelectItems = mutableListOf() - for (i in 1..5000) { - multiSelectItems.add( - CheckBoxData( - uid = "uid-$i", - checked = i == 2, - enabled = true, - textInput = "Opt. $i", - ), + ColumnComponentContainer("Disabled state with >=7 inputs") { + InputMultiSelection( + items = multiSelect2Items, + title = "Multi Select 2 Disabled", + state = InputShellState.DISABLED, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelect2Items.indexOfFirst { it.uid == selectedItem.uid } + multiSelect2Items[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelect2Items.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, ) } - InputMultiSelection( - items = multiSelectItems, - title = "Multi Select more than 5000 items", - state = InputShellState.UNFOCUSED, - onItemsSelected = { selectedItems -> - selectedItems.forEach { selectedItem -> - val index = multiSelectItems.indexOfFirst { it.uid == selectedItem.uid } - multiSelectItems[index] = selectedItem - } - }, - onClearItemSelection = { - multiSelectItems.replaceAll { it.copy(checked = false) } - }, - isRequired = false, - legendData = null, - supportingTextData = null, - ) + ColumnComponentContainer("With 5000 items") { + val multiSelectItems = mutableListOf() + for (i in 1..5000) { + multiSelectItems.add( + CheckBoxData( + uid = "uid-$i", + checked = i == 2, + enabled = true, + textInput = "Opt. $i", + ), + ) + } + InputMultiSelection( + items = multiSelectItems, + title = "Multi Select more than 5000 items", + state = InputShellState.UNFOCUSED, + onItemsSelected = { selectedItems -> + selectedItems.forEach { selectedItem -> + val index = multiSelectItems.indexOfFirst { it.uid == selectedItem.uid } + multiSelectItems[index] = selectedItem + } + }, + onClearItemSelection = { + multiSelectItems.replaceAll { it.copy(checked = false) } + }, + isRequired = false, + legendData = null, + supportingTextData = null, + ) + } } } diff --git a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/ToggleableInputsSreen.kt b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/ToggleableInputsSreen.kt index 32ac73fe8..56f26332c 100644 --- a/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/ToggleableInputsSreen.kt +++ b/common/src/commonMain/kotlin/org/hisp/dhis/common/screens/toggleableInputs/ToggleableInputsSreen.kt @@ -5,13 +5,12 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.graphics.ImageBitmap import org.hisp.dhis.common.screens.NoComponentSelectedScreen +import org.hisp.dhis.common.screens.components.GroupComponentDropDown import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem -import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown -import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @Composable fun ToggleableInputsScreen(imageBitmapLoader: (() -> ImageBitmap)?) { - val currentScreen = remember { mutableStateOf(ToggleableInputs.INPUT_RADIO_BUTTON) } + val currentScreen = remember { mutableStateOf(ToggleableInputs.NO_COMPONENT_SELECTED) } val screenDropdownItemList = mutableListOf() ToggleableInputs.entries.forEach { @@ -19,13 +18,11 @@ fun ToggleableInputsScreen(imageBitmapLoader: (() -> ImageBitmap)?) { screenDropdownItemList.add(DropdownItem(it.label)) } } - InputDropDown( - "Display", + GroupComponentDropDown( dropdownItems = screenDropdownItemList.toList(), onItemSelected = { currentScreen.value = getCurrentScreen(it.label) }, onResetButtonClicked = { currentScreen.value = ToggleableInputs.NO_COMPONENT_SELECTED }, selectedItem = DropdownItem(currentScreen.value.label), - state = InputShellState.UNFOCUSED, ) when (currentScreen.value) { ToggleableInputs.INPUT_RADIO_BUTTON -> InputRadioButtonScreen() @@ -36,21 +33,22 @@ fun ToggleableInputsScreen(imageBitmapLoader: (() -> ImageBitmap)?) { ToggleableInputs.INPUT_YES_ONLY_CHECKBOX -> InputYesOnlyCheckBoxScreen() ToggleableInputs.INPUT_YES_NO_FIELD -> InputYesNoFieldScreen() ToggleableInputs.INPUT_DROPDOWN -> InputDropDownScreen() + ToggleableInputs.MULTI_SELECT -> MultiSelectInputScreen() ToggleableInputs.NO_COMPONENT_SELECTED -> NoComponentSelectedScreen() } } enum class ToggleableInputs(val label: String) { - INPUT_RADIO_BUTTON("Input Radio Button"), - INPUT_MATRIX("Input Matrix"), - INPUT_SEQUENTIAL("Input Sequential"), - INPUT_CHECK_BOX("Input Check Box"), - INPUT_YES_ONLY_SWITCH("Input yes only switch"), - INPUT_YES_ONLY_CHECKBOX("Input yes only checkbox"), - INPUT_YES_NO_FIELD("Input Yes/No field"), - INPUT_DROPDOWN("Input Dropdown"), - MULTI_SELECT("Multi Select Input"), + INPUT_RADIO_BUTTON("Input Radio Button component"), + INPUT_MATRIX("Input Matrix component"), + INPUT_SEQUENTIAL("Input Sequential component"), + INPUT_CHECK_BOX("Input Check Box component"), + INPUT_YES_ONLY_SWITCH("Input yes only switch component"), + INPUT_YES_ONLY_CHECKBOX("Input yes only checkbox component"), + INPUT_YES_NO_FIELD("Input Yes/No field component"), + INPUT_DROPDOWN("Input Dropdown component"), + MULTI_SELECT("Multi Select Input component"), NO_COMPONENT_SELECTED("No component selected"), } diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/AssistChipSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/AssistChipSnapshotTest.kt index bf20cd348..c41bf2b3d 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/AssistChipSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/AssistChipSnapshotTest.kt @@ -1,6 +1,5 @@ package org.hisp.dhis.mobile.ui.designsystem -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search @@ -8,8 +7,7 @@ import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.Icon import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.AssistChip -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.junit.Rule import org.junit.Test @@ -20,7 +18,7 @@ class AssistChipSnapshotTest { @Test fun launchAssistChip() { paparazzi.snapshot { - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { AssistChip( label = "Label", icon = { diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/ButtonSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/ButtonSnapshotTest.kt index 81a069e75..c8a8f4f61 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/ButtonSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/ButtonSnapshotTest.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle import org.hisp.dhis.mobile.ui.designsystem.component.ColorStyle -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.RowComponentContainer import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.Title @@ -25,7 +25,7 @@ class ButtonSnapshotTest { @Test fun launchButtonSnapshot() { paparazzi.snapshot { - ColumnComponentContainer() { + ColumnScreenContainer { Title("Buttons") SubTitle("Filled") RowComponentContainer() { diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/CardDetailSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/CardDetailSnapshotTest.kt index 18821d8f6..770cb3c7d 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/CardDetailSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/CardDetailSnapshotTest.kt @@ -1,20 +1,17 @@ package org.hisp.dhis.mobile.ui.designsystem -import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.PhoneEnabled import androidx.compose.material.icons.outlined.Sync import androidx.compose.material3.Icon -import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import org.hisp.dhis.mobile.ui.designsystem.component.AdditionalInfoItem import org.hisp.dhis.mobile.ui.designsystem.component.AdditionalInfoItemColor import org.hisp.dhis.mobile.ui.designsystem.component.CardDetail -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InfoBar import org.hisp.dhis.mobile.ui.designsystem.component.InfoBarData -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.hisp.dhis.mobile.ui.designsystem.theme.TextColor import org.junit.Rule @@ -68,7 +65,7 @@ class CardDetailSnapshotTest { @Test fun launchCardDetail() { paparazzi.snapshot { - ColumnComponentContainer(title = "Card Detail and Info Bar", modifier = Modifier.padding(horizontal = Spacing.Spacing16)) { + ColumnScreenContainer(title = "Card Detail and Info Bar") { InfoBar( InfoBarData( text = "Not Synced", diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/FABSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/FABSnapshotTest.kt index b24a86319..91548baa2 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/FABSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/FABSnapshotTest.kt @@ -1,15 +1,12 @@ package org.hisp.dhis.mobile.ui.designsystem -import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FileDownload import androidx.compose.material3.Icon -import androidx.compose.ui.Modifier -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.ExtendedFAB import org.hisp.dhis.mobile.ui.designsystem.component.FAB import org.hisp.dhis.mobile.ui.designsystem.component.FABStyle -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.junit.Rule import org.junit.Test @@ -21,7 +18,7 @@ class FABSnapshotTest { @Test fun launchFAB() { paparazzi.snapshot { - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { FAB( style = FABStyle.SURFACE, onClick = {}, diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputAgeSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputAgeSnapshotTest.kt index 5bab30067..0b5d7bf56 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputAgeSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputAgeSnapshotTest.kt @@ -1,16 +1,13 @@ package org.hisp.dhis.mobile.ui.designsystem -import androidx.compose.foundation.layout.padding -import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.AgeInputType -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputAge import org.hisp.dhis.mobile.ui.designsystem.component.InputAgeModel import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.SubTitle import org.hisp.dhis.mobile.ui.designsystem.component.TimeUnitValues -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.junit.Rule import org.junit.Test @@ -22,7 +19,7 @@ class InputAgeSnapshotTest { @Test fun launchInputAgeSnapshot() { paparazzi.snapshot { - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { SubTitle("Input Age Component - Idle") InputAge( InputAgeModel( diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputCheckboxSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputCheckboxSnapshotTest.kt index dd7c29cf4..f25203f08 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputCheckboxSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputCheckboxSnapshotTest.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import org.hisp.dhis.mobile.ui.designsystem.component.CheckBoxData -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputCheckBox import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.Orientation @@ -73,7 +73,7 @@ class InputCheckboxSnapshotTest { focusRequester.requestFocus() } - ColumnComponentContainer("Checkboxes") { + ColumnScreenContainer("Checkboxes") { SubTitle("Vertical") InputCheckBox( modifier = Modifier.focusRequester(focusRequester), diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputChipSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputChipSnapshotTest.kt index bd0bef3e4..e34e24a47 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputChipSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputChipSnapshotTest.kt @@ -2,7 +2,7 @@ package org.hisp.dhis.mobile.ui.designsystem import androidx.compose.foundation.layout.padding import androidx.compose.ui.Modifier -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputChip import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.junit.Rule @@ -16,7 +16,7 @@ class InputChipSnapshotTest { @Test fun launchChip() { paparazzi.snapshot { - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer(modifier = Modifier.padding(Spacing.Spacing10)) { InputChip(label = "Label", selected = false, badge = "3") InputChip(label = "Label", selected = true, badge = "3") } diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputDropDownSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputDropDownSnapshotTest.kt index 7d5038809..e45fb0ee0 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputDropDownSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputDropDownSnapshotTest.kt @@ -10,7 +10,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.DropdownItem import org.hisp.dhis.mobile.ui.designsystem.component.InputDropDown import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState @@ -30,7 +30,7 @@ class InputDropDownSnapshotTest { @Test fun launchInputDropDown() { paparazzi.snapshot { - ColumnComponentContainer { + ColumnScreenContainer { val options = listOf( DropdownItem("Option 1"), DropdownItem("Option 2"), diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputIndicatorSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputIndicatorSnapshotTest.kt index 375918b55..adec610f7 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputIndicatorSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputIndicatorSnapshotTest.kt @@ -1,11 +1,8 @@ package org.hisp.dhis.mobile.ui.designsystem -import androidx.compose.foundation.layout.padding -import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.Indicator -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.junit.Rule import org.junit.Test @@ -17,7 +14,7 @@ class InputIndicatorSnapshotTest { @Test fun launchIndicatorInput() { paparazzi.snapshot { - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { Indicator( title = "Heart Rate", content = "160 bpm", diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputMatrixSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputMatrixSnapshotTest.kt index f4378fc3a..4557bcb4d 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputMatrixSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputMatrixSnapshotTest.kt @@ -2,19 +2,16 @@ package org.hisp.dhis.mobile.ui.designsystem import android.graphics.Bitmap import android.graphics.BitmapFactory -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.platform.LocalContext -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputMatrix import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.internal.ImageCardData -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.junit.Rule import org.junit.Test @@ -82,7 +79,7 @@ class InputMatrixSnapshotTest { ) } - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { InputMatrix( title = "Label", data = inputCardData, diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputRadioButtonSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputRadioButtonSnapshotTest.kt index d79bc1d99..ab70bbadc 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputRadioButtonSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputRadioButtonSnapshotTest.kt @@ -11,7 +11,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import org.hisp.dhis.mobile.ui.designsystem.component.Button -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputRadioButton import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.Orientation @@ -81,7 +81,7 @@ class InputRadioButtonSnapshotTest { } var showSupportingText by remember { mutableStateOf(false) } val focusRequester = remember { FocusRequester() } - ColumnComponentContainer("Radio Buttons") { + ColumnScreenContainer("Radio Buttons") { LaunchedEffect(Unit) { focusRequester.requestFocus() } diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputSequentialSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputSequentialSnapshotTest.kt index 12e58647b..f9f422359 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputSequentialSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/InputSequentialSnapshotTest.kt @@ -2,19 +2,16 @@ package org.hisp.dhis.mobile.ui.designsystem import android.graphics.Bitmap import android.graphics.BitmapFactory -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.platform.LocalContext -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputSequential import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.internal.ImageCardData -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor import org.junit.Rule import org.junit.Test @@ -82,7 +79,7 @@ class InputSequentialSnapshotTest { ) } - ColumnComponentContainer(modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer { InputSequential( title = "Label", data = inputCardData, diff --git a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/LoginSnapshotTest.kt b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/LoginSnapshotTest.kt index cf0020868..775200d2e 100644 --- a/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/LoginSnapshotTest.kt +++ b/designsystem/src/androidUnitTest/kotlin/org/hisp/dhis/mobile/ui/designsystem/LoginSnapshotTest.kt @@ -1,7 +1,6 @@ package org.hisp.dhis.mobile.ui.designsystem import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.Login import androidx.compose.material3.Icon @@ -9,14 +8,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import org.hisp.dhis.mobile.ui.designsystem.component.Button import org.hisp.dhis.mobile.ui.designsystem.component.ButtonStyle -import org.hisp.dhis.mobile.ui.designsystem.component.ColumnComponentContainer +import org.hisp.dhis.mobile.ui.designsystem.component.ColumnScreenContainer import org.hisp.dhis.mobile.ui.designsystem.component.InputPassword import org.hisp.dhis.mobile.ui.designsystem.component.InputQRCode import org.hisp.dhis.mobile.ui.designsystem.component.InputShellState import org.hisp.dhis.mobile.ui.designsystem.component.InputUser import org.hisp.dhis.mobile.ui.designsystem.component.model.InputPasswordModel import org.hisp.dhis.mobile.ui.designsystem.component.model.InputUserModel -import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing import org.junit.Rule import org.junit.Test @@ -28,7 +26,7 @@ class LoginSnapshotTest { @Test fun launchLoginScreen() { paparazzi.snapshot { - ColumnComponentContainer(title = "Login", modifier = Modifier.padding(Spacing.Spacing10)) { + ColumnScreenContainer(title = "Login") { InputQRCode( "Server URL", inputTextFieldValue = TextFieldValue("https://play.dhis2.org/40"), @@ -61,12 +59,10 @@ class LoginSnapshotTest { Icon( imageVector = Icons.AutoMirrored.Outlined.Login, contentDescription = "Login button", - ) }, modifier = Modifier.fillMaxWidth(), enabled = true, - ) } } diff --git a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/Container.kt b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/Container.kt index 54f627655..a8421ab6d 100644 --- a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/Container.kt +++ b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/Container.kt @@ -1,41 +1,82 @@ package org.hisp.dhis.mobile.ui.designsystem.component +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowColumn import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp +import org.hisp.dhis.mobile.ui.designsystem.theme.Shape import org.hisp.dhis.mobile.ui.designsystem.theme.Spacing /** - * DHIS2 ColumnComponentContainer wraps Material 3 [Column] - * has a default spacing between items of 10 dp + * DHIS2 ColumnScreenContainer wraps Material 3 [Column] + * has a default spacing between items of 16 dp + * with large top corner radius, white background and * vertical scroll enabled * @param title: is the value of the text to be shown for the row. * @param content: controls the content to be shown. * @param modifier: optional modifier. + * @param verticalArrangement: optional vertical alignment. + * @param horizontalAlignment: optional horizontal alignment. */ @Composable -fun ColumnComponentContainer( +fun ColumnScreenContainer( title: String? = null, modifier: Modifier = Modifier, + verticalArrangement: Arrangement.Vertical = Arrangement.spacedBy(Spacing.Spacing16), + horizontalAlignment: Alignment.Horizontal = Alignment.Start, content: @Composable (() -> Unit), ) { Column( - verticalArrangement = Arrangement.spacedBy(Spacing.Spacing16), - modifier = modifier.verticalScroll(rememberScrollState()), + verticalArrangement = verticalArrangement, + horizontalAlignment = horizontalAlignment, + modifier = modifier + .fillMaxSize().background(Color.White, Shape.LargeTop) + .padding(horizontal = Spacing.Spacing16) + .verticalScroll(rememberScrollState()), ) { title?.let { - Title(title) + Title(title, modifier = Modifier.padding(top = Spacing.Spacing16)) + } + content() + Spacer(modifier = Modifier.padding(bottom = Spacing.Spacing16)) + } +} + +/** + * DHIS2 ColumnComponentContainer wraps Material 3 [Column] + * has a default spacing between items of 16 dp + * @param subTitle: is the value of the text to be shown for the component. + * @param content: controls the content to be shown. + * @param modifier: optional modifier. + */ +@Composable +fun ColumnComponentContainer( + subTitle: String? = null, + modifier: Modifier = Modifier, + content: @Composable (() -> Unit), +) { + Column( + verticalArrangement = Arrangement.spacedBy(Spacing.Spacing16), + horizontalAlignment = Alignment.Start, + modifier = modifier.padding(bottom = Spacing.Spacing32), + ) { + subTitle?.let { + SubTitle(subTitle) } content() } diff --git a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputDropDown.kt b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputDropDown.kt index b11a7fe4b..089621295 100644 --- a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputDropDown.kt +++ b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputDropDown.kt @@ -86,11 +86,12 @@ fun InputDropDown( onResetButtonClicked: () -> Unit, onItemSelected: (DropdownItem) -> Unit, showSearchBar: Boolean = true, + expanded: Boolean = false, noResultsFoundString: String = provideStringResource("no_results_found"), searchToFindMoreString: String = provideStringResource("search_to_see_more"), ) { val focusRequester = remember { FocusRequester() } - var showDropdown by remember { mutableStateOf(false) } + var showDropdown by remember { mutableStateOf(expanded) } val inputField: @Composable (modifier: Modifier) -> Unit = { inputModifier -> DropdownInputField( @@ -187,13 +188,13 @@ fun InputDropDown( ExposedDropdownMenuBox( expanded = showDropdown, onExpandedChange = { }, - modifier = Modifier + modifier = modifier .background( color = SurfaceColor.SurfaceBright, shape = RoundedCornerShape(Spacing8), ), ) { - inputField(modifier.menuAnchor()) + inputField(Modifier.menuAnchor()) MaterialTheme( shapes = Shapes(extraSmall = RoundedCornerShape(Spacing8)), diff --git a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputStyle.kt b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputStyle.kt index 1734e7df2..35fd8f4e5 100644 --- a/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputStyle.kt +++ b/designsystem/src/commonMain/kotlin/org/hisp/dhis/mobile/ui/designsystem/component/InputStyle.kt @@ -17,7 +17,7 @@ import org.hisp.dhis.mobile.ui.designsystem.theme.SurfaceColor */ sealed class InputStyle( val startIndent: Dp, - val backGroundColor: Color, + var backGroundColor: Color, val disabledBackGroundColor: Color, val unfocusedIndicatorColor: Color?, val disabledIndicatorColor: Color?, diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_AssistChipSnapshotTest_launchAssistChip.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_AssistChipSnapshotTest_launchAssistChip.png index 183adbfdbfb6947a142f7efc5143309ff0b17c5a..cc3a9b71aefc6b022f0bac3f2417274df1f6d118 100644 GIT binary patch literal 19766 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 literal 130 zcmWN?NfN>!5CFhCuiyiQby)J783u(am6VVie7*LiulkvNyk%SKn7dMszHZO^-2S(d zwlZF79<`{;h|yWjh8DseeRQE_KplcZNI|DkBcQQ?G)3bov$g1$*a8w#LeC}{4bJ)E NSe(x$Al_yNl6Cn5j< diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_ButtonSnapshotTest_launchButtonSnapshot.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_ButtonSnapshotTest_launchButtonSnapshot.png index 98e37c2ff16c0d0768e67de840a05478eea4a547..f1add60ab84955dee5af34e3ebd39e03b6bd2360 100644 GIT binary patch literal 38931 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 G_s*YL(d8Hb literal 130 zcmWN?%MpSw5CG77s-OW$*kpfn10hIe)G%)3VD|pEi4cul@GeZTx?H z)-kuIx3gq_O|I2#uwwzFSwkqil1RZR$0S<{$gogSO;|(|>?{O3Q3MtR4J#`|K&DBu MqO^ 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�kYc509Fz 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 Nh+_6HOE5bH6hHfcCj|fi diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_FABSnapshotTest_launchFAB.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_FABSnapshotTest_launchFAB.png index 1dd0c841f9e3ebeaa3a682d852b29b433f21fc3b..9625de61a48ff0cab2e1411c2f78619da0389778 100644 GIT binary patch literal 24643 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 oxoSWRfR*{}#cv3k~fpLTBfQUCw| literal 130 zcmWN?OA^8$3;@u5Pr(H&14;PwHV}d^qtX%V!qe;9yi4A*kC$p|o%7K8-q-C>=l;Ka z^3LO_=P9f&vyEQVY{`;4EHMY00*SZ49)XIp&LpNN(S>SaVKy}skcdP8(b diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputAgeSnapshotTest_launchInputAgeSnapshot.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputAgeSnapshotTest_launchInputAgeSnapshot.png index 3c302d56ba151ec2f220bb7a0f45139e3b9a98f9..e4198b50842681394c6e137ee48f33f7392a600a 100644 GIT binary patch literal 68365 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 Iy{F;-54NZSrvLx| literal 130 zcmWN^%MHUI3;@tOQ?Nio%*Q~s31AnbwnT;G(CM4g)4S+9TK~v8=P@>=o^3u}JeJ#f zrX}~c8V6-{f#|KsQFrZdD{R~vB2WwzH5!xl$fP47n8eJ*T0|F$BM*>D4&LfjQw9t9 Nz7wPUNSf%;i$CbdCxQR~ diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputChipSnapshotTest_launchChip.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputChipSnapshotTest_launchChip.png index 937475d8b47737882fdf28b794c817e2d47ae0b8..1e62251e432de290abb0ac929c35e78f474720cd 100644 GIT binary patch literal 11470 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 diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputDropDownSnapshotTest_launchInputDropDown.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputDropDownSnapshotTest_launchInputDropDown.png index 9d120daf73d9871666352843761c911eed6c462d..d05d6dbd34f805c23371cc0d1fc8f4cb352649b8 100644 GIT binary patch literal 42317 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 literal 130 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 E1GO1G1poj5 literal 130 zcmWN?NfN>!5CFh?Ucm0hnSGmQX07BgzK7jvCRaYBOOX Nl{OyVDj+Hc+YidmCky}p diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputMatrixSnapshotTest_launchMatrix.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputMatrixSnapshotTest_launchMatrix.png index b948c9a297abce5b11a23023d8fd3cdfc83bc0eb..355051ececc7bb3400db3f78dd7e3b48136d9f03 100644 GIT binary patch literal 48665 zcmd42WmHsq_%@7*2#A8x-JOFpsN?`chqTfI0@4i%0wUcolyrl1Gb%_3L(I@MAk9d3 zKbv!o=ltLGuIJOcp7lPTSZg!;mv>zEb=^BuO+_C6KKXqtEG&Gmf{X?h)(r#})~(fh zcY!A@&3TnrSnsgFGS9UaePZn`AwX8FXoZu7q z@q0XyFE}|RC56w@@?#3wq?ev0Wb3U>tqwEPx*jdQQu2!(#aHw?AlZmG+kd| ze)0qV?aQP(?!np490}z~$k%**Q!x%0uqV`!9TFWQY=`U%=e?14J^x~dxg6|ks<1@v zS}pMELY#nC+Ez*dZnk96k5`8La0M=>3V?V=hD~sFz#~ z2K-K0MOh~gC)`pWcs9!aXNF^Gn4F!a(w;?B=iZZl-rWfSMYJK{$2m~qf8Gq2%Eg)M zg_|F?DRaa#xAWq~5iRgQzbEGR`<+m5g z?zgau;=s!OQfl28aNNmhsh^{l%j5?Zo8_p?H-AFv#?s7D8SNS^a+-}r%T~S!a2=I! z`HJ)IFZ@5#z;kg}AvDt0r*zwr6{0z)8_GP*MB&!`UC>~u;|GTNA}JVDf%d1zRyBz~ zDXH&XZk1$A+G--SEK!~skAYZNW*T%`HPmrsGj~IDW{-;OG3WU zX>UY`>H+5ZER|mcBYk4pt+>H!lUx=T{nCWQsjTyk;3|&`2d~MUy)hSHSZU_|n6m+T zCglVXx65KJ`(gFY0lnhhxmF|Wh!`5tg9HwDnl-5ImSp1ThF8zWBHVrSe`6O6?KrV8 zD)$n8+n|l6S`3b@Duz05g{w?+BzB)$Cv9>)9jv_7v_kqbNM6ib;!H zRNW5{-r-4`tS;G8X!+$?OsxF^jsGZv%~tRS40N??+W%Kt>5SvEE6Crr6QBrdILNU$ zdS54gFCspyeiJh`Br|2!?JVV8{Z(sBM7ZX) zjV0Hsl2-pBDp*#E31+i{6-X7Lx;8do1m_S)Do3G6%BISDA;w>jW}vbdv8Z+zn&r=q z0v5yjLHfC!frQ-CEfq<)DF*1S>p(JnJLuX;Njqt>{{Gwbmt*5Cm|Y(kY48r;UtZmQ zO!`*{ciExnPZT=in2~*kl;9 zBe=-RKm4$&qOJec$xDJ#g3;cla=g8!fIa^HfpHqgwz|!d3Wn!A2-bw-MJ+Jco7?|< z9v<=hqZAm@4rYLu8lysQ_I}&_V)(*|Uf5)zC1Ovge__;DxS6m88LpamyS6e@GoJC? z*I8Jpc`%3Fl;lQ;42PcSr8v6+?fX69{uSX0gCnRv3u|5|k@Tdq@$T9&h=jL$f4q0X$F*eXa&)Nk||6W z^2p-4VfiVHuH}6_h%YL)9IHB0R5U(02twi+m@xP6dXwG@zo2@{Ar^xER?M@ zn6!iO;x&8y;`dZ#pwsR1d2$7_Co1*|)0$6FZCKP_sBfj<=aDha+4>QG zzUA)&*2=zeTYMIbbm`tR?-|N5tA2dYh!oDhr3QQO0^0NpZesriCKxcKelKq=dGRGr zRgWzAQ=Q+h&mWL34;4{& z6&89fDbIMCb#d?;FRv&IL61M)P@y;odq&7uLqTIMT|PVX?d!%DU+`XCx#pscz;q-=Bwux3nS)JXXj*p4oy*j_48jw7Bhovd9q{pllv|H z-2g_ZR7$q3sHkW-hKAk0z~*y$T}RIa>)HS2MHyb&!W9R{CV!&ca|)(DRc6_r4GcI< zIAi*==>PYgE~A-k;uaFHFlC=&?57sYmwqrd7R!WMj)&wsS;KzBz2_E(>=hbirV?3_wbQyMA? zxGa4M(x)(2$4oE$3@jyg>8O_MBPya%%oCB=KlRJJZ~k_QC%gKnu}Y$LQtZK%Je6W} zzrn&j7YmJQ_~1qA=*j0`8>4*GpX)njN35RF_p&#cA7P|ErKOqkEGVfNq+iC^N)lbM zJ7I*p$^3(n!+(d4?qZNTT5%|<GrJR;jlr{deJt(uw} z7UyLDW1EIP{Ri&?J}J7%#c|kV9$)py7xAwsXYbFFRiqlI=XXrArr*cS$=iXwT+1;| zbrx0cmv9uEAV)N=V*l8)xxx(cint71zPiow=bm=7Vcn%X$RMG0c&-%jz>4@|JuP}) zYUwML#Y1kMrE}8%F}V!aHXPq|MpQ#%gqQBy6O!1))j+LAqO~&t3kTU;Hj(_F^h~co z6U!;YMYdl^c|S;M+Is#wkt01~rd8ZFRIK?EaaOINTw~=(b)D!A+DJ;!l51t)Umw#; zVCFxN$v!`tFOR9bXMV)f{(ZlUiD^Yv2@_FCc8NE>6H=t%3-;wMbYn27zn5C>z@z!$pTSM+-d+>ECt~sWKpFsodXQ9Z=ro>x zxqMsQ=UYq_MVttZ0(_a{!St&=vKt6~|iAI8L?EnI|tMvN~m zFuBYau7Br;=R)yeTDnHciT>2Yn{gmMucsx5FJwRbo1NxfKt(%3K`|j+GR*J|wy%$_ zD!TJ6>4lzhJTi7oXeUsX66SQW{@9%>B;K1-=VkNBclJp8gsV)}(ubLU=c>?O$`vfi zagp(7E?GA)k;nn7c9h?NEX+hDqNa7Z;*YrtCota>iM+H@eMHVLBehgRU?>GD>phQX zosR6MS3i_!*Ti;U?`fM<%1jj~K4_#SP`C zl?VN|8q>4$PW|PAre?SPJri?Tn5d#xRAks2TdO1{e)zj$I{WJ0L4{Q&UCqreS6w66 zHojCiA{Z|hboW(hqAT+9wD;dr0VdpuGieA~JNo`GC4r=$uBz{!JzPuyOsX#AV#EfyP+AYVV$98gQ7v}GH1Poq~z+c5W$mO12yi?OF zH?Hq*r};N(B!Px*hkX;(fwrx$z*!MvH~-{2OO$K5iPSfqw7D%m9!4AUGyE}>pH11@ zg!WtLvb}Bj^Lh?!Zs0=CnIL%MdOH1@$sXI^(j^Y7mRl5I>h4BS7?di#hTudaTGV@) z>klM~F+z51y-GA7EwgAijV-ww>Zg1j(X}*>HX&#*pR_Ole4j?@)-uyO_YYr?uW(zz=UJ+}S`1N*JF zGqC{$S1(PZ6Scnxon&{Cc}*CP0>$t@DC&1CGj(W)H|XlMTJm(L54V-H#=(}wtcNPYo7l?3*hd1<%CNtar8BKJAp`#dtx%7lg!j!+fx4cV+4YvWi~0b ziOn#(2v`C9590ad0L^xAwlhka9v${OQT3m{?8muUCZBV*3%qc>EjTuG#buOiT|6`U z&6qpqKYL_?+(wj>KC#6+KWVo<7AkGoHt^`77$m)|iNufxAaQxA%1_BN8D z2)5L{*Pkl9MfEV{vQp_oiA~F*t_F3J-109+FAnxFN}8izW2&V~{P+I7{&b`d>4o8P zhD!XWu3PwKarDBEH^YQg^mALrlCgKXp zaXje@@^ z_I6gLY)|i;rfD=W&Ng#3ENHQPxT&+?*r5Pnrv~$z^DM?(%HciygkKrP#=>-1Y5P^x z^n?D^V+;!&&tJH9KLS*nqUPK#{m{vDTQL8`!30qYym))+-c5*7f8)2)on{}Vzg(U% z`7;Qo@-O@d4!}{2dk6pnAQJpv`1m6cG(SK8=SK6`#^NjHp{Z;usm#Y>JYKkb+Hvu(D%Yqil+xhc`ntR&nHf81sgzTECVl=0$YCMLdIsV=P+>p9pitsXpkc5UU`uB`6jYY zvn9Lcyt3ecDO2x@OTuiTko`<$+rEA`7xDwCkR6&ymSZ%&zKxaDgqV$mW{HDtYl)3s z;uJroyU;pnci{W?rQKSJ*tE3Yd^0$YV${8;L&0Ebl-LpVXSgQebs6*m+D4xCZkbz; z&V5U&2H2PyOe7>wUbR~uO`HUa(C-NqfcLg{(K%uIB~of%6%kv7sYtl=Mt@t>+grL2 zm#wZL;4!FvKCrMJVL**yLwpTExmwCP^ zK{B5M!>w~WP984AfoElz#Lv|=u-65DAg0;bZci6XgbA>FHyK{PMF6CIYa>(B%J$LBlHLWz7fXl%+-^-*W&Jg&H#IGL+OI|Y)=Ry;BT_|`9Na&SG|`Zm zyZDgpy=?G_$mq%|8I$;#oEKVkd}&fgKuU^smFo(4&!_5uvHT(YU|X-M$!Cvm#TeT} zGRcwCk{6u@6h*W^i~_AFCrirPoDXXJ)T-cdO|6XsE=kce+iI^L7GaR**+uR2dy&jF zXj=2yPq`vgO_{M} z>+*&LsxI9oL^Z}WwZ3F+BiCi5Y1emQwCc^lDINi-K+*{K=APu+#Rl)m9)Xoy_0)c+ z<8d&Vh$GCn-pOW0bpKc{0sh*n9`_BdPq58Fs?wUxL9R~RQ-1#*#ab>xiJ$W})Km1F z;@{0qGj7T6i;@c7@p0m`?Km!4uWd&**paZ6NIFCWb6FgIx6qF-i~y;lDqGkOU_HlB zXGU(xZ)R;|?*sk%vn{;*EJ}o;iEYx|ev8nWkd(ZNV{Qv!=u%y~$o4@5YgFnmtj#)n zwEtNh8v|M(A~bLFDmx6@DqAKfGe?Gd)>(EMoe_W++>Fe}+N6TC&Fcm8ne^1E74y~RjJ=PPwjvums{6gAVO zyB9e#(&jwv>tod5qs>zhFKW*lwZ86QKUNmyO(O`DF7sw<605pJ+ZO~HS)&B}+hdi* z%DDjj##iacZ#HY%%6(jJTjX!mZ<1YL@XZfdeWfM{m-D)^A8kwBgx7w;?b>NVOzm6A ziufeHHe>EV4e~}gVf6wI6Kc$z7(Hrx9ywTWWgc(7W0kh&&Gp4aLu zaZ)1c_=Ak^oS#umiB>}G3%IQ)S&*w3!opnv{UxHmyOz}h! zj(43XTI)rn^DE^e)H6%m7+Q_3GdK*}nlhwD%lyI~cu`!5+JEZuX?;&bsN%sI6*t&- zqU5@jukg$uYOF2Zf$8(ta{**41U_TFeq?lEBkuS^Z3S(%c)aaD%5K;U z-RadqeGf5TDGKWYoN9e}C1U->I39PuqxizF2WJG_Hzj$r#SZ`-js42rDC4=`EyTnQmUnIG*C5FmS9P5Jb^eHY&GY#?=iW2Vu=TJB zCXO-akg1X54QPUoO5k4xwj4i!JN!IOwQh5IAtRUyo5ekCziw-CB_lHM2{x6RD5hV~ zd|$>>lgg*T=IO`C&>?JAbDMaf+!LepPHHhp6>?J68!1`nE?N+$VJ7Qj;jJa@7G+q& z!>?d8R-gbaG3Cd*Rs$x(7+%X=e>PFgm7XmM2Mx<&Y56_IJT^^M`w+$@n6CTYjxvj;5gMlX|1m4l()AaV%uVnYsag<||*OdIh4cXVOeBC@EywhX+}XZH4SD z8X(NdsX6si>D~m>sBIj&XCLQ>C!9Ce3TKiE4GoHg-po6Sa~n763@rRSNZo{fjb`Sy z#{UAJ55Uc_K?FwWIE>Rf6mEI_Xo}c`Vv&p-mk+I*zjMA9nVQ3b;)%@3&SCOjV?U)I z9IvpSZsW)#<}AydMdcJx3nJay*mG?w?_%oTjGav)M=&#}uT>)y`@6cZNXIvtKIKI= z5`9xQ&e-x7ezjwD2}hpYXz%hUZI4zbs*UC`+->pbg952LmI~SNT%*X%%s0Vm#)p(J zibw*chld9xuT=_MO@3))_D#F$$#C+lhS*w8bit{EG)w{;Z;v&kWIJG~7j69ZMel{G=dBK7rX&kmF8Zl{I%QzZcTQmtNHSGS(X=1bvDb zMARC;&cFnPh2BRCA>$nJsa=DV?J!GS_vV41<6-sPGeOEZ?afy~vwwXi}J_tcha{q2HXsE;PZWnL= zYvBUY0Lp!gu?y(?m zN2BVQ;F>JBy8id?UVUzSq?;Yh2Fp`ph!7AIBL{jBtc^L!Rq&QA*|4B19NKyro@*<7 zdwYZGUV5XKst!mQDYm-yoQDGkcODiyA_caY5e|wv8faPEid$ZyN7RM36v4OgpxMMR zWKMA){6T;Gn5?@Wwx|TY;^mz%_z>bfF`-#&&d8;X!A5Tb?Xwc(Tc+2PVWZ!k`G$lKpM9>sG~zIM z%w57m*uq6a;^1ZCU3ng!8+!2=6U3}<2A4sQOqCQB<0aQKbdtZKmX?ETC(HjGW}=y4 zk%RC-|6@{&5_uZ!USi=Q^;${{XoogPNNS)W^~n(WHU4RJIl8H=cbO5IZG!E@m&y4x zWsl^5HUNm|NMD*&j>^$NrvQ*+CQYIRRVW4mTg~|q+BqeDL?v3x^LUv{Z$4ugc$g$B zRVy@z4%(F?dYZTP-3ux7QI|wi_`S4bmrCBzfmhse#FV?s9yj-5X%{iFP2MCbL=Cuw zmldPwt?r?7q(5X68%0PM)P|JN`AQDHbfxvC2`vMv(KFQP9<93 zx2cp?3?a7pp--(Rz$Oh84CZ{>_k7dsMjD5jsA87#C++{v;?c|*8Ud4ZcXM8T3#CNl zp-1d~WhBOcGR5&nZoPX;=>J3n3?t17D{E9S!wi&ZMe$x%OD^8PXc`&y<-mt& z8KA#B?BEj0m5X&(gGl^wHq&&!)`ht zJFs~7v8k%}vrIibr0hj_KZA^XFA81f7ai;a1d|(I70rgc4NJHom(-M-B3Vp*}*3trmFA;JI>xunnWyg&mpzP=7jLV`FV3g4VwDWnmzQ!1|8qqzKdzK z*8cX6o@04x#fcp#h=JB8plTR{M2vo}dktEfryZ1T)8_iMTZ{41Vu6KysU~69ommhm z2aa!!T70;L_ZgPcw*<-ulb!2dpJxVCwg87%==oYr@ukcM`^^_9QdqvD?3=gizdcV@ zrwE&PurZNY>kT1~rtWSDp-VhZkM>UIY^Q3Y5<3IsqYfZTerugnxJ%w=K9`(gOAD^ zni^1YCeZ!T^p%Td%STUPtV5mXyPJI6Wih_Neh|JrikG1DyTrF~`-Ues2?b80Dl>lt z+&RNLgj^Jg`Y9N*+eQl}!&pPvuQn+% z`TQ&GBdJ7Q!>G~krUu?V54or+f|?8IJAQHS)A$@e%fmZh;J&qHU{2c|mV~+!>Wmk8 zBfPE4<6iuawuq^u-D0yx7^_zb)mjNnr^b*RPFQti1cIcwveL19Z9T1Ck4k_w40c}A zhPJkL&fl;!2!aKlFOA&Vpl_uIGGXT=JhWCb?S zqXpR>am>R0YsHr;Lqb8mcX~Ul+NC-B0E(41yf(ECETSFvf(y6n_954AAyPH7vYsqG z;vBik4Yg`e(}OP#zn(_XKS4(E^i^~cl)XWGu@?Lu#J>EV8R^YKT{ABO!>W(UGC^J# zmH1KyJVoo=HSGFs-l{TA^ENyy;XcWI_pJgUfm?=#C&`r(P25&PPX`%`Gdh$`zhl*{1a$4eEChNd59Wl=2xfq|4qFXkCPl}O-u z@CH(m?tPi9d$+clTK!b;wP?9bYs6{I%^lO(1{er%IDOht8r|%W$n?S9Dr)7s4W}{? z!ps}GjiUxH@V?*=lq6 zJs$vlqOiJd-1dC7q3OX+v}nD-1GNon5-Z3=nxtu22_J9g?^w_e-x3Ypp z(oGRP2Ia&)d(uY4vAHnWdl`H|#-({&UfB}9N!95W6b2RVzTI_eQx;(z&&mB^M|3%q zI4tRc{ZXR(&W~M3$(^UMGcyIA>!p|B;}w45z=am~=arujVg2eXs z-n|)62&-=JN4?X%vS&+sf;Iv5-$(z za|fOo)&|B~?A`c_L5h79fMo1=aIHo#<1n*AUi|(){5Td+CU|b#Uav@wo5sxpf28_5 zzZ{=b#3tA(wGva6@;urt0Cr${%|-zT&QIKJH5q(e$w#e)M5V{`gvF!a1Ek$^?x*Zy zcI*aBxd$Z`V{j1psr^xp$N zEC5zfRAE>T#?1jYmm`mo9yy(?yGHS|73YgMb{gunn3i3NEv^ZiSPb8W&Q>-jT2?=p zvDoh3*qLTR3$S?M2?{UmsE-`RH#zo%Sll9$iLO;w` zW&<~!0FqFnSkZ`!`|Z^{1GH>bH_up;3-NOuts`|9JLSIBj9!S4z<$6Xk`N2jX$tji zfq9No+%^-kd6qdkO`*eBCPN_reHdU-0*x7Qm{2FL$IxezaC2<=Xuo70NMiwNu;?v{ z`ceAxx<&WhQIb0r0K2e;tJ%@{1LJzBfWYky5QejB7`N8v6HAeTOw&NtBkGdf2Fd`- zP{`C`xu6qu5}o$v=F=3Mfzohybmflu^sru2Ck}Pc2Zhj|wY8;cO1E^N@jENo9Q}~(P;ECNzl)qJDOJ0sDTVPtAoFu0<6f!9MX0(36qtx-#pFgB!J-e7UXuF{2A8x~GB0Or5f^J}$Aq zDnWAVqOOh(FJ*^`qJqaI`>irR8f;2ms>~85pVY08=g%R6B1DrT;+p+_Kd#? zbU+dJkogc_GNCrs;`M-(8DMEfAQez3lzQo$4ua*GrRv=C)3qtHYH9$k(7fq;AUxS(obxdfn6a|3xpTBegph1c}H#gVjy(!~H z!5u~LTCwZQMc`#Lu)*Axq=Jtw8)Dtk9;DH6R7e@fo{=_+vOG6@V4h2^nk$bC;IluB z0}%`m@mIKwxuq^a&j<;LB=XIo@nBCQCYMX{JUh&qgjCWc3VO-w%Sa8|+!zdUalk7a zMta49*4*Hp9%>6doAL7$d}!UqXqVQf+c*EaR)Cx7P0b`3{QiA|Y)-wKXvPOt;2|68 z&Bw(6%@E&fCZ3)C!NJJ2(dZ2-5qgm!p5P8==d4Yw8Okw=i_=`}YYe+)Jtd;};;fo_ zPo-h6e#fVr?p*+!*4f@XSyKbL`fLE+aAt3|@GCdISWmZnO6C_4A*0}kpoHv*Tvzb{ z?5S0jcLt-?e~$d2LG*|Wuvhg#UuUV!A(_43krLR`OZ>5x=34P>Nrd(9ee@dA+R_&+ zlwl&OJh;9Eq&^?KLEifm^bS6WCVsz1&@+bXJkS?jt=JdEfNht)B4aZyN^G+dsA!@U zc04U@rc4ZTYB;!45tYUZQSFi@`KfbFY1g|aF^S;*Ykth{cq7xr8RD$^lhla{N+ws> zjfg;j+L^1c)a5P6*k}PxOxm4)@(C-1Q28Hw`haBocKiR&$7meST`ltZHO{@H@|w0qf%!)< z$R=l=6k)US1EyW_e>Jr=F+jwLj@nI#254eElid_RUSe_xRon#_@lu|cF|2Fn^jFnD1 zF(!KcpZYRHnbEY~1k^ElxJm1j;$AOe<20u$wkG`*u8fzxJwGYL0bD=o&}er%X5~~? zP8MUKoZhNdA(d!%cdx6-NB?t;54x~6qpPgBoPXd&`#$<%b;{~0=|q!r1>nZ*5*wdR zuj-7v4-UV>Q7c@dz04JVZd@e~XUEr|xXNc6!dLXNImSmXH!b!Vn_i7+nS7&F);#iy zHjC$3Sb#>U1{a$~WqwQECA!8}D7Aq$`)=_YKx1vPP<^iP<&9vYlY|j5 z)_2zOWh+ja+B$+=;<(plEZ*mdOqX!$6Y`T5HL{apYfmMY|Vr*$;2YuGZYjW2y3 zz+&$%uiVKsPY~76D#M7GJV{KHIz*b@6r`w)^~vMF9Go)xgW0s&n%)2&AVHu|rd;b) zeo#E3z;m=0U{P}qf4#_Jkw;UOXQkaC4CBdZQmqcJ12D?Tk!oA5U6+z>MQ?~rMtc{; zP4&!m`f;saP<%`C&r}=V?KX<~7L$gDs(-vg239z~#Ad9nbfXsXkb_H}6z$%u#yjiG;HqX>ljrG5!r2p{uPopnJ69+SuHCH1M# zfEEWJokW4+#E7uy;bARQvx40JBj%UO#F_{Rz@7`3OKP8`RljY-Y&9R%$RJp}whhxi z`cd<1j2&;zs8(z|ht-nTSEe81#upXazANI9`81|pU8Ye{B(K-~rf)IDX}3@0LI`GK z;JTSN#-;+E!7^DI9Ew|X)Xih z;y(D|xTu-8_I?6PTKKwoAUop{u;3pZTH9N4@mCh#vS37UL zZ%TO#sa&?O8*h>}p-t{R(}b;JGxh%yNdWPC)E=pm`PJkOOi#UiSBL1D$t_=t$N;rV za7jZ)Ym|rt`*2Vziu1dIi+~F3N=xgEW|8@{Y&=XmgkI+Y^h=Zl38z6BQ=7NHmw=O; zIU_<8F$oRTOM0Dq^<`+YDtOV8#W4#+_M#~`pRQUWZ`!d=FVx?D-{yU!}iw5*+`f?~q zrR?hb5aI+Td7*x4Em!+nB;r4_$Vd^N8JLwv{Bxe_*ZK)?X*zrt47_|OCDWatQTTKPJ ziHpY9z;M!KV`Fnn8BoTLp1shAZ_I9G90Iy-lgXnT@DR(#SNrTA)Jwn=dvAObmjQa) zP_SD?f{~e7M^)N?J+c+s#hG)o{nh;Lh`za5exJ)&IN#@czQq^85pIBJgs<;5Tt773 z;3`i*jKp{?RY)evrfl?c(4~JX@x~Gn(+r@ndWz%SsN&RL^FGO6 zbic04pk<>Z-_Ofc%$U}@Hk~}ip9A>)An2A%^UAvtOMIPjbg6At!@=!afxJ=TKiCxj zw7S-{MfRE4uwGBh^9VzK+J?Y4@I#^K)ZVCmY;&5)S1g{%3)k1lavE_(bLOql{0W>| zutL}L%ZnB~N=Y64i*Y4Ca$#k({%hj=Z*c_!=AGwE$Tn{iDsi&aHG#8GKR`IIGA+X} z`wMvR6Hu#RWs%O+J!$n}f{OcKF?gw$>>tWdD%cOaXFz%nR-76mGcH2bhiXO*48ATz zv+!FS-h>v69a!l#m`2EWrm(=Afn1Wsb2~Eg@J(c^(?-5MeP$D8}IS^u-*>)!!Q6$cK_sYSiMOKeR4 z=tZ`exnEQpq*&~ho*>=36)tY|PvH2iHm$tNBBTMdK(?;;G++GAdSC4B>lJ$IyC{bP z$noXX8$I4Xgh3iDMENZHt=@$}Qp$DC)+m>|1r%*x+7@+TbzAI!JUIk^0z>UEBhCn@ z!GO~p5Ll#sbBK@305Oc!WBudYj4TQQOiZ$y5+1BjW54c6UHY7C#zn!8cv5Z`!iz<& zPLUm{per?gk7HpOQ&TetlPsWJ6v2})^_w2b13>51U$qRtH7Wz2^a6S%bjPUCPg7$U zP4Dt(hbS7L^`=AlOIie5a>h zOetpa^yZSJQ}>hd2S1<@V>_aej9nRM^|x#}f?5|+in+@5r!~*j;ye|n*GRzGOO`j) zh&3L|%{Aw`j#(%$W_MKR9p~<`X=W_J#g6Z4@nI5W)``p%EwKqD0h&K%PpfpH zrWf1p<}NjtQ!kHz{II&U)E$c2m1)gL{Py%dz&ib1G-|Tz?E+uj?K-v*?pnk+?MB8b0NqP( z5Dm#DE3>!u`G>U5WAsOLWqW&nx~7WXp1AIBQOhruk?m?Iu$yU=2PgtK07IV@k2-K? zJ^|XxSJ>FE`@G~JX`4HK-PXX>d--mkvW#EICPIf>}1Y60&#b`$kzmIk)~m_?QF)m>zBIxXVgie=e!vWjy{^=20At3?TDPw|T3M(b@_@bC@EoC|)(U zR3w^|I8q$B>D9ijCI;2L=RpFJMv!sE4$88ZO8XYvZ?Dc}O+dlHVXx_w9x|-vFxytL z6uGoD>#tCDphn5F7PaQsK&%sQ7jD$7O&W~p zX9RhUz61!ebp;sEBD1@Sk%5%Cq3W7~Er^qZpxiI(^vAH=e~Zjz+#PyAA)p7Yu3%(t zg1vBHcg)HcG(Fb>==Dh}0IlSn4RC*ZmjrgsC5+Nr6g#9I?9GI`BmgZacdCMGhHl&3 ztpd9B9UXU0tLwF=NUDTBswzbD;3lC2JTlvI3Oua79iOq2K^;x-Vzfd}#-Jb0>^C@<%aI6-YFn;CBeXr9e^J*pG=cIb$BCGxZtF@<5FinSEYXTfX`u|K>8I|A*tm2}++Qs36GWPWUxta%J#i4^Ad(20A+ZJYxdr(d7XrakpgV_hTN_qQ!i`$`;=4nYY~~|p zSc9dAdhk!VnWnI}nBu%^oI#Il>Q!xW3mnQW903@K0ZkZi&WxLo2ba;yhel^ECxP;j z%>|xu`8RAl3KLY)_*B`4ZE{z{e5M~CVG3(s`?ZN1(s3X=tfwmyzK9;IZ>c{3z8eCF znKdVYWvRBw&}A6jIR=U0j5nHklk3>*+sOA#`;F_)(D`HDdL(( zPhey1sURNXM&>S+jGdR*`(~pyNI6L^wMk!wtMZGG{awC$op_7R`yEgbS7zVVDtbt` zSD9gbkybJ4C1T3Cxpb;!h6QT+ncycP4c>7Yi~m12PQ<`TR|4R*MnFx)56|~CzqfuaX(1+#wWSoAlq7Aa*A#aH7xqyQ5IEjpv-rT^@y1br_}t^8t@H-q zM%(Z$dWu~)oq(uuL$0B_=tP?1;`6PAz1PiV-W%i9=p3KV|0Hw3NpAzHPc*=D+dR*z z3%TqAav~=6bj*HwS)KTZQ zCEc~L%09qFS1+Y7n!dCj>t;?praA6!FJ{wt<40>~V{C4iJ|u!Y9n!M7yEoP1o0M2# zY@*#ZFlXY5E=&2w(4`a>Dd7SyyTKTIa%uSpH!B|#ExEg2*oRd zYnHIzWWNQ$s`kg^HK74DH7ln(Zp+I<;a|a&0eo^UqTi+qLM_4KUYizCzkBbcUA?6- zQ|>E4N1Z)WH~5irRE7J7=*Z2plJedIWQQ3}`nzwk$K2-!<6=H;dqLQ4SGso9&;DpU zDKX0!`keRA-s5E`f54{voI+e{aJyD-I6&QOKk57<@CoZb`cIp2xgk6&)qJQv%n}I% z!*#zgpFDOMiD&+>72KHC&o#|N=M3l&C5G7x)mAqle0dpQjVUw;WrX$nMet$;3g8Q}K| zLgYX@;&J|lm<50}sHGsX=c+R1@jig?d`XAtX~<0nP}; zG6pcgFHH_#9RzcohNSGY_g|}lZOZ3B8}Xm;4Se23*Pi_ZKCmssuc@hd5GA4stH4%7 z{W;`VGH7D4zV7U~IQ+cM3SRqhc{0Law;$+KX#^T_XcGMPk3*+huhdM<7D{=%qtnvp z0oaFJGC2tBj!_@7$skySS|?wY{R~%7R7Ao#cL7|Qo0q3&qJv2)_GcuAJA~4N`|X0X z68w|rgKjD)sw9R)y>Mx4IKGYPwdaKoe!15Oa0#389cYzjo<5SC*uF6pvCMv2`VR2u z@OpGfZYZ;xkM8UFN25v8ue|3&dMf?sR5RBG5>fv!4GNaI6W)Vw*>;TVipH`7Yd>1f zRhTXH(l410esna>YqVQ2zHZ7rb!U{~c&UFsv5XlYnXA(W9e0D0dq>`U_V*`T+Gz`v zSMi9y_0VD9hV;@D&<^T(-QNn@8Z=TG!dq?xSk zk+mY?(4**^9YTr7QB10sDI6=Z8=I}#np4-Sw`jgpU%hEjygp#X>(Fz*R^_C2*bARD zKk0ul_vZ0Xw(lEoQlyeXh-?vMtqihGBv~4=Z=vinw(RSeqLQ*j$k@u7ecz2~lf;m* z8%x>7K8Z2Rn3?xhPtW)H{r`U6&-<^>-1mLm*L_~+avaBb0=xG6?gB!D-9oMN2@h}c zHLiaHznc8jnXR|jIsdadS?`gW|0ak@^GtpTuk@kVH97b9#;9zQlrr_bhNeM}LA?=P zdnOou)N3>%aR5-rIzJiz42Tc=Kgj8G)Chn*ppc0Wwa`eg%R_qL)(&Z!F+Tu=a}Dy!r)G9$;w{b>FZ zUOxw8G8quI0laISe=D>v7W>FKNbK;`;YWqgy4b( zAPDU^MtR}ETlZ&fnbQTq0Syr3)rUoeg*l%#vPYY)77xE}eo1eC6GjGjQlf77#@Bj4 z^=i*NXI-vwY?5$1ufjG&{*!<(!6B}J|c+AcbZpjadCan7lU-)MY5_P9XFJKiWs$Bj(qs8devP~ z&7A~DOVi5k6mA2_ z)7(bNE3>10ejF6SDA3qc;{B40`iH`b9umreEiPqr!-O64?scEO&qQfL58Hy zUsx&@thU5600`$s_sC)m(5eNI-HBuwSa9pgNW(*rZU<#8^4@qpNLmT=*av*JUl~Bz z*pP1Kvuo%TMw}N)`LvJY+g$5h0ZVn z(DQq>CTAwdr-eR$KvIIDolIarx@=7GhpAFbFJIvvxXiole0Pk;Nj`klDWNZ9nY0-y zlx&6M8H!yP0ikPWzKiwIaZ9Tmp|DswZ8lpIa?Hw)!r^aiHO~2QOOJ>s2{TS?-*Xv5vXbXwZ44rCDEkwF z;DVbTGpW%_e%#F+4|(rgHyZ#jvoqML16!GBRWDxjegRhCIoRl(?+NjcE^_T8|CU&v)xUTF*7Tx^yj$JIeJw8$Pn2 zbnYoxb!9O8>#)abFvYR^nwTWd-AC+NArm3E(``V!wj6xr`9W;Z z&m&`%!+d#n`RbR-roG{p9s}w`xDT5olkA&>GdMxU+Dj5Vq+a!75cHP=Kva0h0!WvD z5eU~HhaxSjJnB3BOF;}UWuPz~77xkH-w=9`ek^s7?}txiVROuB&B#n4p{HCm*X8Cw z=WnU@cisZX_H}wVY2`ypGY|Wdo(;~ka*I(mZN6FiRNaWC@ae%LmoXDyJaE_S@F=39 zI!FGA=0WJN!L)#5#9cM7!w+|8R zI9S-P7)vqRu&QPiUb8K6afdHPDnbvcp3OC>WC#s&NPoqqE}32E1fi<{$^16Qb<7EP_OSRVXRae_Z>(?n4R~vR z-<-W1eCkCycRU(9TRE9w)#P@g}r4I&l9vMcv50sa4% zrcQvsvO`6fv`ZP=74{�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 KFI4C`-2ESNvP`A` literal 130 zcmWN?NfN>!5CFhCuiyiQWmqJ?ftf+5Qb`HP!PjeF`r^;*<1O1-$J~{A^mTjIx&3cv z*>JqnJQ&qw#ONev%hre8qYcK~O(`i+0S3cRs>R9x(K{xnF;c|fQ-oZRibF?)SvzaI Ni(>XK%Mi5F;s^Z&C-DFP diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputRadioButtonSnapshotTest_launchInputRadioButton.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputRadioButtonSnapshotTest_launchInputRadioButton.png index 2f5683b44a0dd5f0dc134b182166bc58f76af418..84bd875877baed313f8c5c0cee036c72a8503de5 100644 GIT binary patch literal 42077 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 literal 130 zcmWN?OA^8$3;@u5Pr(H&p9E5Snn~I1JjQPAz0J#`jP-y0 z$g2Hm$C1^Ze(CLIM&%IGjxI+5hY=vKM%=UjD|(NVKtzG#m61dc5+&jyJ`->V2}+?t M%V^(h5S-hVAJ3mBApigX diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputSequentialSnapshotTest_launchMatrix.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_InputSequentialSnapshotTest_launchMatrix.png index 15a4285b924b7096cd239847168952b641139fc7..e4f00da235c28122a5535da8c31bb7e8f48fa5aa 100644 GIT binary patch literal 47028 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

x#rJQ}Q38_-EgfM`)yH2=L&h`2U_JX^ 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 M6tjPe^ww$;KfPHdUjP6A diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_ListCardSnapshotTest_launchListCard.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_ListCardSnapshotTest_launchListCard.png index fb4918fb220bd5ffd8f242303d6eb2a49f90dc2d..3c68d64774f07978e7d15f2ff3c5189373ccdc79 100644 GIT binary patch literal 123635 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 smh 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%0D3Q3`Y>|pf6X%q zF$-8)nvD0N*gMtWxF@T<@2^>Rm@BJCop?%bEIJKGWK7mOevatk`Hl~};l44s;_{KW zs3`keS1%Tv`w?XWAR#>^vV&^_hi?G#wsWjavUc(8%A-sLWD-v%;mg39o%>4|^S^`CFR{(o@X*#Y+iNq~l zcLe~f=eWFH@H!x_l_VBn?Q3}`CDrp+C^89Dv<$ad;BK27l?Y%QI&5=@V=ba=*#B{V z(a+zKd29ai7&_@ZVLW2i#AN$O%#PtpY)V9BAiNG|+Y~EJYt2n)X#KZ7ATwbX9i%XZ z>z$LNGXJ)sWyM~FMm7yg@HW*XcraGf#f`03J-sNs;b6mLtW~?wp3;nTCNG0s!SVsI zTC7)`jht+b#c87%=beL^hvRJuQV8KwIkVxJHi5JR9j2t!vWPiGH8RC2_a3$sEqW?= zIDf`^z!cxL=WTHs=2dNC9L82~PF0T4AyT5U^@Cd04QMc@({^17q=+yEAm%U@xRqt-P|4Lx6xnsO~_ ztTt}^e4l~#-HJz!F1R+c5n@y8Hso#Q0;%`hqySeyRlaGRrEt#d{rWWqh1#q8#$D}S z$4mio=Be&d{wd(9udDGi zofW699W?4evk^SVU-xnDonYX;9I~~-xKY{+M#XVM?y^C4MWK`8KQg}|4t>+Q&0qg7 z=4NC8Zu7nRxQ*r)UY>DVkw26M8QER2eKTBtaz`uaZ>n}&mDK~b^EI~}H7P;!8^f2@ zZe0lKS_vd@7w3OJ6!h121i-nE&gKMyXToDr7!EKQX+i&v36YnNkla#Ez=wWW{^_0Bhls6rOtVc~j=M=&1ie#ayJ&K%Mhlc15{qKI}fjZg7lxd#zB# z;kvBep?g-@IQ(?ca-?oGZJP|ZPky|w`;y=P;OWtIN0(xK2B!0~BjHdJg13(X^b^87 zB4rdw6C9#nvz-OfG2Z?Uqir{P?JHNu< z{UwM}l5P36Rr@@(edGju+Xaqy?AXM@3oK)+)-1FgzUd@@{K*Zl058Iq(Z7rw^AZlJ zXR%aTPkZ1u9L!hJ1YHoDL3mcGJ+cY2!{SUDQas(*=xC@cA6A##;7z)-i!hS``2!q|-vkC?c z;vhpDERMh$tv@afrO0aW|5aH*Ft6HME(bXe?=fc8C2kdm)Xa>oexBBL--I~E&+#bv zx>aNaTz$67`jgl=jC37VaCNKM@$_)_K#qFR7#yBdAE~!bEf|)bs zk(D9+syJf`&|vXCaD?a;)WpHo)<3-#t`kfGpO8=BZrT)1)yU8cBH_LUK$2j0%+Tc|+t{~hM{pxZ`s~J+4M>-SjWw1=jZFZpacmMj#L$VGM z2>y3}quXeAT*EW6=?5g38R7RceIx39XAOAts9(bCZ&GZAxEiv9XwNWNF)rstjkWV^ z0qnY_VHrJlLjfGL16I=1uQ8^s?}W1M^MkH-K1NB}u1%&MxYmON+KFIadvkC?!`HKs z=$>>K?Wp(QXi-kyX#Z*YHP!PoxEG~_RipOpxqHQQmj903=>1pVw48Ng1GGxWML?yL zR~ZSMCxZD^RhI(JY4cXdM~(8O&oWomsWtw|bH?vUXmvJA-8Q6icWr-duTd|u1}-Op z$I^su8TLJ^=ou^>Mze%I2(Er8g_1taqD-$E&Fd; z;^tbNqbMY-zT9M7W)f_4w!AhynU~{J0l}(Uw^xu#2piy(-=cn(y??1THGgx&%%R_B zNL5p!L)*}CI)aWjX7#rr3n3QBT4Vk!pPni#0dFunxIFN%-eR!LdpYIZazLD6cbTN? zI3M`HkiYpsoHkY!!$$}pzTT?Z$;)P8Re=PUPTk}R{>(|5mN_l{oVpa;+e3cr#u*5t zI^hL+n=$z43UyJ>v(QvN+-fU8b(FAoAs3>yH!9JFcSMNXv^cE&!uvsBcK-~4U!NB` zLjo}@Sj=4!GV_P?<&B+%J*pstKI38k!lB@0VSh3NyDSykkXzE0`b*CE#F^|%(9+(w z`cD_((N=v`68-^;q!SZ1Q5ZF7Rv}D-%Uk-`iWQ1fDLwae7%w0=jlWDh%+soG4Jc1tYP{Owk}hR5*__PRs!v&TA+x%@v3o zuxQ|f&F$(rt?s0-N2q`0i=;Y}{pBehO&FPP8mxX_bhZX-o;Lfv)_d>WS7)u(ogNi& z*x6$!rCa55lZookyNJrW2P`vjhilJMSJ|&1r>Rn?`BBPI{H+jpG|>5gcSBy}1{VR? z2W(z}PYWB@f;i~#nPqb9{xndLegiEA{QGf(1QV|AWao&j`|NX9eF7GY);>3e@?rc6 z^d0%DjM)@=b6^tC1}E*|S=yjX#){UAnU!@C#!znNvvwPg;#Q|TXqzlA(l5)sMlrh| z8q~5H?QBzcnSI(_y>gqP3c$#2v`Z^k$I9@w{p=5m~D zV~lf={1I=zz9=@~p~_wPn$U8mSDnCz%RY?>^FBHI73KH>a6m9{+I)j1V?FPhXR%nS zk|1RD7gOecX&;!g!$bz_xU`$kRC-M?KKMxV>l&poC*e0aZiHb8y*$}oPd;)Kik%xJfeg5ty5rrs`r(uKj!}_tar*5; zt<_vClL#SzmbYX6P0CT(%-_u`_&gwAC07^jLIiSVih+e(R+}I6)cwqVNX#G9+b~r$ zBD3rn$)dMJ zA9V~L?#EpOzUiqX^1WE5tTTZJbk{oD8#p&Hcjg1g)vX)Un5YONirnzt<*96c=%x-G zungpitH;ez=qBx8mQ%F84qUCoN8IC_jHd?Oo7L~!6X=VqH73(0UW-hGyr>Hkac69< z(FeuxwBLS)p+UmlPCsQ31+W{!9f6-PzDz|?mnS%J2|V%d`?wp8MXcq8+M#V`fYd{F z`?4V^Mheh;S9cwj0kSeO(pFtVfbdYBMo?4T#IRYm38$>M^0od+Y0b`)G=lzap{~Uv}OS~56LoRW z_3T+-xl)A*#q9A*E48lQm~S;b2Nq4XWCn>(oHRCnB8e%8qR>3k9qS7Ie*J5J6Q0-Iy&Q=O5|(p z!zZi!{7p?$fQcEccPq!^-J@)X#@Uqmw}qW;s9e(!;0)7j+{UmUy_ZIUPt{%iK(JrM z%yI)%cfjT5rJ$!M5jLlJ!@I08H^1MA^@v7>(7F-;pcB*yX5sm`*rM}K=H^G}CtbCz z%!@NXoXGc0T~wxK=9ASjQj!|1u9oqQbk&z{8@A)~qFf6#+`LVU;xU@0MArz0)D zrVN4CNP0jUJ8p>Ie|dI$)GrfhSNlo1WC))sPcpBCzr_b=%>+n)0VyVhzRY4;uET^C z89|AhO#9WSqF5Uqi9%#3E{=|lR33-hTe}CY1?%G19O}Sl9}$w1q5S!c0n+T_Nx?l3 zp8wP;PX5b3ss`4B#F0u8peo73S8q63h#*2#fX^x^uUJ0HW&Bs?3&=3`h}ahY=;MeG zjOwPqPGx2IP<(FpfqMDcCbdOJLS<@v2=?zyGz*x_SILbH(PNiK{s$<&jQ5=_} zz1{Ry1z^BeeQd=Zh_F?Li8TT$n_I8(&&ju~iB)0b4J=*}Piuz7o+%L!UJ1ACzWoA# zkS+bZ147;fSM#_T=ZJ))aePkheVcH`Q2UZg*E{hzsS@1FZcp(BwkEyKgy{&T0Yixz zO{hmMKv;4ZRPF3podg7t1=;1WS_E=X(3=92K^)((acR}1=<{})(B)K9_wjEf+}jp_$o51KK|a-IxfgYxGxE%E-?=|x z8wH9F(H~o&a=T64t-p^w2euhuR#jb|UqJ#MtBDKTgx|~LLp@?wlBnq&|J{8{IP9#> z&u3gOr;=(t+qSX$mizQ>4GQ;vNS1sR1@IyQu&W!ZG!I6lle4^}!XQD4-t87uJ(0C_ z*RRe;xrh#P74Q+HYw&ICJZ;U;}_ zv@_sb8#!k8lU+*FB~W95r>1G*pmI?u*L3-Jx6^LuZDz4Br>=PP`u)U$K9vjlTAb){ zVtxg7dMeqwl|AQd*q)mo80`9djmC$326wySl2Sa;<`t_!)yOyzE5hI1_NF6>U`lDyEz65__OHE8GHLf zlo-5iojSlzR3!rZX+K$Yu=jlP+&2IqP-CW(QN~bTh2@8}H()Tzgr-ympo24tDq-C` z3cQKS7W&!F`t_KRId1{wy;@qD;{X?6HvDspTy`A^7+-dzyb}4jH;A5*)|)`@71;K< zbsOf+t<8`i#P-oahw??u+5Nv$S(CSAIfOQ>@Narut=kEEMR8W$)~!0hhg@F&@=1l! z;Px83gTqSS7(wLUS4Exvv}Vy<^VSlBwVGSJx|Om`Cq$7wP&89f5f<7qw8N1{3ock0 zyXR=+J?7p0WY!OP)0BOG3?G_Djhv-Ko>iVS-?S9TGlnZZ=I`NIfBz5w#a-8sKbCEB zpkVBJOjzal$cz{R2S#LjDs#u=kXl=q@BXyUR}zRV+xG~(o4;SASoWU~DDKt8NqrpjR3zrPf z0)v^J29Fbwc&m$%h%p6fFR2&)h{y-42T{U@oMbRiBFn;n>1j%-Pb(LS4D@iC=xV}D ze%fweOT)V`FB^PK2mx5)S3VB1;i%lGhM{Hz&p)({E{ZPzWF9lcl1s%mWK^8{#XFpt z-> z?j&264XZxCaZyRhZqwchFt8KVlXC}lt6s_pr(q9Al^FRd0%A_sWyTof_IRu7d%W~t z^|kFd?D&ui)S-6e-0n_6-bsjta6S`8@a@v(T=`T}VK&#`{yJLAPYGI07W-zSk2dYs zHObY?|8t564{bo--dzg7-^ta0MP5>il+0XzX894DOWICv5ZFY<-qRwBz9E#37MYa# zYh*0G?>8(^aLoLtp%34oD)n3H>-1heC1efV_`vn&SCkd*o_W$bO@wmm!kMU<{EYlM zE6>~ay3$qBC|}*r-{$P86I&6Z1#*Z&pmc0Ifs1z_Zh!+~%Q;vgJ+x?Pq(yuHZ-|`0 zg0FtLj}h)NA$zqI6t^xpU&oR6<#G!x224X?xu5AYiokJqLY`~lHbMFdl;M)MC?i)L zynyt!VvE~2j|+lwcO?NutJvU}artx2=N$a*@F@c8W~pOxC2MBkcOS)5tTPgxza;LF zv`a>YPQF_+uFFL$#njLXg<$k8>*BxLB7VR&ap$_ythj<72};9@-|omB9FGJK*Q1)f z0fBLr+>efPMhE@8n^yK6+ljWWG5yt*B6Fcx&I>M>$^ ztE~|`Zi|An9r!1~~fyC9VdMY^^74p%wo?>5zGb1WY;U|m_qjBa23PMVJ&%(A&o z!OD7-N65h>qe!3~u`5)gpFsUvLmV@dt^gpgat%8*P2Q(oB{b!3Td*6NmQ6e6MRj!= zQ=-yi1fml{u2=vL>m^|DjIc(Pbhw&XE$$(plobCQ*&1Y@In=LP{$7kH_enntBt4SZ zs1!+xD$S+|G$cJ(3`&HthVLXxukyuQm|v1UT1Im}0#*1W2T0rwjkNuv?tkXdFC_oB zG}wP^+W#4`rpe|c1zs{^e*D!=X9zF~ze}Ya^2$WFL!rk18D1Bt0I)nH^y8f{Vyp~a z3p~-|OL+kMtxSlP^A;*X19$Yxf3#q@1sgCp&vHBNV&E&A(F)1h&-wM*y;7z!!85HZ z4|YBt|2?OREbt!JMFXAv$DVncBMC+hQ{#Kf{QnNQ{`(LIz*j-PQfK7tRtu zO@g0JCkv+O3qM(_&wzK;c#d&MRXsO!dAn%{#{w(>ya%=DeonYkfNj?qMFnllA`=I3C|p{tGaC8pF#0ddL=V%X|`v_+;#u zP30$)e|F+-=P9GRS|=j!b>LmU)JWwk;;Q5O-DC1}v%RHVyEGgAqhqgSA6>Z1lu4Bl zv+WIUijk+GvtS`ZL&#VS$}jP0RqPeWyxS4n9E>D=?cT};23q!#$NeA7n@fLr zjGi1!Mx&lKQjhjrOIYI~kGL3vQqL|G!GzF zi|pRH;yHB)ecb=6_o4Z5$<>4v`v4nCpneB3F%-~&tQkLqHY<144;jXaY~)|)CQl>|u$e<_HG-(Y8H zK|&Ur+a&h7=J3i3;p#C8MS51~eG^Z*lD!`#vfg5A0Bx8?>!Gkr_w7Qf;h#tb6`UZ{ z?l}!_`r0Rm{M!Jj;llInrgl3yfraFW*PSQr0xCKqq!zk;ZC=qw5$ILBbaaClPku>X z{h~?uLOeA|j?FY};KBXhRwZK&tdQ`nC~`ta>dqn85@8;y(JN8*f9&eGG!E*$MM*PL z56<$A58EvEaH#!u{XdVWFkJjC4B_r_ToQ?CgR}$_AOz^bf|ds)l>stO;njhRc!V*o zRouc2rO~4#I$|&imLmbcz{)LUOEf4uUPShuHa>oGFGhLWX8O5L#H7^!NETWj;rcj2 zh#W7ERHD>s^by_K=k+!|@!${+s`8;S72e$-0uvuE6$6PGQ%FW78aCZRs|eF&tCP(| zPBW{4>Kp*R6szoIZfxU_E__u?Y)!N$UB7JJ$DF6A<#AZ)QxP2)?7~oN|5RX=QMJPt z$mV?C-mqPV@Ra|3^u7Wxy#hN?c4e zZyjnIE00^gRlL07O*aPN7p^0-AtN8hRKb&v^d=0vXlMYP551WS@{-}7WtI<1x|M&-69t!Q##Zn2|@&8AWq5T+*lrBxl$Pm#(y*0w2 zf^QK|Q+~L3ML!$*sozSDd)tz1{w>{*>%3xk;mK4*8o#RAWW5@oD@4@v*Doz`F@l;F z3+W;l5$~xJCKbq_|NGm9i6#pqr&L%i>-q-h>Yp2$XlzR`C-zn&i@RQE--60Fq0IbJ`Chq zcBHViq)m$SwkN#*SNhhot~4s=DCg;FkB}TK^bTKRe>F|{gmM=y$651w=|aG)e+a0;!#N zI#6BXueQ9)qdFV5i#@=T%6?_^VpWa1N1cPaZ^|Z-^*4rhZuaocwa&ZgEwO%|9oAuh z^_KIf&HnagPh-Ov*%WM{CRROmnNF-`{-@JTW>ix=S=ScMOJ}T1-+c{O9Q6MTW`D{~ zNqVyMQ%d4j_CH3_>4Z+UgiQmWZeM)>W@A79f`r=%50{4>lb_$m}%J ziy>ee@JiyfP8&bF3AQpr+ry-&*+E0NK5z(xT!yg1(`q8mkof_T7wa45NRRcplJZX+ zRBGmf4}aLWSmFpfGY}6jE8|!T`v%rtM{8|s6#}*?f0T?`O>%po;qxXhn-tr}! zQdBinybB3)(s?b-dXn(%w}q5@BvN^X*%&alBYY00MspV z^amy0`-$}Cw zMjBj0V&#dr-(mqLwz0o4LrWasjpG#R+#jo!qYL`ywx_VMmnyf`rZW6Xu2T)r&#=<% z@k^6bB3T`f=2M=oZJ1j%(ydS#!~eb}VCU)=mKtsSalayzKyPRuH;;X$Od0{g3iZn` zouL&gy2UD7An%6%#!Ug|FL=H5OA_GPO6yU09JtQ^e%UZ{)U2gcD5s?gKHOF^h&QC& z?m(*i(>b}_M{OpAyeDFPP6`Mu>aKcYdaGjDU&Jxre#(6Ws}@amRQu4I1Jq+{+}`?6 zE9(F2E!kc=(JIQ>xP5Li^S?4?ddtlEBWxFs==$w)72QOd17YLSs_%3^f(Hm=IX4yT zhK_#$yRv&8L%Uk$+= z9y_<6z&`L23qvtdS!0_~!^Y}2k?$&8&1==T>0g=!7LGD&YSw=ND~~}dY%hCV+qIn{ zi~oyZVI%vWHWaAp|M!BjuNvGI&1FJP3xy<=rqw{0K)DM`+LN2k9u;`^uE6&MuVpUw z7r@Q!ReN2hXJb7aR?x@huod|5DDKE!-1>(ixmoloR%u9%%O)Qn=yb_SAH)C ze4l4xTG8Z>D4T~q{0I^v3V8wq+C&>Sc}7r3eTYmK^~s%wImWjnM+IEg&X^x8)@mFq zw#{&TSsnb&;Q)Z8hYl7%;=>Oim${;%k?dj?^^DTwD${&OjyUm+*;-4(!EB+oAL3na zT3ua%SCmt=`ks)Bev;krN%EY-Spzlvbd%%IR$0^yUN;YDq0B=i-%jxJ#ENLiV2 z`Vn*%-#1x(=r4!dTcMpEay<;v{qB3{<#n@fuDRV;IpM>j!fH~>fSRM+I^8{{giPwyc&e{lpX>b~Ff7>7~{>V0Yq!579`;NfJWnb24%H zOfwWSR5SK*4kR98_6;KD%ih(Sl)C-h+Wjy**=&3~X+LF#9p@_kRMdHy&u1o(H?UJx zuicra-V>qFSYlXX`_~(cpYB6L@X_jo5eWZ4zy+sr$3RE0b6r;TC?d&7O5vdC%cKu8 z_gyY-HGmrGY;Ci=4kNH`xLnKXtWi;g`6cALZZ7HS&| zkns53+CiZ`ya657TVvEczf*y2+ zy@d?lj|kpP{zyxg2u?`n^QiK_U9U#8Y%gEEHNoh59XQ;*;{_TE4YvWT)CeKh;M4kh zGbBlO1#tEueH39ShyW9*(xf128p!=AhE*;YV?(ZorkgSfR2xHV&Ux*)jCVoBy54n`AF1Ww?O$3i^%&`I_RsO-#QV+I%Q=R31 z!5Xlyx*|d6Uc_7_H+T@KqjS--`W=6On0bYzQ;OU>Cz`kAuKb7yf7NB7-o)f0ybufP(_i z^aX0K8rC>Cn+09%@HQ$DgfE~xe%Sy)lAbaxg*kP7+e=~t8c1YC=q6DLS@oW zbBEzcKNz(YpAcYm5xbzy1(R@0*%y}iKe)~~mKfIul|xI@#RF=pX5!<-cKq*wi4(HELz|$1xG15%ZV9UIkJ=c5gt= z)VFvB0r)g=F8KDlY0G^wih7M+@u@3YojpTk3bowJ_hwUtFQ0KHCMbz8{4w@9EJfa8 z{5Y|huka(3)|<1?Bscb5JJ!G#e+(BQs9kpM01g7f6`W?p4QBq=XxpZ(p2`v@YbGt` z+Y>gG1wvHouJPhTcFL$T+G(mH<}HCnF%pqyOJI7y#g5E>Pmb6|&zV?2M&O%7b>V=T!# z1u96Y2uF)EsfHzTmGncoDZL{c`Y(lkZ=lUixHwTPpD;VzqGEDf$u-Y#HWWp`<-?gkMU-*8I+;xJgi0yk@ z`;JRs4_IF|YTExSUy(qy{wHBJ9_{(s5g?2EPZ`{vwBU27&Q4|Fccg>REKRBJNw&-d zWJRU*l)?c=Bg)_v037_UkYaLB2_MZ85z}}UpmCZjU;y`Th^EV+I?i`6_DPJ78)L`s z_*bw0(AgIP)h(mPFfFuDQ|im3kWM$pRxH-N-B5H|%#G(>r~~^9OG;a|@jr9xnl>A6 zp_|0>^(w&Ocx4|Acm(|8Qblx*gg*`oAR8T-ae!IWFUUPJtpiae7y>R^IlpFGXyFi6 zqKgG>%#URc{RvH2O#Cg;Gx(ulZUd=*C{Z85_)Li74d3E`kReGNoyE^UXHVL}3tGv; zrFP%k*r^v*yZ0`r(m~=L%o-cU>TKJJB^U;zgEq-) zC0Cl}H@kjg9N%V@bHnxhw;K(5KRX|>a*y=XYQT7up zX#3QWYtNZ2TYcKuj)bkXJpLEYt&2nXGc~(5L@GEsbQ;s z`VpkWLe)GG8Ur)Jf196amRF*`Lv!ChSNW>Y=NRH~!R*J!!+8mJAdnPqzDJ`FHxjA0wTQBs9sX|Hu#^ z^5)SK1>OQM5252BpqTaoL2zZxXM7ahU8?4OzA92B2wwy873shJ>~w>&w!|L4C2OHm zB?!A3mo5TeCCX$B9bkhL?XdT zLPxMlMql0OHW~iPIQI1<^uaRl)Pu6Z5@%%@F*x3cK*{@7_cJkqD2P;OGp2$4z4KdA%5kQDF1?|pU_5D zVRNKipaO&wIw{r;Z7jI3s_P(4T8}j2`{iDF|6YuajTK;Y(=G#QG$NS(GGT>k);*qJ zFd3-`Ifm`jD9AW{g*LF{Ky{axy1;^_5eYQK)|%)-IhV?{y1a4r-}R_mCZnZ$VoR3o zv6gSIW7zq4A$Ut>U>|T)S}_=)Mpjp>P3E_$?r-sPMEMbx8DtCWiyr|9iiH zn1*iDvP`ig66!JqwmDDQmxPeN+kImpaj1VbG&1W!@{6L%g0gU0I89`;iou>u{gEJN z738;<*67_F_cbvDci|F(Cr|nFwfC;nyOgAli(hG1KOU*%d8AmRgBDjm_oC=OK_&b=i`elH0@M#fHVM%x8^k+r;_T0awY`4SxY96-C#A0I3h#6-&2)gs0)@A&Vt zfPxb5w=X}U&fsOR5}onNIrwmdy=Qrsq<=S0(AaqRX(8(NEe0;#j8D069M60X^q0;#St@9S=%+j1nk&_g#mCJn$|> z`lvemaBXX^>71XQ1pXgIXd!TY$zW9eYa%`IY7>xp)OP6TntLXkSqCTjmi|f#C<(|& zg$iSwltld~rWxs>@KQn!K3ZzImr}=*G4q2dq@7rODa+S}GuZ9YjWidhKUrr}6C&hh zacZSb_c@fK>X5)bLFkGh+8~G>6jwUToTVz#SyoS3#}*g8^DA2uY=GZ$Cj0;-bqepc z0c8^KcgoQ9K8xhZHX=~oK$x^yWn^11k>gNTpUG(+<*s|ZaPFRnMIAzb=t{jrSQvV# z-EFs0xSuQd-Qwuvvy5HDjf%V9eWMTxDuPeC7Dx)oE_$R?Kw|dso+m57BZ5ENE_dk~ z94#_Es0(b2=tfKi&!x9+W-*FoAX7`X?jlqi?#@xmYJG4sQ?AP|MKH%h_JrF*4phDv z3hafUh=YQ+xy=j35Y)M2vU#3eKxenZdl#uW1v`kHIjxx`TO+!@D5t znPeb-)fj43OQMtIf8m2q`~_%7_ttUANE`{hJKRm{U5KX2bbPYR(TDPHxg$5PJ}2E| zQjKLtPDJR+E#2U0Tj*9*ZCBj`DY{~t1j!n}TK$iEY0BTNJQJ5pE*AeBp*93rnxs7n zmO;P905&PsM~n`nnDqU7b%KuT- z|7Us55e%E#8B);lL$*<~5q;c7T-~+{wa-;hzq2CqzF(p??e+Db;^SHbj?;+vKN8Xa zh^ZJ+ zO{T^3`#qRX;*G|-x#ojF(YLbt=6I;Gw)Y2Gtp~S7k8wQq@d@W6IiE}Gjw~js=Bl9E z;=Rp{O%InEOD%wW@Yo6hucTzo?UN8=0pHqcN(_eLYI4`>#Z*S@{Jf(Tzs{P|NN!`* zEg%<{FsFR%K&dGcrY-)a`i(Mh5OrhrH;Wl_a*sic2_=D4`au5l-MsfwX)MtMkPnP@ zQ{c%PGoPZ{e&opCHDs@FuC7{XU3E!*30MY(u1J^i7Jy0{O8Yol*dDWrT*wVy1{`Ko z+@D>M=4B1yQ$jcACO!gzL`7yJ+Ff`fQ`p-Q?k9EdI=hM+dk>x|&s&0ec4sIwW~*-I zx@K&aF{V`=8JX_slvY+>7*Eo{ZNi6N0)h6GQ7rRf;-v-#Hn&`ydHL|GnFAJ9$H`UH z78=l+b~-FaQ20_mt^rs3OuaJRB}UID0zd&~c~$jRCUxqU1m7JDNK$ZJ+SpB7O}Wf` z)N|Is2lJ3*FYmbIi3TIJhb4xayv-4FQhGD_%hUG`hoxS;3prL86 zjC-2H4Fj{;UYcI>66(mh(iF+wru>+xsZRm754D#xmhQUSEr(0nhaMLaw~L_BxrOBm zAt534+1cKw3zn*{Eq~(nqS(BiO{GF%z#w=b^DM-jB#~h7>1L+KsQpV8hhGATEFaxR zjT>Q8wPgmCRfkoFY2%*puuH#t#dKr6@-@|VWVPlOn-9CEcW&`g@6s5BNT?bPqi#vR z6K$qlxaBU_lj8LULyVh{4BOtFda_+wx#8Hdq@QFw^_9}J*B)eMV+_0EHe`DM zWjn5AlKWmVMmE|6$j4GYXRrQq2?_ zZ%iRAu;yFBGVN(Qu;ryFYxmfws4&w{AR!svZmCLo(tThY4rv@jJt5$gxHSbz|ojl*p zN%1u6;3@EhEXInoX(ro9NKoGWhF!|*c~sgUE8y7P*YkJJAw196zs_~~eain(+#|(< zm~!rou8V-QgoW6I|3)?z`porRX~ckMt{3)lK*WD2R6rIIlFQ2}K~h2g4{u-n7S$K^ ztD=C4bTddd(lK;1bR!+oNDe6?AfXI3fFRwClysMXL*vj$I&@2yz&+^qegA-apXdHG z&$G{*eb$aupS9NBwbw+@g{BO~bDsBZ9_bAeP4#OB{_fYyw1tdjr2`VoH)s74=oP`eEhx9ck9a+{8bl@1HBhk2TmLsOlk!ZG@>p^0&iYaZ%RQU} zv$E}?Oo>woKBqRn{S(`zU)NONVa33gK{%gm`rOC1zmMRmpYZm?#_T=ni8UsUDeDaV ze97f=FrAcT0IsOf1JTd~OdpjG!l~IF(flc_!_l>>^N0uMfGo~)RY!VN#?B+HPldru zy;%LRj|a^_vlUIX@CM^ax^I zaB{LtuyP?I>P37}rJDp_b+u2KHhI^-u*bW731U?}5mm79xWxBipQhsR5}K_25VKHu zq-wCpzx~|X!@J}5w&6^yaj2c69bz-%DuJDl2ct4P!=9D=!!iEZ&i5dKj{cI(;dw0C z5Z|^?m*2UWQx41l)4tsr;eax?4_9Cwh?x=ablzuBtKQZ|!B%gFnrv})wwX?enfeFU zA|QTl(c2$XD%7~3Axqbe15XcI+A8{i~Q_QWN5o$PWlTBMN(mFo|Fu5iRt5-Tm$l@ zw?(DwArontxbqJ*yvFMEcGhJ`5PB~zc&-j}HbK_6uOC-(AUnJ9RBsxXdd*X%>yGC* z3{Gonqr<}s$RP$r;_x?K&`4YhUiYV+IwO*9a^Y4w>9U>-P44HDZhA`}xr=N6(6nG#O2F1PwtYX71MW;^r(VZ@pVlZpxBDQ# z&_aJwf0r4}Zd6Vvg>`-yXJ{P!^4;{7-(e0B!Xxn}y!T!<){H{+A{88SMmPRUJ;k2$ zcDplrwMt@lcm3_$+0NdJ0pz}Fc0{gGyCR=NE*5?{z!^E)_v#wo?pl@;e6IkvL*79r z&`_t8F4OD3XH8uCoPLB(KC>FrxVbHFm^x5lgYI}*e5$LX;?tGM^CF}ajIc6Ocl6!; z&g4`))x+JBFVvb>`R(RfvQ7_A1w@mtzcyJ<{BH5m?fsRDR|F;lJYeBAkllBsBa}n^ zeaul-4#?~qVQ;qu+3-+V1^pEmf7CAmJ3^Lst|` zg=$OO@a<3bPl!Nann6;@N8iHe8XOYU2QL{f*Lge%AXZ@A#V$D?kq3K3sB(cx}rPTJDF2tfR zfy><9K+~uL(6l?94TAQ6k+O1=BO#LVG3MqYe2p&(0-HIq+j->RC7) z%{)ms-N8fQ)y0Og(Cb(4ab(=@J^szFzV8+JqenD~@_3eY@qRg*cSQUgf#$XsKQOTH9EmB` z_4oijwewv&zR&E8f;r!RJ(G#^4%apMn5*#OF(dqZ6kwS%--TyI5S$ht`TMWB1xN{3 z(C_ri)1KHj=sEX0HK;Ie8`oaNYVQ(aL^4iZQPM_?#sc$MNehpW_8iu(o)YROT#cGQ z4NRVV6TbWdGhu=EHeE+sw_O%kmGMtv53dqJvM!gB(Gr3JkF>7Qk+;ZaRt&n@wHadj zPoUlLYRm}Zm?whJZudesS?)L;O%hl->((c1-|*F2)(Ue|6-W1WB#FKhls@lD8cL5B zh;!f1UqnSYNU<6z`m7I`TF5O2u>~Y5K+)1BU6-{`fe1Im7!CHloxRoQ&ussdT%15v z9WZU?TsR5y)mM~8ULLNugR6-~Ansp+09ViF-an!YnkP~3>*Pvm))I4hZ6#RH0!7QM zp5Wf1OBc}waht?Ge)!V*PeSIAa(OB^h@!5IIWc+cj5)=~$T+jz9EHh+i)DSbySXiV zj(L(ycg`KnP}g~+zjNqYQ^wpW?ti!5PXTF0`tHXUWIAT=vfXy@pv1w6OSd}&lAP)Z zuA~P}W_sqPL@qwRTgsz-UmDn0ibbh$U<=Vsa&HtF-q>eO4{k19v#(xx<)ur{cY zazURL?3qED+NScy|E&4&(n4r29WVpBg>DL*M%@RSVMo$uxR_k!_qQ$=zB8?w3sCa= zVcSr@>AcjM8o_@lrhTq9yWt~>7Ne|E1y`K9{aP3;DxVfC)Pqw%|LLg6a5c&4{>W|W zq-XO&6VqjC5Hmc)gOeFf|C-vgePLnj=Dp;Su2cGqXxXy$a|luEEaTff73jl_tCQN= zfJ$Bm%wxKckYDqojFr^z2D2pJgDuZ!AvlGBLa#y%Jc`Q9Sn8(|LH}bufBBO@)2*z3Z zR&uz+UJdKH3g|vhP>h9RiP_UX99a@YEM52f9Fd7y{1LZ$$~(utp|CwTtb;P!$skayErnTxBRzUwoU9hMFrI#$XS zf0xs+_#CEoDzuKZ#Pno{L@{Fm+Q1#z)drYyX&m{yb!s-VX-^cjHulvZE@gi45q zAh0&Lqly|p`~00?4)MSzB|W4np^6Vq`QaUdD~+POYsHnuJb2g>3;fW8ya_@n06)0W zqIW&qHDv%Q= z+|2MilbU$Kh#VxH>`cxho7mu#E)2P?=(g?W5;twNK;;j?-PgNG2_g7IFIKHlsFg6< z1GZa^T=NZTcOs05tJCT2t=QwJTf#>&;#*%M>9#hDniST*UCCn79ANas$`0m#myh)y z;G}$@&&4hbWe4#O8uPmu8p-wi)TKRIXwHW*`Yp539(j9*A6iEY@he7Z)H+2d+^p%z z%~Ubi;L(J{kbXod(B{yvX{X&xJX5=%;Fjgf5VI`b>QDv6mEU|SQdZ*Ai-I+EYtt^n zjdq0N+I>DN+)V22W{$bEYK~K?a|zO!41PGf>b;7)Uh@0jE=7Y?EKlih&hvNRW=7wV z9LgDa0(_e*{;Xxr4$O7q#a>*A$T`Tg*428aD2K~!oh%ZB>G?^mh+j0=^(rI=yW&O( z&Cph?54cg;OSG!-nSfoK)tX{H?yy6%1I#otKRFWP0aN^n8Q#tNp$lD6F^=anf+`|m z6yKdl@wd#%(N;} zdFt&iZV%MFHh%rOD!RG0;HT!KmH|z_UK#EOy3nw1zhq=D!t-+)8>TDaIS0lWrMcq# zayDtJUR@YQQ+?jI+vt41+2AV!PrZuGh!NnB-SeC3eNk zi36@`_s)tu_Sk*q!wdb^2AD&av?5N<);s*S+afFXMl>`l{iE!P%ReDr?As^#$^mmG zN(ezc7PCw`>P54uM5~Xa3t_*_z3)aHfqJ(uxGPL!8LP$TUo&?)=&t?<7N_c79iRF! z&GBM+h9om~cI5;R*nN$v4kqaeS2H;85Y<-M#^_Kjgnp|-sKUif{Z6JXA=c#&&FCEQ z7rJR}o3?Ey<(EN(wtuLuxdswB+=f1-jDv)!>xcZ8Osf_81-F#1dQP;^Jza;Hl^ahf z62ScD#D-Hv7T1Qc#}l0WRe2SDec}c2+ieVAyc}^F;Q0}2^(GbT);4H#xV}O(1OA( zb;zK;x9yDvI{Wi4ZUfem+f!5Tb|x-hL3TGz`A$=PSABE=OphQ`7F{J#{zts`Wcksc zcC<);%ljLs;?z62e)T|xd^f6Bk^;(mW1pCgW5)xH83V2yw6H%rZlYj=c6-awy^apS z3^u*O(%-%Y@KStq$fM`opGcIIxwKCfV^0>7;ZVN(84!|wh0jM~7JmZVd^M^CnYn1& zKi~RxQ+DY|jbavATz}zf(9^{4HZGKqIGFU>}El};66I(c+*OX$g@ZdZHWqe&^V zP{P?CnbZG-6{>PGJVARBy7+lUIazhC$sq6DKDj}{^$#lR`uhM(!pv~BZAQGl_|{~c ziK+j-&UA$+_O^fXiJq8k8QVbF5t~tqB%hUS_}09L+?ts8ba4J(Y3_f=X}!k3x=4V_ z=rmL(n!xDG$D9GQQ>v{uhSkjMF?c}we5VZMX8j`jmGb1yBAem%JjPtsjMgrJ_O}g5 z@K@1_b>&kY6VTDsnWxQ4>20RZnoHG=bi4QUzzdEV#rYXM)0m+N;c3o?%-ai#!U@e5 zyL8)~zSbtIY>6`wNKfirrYS|FoB?v<*H3w;+=PnDoLi8Qk?bT|+gsMD3eQqDj@rvA z&m!A7W=JeP1WWphm=_;4U2!+wR1HlROGQ+pkk-nm|7Gy|NIL~+jTK0B{Iboptytos zjh!=@f8G?Ed}O76J50rTzBmqEl~BbK>v_As>UF1V>?Q7)hCw}viW}rihA>~b+0|^` zvnv+=s-Cy_HZEONhCX1QT=UNieR3tQb)nrLW+S%z$xr=lD~Us<#+G*<%zk)49XZ&4 zS1igOjQ6!|yDiScSHa#2ChnTqmO}3zW{+6^9PuZO33ErA5n&NGjC<#IY0omau^7fU zA5Y~s6$>5u(`CZ*bUG=~meZlQG@jPl6i1`(P4*n(Lfl0pfenf!(4Y`TR~}4}v`-*y zdzy{K00-|)zP4>walLtArhWe5#t$@bV10jp24?e;LdW^%QnUZxp$YyQnrS!ENjSsY zBLp0z{OqJ{Z5fbJZbn{&fm38TW|?a9VaruB{3np9{`*9dPb`cUC0J6Oz}=Nay{6^N z*YE1~jbBJ_>GIsH3wTl+^=3i8Tmz-g;}>o~-`B7_ z<(9L*7BTEV@)Go-QK0WOD|4UJ*B;-&M1r5JH91V@&QQo(2J8lPYLSmPW_%(a(NweZ zkJiG&C)kE^?(sOc&oDh*yh$-2<8Fg6&ZTpo#aC1b@vm(A`$xr=q1@M`BP~_ayKU zMp16+uYEXb^_}tT@5IG>FBok#e=9;ZB*jRJk@N)pq;T!ORX?8s*_$-=% zigXESsJp7q2~by7@;SE*If6Gc1ea7BK)dicRh;qGRw`#O#P3BdQV}R7WJ#e{npuf> zu4GXkH`nA1I$;mIA%dj&exGlT9SAHpH5Bc+N82L-!|JV@@CL_ZTE=|XCmI=2r!91XdN?9paa z%x?X0=47N6o9-|;Bp{gR$3Bs&ZKYi|kZPPm1mVlH)%VQ7vM{osB#`G?Z#@W4%Rqnd zyj0zki;F22-<$76>PB1*h67n5WUt#eY{Hb14YjSnm_ z13p6R|5u0d|III53D2*s)g7Ol7-;Ya8({=oTzu?sy3K^~2|?J}nvHv9@X;fZo^3Sw zzM}GC{)jub*g_IYKOeM~KwN1(Lc{HWVn2A@j)(fN5Nv%+4t}YU)Tp1AXPcS|bHDg- z`c`-1ujfn;$a(xTK7Rg)8Rbc(`#Tpm3I_)bn-)7Yk1SSJ8gp)YN4f|6K8EWpP;jW_ z+kjK@SnfP;1uI}Xcduj&2$J}$y_1S+ERY=}P>1PoLyzE_w}*db;Vj zL*6smkNeOH&9hetxw31v2s(aBDpV}tfak9gp>&i!l8W2ILF~bvf;-bpuU~K18vYp{ zpA6f*f`>~j+xDJZVW-m*mo3nShbs^1_5|h@cE|g$b$5o)S1aheoPyaO>4gKy+^KRo zEmca+f)h`$P9Mw5SjHvQzY8|5Z)}vy%Ug#XjFE&3ij%%rpyZKaH)z(?(a|07EOFTC zPM8nv4$Up>wYkQDs1y0(Wa2)17A0RMzE!r`;6*2%&Nfngwxn)Vf6od&bQOx+)LyTM zK?Ghq&3I~_198J+TKIpCHB z!z7$-BHhqP7+&Tu^7VnHjuz_&g|gtAxUF08$aMnq7Dz0acHnDNpN(?4hJg9FtxfE- z`*{QVmEGKNjP#>d!9QM^SeeD*35+bKMYog z6fUv_AVK&>cQSNGXeEwJOq$<_DSh~pTULdHOAoqxtygSHvgH7Nm44sm49^iUwh8D8 zE14RbQvFkMrM$8;KK__hwQ#@M>tq$!NC)@W$|10lVG#`0ZbEs4ek{mneCxvM;ptiG zk|OxNg?(cyC|PiaWWcN{q_k*SFVSM_&*!QgSJ?Jb4`?^@p=DTcPFuEAI5iwiE1aiy z0b*Ggme%srjZnBM`U;*FpDYXV?(D&bw0`jkn5%hoXm}rX))^vel;Ej2*>k{OGCYy$ zJusM4u~@9WL6aJzj%D6ommmY9NKNTB-3I?oYvHwPDZ+_0VF1K(?H!|m>K-avN9st{ zsQj?{Qi1j=sr5}+qhV-FQi8qW7^$zBi$9lP>CYPF_;_7#RitneIEQ84YNzI+%JK5s z#3>Koh$UG{(Y$`WX9fGM)fz3rE%NaDAsv&}jq8e-3YQK2$NYE=rA#d!&b&lg^S4=Q789vDYvuC zauZd|YvMoag?rAPhU;Bjq{3+$sNl)0aHflB)n6bG0W(B-(kae5S3K30lY(nBv2~Wz zids!dGi-2yrb|Cxl@=!{;!j zQgB{)WERK8$PS^*^lfnd1q2y;n0*nSv<1b@_6QIkN(2Tnp;6J&M-tMDT)>~do1so>Y)o%}Yzfen0$Vz9K$_$BG|FZ4W( zXXwJopMEi?HuffJb}iw14slUqWHpjVFx{|&cDt~wIgKYKn|t`&#>TD2i)>6i{uZ|UMYYXGl4;Nt8$=6idI@0DhXw-m zMI(#Hk4gqnYWJ_PCz^{!NR0U+oD%Aud30LMhAZ^oIokXB(a7Ix4&1cYfcw95mITg) zt2m~3&UHwB%~<&Yy?e>59&gmyqXrz53*3>qNGaM`J9EDCLE5L{q>-g7jBf2nXX;8i z`>OTJGoD|_8TAL?snRbd$r z^jWBC3SBf>vN~qdgCohdYb3Za>LvvN1fSPz`331$NM{Tl$;VpCipnQ!SA6&%sXd40 z)8+7cT*3MHSvQ3lt{wJw9vEG>0?ALiZan&Y>zN>oun(U~Y^x;UjCZ`z!>sft1*(Os1Nm=Vg zrEB&mc=OFJUluP@fo;B6lGFXS5j~#9SjnO*N6AlG9@`$RG=EkFyp((Qzj+A1Z67`h z4cK~P8A)NMhG@Dj^_-VnRE*~|YoBL-qGTIJ*CCnSI563_cW+B{@#0MyI3bCcYbu8X z`mk4&cJ|9cRd9#bk)C6`9}{4obaMdND7ziwg4RTzb81?6R^BJWv+CMR_b_P5*axO5 zJNSEiq_IW5P&_aV(>K**z`!dG8@YQ=;QuO;;qe7b`(G?%9!(qcdH=7G1Vl)J)kq){ z#!>0!wtoX9^y0`KO@3|dfAJHAdzulJX#e6ZE8(={&=B6H@Z3+3e=!t=GrBY|E7hI5 z4Forgf7KX)K8tGod$UO}7M6S1EdX_V!UCUo<`305RQMOA2{T)AQzE~P3kW4Z6i7m` zK-6~#2VlN$sy!q?n4?*K3(o~A@c*YR1Rqj=6NLxMz4iNNiH5|SBTPVOsl_sPlxTxa zO6mR)NZ*F+K`P(M|0AxKNU6D-doEsdtp-4^?+A=Jf5cIk2MjJ0AJUM+2=6RhL0$>{ zM=y#>5IPRg!3fVCAu;Je#{cgSfk^n)C}}PDawYa(xM`H~M-MWsotqZQw~8!lY)byu zj9=feI_Q{-578zE-Um@HGs0Q7r>9l^8?@e%8|y5o8fc<}R0bpi> z#enZ~6jnuip2_l%m!C_j@DCYnNl(o(RKGa@ccLNZgx3x zQDv7A-t_b%5yEw7;_YPR$)__JL3MCWL-)VGA&0t-Gcmuhy-3ulLz<8W^J|NABjXXj zQ5$iPhiZJJYl=SM%6~rx^h#F14;lYl$t{F$U zuKQJ~f7t*hb6!#kLXVYmA$QB<5LbKie4Bj04oyv3q)+3OsmA}1B&K5K_H?Wn*Olkm zZ`?GGTc?h@6#Vuxf|X1hTKZlRwNx4`N8qJ>!~h`ZwLU>>a*xT&zFPnH_8z5c#yy-T z_yu~MwM)jXoM2L86=AY&yvJ?KdB`|$$|0!=D4h%;=_4EOp!sr&R%zFch{2F>>T)?p znUMS6SUmu;F|tKI?Wwu4tm?Y5&o{=0ZjKh6Iq4h%+eKC4m>%wYs6R^#m?eiBj4@zt zqB=>Gbj=5UXpmwaVITQ_q?}`qxy)HJl98tA5%#~dx&+{cwsQM7f+b4aY?QK}7*Xe{lskfWz!R0y zwMhmUyHeq->8b3q&Sr@|d0EsS9F{Bde47S7B!1KrX2-P37@ZG)N?=UQ68CRwG|42H zT7KM=bIp$#Es_S9sz=41uR7{&$H_NEx-`vjOD-Rs(V}m2VJtBdP8eUhktEKC)2v;I z&LyBCJ8K+n{Lq9?a@9F6a@5 zX!^+LyWS-FCHQ+tT#~xNkhvNlmT;woNx&p?PqEQSs#^zL1z4h=b>?d(LdFQhA^-um zqwv9u9IDag{c?Fi;ID|za|n#<9EvZz2thJMu?8txUiD}W2wX}VlmXoJGTjIaMmWf=hj z3|Ow9j|UN?kngf8igkSZwIR1A?!R%cExGoudmwnPM~-FGQAK)osrCd{0)I75H=C#G zO&h#(1$iu^2le<_P|Z^t%s4#rH!I*y9)AnVO%?q}2obdJ=5ii<1jNz-f>3cbQ^h_H zR*}cDpWpyE^KB zw9xldFnT|*DN=^U3;16Cr)g2-4WP7P)#oz&dKg3q^O^5kABmCQG$;PfGW4l2w%R%) zJUgWX5d8Bh&v^6y`>>!ANOzLE0erct8J;`k2yEt5IbE^;^kGKeK<8%s;)euCJKJm2 zMuyY)mB2TZzqkyLRS;zcx;B6?Lmm3Ba zz7hl^xe163B@2SWRLi9KYA`jYb|O+3&5ANLKYF5;JpQo)mLSw)K=`r;$rP;xn)tSa z+87b|o&&C{QOxnQ)52n-po?Z@d(9koH!qD3-U9We)hTy${L|)T~81BzXkBYyFAHS5B05h>M9XRjJg;{{#~3d=Qeucd+CJOZ*8Kiad|vsW~WqF`eB%};Ub^q)q4+xt@@ z1!@JDh|_r@N)TDn|Y zCBstm6r{*m_}!@IqfM#ccrJc?F9npF<-p8vBtaM;qaqcdvJ;i#nMjAFB$0!vZvNy) zwWx{BJ};08r=VU~_*3hXob^bngML0U_MeF^<)isnM#i*nH{l@JPG3RBYJF%hoR%VyF!{uAMOhvV`fVr-}*DkTsmjE?F?pI-`+`?5Uhn1XKtEf_O4U}1p{AiJix-vX9j<6+^mu06xBus&fI~Zg zpb%bs=z$*&D2}5@-gF2+7r2eEZ0|S9uVb)Wok|D)y2d zf8?dXnb9p@%~8t zjorhA>4LSF+_q;I?>&j?pMmYDW_PJT@#(FK2=~gW&bFItl7fgc;xz1c!%;=W`$>4t zA6B1P*eZpQwhBP}rQW<9Wl=Z4mou@9Q0Ongj}uG>*iuZ|A~^@8#o{+0=$QBk(^ZBGmmt|J`Pz z6AIz7PxM&mvklQM?Lzl~BQ$;aO~BDF8srKO{*zDV`|4L`(faN+y&Q#L)8}gG#U68L zoUvvvU0xD!2PfKwSG3m5zeP{;^lco8=~he~4yQW(Nf)sH)r9-zJ+9lMK$Yj+_WdnH zT63mUTuR>y-4oDZhFtOBHpeh(^f3V6j!5|_%>8PTw((sp160_^i}Djn!0pgj^Q9)k zSzM~OR14r@9vI$g=KT0%kPf(uC+Zo^DpppRMC(U>nUABQR8hg2+NFMx@ejf-mHJs% zcuLznM_x5&49LwzSUQ1h$%i`LMOTLCL3ILgzS++n4!+JQ5D8yisL?uDUH79pKTI(| zaQpj}FDs+<92~kf_8b^1ww}*tb=~*;g6Wm{l#RUmc-IGoaaPb^}ss8%K+ZN)xW}VgtvLYpu!%zvge(2_-b+Il5w9(qHn# z%IsSAvRjaC2?lP^%!ch`F0@ca0f)b2l$LFx1)UFP9cUSjWN^kyc=I=bX;Jc^16B#` zrY4!JnN~DT?PjhX=o-8OX?v1ze4Lc9qrV@BhY*(aYKj932-Js5V2f=rx4SRV_*|`F-E-AjzC(&DS=QhthXrRJr#`pT2Qv zSj7wsF!BrvqpOP0ztPI1Ipt9yhFkk$Q%y}C2TKVvw`*)7wp+V8zHx}Anu*i5eL6hH7aMD4>HInvZxdj_zU}u8K^-S#O|;4a$xYn8>p}>hDZ#pMv`uTb z-{1GqDPz}<&eYYy^D&+bsxpw?FR!Dl=g_;!;P{!znUV5FY43I~8fT!2E}3YpKw#!W ztp&_8GJw)odTzpNE}#-lvF=s?es`ozZ_EJ=nch?#0 zK;`I8)xX{I00{y{iUg_bgU2ObfUp!umKNTO4La&uz-!;x%xVO!UK-f})i*?>POSs@ z)5#H&urr8C!ZuDixLH|VFBP?s`B3y@Po+3E3(y??kBoP zqKT6s)WHE0$TRt13HA^nK%E9g{W7srEL^bt5qbN@3%Ca8<=QkyJUBsr@}_#hw|2Ka z9O+Oc7WR${I+tvW(uYeuYu27mWentix9>EY{qfO}?(m^;#V&Y9E7Evu?%(SWG@YT3 zn#Pv2JND#)blbA~^+}&C(>R2bNgxm`QO&m~OOsBqf4jBLcJdONsYwP$^6n zRLRNSHTzoSN6qyxV%b{Tvv%^fa`CtND(22^hl6Pa20 zyUOwh){GLNrWuZx%~ z&d{zWlrL3#s3BmQ8&RidThgs(`ddNnuD2OT})}# z;9>7j6yS&)O)QieXc_ux->yrc!^Ep4oNmp1e5!djI9Q8R%0?0-$#0wzH3B1=Ox@>y-8( zj{|j*#r|w%3z=2aF9waBdUX&&Kp0i|8{w{eCDMP?nip`pqL}^+@ko+Dy4~Xldcx9_ zgnnHnX!mF(=*$G@e={@LS1-A>Z@3ly^|Yr>Hoyi?b?I%ZUEMCG3iMCz$s^nTgzEA@ zTPl1~mR{y9+S{n-BEd@hO`J<_LxD`Ba*y$%*L-;EYpVl3prc_Dm}Z!fW2qlDr-bod*LPbMk7>7Do!alqGfFRewJxjR8kF!80cs*dOZg-VvGWB z`A=B`m8$jOI%wxr2!w}=-jXCjji%}p^a@)Tm|~h z*EuCkP5#j(`)N`JePO)j_L9uO*w78*!(PINkK)+qw1zKi2QcVf+KQZN>LcwEKj1@* z6VGNDo#Z2HwveeOKS)#-iH8cFXoF~Mu8F~N1gd4RYNd|hxkl7u#LkASCLo$I8~4@i z?~+dy7`Q4PTao!G6WM*7s`q`P6GWH#I(#|4Y`7q+=4b+YQ>tB+68OJzf!(j9<4g6G zOZmlAgqW-S$K?j)l2p*_ylr3QjLP$81>le2C1%o-!iVAsU13F-`okZ21uFSFmCelxQaa#wn z_w1+S8>#fhWwS@ucy8v(^e9Z~w2Iotg-<|Kd9`fv28hpKFT|$zH@T3#(d;DD217<> znw>30a3GdJECY-*kGppR5{eZ?8xL-}pDZbG)S}DDlYUvZVOh-8bMSM@D~!`Ybs^@v zE7gMY8$1YXYKbVj{aI?T<)B0m>2dB<7~_@s#uR)lI5+Dx`Wz-dgrj9Wq5W6QbIt6_)=ncw2y>CzK?4bYIHuVhs=EmITH2G-F zV#X?}lNnb|r6p?WL4xkXOn>ZTjg|!5?dM7gpAb)xGS|HzR@SmxOR`BEbodz%8Rcl% zMJH2h`S_I$Mgi@H#IWeOflvlV>@e}bSR zh|nHAQ%rwV0E_6yWTl3`^&`D5&5c-Ay?)SxS5Z8^y_m7$nD9Y1$|RAk=QnF^d+u|f zG-tzm)?Gf_fqK?7i19t9Q2Z}K1Vo-8sigP5nq8CLHuV+d69DGUV+*5z%IfiIe<_d0 zjO*CuQ-R6`H2I=a)-8A9A=vwr@F=3qujJgb4Fs zOX)yl)#W%BsqWjsORf(gSyVYfzdK97sLs~L%v)7Z3|33v@?ej!rp~4V`c!?CEC^4q zrCD9zvwRQ>9Csy{tj%Ucv}AB+L;#vw9i2sM2$dxmD!aa(dZ=}CvG-J}La`J^2d6;$ zGVV5)YA{*-QFGQAL8*>PO4HjtcMGwPRQdgqtVK?~>}aXCqcji5Il>+N+#Ln>T7TT$ z^=P=2Z37bus%1nhJXh`8lqYzBuD@~hn-xxqo0E9G8y5!;eEudX6Yy<7-VBMoiUlW~ zRA|K34;74#4RjWn*ZB{H^(7Kmn(1>k6fA7; zWHo6?bR3F^153X?SNu!B+_om&9M4%ozt zB%G!F0vRN&(=5Z3^S-gghFkJob$lUxRK5?%G`P2#WNyl7mZ)Ks*nF2I<-q`@fs?wt z3fHlfmG+M~m$)PejoOdoBzPJ}j#jrnxDk$=prnB}u~W~Uj^}Cf7{NBKeGEG&)VNk7 z0HI^y8fN;@-hm52BfrEU6vJ5_FuQmh+EH>wSODH~fzJdq&2e*IR9sSG;%1pAS*$U_ z5$>#%29V=`u7fS0^3LGVFcOip;(LOW7Si(T`4#j&te2a++0^3RixUGGwwO%w+s=)`$B^=<*sjmlVmlew#9 z+%9LYws_KX{ZeuDzNg1aS+H8J46uV9LU;x!sdiYYpHOl1xw3byOonR!wUj5(7YRf} z6+vavB#!zML+;OiTO%-70c zYH^MsY3*l0l%(CbFE$DVM)2GHpN{p2WES?-e_A1)2q)j3`EgcxY~D5>iltq%VSTx> z^u#Kojv)a?Gf-_+O=X4dE^i@JAgwveG40(sOrFEJ{LSy?ZM6P&a+adOqTnUY$1YJ4 zKHHSh!j3t=%O<<>mxxeCV2!tLZHVmFrs_ZZ*yO9N38zeme^y&AS0Pk<_>5<^%;90| z*oZ?Q5vgn*IL36XXe#X?WrekIjl?1cLTF>@oi5qsW-`G+K}LnwxXY90^uD%k#iGu~ zBcK{~ZGm+Zsru`wrwEghllcz*$#zT~^kn7nyg^}!>o;oTIgUYCWj`?%QV5@&i|ISg zJG^`K?I_$gxM|!0-1>D#BXGIlL{AOK)U_ozLcvC~v~z^nT3~djFzboaw`^LR>h7L; zY7f;E*wM&dN{3=O+1|6ixoB={OGq+Byz>MS2#r}ZK(&C_3pj5XHFa?(1`3hOS6-Eo zQIP!{zUQYgks9_x2Rjx>N@v3h&m}hP#zV8XsR(3nOTQIrkR=>9exhGk{mrq8enkmm zo@87!Ea_)a0YL#($Nszo4Lgb;)*Hw+cw3Np#!n6Px$w?#- zm3K~0bZmhmW3DG|++k+nc>4`Q3Q%FIJzJ4p1Wr-AU2I{u>+E0ED@8ic0KOB+MFmd``@N z7chuXqXUFWg$2Ld7hc+g9=s!izyJL!OgjjR*zZ62O(QZkNGD4#*RJsp>*&>ciP|j5njdue>=yfbMD3)=fhCa^^P`#7cc^EDn$Mt z=C1m!$*|w6NJ)2%mQp%LH#6vvZYe28HzFWCQo2zD>F$zlX^?cIM~}|)_`c^)I6s`9 z*fn--&vp0xsV|`}eBLEZNw;6q?1|fdKBmV|-b1v8_oC3qeQqt6^51(s#86<0kN+ku zJ)q8P`H#)AN?|F2S*Al;tGd}xFD2?fpm|~VTWBk>lAh=9?|_B{K-qcWnjl$uk?gs6 z)PJa%=j0KFPz9CcV@H1X%m6m0rXI$leE?B4_$U56r<3AHH~h1zi}0GX(>Dbm$(ryu z)gN_VsXo~j7nhN|)vZX;&^2`?hbRy2;Ofr}ej}|3SCCzbWR`JUwo4Kk`)*mGep6Id zLXpE`3W)k@!YMnc!qn243%T^H{LOkMjic%LT~2y%+AyQC4`UrJ!qA@w420-cw~w~q z17hT7#9EU*aT6pxY+BZ7ial#?O395o4S~csDP_V@;h5Z{q>&XS7dTXk6mLi1;Zy>4 zKTGYm=Oe6%B0e{gLw*}8>FWyhnRN73N4~gXyf=7=whi#53_i;uI9b@})?l;3Pd-D*ltNjlDlEC+_p16_?hJKE!R-Fz4 zAo|V7EKHbwziaKj-mS_Ina&J+V34$AtlMHd55XjID5sDnUmE2v8*sY+5wB9>!l?aL zl&3>|w!{6<9D1t#6M40hi|rTd4%;=V8PE3IcQe&DX1++w_Mbg#9M2q2*$Ab0yKmLV z%CWQHA_|C=Nw6dAEEZRoEgIaTZEBH`V&hvB5&jU>A$vDo#@9)Pg5Q1$nI8zw-6q7ik(cCGFrHO06Z8PJ zgi`yMo6k2*TbG=e^jT1YZ=)3Jv7KL(X4q1H~EcV z9>5V{NP0xyMxi3eas%@s>fM^@zn2PyELdWfh;u+sUJY7oJBxP~SEy%6dUjhS_D`9; z|Rq_*?Gtup>jHpqJIb#g+Z$Iv`g)BrJ;*$^0 zIbYm%;bV7u+yST|{cPm7TFxfWR)g6_;U~-Og}{)3L7ZDetUbT|puxV^?UvXEiY#9v z(d3aVL?57DXm4}@75uAYp4G~36O3czarU7>At2b+y@|mBw_73W2a(MV%jch}0sV2^ z(P}cbk|x#@d)qjiEg*sFVj_KWDAQ_S0rU zFV>~^0drlJ)qdBXb!KY>`%MD7eyVK#e7u%PQNFU*+;J>G-V~6w%g*oW&wrm#r`E8= zL=0r->@C&6S2`p(8t(oO1aP$9chhV<1o|Kkdts88PcRZ?bCU#Rl&2pKTOTxTf{g++ z-oB*}S#j^+yt$5bN^nO!jJKV`0I1$=y2)Z$N&nm@hoI*ZV?pnX^l4cMd{$b*!C$nf z^8I~uBT_9^bZFXRb2UZ12occoz~HN&>`q&`*CMj?;+$u+OyhD z5EcV1t+N@eEYT&wZM&J!#ET8~v2uz{q`pQ@o)jD@y0$(6!zGDF?HiZ7Xy8>w%3QG9- zK|bpL_#Fnwg7aYP2$)zfkt%2ddO`K#o#P*t3iN6#w0_k@tGL-G zh*$(J@)oLkh?l{xTKH|)RWX@t4s%gCvu>WTZlA0_dsZ^L>f_guodBGCf zOW5Chje(T%XB}qn_@T+aekRjL&~KGZfdz!n)O80y9f<~vHZvu85>##Uk>g3oi>k5W z*2y##9r%1Vv5td?$Db!xegLTAQo7Z5`;}$`s8AuHnqA`Kw0duwSxUkbx%ESUotrBK z2p=~b|IT3>PaFe&r#DAb5XC6&F9mvm4|+}5uf`HFD6kcIcz-K=T$Xcd;ILRXR~5qz zo4ddD;BfCQB{H-b*zdTTGVJ*wuoI+T|g=-|SpV9sMi>&Zq2P zV)DR^jA-?y*SRN-kEEwP7*dK_Wi#<^$!S#r-raZErA++cbDFRyd12tZ;LOi)R-0P$ zvAFU4%i_Ar`$1CRHY?qH<-}(`#0l;EL-GE2A^UJ(L%Mx~?s!{(CyK_YLzmO2-2f!z zA*bpZY#(;QX6nQLKWD|vrgauU^(HB0ejRNQ0u zde&iyDZqP<-pZe+^}ZYtRZI-QVue?Xw=*G4o49XN1`gyJNFkpj%@aNfVrIZ+b%HpV zVH_sm0MEu4OJL&1;I!aBpz&n{N2*q1)_MN9#_G9>DnE5C4Mx#=!rw`9 z^{J@j{J=<+sy84^Kz*=YMLAk|M1C8*(QA|(iIal5(4w#fO3_Z)8uMVaEb?KXjZT0) z9BLN4gpb0!Co{iSkB~xe#eTUAyeJHx92E7HZN0w7;&Agx2{nW3Sx6ejy&t%4@(Y}z z=|q8DPPSY!SnM0bhLXVWW_hEwfa7ja%fNYZm!GZ^3C(k52(Ot0Q&f~ZL{rP~a66fZ z3jj9~&ln$$5_tw388ECxKIza1H@qHlrgh1ULKq$ff+~$w9LpL}0jBRh)=l^sJKY`J z!eKW(BBcaw#+^xEIl1_@DOr*&&j61S&cN-%@!>)fT0y&ly?WmV2TA6YbW1>b{r)Yc zzTo>e8Xl_!YNGda<{#)eJ2v|}5>yVvY&Am_mM`YD&Z}XB{andlvdqoHJqPr*@a#KgntsFP-hpZZ83g^n zP6fAh(ZHH&G&l;HPt@NAQ5_(7?MI0*oZl*bNs{LN`RK7RsAjzJf-0lIBA630mA%OG zg8vIU;t!4s@6M4~?I4>J{2Wzz^cJJ0Vvv>jkUOUt1Ln0^v2t(?AV5jJS| z7zpRaKkv@sanY{{0=B*w_SSVY8neF;Pe zN*{UQR9&7&vn?LAe{elzx_^DEGDCnaXlcsf<_pzcyPK^uW{4wH+7qXXPy&4|VWgu8#P#A6ueo6ONcjv|wAX%=DIx>>&XC@30Ji|BfD1C@ipMvXi^`Xo#`lt1b@z{ff8oCir&H`(0z zue!(WYcGBc zX53Xubi>VbY5^8iX-9jf9)@JI(gk>8>wo+>z#4FGR>V5?F;9fcGa5W59AyN+d{8Gs zy3zs>wtOn;1sx$mES0JPsT(8MBkq6u|7rSq5%+p&l|? z%}+FA+*hu=T0vC!K*Ek@cn*=ZCnh?7$Ql|ViN=+pVbZwqfXBo$}}Z1Er5U=roG zyv%l%5wChRtn9zQpn(C8uEi~~Y)t%zO~_S2Id+MyA0IDhQZZJ*8(k}IYOvE1bcXpqdnnvYp=J6dS(0#1>uks{Xt?2yMu=3lZl5ePOdF;x&>ItY1A$2-rN06e5p z9>V7IC9rSY`l4%lP{wDcIr4at^xxL|n|)OMO>~cUf6ZUxy1^fbAY+G#fvI1;heZEU zqCK7toWR*9>Q@hblLY2IVuul;0SSp>+5FCmzdJu+D@sHaRSIZKye8fct89tu#SIva&n(b1kaFe z*T;Vm54XfNY-Wjy^dju9%kW#+UZMA*fVdfUj^_cQ=oRiv@K1k066#{=PV^mo-IU*} z5mX@O%D<@{a+~K(r7w?bJ@K9Rp`Sm=JgbjV3_(EwYgbz`VdC2_^F*GTo#m4b|IvLpn`U*fb4g7*RSwp zwA|x1MU@Y~jY%45)eWs#xYf{jk?$4m8U?!QLBb23s2otd9a=}lx^}nCVY>Ieh>v8( za5B4_TX9bjs{F8A_=pNvswG!;*@msh3?0bPSpYzfxw)$1eOd7zylC#e)?mtF80+c{ zz3-oc;FNgU8@SietIv&p#GKy8E`J1)A|JH1gf!0q2h3!Dq*$PE9zv-WuEdX5o(~)DWKIJsF z;TBC0A3D)&AR<_!er?B$nk@-nDH%d+H$xrLazSa<4kAwJfz9M1(5F)rmxWZ%ga^>a zpP!!>o0nI^^Tv2dZcF~v_bL5U2Bxef8oMKPdhFsGe3#hj2XV? zApig}2P!MdV`_(_nkyFO*`A3qx^VpGo6R(bNu$+|#*g#K?0br^wK%JW1?!K58h#S} zwQ?LSvl+j-*=VxboDSb8CxwKsdOA0%z=}jN{&eZ9%!7h0O#-wcU4D1*IgVo}y++>2 z0OPu-i!b%l5}vYm$o_%PT7`!{Dd0-M2GX0c>@*j;vTo2q@l@Q|yE8qUrjCJZ&ejF= zYU~N9y>(Cc%!JmaxDs`L0vJx6oFsNLVfKbbup-|tTbMR>h)(Va(7Httl_;FM)gqmT zwz*RKSPmOEZarl2>mNWn0;j?z&MLgkztdgxRzhzUGhvv)c9kHsFC!veq@-WxNm7vG zKun*4mT(WD)_N+5za@=O(?x#06KN#SkS?)Ae;dc0E{N~mY49k`^@{-`?qFw`K!UrW z>*??&g}6{SdY)P+F|cq5;VRJ;`0Wh2TUYHh9}O)Yim$WH_7J%;@2(lNofcN4U1x{g zZ+gAsEfz|)gejn?vpduoG7R{-sIzIhE@aZc}urCE8M2mA;u!ec&SbE%J+8hgFx+MX8E7FU`^0#EFhg( zK>9hS_O`yvh;A5xjk5e_0)tb}o@s8at+KdbQ-E(j{wd4@$4ahPonR$r{$^_~=R7Ux zx#QD>`y}tJ6=wwV6aPiP9QV(s9hElKycm>2w+$*qrEd=K~ z=ca%3yZk14@-;qHhGuKhH%_f}0=Jw*8C2!B)9mOXS`GIq{OAZRQ*RJ6b&V_p`e9); zKGENq>sQj-?bWCeB6(1^Ng`f(Bc>Hbd zTPC9F>)%CghORKHBm~&zRxpy1l3xeOTJJ?{`3}u7z{vt_e?D|Gs|{Tr34>@`kDm_n zah!(~*Q}E&#r^Q5J0Hyo-+lw6H422=JVG(br5_KyYE3v{L5gu!vxccGag2}iURA-;P!Iv zBD@_ftl0w_n4XU`!#T2_?A8SIt*=}Ece#6fpNo*kcE$UGBl0_l22Bj#kl6cFJCgkc z2i_%%w#Va~Tc2~O+ zrLm=?Ftx*na8%#%0P?^EkD-&j`=)idvyKmW`mCJ9RT)K)FD z9>5h2p&6H3OP6BEIk|6XwWK^NSipB@cpEk+maO}(MVJlENOyW;R%8n2#JhUzrKqIg zp16-DNKK0CMd@AI;XFp8t`}F{qI+*jlfdj5zhYDVPo?u8f;o7ZY}uHS1+-jV?o9n@9{~cvvw27H`ODde6OA#ex98`MI?byBhVkRg z91V4JXirla6udkItJ4=f4^z+}M;njF$zY>^4N82sxn(9|l?|2Y_AzE%2>0Ydn9@sY z9N=xdX;oRj4U6 zu*T|f;_K?~-DOg@WBJ^rf#2nT#9=E>>$++Cq%Sj{rVWH3TqSJ_Zc5#sI}P z8S#(t2HeceH~>{A7N2wq5^eVTeF?;e$d#M9jI9r9^k6l3b74nN{I9*`|1b^oA8Yo% zp`vk*c4?>;R<3aJb1PpNHTQHZA9sd+mh&F}@ZrNKlbjeX5X+)|Qbv$gmr)-HPtdFh zCnSb|#M9W@eU^E8XfLE+P-mp?ZFp^+eBlyTu+pik_c(pOl}$!d?_uO`Qe0F@S~BZQ z-eiLs$!~n>@_-UQ_@rvY(Tc56F>r zW9PZpefjWF@@~iwi0yn1`$*EyidgBafe&pJ#XKI3&_vy$M!I?adnc zw&S`UK<{;{U&GD~WK`4okN-OE@6RUJeK=C00tN{18|U<5ADmGG(kA>-ucHAi2<_14 z?^9iD=j8>vTE@%%s`S0CJ@;jG6h$SL zS@yySr&+nBsGrIaR$i53 zDXWgtW(7!-KBBGD+;~LqR0SX;bXMh04yP@xc&Oxa@uz8E&FHNgdN*7u@gZ$Co}^tM zikMg$v3-&8*KR2fBJEB0&=`;?+17k}HySwP|H;7pa+cFW!^DK!#QTuMH*HSJ)?rKz zj!O;EWILr6lv^SF5}V;bE(8>5p*c6D4|qp+(X0aWjwa-r@vD@MF62XL6Q(8<8ez2M zeBk%Ws6N_GzGoPmaM?Q!z7D!ty{m1?T=ko%z#jrL`FO2r@w~O9#6BIoy<3hQys`t4 zp#A%y-{48`EQKIUC%BKVDx3{*8MSyo7Ay5YaIDqDgB;ZdDW^+84$zu$e}h>u1Yysa z&_hG30g7#Il_Ie90{i&JmySfO^|t}$IgyIP z@6t_NE1k)B9}aN zr5@Txv4F16X@h?a~3#r+hJs**hgJh$@Mi6;%d7bJY%eMTAv)PEYP z5`PRMIuD~(A0hiz3G+d$iynmo?M;Ecd)~)4E%bG}NS)&aUDK%Ue%K<)VWnQ4`{6c& z{*MM(W=g8Z(Gj0-`+keoMlJsGjrS}xr;FL@Dm}(<&kj63a}Sg>*7mzpd@O6lk?nLP`(F9E8t!>LMEpzY?SAKNVgYFI1V3mwG=&(c&@(L)t2j*5=qO(Ifp zb8P4P$0;ks`_1RXTRes0n>tBJN#Rvm)&sze<*x{Yeu#X(r8xj4L?b-BpUzX$*v{)e z7)jrIZd?q{nLYfN;;x!2HGzkDA)kpf$sPOH(RGJ^6D787Giv(2&9?ROyuTXu;>C-R zUcWBUAXlu8$K`CdN{t>VWkv{t*c|BT_2_R3+6y)#@zjSP8=5EPC_m_7LSM;0>_zzu6^Ng=A4x$wLZM-<62kQ{1Mn{C~-Bk=t4(p z^er`TWZf>WL);^UK!2%+kCuY@zR%}bRI4+qSR?fQjy|t2HZ0qBv^fHx)C>twH`xLD zs@=iQUy3hQ;VQlP>3Da-LofjQ+h_*_3t$lqHJ{O1q?HLLQw11FT*MNrtB`K0y8m8D zs$H&9{S+VJ#c+E&elb8J>cq;U?>rb->qM%@R$tN?3_jhY<%bbSUNlP_{GH*2@fIRF zGC1bKF!^^kNQQZ(&URZ|!~+|*pmxOW2_Ab1U#M=PeL4for9ZlMJA=)7^ycIV@6@aC zCE_w-i8BJJN zKzAhat%3qozTBuImFiqa#|@^Js@}!sp_=y;Y{<)bKA+I4#U1Nishatcw=mV?(stgg ze6dzB`2kVDBN2n3C=(wzL4O-i`Ge6V!Y+>g8Slzr;EJ5#B#lHXFcC_O$O+&g_X~P{ z3*|NLxX!~qzntMhK3*wSV}aILm|$4g#_(wWiDw@gVW0kfloLn;w&RoZj1^}4Xw5^SbhwEHUCZWBt_+3Cm|=YMkBnu!)J?l^E1W6#cu3#Er(eA_}r8 zFt9wL7IOp>t-P9g1d1c-9zLj(6*6Xo4Fa{$drj&5luWwST2JdQYrR|I^y^_)$%}`8 z48g&5B-Yidr;)=YtH^R1(_{dO_gAF1HW>1YC+q{2`&d`fuaEGCK1sBxm8$a=_D)ys ziCpOOc8BG5EfZcZhP6?`3z8-6lM~c__;5J37HBxN@3{Fa1A!5Rg;7XABmVl{amDRU z9ce%JJ%ybU7sBr9f?5y8wjwDUn@q-{fwY<*yjoypR-boPkb76Y%rJb!5X>hEy^e0Z z)PUjKE(XZI7Zpp$`0_0NDQ8&t7yc12KCWMvn}h>2QERHIm0!SXs=s!3DG54tyX)AI(*+kQ1^Sr)v^`8^rXe$*?v8FeDve(_&*;v1i&H83eT4TvXFj+igVx;-7%d(r zVra!xdv-);KX#y4?5yUs*p=uy2~V~Z!*#g+jyvaUXpF#0jJ3tihs)AQ7}oETN>{YL zt8sPNbIiYo?we&bTA%rMNxjrs4!le~I&`3A+g&G^eM>fEAq4ZH3f|E;3vJ$&^!mmb zEIPw%z<$9G1BZP)4APgUHIw4};`^u>WOgrG(6@*RzItbDAy#gmiLZW><$hPT%>JW0+;sR^MftBbN%?^xZNZ|isOcs$>q+ed^1o>4vu^;;sWB=W;gDU0QT-yed`5be9@CfrcY zL2<2~zA{FHBQ<0uDQ5POWESCAXoD0!y0C%!UO5-h6Ahb8`I@p-s=3FVq7lAT5^ANZ z>Vbu8`a%A(!+(G+dGF@w0ov3iciiwAi*al=)0;>nK95&QnQ!h-=_TLQ+e@4#saho= zL0eD+&(ED)m91>+c!%ol?h5u)1f(s3Nug}u=5%YE93{BkM zh>o8)H+aeXl|?Tc!(ZN$nxIP-vyJSI8Qr`25zWj5GFg+26*-qT2*Dd2(!=0yVK8b+ z=g1iPL)|eIGK9sFPN(v*An>XGx6-?*hG0zGE9s<@H@(?=h=GQT^{Z+afZ}FPB zQac6LL?E@YinKFsoQS#ps^-249ytVNx;8Y+;e;|Ry46RIjfrdb`x7%#fx>QHUt`l@ z-LkJ6Rn!o{sf^sW*y(rbu=3~6q!Hmrx+y|^{w~o^*YfZ6*+>~%)f`k-c2e=D-;$0b z^OsLVGp9GSsgGv+oDv)3%emhcSuMHNHOY5M#YLe0`=Q)ARXg`;9e;`D327K4Nf*I`>Wwx*JIY)OlKedn}$epmOTZQz?<3ZmP zgFZ~8!@WC2zuyp8*nV-4&o~H&Y9qiJU!+Z(9yk}zld2eaCJp0Ki>fMJD*w$3a}hLs z`C$?a-`71OS@vCv)8~|>7gtdDO+Z3`F0sZdogUoUNyDEW!bfmlq24#)$Dy8EjO89u z6!&BTG85h4wn2TxaKx|tENS^cxrl>QM6X7Q@!PX_WKDogs95apzyTbE=jxc@CPn)Y zepo7|hFa30@&fV?CRQKKT-VCoU!Mv`gcpl|R))Cn$MW1zhK3U{*(s@6Y(!zs)UM*w zyRfz+Y7oLk&J7W6TTjtQr?K+=LdG{e2ig-AzQ=lWIt)*$lj@Lid1hoE-cyjaGTfM_ z8uyZL>x)>jZ6A@w8=l{#kw_&q?d5X&!=Ywe`V7_G``~JzV--5oMtE8hyfPD`0dNLsjjj z`WK3~%W?m96oy@tx0T$XdSHpJVhL<@sGU7Pq~i}S%nJ*a4OYPqZ`vB9uv%4IVjz<2 z6tfh9QF;ZrNDG7&g*t(trMrDNC=7Y)XU^H|VH)ZxAR#-@L@Wt1Xqv|P`A1hBly4gz znuN?TMvV9AeV7g(?9l{)0tI1=fr=F_H_cUp zi3h>EXORJ~H>G5L($9YY9G>tQz=#?ZU}X!3)IOVw*flMsf$WiBteS~2MVU<3LKOt* zHo}+KZ=;!&Wuk_pGQf}t(r_#WCaB4d@$Y^-R6fDCxvNb@ofzip!(Y7Yh;U1<{orvq z_Z?IMc@$K^_@@)tQv!4q5bSEO>Nq_#lR=0_64Hm5{E^G5FyoWD?{`DYDRR$vzKtv$+0tlE>7x|MU= z747uVqGiU2p|pYUepm!2fBib#&ZUPj`ooL&277d~&K%^fMYPTu;;)M;h|Qsxmlo2q z4W9MW(?Nt|5=l{g37>RzZgnOI?_B$IaQ7urxlEK)rQpNE(M|eU5l%q|86_jg-d~9y zmcku|BiHfOxXM_t?mpS}pf0*B2-}tq+u5|WR#c(s zXL%{l^^}+Jrz+6qo$ev`wvFxPSUStOJb#nYPvFdt*5iO3VpRg?0J;u(Wa(;)xi`?WNL}h;SYOb5Vu&qx)7ygGpA_T0+&&%$nb1 zS!qu7Y3wtP(JMYj*d}<~=R2$@Jjjj222n(g*e{%1%OpYQj|d~ufrA9bjNq=PNuLEs zBZZeHRXX`bNrDD)w#ZC_R$np}_>_edMb48rrHlwy)3ERvf81@nbsid(@;;3jZktu| zlP*q&32S>c2!(kGBGKN zwbZP>i;H*<;){JVM?B1Sm`?@4{VgM^WQmOD0|pl)nxWUlghx1_k0|F)w_CLGSw8R( z7~hJNaj)6#Tceq0zaL0$%Dl|Q#Yo4R;KZ(^6EtV)&zWOmum>`k>_Cq(-kGO)O52x@ zQn8XFu-Xr1A!COkGW}6r!hlOK()ZB;&30h4#@zOkgbF;tQvuj^e#i)piLn##)iNFL zl`m*U9X~g#ucF@h3#k0^2gwJY5K8u*#cJCZ<~eTv1~QUA61|uTo^WENeD#Tc>Cvf% zeL!E;c$~TzEU$n~tPp~B^QrJtN!pmgYHxCUkEeRoSTiq-GVb%YdM`b1mdxHxTEUVX z5gv(BZQArJ#pY1@ghFcLs0w1K3jwgfTOWC7l0KrA=$k*+g z%i<~i<{0}|9RWZyYR)fR*%lQ~l#DZsi6@yq`XXgkp?JgXA~xBOx(LZCFa=$=7Oz$T z-3lXck8ma7c`sI!k&X6c&>cev_9`;AS#B8Cob5h+r=&(jUIKmkito!#Rcota_b~V~ z-B)AQI12IycyQg;h|OV2viEHDu}c5!NFU{a(Ez^vG369c9Og8;AArU6uA&qivC(2&HXMyZ>eSQ*NW@)$ddqY_q3|@eo+r z%@|9Uaa%aCzkZ$9S*(^NWdx%}(jkf4c=g6^P_tug7@;Gi7<`)zwg^xa5C) zt`+mkZzn6(vEXyyu}EPzDI;<4T`!*VZt3qLIR#KGNc!)*s!lW_kGX%ZVmzTbce zHNxo07VuKyqkG&eRt`%yzaATmV0cYJe(a5)IK201yf*DwWoJ{6>b?sV((hL=Y2Ur4 zr}PVc{$F=8MEmNdF`Z_VppKy#EZ%%j6K0j_Y16OU4_RO(w{MW=!+wv}KwV9rUy;w+ z;s5CjHv@^BM8h{8q1KFKCCv=gRj42eCsj-Gv-0QBRz~U%jjCa=wD%eEepfxweSb@y zvv&`uKUah-Tbe@Ker^C4C9rk$I^^!JUobSxTrTY@Vap2icyeydM~>KKol^%XSBrV^ zWF!_i-98w&$SC^jJvdaBoWJfI-X#$(v1}_dDE`MsO16x!8z0vqQT{)XT zR&owhftp7-aK+#d9SQ1f^56KdjbrlDBtB%-Pgbj-DgO3`wEA=IeJP^*E$uGaO?cA# zXPFP-4i;$~HJgJ-vMqvY?IIhD==%GcysvU?yqtQ~`7UXicFO%a*^tYVxF>3@j0LRW zVL5=^@<}L?VlIvPGTgtnQ@cqrw#)1cFNXOTeS+d!O6Oo~6mEg)#B1Xie#I@H8s=u; zIB5t@SJ3zZ@_SY3xB_nN%xI8$K}v-7?boLuY6s&_^F01ZtVLW1Ecv|adB)x+lcaf4 zM>2ha&zpsLTm)YttRwCe{!sW?$>c>NEN5dx*#}}U&_d1_=bnp=uike~xk&O(S(gi@ z0!3{e+#V9o!<9K>SG%IW1^uLiRKD;1aHE7@6Y8&ZM|0@4u79=0E88Jw^&)NxZ`h2G zT*=%*TPS~dGebh@eV|dACN?Y4aFN2+r4Q^%5lce-XoFxRR>F7t+AQGl6Ashq6!uEv zTYBci_$3Mg%lE{*$YR4)^?pBvQ1u_19>>H%E?DsdBWMNq^3kj+$`!yF!Bs~H-I8XP zBqO|eO{}Xf%(j*aPrd_#Mc$S?3^D+1vKi^FnvkjCh}0G21sihe7s~{hwEfIz-1jztK*%ya$epJ%>Lq zCd}!Ngvh5^@+Wt@pHu;0sIysZ6(~U3y+h+n^cO$PObi&Fu1(~J%ie`k*u3)5xnB~^ zYWtaa_CvrW6{J+nUjuy{AJu#=0Ha(ALmJM!JP0h(vh8bCJh6I=6lxLp`~4(w(@}m{ z9|d0tdnFBA!vmD7Okk(s%$<@{^h%xg!>Bp2Ky8n(al-(_)rj0D^bJC(3ao-MgLIRC zhWImLqI*FeWuDm>{#JE%ZBp_Hmrp5Ndu)Zp6FbLGW0)hJX__$v2_(Eg;9(I-Ev=7= zNPH^f7xecztNV*u$dVkdg`ga-A{+Q<&~kc#$8<(bO9;m)HTn8Jfqu zb2P$KX=k64Ci)R3`+3=V{q%$fZoXt9s~MBvnOb|5-2k zsS+tc&Q`aWwDW>VfazRG6UEw>$PAiYI#l3v?N^6FCG8#@1qyZPfMBvC790iLX{^_@ zt%``C2lK?_lPT9%zhEI7+rHbFV`!No;EKw?%NRc5`H~3Lpys}Ajkd3dGP;8BJ0%_q zF{O3O9Cc?~3=!Gqw=Mdp^#R9HlK$WQ20vDFsVMaXx7uy8(B`F-+pwjI=f9~y>`0;b zxFEiF2RJTT`7qD#2X$M$^4L=hk{X`sgetNtVwr05fku{IP}v8$RLHkUxo=BPdBjNy zN2^op7r*~-*bUb2Y0ouruL(9PbXl!?zF|!d;fzJX+xqf+6a;de{*YeM63O;mAI;E_ z;L6x8SLJ~Vm>1lXh0DH69WnHc4QosCbn+yvM&{D3vtc|9xwt%QtlN_U zAA7*w+<7L@)qd2|wUYPXxe*HNPp&kkeZNF=cL`Pzea;rMIZwuc(v;0~A6I)Cx^w~! zczDgKE^>)ZJo{02rtH5uWd!0L#SuN)stS0>6t)S%eY5sb`_YBV656rdTNIA<@uL`K z#obqJ)9ezIbq#5Ukm|MMJ=}Tkci94C2)*$xl*-wisQW8ahvm?@ctjg1P%@c$P|4vex1iAX?DtjiYGc3<18W&=i(>*5$2=DkNlv_Ne-YsBW z-jJ18o!C#~Oj`C%DyzI|mHYSQU92xB)&G6EQ>H-oWd{QqS}}&~tEo#n0r4;n#t3}i z`9k781f?+G_UJcR2QwF=MlsTh%`i&F4WDjXOa6^Ysntv+#SlKy>$oExEbCRtCaoR+n-tw6aQRznWJ6JWi9Ki zTASQLQA{qU>-zCNYpLv9FGZq$_FkP1pWkn7P^9-l747Vb|8WfxBFvA`{5Fl!=PRu; z^cvkl^?+6dyPY<&N97%q8(x$!_p3!R_p7EV;=g(GrUw8FM+URkwY`vNrtHsi+Udu36&5G4G$|Kox?(KEjuPG_LH+L zAiIz4z)Tush*WPb!&%AXx1t}XIm^i-%s?7*C9_VX0G;{sa>`##52N>?HMr>?wsnk> zUVRyG-QUuycK=MReb_kP~6|Gvp($c(2J)?V;!;&O>UZg|c~ zh@y;KfTD~v3p1L`&|{A;3Lcr|OE4(5E#%;$tkMbqIN!fpSsY!ay=#jm+M()-j?K@9 zH}bLpbe8oR_w)JKwCEqRsMij$b zKlRPsHd|E^bHM%O3C^=#d-@RNdMa#1(i4D5j=yPf*~frTQS$rb8If)PUD}5X6zr}sK5_PvA6u zqLu-1`X%Xgni{=#wkgNMKPslr=J!rv+{8Ik|@S9ROg}LexC^1U}fEQ zPUDYz=zqe})Ml^0U|pp$)PCoZ%~-&estC_G@b8TjqIqvBn`#0Ie2xe&45XA1tU`d5 z3Hfd}_AjD5rR+9SVfU%Pmzn<)(ufznJf{OcZ@8I{auzGJ^bZeVO5Z`xkJTG4CD!>`F{m`ZcKIPhaR;-Mt;%a;wFu*i10<1=ZP{{pEWNJ#9{( z*i?tFF*PxNMf{b9fciV6ue&P4Ol%eqG8f-p+m;FBaluTmh zH2as1&z?mowq$pgZ9u~FAE9wtup~f3WRW5c(R-_5j|ELQP3wf;7qy=XYe%jmiz?Lo zTreGP4MyjKi8eL4pwgUm?nFTZvBlv9m@HF zJ6Q>T^lG!3;ib6Y?bSV7uk)dw-dIUzU1)pyk8z(1h=kjE>e9h-Y{y!viJsnbe8b_a zw=HX_<*!!Km{M9+`D=h4`?r-6PlLHlTY80AHs!GjVCFq$a?J#3>`DP5YJhJS--gS? zYFvDYKZRFwF8MnWNeA z>#{g&=6!oen?`xK(4zS%9sS*e(}}+}i6g0XqdZ&*ldJUSfncj_n=s?-P{k;!I6Zs@KuQh@<}{Je%M5( zGad>(nBU{Xt!93+S%^M8k3R6Ytf(L=n6lqCmjiTnQ%NWN@xIF_AA7+s;)E$3Ix;r+ zbz(RLzzW?*KU)lQGEqmk_e>ssyuTRU;4c&N5Q$>q_kn9SEj8SINmUGq0|)=NSr5ej zhq1%6k#2Y| zKF|OEetkc_eBz%+(u&*W0YCk0*8umEP-gcDhby0pUnD)ed z`+j)DaxWVY>k_GGVRG0JUc!Jwp652x_^b9sZ~WQr&;9B*d!H;})>ki%)G52iA1Lhl z2Wg5r?K1WgJd>khcvK&84X^VqH2U4_GqAd3ll%kU8YF{EXUZ?uXThk-Qg43R5K;X= zp^Hr~m_h+`IpH`n%EQpW^dg&~zi@5F@%oib_7;K=Lr{o&d_KyDz(6P5&wrHb9c6O1 zh!?6%vO!aRoCq;`wcrrEMS&c%9qCJ))R)jo`ZJu|I;so0PpaCZ9o z;v}d*vivZ}u&v2E4MDwp?$W*+8HJUnpmOw2!o4&eS)d=k=-daHxD&TQ#h16{QugWYCI!*bbmXCL>Dxm4Ksv5+BJ<5|9pZ zuqKu;O*rghpnT=A8k*ktZHTFr&-cp4#o$hn>=+bf(;EC z7#O2Bgdl5w_Q$G0{$iw3vH8xk9)M@nB*Zc~QI0(1qKF+qm^iQAilIn+6mIQm#&8V@ zq&LR1vY(*W*LL&(&MAF(kiCsbVAs+#vlw9vDFfc#p!Y$ zfPIk>o;C4;!2e?ed9OfZ(W@159BIH`mggK<-;u7C+x(-ZQUBA$?Jth!QrH$C6=h{P zbmgob9Er4c^#DD=ctjtKB@@NhF4DCCLYi7-s9n+8940y7HzAk=}#%XZcUMH4ks6@MxNmDsUsb zM}xo)Evn5AEU!(_YZibXd>O#I&6w^dt}pSBM=5T#g}64K1;;Kf2~(YcnNnq5Go<)N z5fJ76yAGu0(oh=0qS`!kI0s+gFiuVz?%k0;&ES>A^e0o7ZbdW}#A^1S!p@Ar^Q-)a`{fx-6pCFPt&}^ z*ZM_GKsvJooo7r=wq-uN!7+(`*w!EH4;N&qzbTZ8%cr}|Kn`V->&ACDvObR^(~T-Hq0aM`bG{$3cLi z1gctcD&#@sJYw_PIEk_|!C-Wx?3f+<^&O~Khg<4<434~D`;|K5k{z5}DvmKAgb-ca zi)EK@N0L63Dv!J!KvhWaS@?VF6qYY(q54 zIFq4-eO2n`zOP=OR*ZXh5JJI9@uQeo}q= zv5~vJd|Raz$N#pAy%DF)nuY_QYkip2Put;aa+O!*ss2<|AbC;K{aNu2r8hU>5X z)hYfH-$DZUgaC}k*wg?SQCa@<7^aLnK7K*1sV@$H4S>)>;(R0;wn*nXpFWcVoIRyA z>#MbhR2~sMsL~u=`?%@^Jsg?^@vjH7@X#xM4q=)KcwNg$B8O1HlqXr*|5L-)PyPg; zqMM7~)6*x{7(>@TJkqSED{M?^wrXVsYtUo^XSCgGXnUPlKO@Ry;=FlHI1j1L1ufhtbwR&a5bsF)GE{(C2&ih0cI^cBLw|aq3 zP2-j%_8$dHuqZB;**ci$E0hfkE?e_j{!#|2>b_}o216@nTDkgR9N;{J^eR@l0SfhCUaaGKtV5-umqyVNGd5L{ezI%EuRrRf!iM zpT*BlUim?($dSr#?;KDD{k6Nxm$H~%d!7j<{0XCYFOkqNA7I+e-EbC!Wi%4hCAV&} zxFAgOKt9&PX-Nel2)@6kyugAx`GYrUQ1_9=VLgqjf08YPv6Gp{;Y`eI=~I4pXCa5x z3aW*y_5F-VopZk3zK7nv37Tv$Io_WSRRE?5Rja13zi2!3Wwq@C zG8Q!*n$Z0okx1aG&9A=Z(;`$P7FDN~OV8MIhj9h1$N=?e0KWkJN)ZNQP^HmOd5T1a z?lTr4J)^$Ca;+nv!lnc9|37BVyAYuNSF@{@%lx+>;+K)5kLk;`Wl2(>B$|?GnUoSV zlE`V2q}=QO?B^-vo%$;y+?F~A>OCpI1mJ73wQYZbv;X^mx<|W4 z0PqfFSm1?z0_IX8qN|jJlMW2e8`QnH)~9+mmd-8*ZJU=GTJaxkXozXZ-*y*7IUUDN zg}_qGAQa(uMBCD%uzU$fHXmMmje_4jSe7|HcX9;qG^AG!Z}N)nMn5CS={sI60ea~u z3rGLkO8HpeC7?&khM7kE9r=tXXXyAoFej`7`3x2gxo5%ZCeKOTK5#b|X_LqakeFXd z8Q%%@9hE(Hj46@IBcBPp0K=d(sTu$ILWPTqOuuZ%z>GSA>J6E3oN_c^Yc z(+J5?h!)Aj#}qyMp^3W|g4)_qMPnI-%bPjP1@@s5v~Djz-(E5mXC7(+Z+d8c&(Zi! zUNGkuNKq8Y)#l19PO%TY89_RB2L{%wUmYDDFGtae_Ux?SOt}JdiYjlSWdf!q)}djY zlSM*0B29cu_uAQ$LP7i1VsmD(xjP=S+Gt>^7OpPB>Fik3Qz+WD$WFW2WZWX^S4mN` z*3!$_^80ma9xFT9LW#^fIbf(?X%;22L<@1PHsmi+7ba&D4F zrlL~bRYqkIor*XpyWlQt^HrGmespuK%N!lCO^b<_rz3E|S!9H(NpMz2yL?;w#9H>N zjLS`A6hNg!&$K5hzuZ;hAh{j$&IVgMyv4y;ZY<|RtzV8+pHo@iUZAM<{rh#N4g{Vp zK-6cwHJNhzlV;yCDd3o9FlUbFo@3^pG^fVP6<4H2n+nW5oeGOwt7D*2h;GWzNxKHw zgQ8gER(}&G5ghP~Upo+> zUw~9dChxLKdRO%lJ`y*(b{Zzu0mDc<+&+K98#@35XN|`Yp73Zlk92<{s&>Y-Xk+Ui z=8nF%*0x4tpGq^woVq4mw>0fphkVLD17J!Av73+LBd5*Ts1X$(Qj1rk&-VS67WhP> zn9owR<0JjopUBlul3Y)CDRd7!(AqsVQ@E46s_He_U30&}I7zODDNM~pl z@W1Z<`aIkRR+FsSI;e2@P~HUL!Yd@7a`1W-UB)qCEujEN;n)f~+WTB$SLVqkTe-{Z z+6OT$<}dp9IP(2@X!RaD1iV)U#B{gfH3K-@UPCffli~N7h|-m#bxji&MHkc&fMH%3 z$GjcaA}{*v!}Ant%()JBj_L=c{aCu(NyShVSdu*1#ha4oOej4kd?qm9;gR8`b!EtS zDk0NecVZi3y~9Hnn+3=B7aKbEgE+Lef|_W}W)bsRXBZg76c7L z%N@HC-|Ww=QSVxNbR>){A}XI~MpZU}41h~TOiD}hu)Cnd8&x&XbJ7*)Osc(8E}8W_ zEkamDcza>Rm`08tHWghF6VVi^Hh=SkJ|x-LRi;Idl|J`Xu!j#dxsobPRZ9m=Vo zR@hK-G!7|8BYNFs)hFC3H0$Dy<{vi?o3YOgiP=o7K12EcQfkh;*Yv#L%-!c>iR>LC z@ET0|0Gx#Dw44-te{fjd<^(5x*%BCE?#l(IFq-{yg**D&IG-lD+dv`LO7cMDvS?S= zYP#O@hPUga?|d%}kf3c@;tD=p7yLO#>H<4|kOz7i`WrgcR-X|t&Xrpz_tWN?aec8@ zX5eUDR>hh&-oUvTZ38X799hb1!)>I?Bl^xL`|ENMy=~emk)fQ^h}MjgBjzN$nK2Kv zcdoS`f1IV?H^=F#GN+@Po7z^5vHAkhHPd>Qmh3g{&Y=sEl*qCH?%ul-`0qk?Z9qx* zeqbR+(l`TJ9d@b-Z@=k}Uf6GfDE3OWjowX4be$@GV+-6e^TzVxr*R0 z#OAfB7tCm?)lPd&bkoK_TecE~_|C0zj2CtI9nad~74VGfP>B$S#b2L0Z3;#tdRycqkdSI_?w#B`nAJ>T^thQldDpE- zv`rMh6-4a2v&vq@_^K{Aek+iHE6-IahVc1iYc~RV1S;#vv4~fMW274czt58vgv>y_9M?& z?+yA=XC(XN1O`b`odo4u!WOVt#z z+5A}9Q96of#VzUp;qYiLdhs~E$Jy)IZ&PIQ1I4&81JcJ*%w~C(r?O0lqpd(dTK{oE z3@tkEQ9Wv>dHZ2(y7q51j*H{f}MM3AfTa6pFj?}>9RJ%TsU&R$2Okig94SD4r(`LzN zMzI2O8W-)kdL=-*E}gU&l5&oT>YjbKZ=YsP*>sTghTXW0CCkWgD#Ov*Q?dj8iV2PN zTn(3+c|}v_f!13ic6c->iQ+}g0hcQt;s@Tin-2NQ#$bTwfSbLf^rD$Xy%E0CBkg+k4_0)OsGdpjX2{DZIjHhloR`F3>|CgFq9rOos(3G1KxTT>!}46X1ShB0s-kV zQu}I7{;(00lW3x?&_pLBZ%0znfaCHZd|;{wfC*zoRZoZ|358!eFyJ$c9+mKED{epF zFRlEHntlNDA+XlA2Id-i6X!s)7dO4meyZJM?R{LZSaj2hqTbd)7xYT zOT3S%OiOtOLa_WLbp3TbYK7qos6C>AVxM#)?d#O=OAm&^cmosd4^h2e{DTt<%nPWZ zxA;i$@BFfF-{Yj%y$)nDEJ~D;{N7$Wx8;!6jb%!7sr%qrOm8=F!-)!MMqaOdA|B9<-b;asQ#>a{3nHMb=gH& zMy3>9oF`tny~yTQ4st8C?aUb@&0O~j5c6hH$+S*dR6FTigg#bKCJVdVvuHCA-9{GY zWo?GFj{eyS!vPNiF2Myge6{Y=ug{|^f{A3sf)eM7nnEGU?1ROgyMS=d5NtXqrpd;x zne5IWwDq3oF=Mq%t|*u|VycJ-QdrTTq=~CUL847p5e?`xh3S3Y?=&>_3LQF>JOFgc z>y+XHGzAh;(=u)qK)(McNQnBdpb*fFSj&FvzSj8L=${V4$-73nx9lYmiQ@pwn2F~q zK;TY=oT%J7XdX8Kw5)Wqq<^2pZ`DM-mO?991grhq>r|T9L+l$Xpf*0Uqy4KNI_uDx zM(zV%H684NjlM%j6aI8JTX z&&7pbc+epiCR>cPP-CA7EL9m?x=x;B?OpV1CfpX3<8cS&A|n4en9xMHwf9%2k75#Q zFJRBL#Rafue-n-nMZOk*5!@lefYkn7-@&l{J=DJyfeA3{oI$#70)oMDgm+C7x@Co6 zWf^e5)^hjnw~}foC!j#zW$kY)Es2JP+8zPD#Q=@#?q{$Va4oH3+W%YJz}dCT36$bf z@NaYb>23>9ibgpYW(}Ya0+gm9?1um&xifxz`1XB(ZHz+whGqzo+8CGr?mf(?YtOhiW?I^zyG_4WwaA$VQ8E%E}t*H2s)k*1HII9{OExtOnjUfS5d6k+20<7!i@ z2|NY+QYpB-k4=N>Xd*{l|67afBNKHw>U>HC0UiVoEHU%*F=|52dTMC*Z*7KzhxhM( z4moj2MpV^uUPYLWqwHyAG?5pP!WNl#TSpE!kjFukPDessRlFjfKU%L-aS^m8JcHloM8U7LDqFZ4c)9Y~TaO-&25z-N(q=A8s zyk|9x&fFAM1hoy|h<=fM?;xOT<_6a7GL@IBlpluln z6FL9d(V~^#WZWPIIF-9flqlsFw0$V$xyS7Aqf3vViK>>W2-Jw!ETKY|SQBIXD&Apw zT*#=JrMZ4aealcjIHAPo@75^6;2gV!s9E-MZ_@S)!ctt}hy*$}IVu7CVg-=elI?{w z5QXQX3LdhodRFHOEQ}|k|5w3RAhonPoPNUdId z)D|kJ_?JS@(v#z%mzh`y%|q3Gg^VIz5+|HCCVL$~BJSsw7lc`>qc`kn zk0UKt@xpNmYH}^rdGUBSJ$`UKDAh60w2|}e+o68(cNdbn@Lk8Gy{XaPjA+5J>;;EE zieIH5uv9v=@~o|5so?+A@$6yu*v?257rM3Kg0+dJyc8yP1Y+lQWGXj z#zp_TsVDAPU(h~VV3F#VWRoO4(W7r){bNRpKncTVov2b;RPzUbo3Dg>!TD!2ZwITro#6EVt`j01c6E((B#0Yz082+bJ5@B$-8J6q+%1Hjx3jN486$BrJo zAs9ajxkyKrAW)U@`Ht>&gulzb3%UM%ucDDwz;zQ!XO~vZ366;L2OU#_)=)fgCsUT} zLPqjqe=kg;)9*D(z+Qsw3&t1GjSpE`p*Jk4c5zen(l2HI4zo<+Eo3V~+u#Gf{x|@E zhc!WQ0>u&bR5AVi!WQtmxiAI2_X>&NAIkrIt}0oQiG06QhWACs>7D^{Mpo@^j1S(u z%#LYL92;8kxco72cwU_HmYcv-B5UN|r7)5FdD}m-Njq{BSR{#K1v)039j=Y_r^db` z2T@91^;=T~$wRvf84dJ?d**OTDQ+^a?Z14Y^B->VA&74VG7^Cr09#N9x!(Ve&lSw` z3&hWf!6i`UpzAzfCxuoV)&&2hFZPp`tZbZlp7=zJ{%HgXM-5&CG!o_s|GOCT#0OS5 z=nZhZx+w(;av`88^XNb3gN@q)63e!y%@;6G0K-g*6946*OjVi)-VZ)U0&7MO}lW{-3eXt7~qa??))ux9}k$lrW_6MM0{%lxUYxC z9bV$R%2D}mcD1}Z$5D#4R78cC$|G>n-DhjWexDXnJa#DzMD?<7rT;(>z6k{wzllEPna}ovZOA9$pxtEULyb6wE!g>A z9oq$g6O<6HFk+rmu)i(jTc#rEJnKCCI~Y;5b@y#HA6Q*o2#3d6`bUpN=#YQF@agQ zNTY3t@n@AKQk{mio^jcb#&EOHkf^bQf^8j}gjHHcz4nzZ)Aw)hoxT7*h&_O+CkBA% z&%@QToX8%@3&DDxJ!4q?u32Ss=vj681FEU1X+G@i_MAhHsd$HcyM8D6kSr}3UZePR zF`s25dV4CH(em)%Np~W#t*obWoA`54Ar18bZdQ`1YPX)E6`iWRKTsz&`b^(bgE>P- zC$H_{R)*^XT?HRwEo(G|kD2NMl|s27?Ik}(O03wV`h-r*7-g76cXZ9-YoAxKrb*1H zyTb&RBdZ4O&9`B%bU(msqHeE$#n;<7x7h*f!^<5ZzdhNfde`byM9XViO4KN~3KM~6 zCOa>H=Oy15oO|$kj6IraiH>Myn!7wvoU)pk$s8Bcb5+^7*b}=<-{9FUxfB!9d1=JY zIL~F97Kt0d*YnZ3c=buALjK94=nsG}&(R%JE5>UxG4s0d1S`rG@OUH@x%`Uu7+vXj z3)BGW9uF>#MX&9aE@w(G%GJQG$`QgAhX+ zxBGpsq3<%EGpxE-G)6ll0+zt}2?pei#H>>@>mdd9qolJ+y08ZP=L;$3fOI^GdpW!& z5)krKd4ye1kC?xeEQdhy+ArG!4>Cow;uWq0s@uvs)BZek(A4Fs2Yo=l!u(I77)3FZ zpG*lo31D?gQQGUxv2eP6NPsz|6iyKvCp+0)sv9SAy^nT$Q~T#7r!t25?vCC`75-}e$AmwRR#<*gc%Xvp4)E(ac>XK z#+yrKL0iB-fE9W;fkte}Vr+eXzx|@!x98QCrOm)xp+f9}r%oz)YtiZ`Or_vj6I8UE zfZBQ%4pbmx9x-ND(6)TNe&147N-D82@`*KQzjBe!{TaWC`rfolvN$eEmSX&*RYB1W z07d-d6}}D4h@lz#Yyn~!GFWzC9vR>!F@0S`Sfr0BPo9X%h

X^P_Y!j`3A_tfdbw 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 literal 131 zcmWN@%MrpL5CG6SRnUOpvn*h`fn5-0R5F4&SiL#Dcb3oW<1O1-$J~{A^mTjIxm~tz z-e|nkJPN7Ph|yWjmMr=m=#G|>4akwT^9Vq|HJ}D?#6av~WlumkB`#nv`QY=FT5{Ay M%>FCVSnz=24;phQN&o-= diff --git a/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_LoginSnapshotTest_launchLoginScreen.png b/designsystem/src/test/snapshots/images/org.hisp.dhis.mobile.ui.designsystem_LoginSnapshotTest_launchLoginScreen.png index d481f32cee5d079a75f811414dae65d2a2b55277..6c697cd9b5dcebe5285b1c7e29c3712d29cb1a1b 100644 GIT binary patch literal 25407 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 KQL1+D`M&^O-V;p# literal 130 zcmWN?%MrpL5CG6SRnUOpv%q4y0d^5)R5C(xuzG!$ckyTT@s@3^W9~{l`no;q-2S&S zZ)LpHJh-UKh|x*TmaGr^9U@sG!~_~*w4tyCufaqI6}e^)+14Sh57!uU1*#Hy< M60?6<2E^dR56uiGLjV8(