Package-level declarations

Types

Link copied to clipboard
data class AdditionalInfoItem(val icon: @Composable () -> Unit? = null, val key: String? = null, val value: String, val isConstantItem: Boolean = false, val color: Color? = null, val action: () -> Unit? = null)
Link copied to clipboard
Link copied to clipboard
sealed interface AgeInputType
Link copied to clipboard
sealed class AvatarStyleData
Link copied to clipboard
Link copied to clipboard
data class CarouselButtonData(val onClick: () -> Unit, val enabled: Boolean, val text: String, val icon: @Composable () -> Unit)

Data model used for DHIS2 CarouselButton component.

Link copied to clipboard
data class CheckBoxData(val uid: String, val checked: Boolean, val enabled: Boolean, val textInput: AnnotatedString?)

Data model used for DHIS2 CheckBox component.

Link copied to clipboard
Link copied to clipboard
data class Coordinates(val latitude: Double, val longitude: Double)
Link copied to clipboard
data class CustomButtonColors(val textColor: Color, val containerColor: Color, val contentColor: Color)
Link copied to clipboard
data class DropdownItem(val label: String)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
sealed class ImageCardData

Data model used for DHIS2 Metadata Icon component.

Link copied to clipboard
data class InfoBarData(val text: String, val icon: @Composable () -> Unit? = null, val color: Color, val backgroundColor: Color, val actionText: String? = null, val onClick: () -> Unit? = null)

Data model used for DHIS2 InfoBar component.

Link copied to clipboard
data class InputAgeModel(val title: String, val inputType: AgeInputType = None, val inputStyle: InputStyle = InputStyle.DataInputStyle(), val state: InputShellState = InputShellState.UNFOCUSED, val legendData: LegendData? = null, val supportingText: List<SupportingTextData>? = null, val isRequired: Boolean = false, val imeAction: ImeAction = ImeAction.Next, val onNextClicked: () -> Unit? = null, val dateOfBirthLabel: String? = null, val orLabel: String? = null, val ageLabel: String? = null, val acceptText: String? = null, val cancelText: String? = null, val onValueChanged: (AgeInputType) -> Unit, val selectableDates: SelectableDates? = null)

Data model used for DHIS2 InputAge component.

Link copied to clipboard
data class InputDateTimeModel(val title: String, val inputTextFieldValue: TextFieldValue?, val actionType: DateTimeActionType = DateTimeActionType.DATE_TIME, val allowsManualInput: Boolean = true, val state: InputShellState = InputShellState.UNFOCUSED, val legendData: LegendData? = null, val supportingText: List<SupportingTextData>? = null, val onActionClicked: () -> Unit? = null, val onNextClicked: () -> Unit? = null, val isRequired: Boolean = false, val imeAction: ImeAction = ImeAction.Next, val visualTransformation: DateTimeVisualTransformation = DateTransformation(), val format: String = "ddMMyyyy", val onFocusChanged: (Boolean) -> Unit = {}, val onValueChanged: (TextFieldValue?) -> Unit, val is24hourFormat: Boolean = false, val inputStyle: InputStyle = InputStyle.DataInputStyle(), val acceptText: String? = null, val cancelText: String? = null, val selectableDates: SelectableDates = SelectableDates("01011940", "12312300"), val yearRange: IntRange = IntRange(1970, 2070), val outOfRangeText: String? = null, val incorrectHourFormatText: String? = null)

UiModel used for InputDateTime

Link copied to clipboard

DHIS2 InputShellState, enum class to control the state InputShell component

Link copied to clipboard
sealed class InputStyle

DHIS2 Input Shell style. Used internally by InputShell.

Link copied to clipboard
data class LegendData(val color: Color, val title: String, val popUpLegendDescriptionData: List<LegendDescriptionData>? = null)

Data class used for DHIS2 Legend component.

Link copied to clipboard
data class LegendDescriptionData(val color: Color, val text: String, val range: IntRange)

Data class used for DHIS2 LegendRange component.

Link copied to clipboard
data class ListCardDescriptionModel(val style: TextStyle? = null, val color: Color? = TextColor.OnSurface, val text: String? = null, val modifier: Modifier = Modifier)
Link copied to clipboard
data class ListCardTitleModel(val style: TextStyle? = null, val color: Color? = TextColor.OnPrimaryContainer, val text: String, val modifier: Modifier = Modifier)
Link copied to clipboard
sealed class MetadataAvatarSize
Link copied to clipboard
data class OrgTreeItem(val uid: String, val label: String, var isOpen: Boolean = true, val hasChildren: Boolean = false, val selected: Boolean = false, val level: Int = 0, val selectedChildrenCount: Int = 0, val canBeSelected: Boolean = true)

Data class used for OrgBottomSheet used to hold information on Organisation Units.

Link copied to clipboard
Link copied to clipboard
data class RadioButtonData(val uid: String, val selected: Boolean, val enabled: Boolean, val textInput: AnnotatedString?)

Data model used for DHIS2 RadioButton component.

Link copied to clipboard
Link copied to clipboard
data class SelectableDates(val initialDate: String, val endDate: String)
Link copied to clipboard
data class SupportingTextData(val text: String, val state: SupportingTextState = SupportingTextState.DEFAULT)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
fun AssistChip(modifier: Modifier = Modifier, label: String, icon: @Composable () -> Unit? = null, enabled: Boolean = true, onClick: () -> Unit, badge: String? = null)

DHIS2 AssistChip button with custom icon slot. wraps Material 3 AssistChip. AssistChips are used to trigger actions.

Link copied to clipboard
fun Avatar(modifier: Modifier = Modifier, style: AvatarStyleData = AvatarStyleData.Text(""), onImageClick: () -> Unit? = null)

DHIS2 Avatar, used to display the avatar composable in card, must be one of the three styles given as parameters

Link copied to clipboard
fun Badge(modifier: Modifier = Modifier, text: String? = null, color: Color = SurfaceColor.Primary, textColor: Color = TextColor.OnPrimary)

DHIS2 Badge) wraps androidx.compose.material3.Badge. Badges are used to convey dynamic information, such as a count or status. A badge can include text, labels, or numbers.

Link copied to clipboard
fun BarcodeBlock(data: String, modifier: Modifier = Modifier, barcodeSize: DpSize = DpSize(312.dp, 76.dp))

Container to render barcode image and text for given data.

Link copied to clipboard
fun BaseCard(modifier: Modifier = Modifier, showShadow: Boolean, onCardClick: () -> Unit, paddingValues: PaddingValues, expandable: Boolean, itemVerticalPadding: Dp?, onSizeChanged: (IntSize) -> Unit?, content: @Composable () -> Unit)
Link copied to clipboard
fun BasicTextField(helper: String? = null, enabled: Boolean = true, isSingleLine: Boolean = true, helperStyle: HelperStyle = HelperStyle.NONE, inputTextValue: TextFieldValue? = null, onInputChanged: (TextFieldValue) -> Unit, modifier: Modifier = Modifier, state: InputShellState = InputShellState.FOCUSED, keyboardOptions: KeyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), visualTransformation: VisualTransformation? = null, onNextClicked: () -> Unit? = null, onSearchClicked: () -> Unit? = null)

DHIS2 Basic Input. Wraps Material 3· BasicTextField.

Link copied to clipboard
fun BottomSheetHeader(title: String, subTitle: String? = null, description: String? = null, icon: @Composable () -> Unit? = null, hasSearch: Boolean = false, headerTextAlignment: TextAlign = TextAlign.Center, modifier: Modifier = Modifier)

DHIS2 BottomSheetHeader component designed to be used within BottomSheetShell

Link copied to clipboard
fun BottomSheetShell(content: @Composable () -> Unit?, title: String? = null, subtitle: String? = null, description: String? = null, searchQuery: String? = null, showSectionDivider: Boolean = true, contentScrollState: ScrollableState = rememberScrollState(), icon: @Composable () -> Unit? = null, buttonBlock: @Composable () -> Unit? = null, modifier: Modifier = Modifier, headerTextAlignment: TextAlign = TextAlign.Center, scrollableContainerMinHeight: Dp = Spacing0, scrollableContainerMaxHeight: Dp = InternalSizeValues.Size386, onSearchQueryChanged: (String) -> Unit? = null, onSearch: (String) -> Unit? = null, onDismiss: () -> Unit)

DHIS2 BottomSheetShell. Wraps compose · ModalBottomSheet. desktop version to be implemented

Link copied to clipboard
fun Button(enabled: Boolean = true, style: ButtonStyle = ButtonStyle.OUTLINED, colorStyle: ColorStyle = ColorStyle.DEFAULT, text: String, icon: @Composable () -> Unit? = null, modifier: Modifier = Modifier, paddingValues: PaddingValues = getPaddingValues(icon != null), onClick: () -> Unit)

DHIS2 button with generic icon slot. wraps DHIS2 SimpleButton which in turn wraps material 3 Button.

Link copied to clipboard
fun ButtonBlock(primaryButton: @Composable () -> Unit, secondaryButton: @Composable () -> Unit? = null, modifier: Modifier = Modifier)

DHIS2 ButtonBlock with generic buttons slot.

Link copied to clipboard
fun ButtonCarousel(carouselButtonList: List<CarouselButtonData>, modifier: Modifier = Modifier)

Component used to display a horizontal list of CarouselButton.

Link copied to clipboard
fun CardDetail(avatar: @Composable () -> Unit? = null, title: String, additionalInfoList: List<AdditionalInfoItem>, actionButton: @Composable () -> Unit? = null, expandLabelText: String = provideStringResource("show_more"), shrinkLabelText: String = provideStringResource("show_less"), showLoading: Boolean = false, modifier: Modifier = Modifier)

DHIS2 CardDetail. Component intended for TEI Dashboard

Link copied to clipboard
fun CarouselButton(buttonData: CarouselButtonData, modifier: Modifier = Modifier)
Link copied to clipboard
fun CheckBox(checkBoxData: CheckBoxData, modifier: Modifier = Modifier, onCheckedChange: (Boolean) -> Unit)

DHIS2 check box with or without text. Wraps Material 3 Checkbox.

Link copied to clipboard
fun CheckBoxBlock(orientation: Orientation, content: List<CheckBoxData>, modifier: Modifier = Modifier, onItemChange: (CheckBoxData) -> Unit)

DHIS2 check box block.

Link copied to clipboard
fun ColumnComponentContainer(subTitle: String? = null, modifier: Modifier = Modifier, content: @Composable () -> Unit)

DHIS2 ColumnComponentContainer wraps Material 3 Column has a default spacing between items of 16 dp

Link copied to clipboard
fun ColumnScreenContainer(title: String? = null, modifier: Modifier = Modifier, verticalArrangement: Arrangement.Vertical = Arrangement.spacedBy(Spacing.Spacing16), horizontalAlignment: Alignment.Horizontal = Alignment.Start, content: @Composable () -> Unit)

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

Link copied to clipboard
fun CoordinateText(text: String, value: String, isDisabled: Boolean)
Link copied to clipboard
fun Description(text: String, textColor: Color, modifier: Modifier = Modifier)
Link copied to clipboard
fun DropdownInputField(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), isRequiredField: Boolean, expanded: Boolean, focusRequester: FocusRequester, onFocusChanged: (Boolean) -> Unit?, supportingTextData: List<SupportingTextData>?, legendData: LegendData?, selectedItem: DropdownItem?, onResetButtonClicked: () -> Unit, onDropdownIconClick: () -> Unit, modifier: Modifier = Modifier)

DHIS2 DropDownInputField. Wraps DHIS · InputShell.

Link copied to clipboard
fun ErrorBadge(modifier: Modifier = Modifier, text: String? = null)
Link copied to clipboard
fun <T> ExpandableItemColumn(modifier: Modifier = Modifier, itemList: List<T>, itemSpacing: Dp = 16.dp, itemLayout: @Composable (T, itemVerticalPadding: Dp, onSizeChanged: (IntSize) -> Unit) -> Unit)
Link copied to clipboard
fun ExtendedFAB(modifier: Modifier = Modifier, style: FABStyle = FABStyle.PRIMARY, text: String, onClick: () -> Unit, icon: @Composable () -> Unit)

DHIS2 ExtendedFAB button with generic icon slot. wraps Material 3 ExtendedFloatingActionButton. FABs help people take primary actions. They’re used to represent the most important action on a screen.

Link copied to clipboard
fun FAB(modifier: Modifier = Modifier, style: FABStyle = FABStyle.PRIMARY, onClick: () -> Unit, icon: @Composable () -> Unit)

DHIS2 FAB button with generic icon slot. wraps Material 3 FloatingActionButton. FABs help people take primary actions. They’re used to represent the most important action on a screen.

Link copied to clipboard
fun FilterChip(modifier: Modifier = Modifier, label: String, selected: Boolean = false, onSelected: (Boolean) -> Unit? = null, badge: String? = null)

DHIS2 FilterChip button with generic icon slot. wraps Material 3 FilterChip. Chips help people enter information, make selections, filter content, or trigger actions.

Link copied to clipboard
fun FlowColumnComponentsContainer(title: String? = null, spacing: Dp, modifier: Modifier = Modifier, content: @Composable () -> Unit)

DHIS2 FlowColumnComponentsContainer wraps Material 3 FlowColumn.

Link copied to clipboard
fun FlowRowComponentsContainer(title: String? = null, spacing: Dp, modifier: Modifier = Modifier, content: @Composable () -> Unit)

DHIS2 FlowRowComponentsContainer wraps Material 3 FlowRow.

Link copied to clipboard
fun formatStringToDate(dateString: String): String
Link copied to clipboard
fun formatText(text: String?, withSpace: Boolean): String
Link copied to clipboard
fun FullScreenImage(painter: Painter, title: String, modifier: Modifier = Modifier, onDismiss: () -> Unit, onDownloadButtonClick: () -> Unit, onShareButtonClick: () -> Unit)

DHIS2 Full Screen Image. Wraps DHIS2 Internal ZoomableImage.

Link copied to clipboard
Link copied to clipboard
fun getInputState(supportingTextList: List<SupportingTextData>, dateOutOfRangeItem: SupportingTextData, incorrectDateFormatItem: SupportingTextData, currentState: InputShellState): InputShellState
Link copied to clipboard
fun getKeyTrimmedText(text: String, maxKeyWidth: Dp, textMeasurer: TextMeasurer): String
Link copied to clipboard
fun getKeyValueAnnotatedString(key: String, additionalInfoItem: AdditionalInfoItem?, isDetailCard: Boolean): AnnotatedString
Link copied to clipboard
fun getTextColor(inputState: InputShellState, inputTextFieldValue: TextFieldValue?): Color
Link copied to clipboard
fun getValueColor(additionalInfoItem: AdditionalInfoItem?): Color
Link copied to clipboard
fun IconButton(style: IconButtonStyle = IconButtonStyle.STANDARD, enabled: Boolean = true, icon: @Composable () -> Unit, modifier: Modifier = Modifier, onClick: () -> Unit)

DHIS2 icon button with generic icon slot.

Link copied to clipboard
fun <T> ImageBlock(title: String, load: suspend () -> T, painterFor: @Composable (T) -> Painter, modifier: Modifier = Modifier, downloadButtonVisible: Boolean = true, onDownloadButtonClick: () -> Unit, onShareButtonClick: () -> Unit)

DHIS2 Image Block. Wraps compose Image.

Link copied to clipboard
fun Indicator(title: String, content: String, modifier: Modifier = Modifier, indicatorColor: Color = SurfaceColor.Container)

DHIS2 Indicator. Wraps compose Row. A component designed to display indicators, each featuring a key and a value, is complemented by a color badge for visual distinction. This configuration allows for clear and efficient presentation of important data points.

Link copied to clipboard
fun InfoBar(infoBarData: InfoBarData, modifier: Modifier = Modifier)

DHIS2 InfoBar. Wraps compose Row. InfoBars provide brief messages about app status.

Link copied to clipboard
fun InputAge(uiModel: InputAgeModel, modifier: Modifier = Modifier)

DHIS2 Input Age component wraps DHIS2 InputShell. Users can enter their age either through Material 3's DatePicker or through a Unit Interval selector that can be TimeUnitValues.YEARS, TimeUnitValues.MONTHS or TimeUnitValues.DAYS.

Link copied to clipboard
fun InputBarCode(title: String, state: InputShellState = InputShellState.UNFOCUSED, onActionButtonClicked: () -> Unit, supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier, inputStyle: InputStyle = InputStyle.DataInputStyle())

DHIS2 Input QR Code. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputCheckBox(title: String, checkBoxData: List<CheckBoxData>, modifier: Modifier = Modifier, orientation: Orientation = Orientation.VERTICAL, state: InputShellState, supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, inputStyle: InputStyle = InputStyle.DataInputStyle(), onItemChange: (CheckBoxData) -> Unit, onClearSelection: () -> Unit)

DHIS2 Input Check Box. Wraps DHIS · InputShell.

Link copied to clipboard
fun InputChip(modifier: Modifier = Modifier, label: String, selected: Boolean = false, withTrailingIcon: Boolean = false, enabled: Boolean = true, onSelected: (Boolean) -> Unit? = null, onIconSelected: () -> Unit? = null, badge: String? = null, hasTransparentBackground: Boolean = false, focusRequester: FocusRequester? = null)

DHIS2 Input Chip. Wraps material 3 · InputChip.

Link copied to clipboard
fun InputCoordinate(title: String, state: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, coordinates: Coordinates? = null, latitudeText: String = provideStringResource("latitude"), longitudeText: String = provideStringResource("longitude"), addLocationBtnText: String = provideStringResource("add_location"), isRequired: Boolean = false, modifier: Modifier = Modifier, onResetButtonClicked: () -> Unit, onUpdateButtonClicked: () -> Unit)

DHIS2 Input coordinate. Wraps DHIS · InputShell.

Link copied to clipboard
fun InputDateResetButton(state: InputDateTimeState, onValueChanged: (TextFieldValue?) -> Unit, focusRequester: FocusRequester)
Link copied to clipboard
fun InputDateTime(state: InputDateTimeState, onFocusChanged: (Boolean) -> Unit = {}, onValueChanged: (TextFieldValue?) -> Unit, onNextClicked: () -> Unit? = null, onActionClicked: () -> Unit? = null, modifier: Modifier = Modifier)

DHIS2 Input Date Time Input field to enter date, time or date&time. It will format content based on given visual transformation. component uses Material 3 DatePicker and TimePicker input formats supported are mentioned in the date time input ui model documentation. DatePicker Input mode will always follow locale format.

Link copied to clipboard
fun InputDropDown(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), dropdownItems: List<DropdownItem>, selectedItem: DropdownItem? = null, supportingTextData: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequiredField: Boolean = false, modifier: Modifier = Modifier, onFocusChanged: (Boolean) -> Unit? = null, onResetButtonClicked: () -> Unit, onItemSelected: (DropdownItem) -> Unit, showSearchBar: Boolean = true, expanded: Boolean = false, noResultsFoundString: String = provideStringResource("no_results_found"), searchToFindMoreString: String = provideStringResource("search_to_see_more"))

DHIS2 Input dropdown. Wraps DHIS · DropdownInputField.

Link copied to clipboard
fun InputEmail(title: String, state: InputShellState, supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier, onEmailActionCLicked: () -> Unit, inputStyle: InputStyle = InputStyle.DataInputStyle())

DHIS2 Input email. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputFileResource(title: String, buttonText: String, fileName: String? = null, fileWeight: String? = null, onSelectFile: () -> Unit, onUploadFile: () -> Unit, onClear: () -> Unit = {}, uploadFileState: UploadFileState = ADD, inputShellState: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, modifier: Modifier = Modifier)

DHIS2 Input File Resource. Wraps DHIS · InputShell.

Link copied to clipboard
fun <T> InputImage(title: String, state: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, uploadState: UploadState = UploadState.ADD, addImageBtnText: String = provideStringResource("add_image"), downloadButtonVisible: Boolean = true, isRequired: Boolean = false, load: suspend () -> T, painterFor: @Composable (T) -> Painter? = null, modifier: Modifier = Modifier, onDownloadButtonClick: () -> Unit, onShareButtonClick: () -> Unit, onResetButtonClicked: () -> Unit, onAddButtonClicked: () -> Unit)

DHIS2 Input image. Wraps DHIS · BasicInputImage.

Link copied to clipboard
fun InputInteger(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input Integer. Wraps DHIS · BasicTextInput. Only positive or negative integers allowed, excluding 0.

Link copied to clipboard
fun InputLetter(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input Letter. Wraps DHIS · BasicTextInput. Component that only allows a single character, must be a single letter.

Link copied to clipboard
fun InputLink(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier, onLinkActionCLicked: () -> Unit)

DHIS2 Input link. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputLongText(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input Long Text. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputMatrix(title: String, data: List<ImageCardData>, itemCount: Int = 2, selectedData: ImageCardData? = null, modifier: Modifier = Modifier, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, testTag: String = "", onSelectionChanged: (ImageCardData) -> Unit, painterFor: Map<String, Painter>? = null)

DHIS2 icon card matrix input component

Link copied to clipboard
fun InputMultiSelection(items: List<CheckBoxData>, title: String, state: InputShellState, supportingTextData: List<SupportingTextData>?, legendData: LegendData?, isRequired: Boolean, onItemsSelected: (List<CheckBoxData>) -> Unit, modifier: Modifier = Modifier, noResultsFoundString: String = provideStringResource("no_results_found"), searchToFindMoreString: String = provideStringResource("search_to_see_more"), doneButtonText: String = provideStringResource("done"), inputStyle: InputStyle = InputStyle.DataInputStyle(), onClearItemSelection: () -> Unit)

DHIS2 input multi selection component. wraps DHIS2 InputShell.

Link copied to clipboard
fun InputNegativeInteger(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input negative Integer. Wraps DHIS · BasicTextInput. Only negative integers allowed.

Link copied to clipboard
fun InputNotSupported(title: String, modifier: Modifier = Modifier, notSupportedString: String = provideStringResource("not_supported"), inputStyle: InputStyle = InputStyle.DataInputStyle())

Input for unsupported components

Link copied to clipboard
fun InputNumber(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, notation: RegExValidations = RegExValidations.EUROPEAN_DECIMAL_NOTATION, modifier: Modifier = Modifier)

DHIS2 Input Number. Wraps DHIS · BasicTextInput. Input that allows only numeric values.

Link copied to clipboard
fun InputOrgUnit(title: String, state: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputText: String? = null, isRequiredField: Boolean = false, onValueChanged: (String?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, modifier: Modifier = Modifier, onOrgUnitActionCLicked: () -> Unit)

DHIS2 Input org unit.

Link copied to clipboard
fun InputPassword(uiModel: InputPasswordModel, modifier: Modifier = Modifier)

DHIS2 Input Password.

Link copied to clipboard
fun InputPercentage(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input percentage. Wraps DHIS · BasicTextInput. Only integers allowed.

Link copied to clipboard
fun InputPhoneNumber(title: String, onCallActionClicked: () -> Unit, modifier: Modifier = Modifier, maxLength: Int = 12, minLength: Int = 4, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit = {}, imeAction: ImeAction = ImeAction.Next, supportingText: List<SupportingTextData>? = emptyList(), allowedCharacters: RegExValidations = RegExValidations.PHONE_NUMBER)

DHIS2 Input Phone Number. Wraps DHIS · BasicTextInput. Input that allows only numeric values for entering phone number.

Link copied to clipboard
fun InputPolygon(title: String, state: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, polygonText: String? = provideStringResource("polygon_captured"), addPolygonBtnText: String = provideStringResource("add_polygon"), polygonAdded: Boolean = false, isRequired: Boolean = false, modifier: Modifier = Modifier, onResetButtonClicked: () -> Unit, onUpdateButtonClicked: () -> Unit)

DHIS2 Input polygon. Wraps DHIS · InputShell.

Link copied to clipboard
fun InputPositiveInteger(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input positive Integer. Wraps DHIS · BasicTextInput. Only positive integers allowed, excluding 0.

Link copied to clipboard
fun InputPositiveIntegerOrZero(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input positive Integer or zero. Wraps DHIS · BasicTextInput. Only positive integers allowed, including 0.

Link copied to clipboard
fun InputQRCode(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), onQRButtonClicked: () -> Unit, supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, autoCompleteList: List<String>? = null, autoCompleteItemSelected: (String?) -> Unit? = null, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input QR Code. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputRadioButton(title: String, radioButtonData: List<RadioButtonData>, modifier: Modifier = Modifier, orientation: Orientation = VERTICAL, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, itemSelected: RadioButtonData? = null, onItemChange: (RadioButtonData?) -> Unit)

DHIS2 Input Radio Button. Wraps DHIS · RadioButton.

Link copied to clipboard
fun InputSequential(title: String, data: List<ImageCardData>, selectedData: ImageCardData? = null, modifier: Modifier = Modifier, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, testTag: String = "", onSelectionChanged: (ImageCardData) -> Unit, painterFor: Map<String, Painter>? = null)

DHIS2 icon card sequential input component.

Link copied to clipboard
fun <T> InputSignature(title: String, state: InputShellState = InputShellState.UNFOCUSED, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, addSignatureBtnText: String = provideStringResource("add_signature"), downloadButtonVisible: Boolean = true, isRequired: Boolean = false, load: suspend () -> T, painterFor: @Composable (T) -> Painter? = null, modifier: Modifier = Modifier, onDownloadButtonClick: () -> Unit, onShareButtonClick: () -> Unit, onResetButtonClicked: () -> Unit, onSaveSignature: (ImageBitmap) -> Unit)

DHIS2 Input signature. Wraps DHIS · BasicInputImage.

Link copied to clipboard
fun InputText(title: String, state: InputShellState, supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, onFocusChanged: (Boolean) -> Unit? = null, autoCompleteList: List<String>? = null, onAutoCompleteItemSelected: (String?) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier, inputStyle: InputStyle = InputStyle.DataInputStyle())

DHIS2 Input Text. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputUnitInterval(title: String, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, inputTextFieldValue: TextFieldValue? = null, isRequiredField: Boolean = false, onNextClicked: () -> Unit? = null, onValueChanged: (TextFieldValue?) -> Unit? = null, imeAction: ImeAction = ImeAction.Next, modifier: Modifier = Modifier)

DHIS2 Input Unit Interval. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputUser(uiModel: InputUserModel, modifier: Modifier = Modifier)

DHIS2 Input User. Wraps DHIS · BasicTextInput.

Link copied to clipboard
fun InputYesNoField(title: String, modifier: Modifier = Modifier, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, itemSelected: InputYesNoFieldValues? = null, onItemChange: (InputYesNoFieldValues?) -> Unit)

DHIS2 Input Yes/No Field. Wraps DHIS · RadioButton.

Link copied to clipboard
fun InputYesOnlyCheckBox(checkBoxData: CheckBoxData, modifier: Modifier = Modifier, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, onClick: (Boolean) -> Unit)

DHIS2 Input Yes Only Check box. Wraps DHIS · InputShell.

Link copied to clipboard
fun InputYesOnlySwitch(title: String, modifier: Modifier = Modifier, state: InputShellState, inputStyle: InputStyle = InputStyle.DataInputStyle(), supportingText: List<SupportingTextData>? = null, legendData: LegendData? = null, isRequired: Boolean = false, isChecked: Boolean, onClick: (Boolean) -> Unit)

DHIS2 Input Yes Only Switch. Wraps DHIS · InputShell.

Link copied to clipboard
fun Legend(legendData: LegendData, modifier: Modifier = Modifier)

DHIS2 Legend. Used to display information on input value based on a range of values.

Link copied to clipboard
fun LegendRange(legendDescriptionRangeDataList: List<LegendDescriptionData>, modifier: Modifier = Modifier)

DHIS2 Legend Range. Used to a list of LegendDescription items.

Link copied to clipboard
fun ListCard(modifier: Modifier = Modifier, listCardState: ListCardState, listAvatar: @Composable () -> Unit? = null, actionButton: @Composable () -> Unit? = null, onCardClick: () -> Unit, onSizeChanged: (IntSize) -> Unit? = null)
fun ListCard(listAvatar: @Composable () -> Unit? = null, title: ListCardTitleModel, description: ListCardDescriptionModel? = null, lastUpdated: String? = null, additionalInfoList: List<AdditionalInfoItem>, actionButton: @Composable () -> Unit? = null, expandLabelText: String = provideStringResource("show_more"), shrinkLabelText: String = provideStringResource("show_less"), loading: Boolean = false, onCardClick: () -> Unit, shadow: Boolean = true, modifier: Modifier = Modifier, scrollableContent: Boolean = false, expandable: Boolean = false, itemVerticalPadding: Dp? = null, minItemsToShow: Int = 3, onSizeChanged: (IntSize) -> Unit? = null)

DHIS2 ListCard. Component intended for TEI/Event/DataSet card display.

Link copied to clipboard
fun ListCardColumn(modifier: Modifier = Modifier, spacing: Dp = Spacing.Spacing4, content: @Composable () -> Unit)

DHIS2 ListCardColumn wraps Material 3 Column has a default spacing between items of 4 dp vertical scroll enabled

Link copied to clipboard
fun manageOnNext(focusManager: FocusManager, onNextClicked: () -> Unit?)
Link copied to clipboard
fun measureTextWidth(text: String, textMeasurer: TextMeasurer): Dp
Link copied to clipboard
fun MetadataAvatar(icon: @Composable (expectedSize: Dp) -> Unit, modifier: Modifier = Modifier, iconTint: Color = Color.Unspecified, backgroundColor: Color = Color.Unspecified, size: MetadataAvatarSize)

DHIS2 Metadata Avatar.

Link copied to clipboard
fun MetadataIcon(modifier: Modifier = Modifier, imageCardData: ImageCardData, painter: Painter? = null)

DHIS2 Metadata Icon.

Link copied to clipboard
fun MultiSelectBottomSheet(items: List<CheckBoxData>, title: String, noResultsFoundString: String, searchToFindMoreString: String, doneButtonText: String, onItemsSelected: (List<CheckBoxData>) -> Unit, onDismiss: () -> Unit)
Link copied to clipboard
fun OrgBottomSheet(orgTreeItems: List<OrgTreeItem>, modifier: Modifier = Modifier, title: String? = null, subtitle: String? = null, description: String? = null, clearAllButtonText: String = provideStringResource("clear_all"), doneButtonText: String = provideStringResource("done"), noResultsFoundText: String = provideStringResource("no_results_found"), icon: @Composable () -> Unit? = null, onSearch: (String) -> Unit? = null, onDismiss: () -> Unit, onItemClick: (uid: String) -> Unit, onItemSelected: (uid: String, checked: Boolean) -> Unit, onClearAll: () -> Unit, onDone: () -> Unit)

DHIS2 OrgBottomSheet component designed to be used with Input Org Unit, wraps DHIS2 BottomSheetShell.

Link copied to clipboard
fun OrgUnitSelectorItem(orgTreeItem: OrgTreeItem, higherLevel: Int, searchQuery: String, modifier: Modifier = Modifier, onItemClick: (uid: String) -> Unit, onItemSelected: (uid: String, checked: Boolean) -> Unit)
Link copied to clipboard
fun ProgressIndicator(modifier: Modifier = Modifier, type: ProgressIndicatorType, progress: Float? = null, hasError: Boolean = false)

DHIS2 Progress indicator Progress indicators inform users about the status of ongoing processes, such as loading an app, submitting a form, or saving updates. They communicate an app’s state and indicate available actions, such as whether users can navigate away from the current screen.

Link copied to clipboard
fun ProvideKeyValueItem(additionalInfoItem: AdditionalInfoItem, maxKeyWidth: Dp, isDetailCard: Boolean)
Link copied to clipboard
fun QrCodeBlock(data: String, modifier: Modifier = Modifier, isDataMatrix: Boolean = false, qrCodeSize: Dp = 240.dp)

Container to render QR code image and text for given data

Link copied to clipboard
fun RadioButton(radioButtonData: RadioButtonData, modifier: Modifier = Modifier, onClick: (Boolean) -> Unit)

DHIS2 radio button with or without text. Wraps Material 3 RadioButton.

Link copied to clipboard
fun RadioButtonBlock(orientation: Orientation, content: List<RadioButtonData>, itemSelected: RadioButtonData?, modifier: Modifier = Modifier, onItemChange: (RadioButtonData) -> Unit)

DHIS2 radio button block.

Link copied to clipboard
fun RowComponentContainer(title: String? = null, modifier: Modifier = Modifier, content: @Composable () -> Unit)

DHIS2 RowComponentContainer wraps Material 3 Row

Link copied to clipboard
fun SearchBar(text: String = "", placeHolderText: String = provideStringResource("search"), onActiveChange: (Boolean) -> Unit = {}, onSearch: (String) -> Unit = {}, onQueryChange: (String) -> Unit = {}, state: InputShellState = InputShellState.FOCUSED, modifier: Modifier = Modifier)

DHIS2 Search bar.

Link copied to clipboard
fun Section(modifier: Modifier = Modifier, isLastSection: Boolean = false, title: String, description: String?, completedFields: Int, totalFields: Int, state: SectionState, errorCount: Int, errorMessage: String? = null, warningCount: Int, warningMessage: String? = null, onNextSection: () -> Unit, onSectionClick: () -> Unit, content: @Composable ColumnScope.() -> Unit)

DHIS2 Section

Link copied to clipboard
fun SquareIconButton(enabled: Boolean = true, icon: @Composable () -> Unit, modifier: Modifier = Modifier, onClick: () -> Unit)

DHIS2 square icon button with generic icon slot. Wraps Material 3 ElevatedButton.

Link copied to clipboard
fun SubTitle(text: String, textColor: Color = TextColor.OnSurface, modifier: Modifier = Modifier)
Link copied to clipboard
fun SupportingText(text: String, state: SupportingTextState = SupportingTextState.DEFAULT, maxLines: Int = 1, showMoreText: String = provideStringResource("show_more"), showLessText: String = provideStringResource("show_less"), modifier: Modifier = Modifier, paddingValues: PaddingValues = PaddingValues( start = Spacing.Spacing16, top = Spacing.Spacing4, end = Spacing.Spacing16, ), onNoInteraction: () -> Pair<MutableInteractionSource, () -> Unit>? = null)

DHIS2 SupportingText component, wraps Compose ClickableText.

Link copied to clipboard
fun Switch(modifier: Modifier = Modifier, isChecked: Boolean = false, enabled: Boolean = true, onCheckedChange: (Boolean) -> Unit)

DHIS2 Switch wraps Material 3 Switch.

Link copied to clipboard
fun Tag(modifier: Modifier = Modifier, label: String, type: TagType, defaultBackgroundColor: Color = SurfaceColor.PrimaryContainer, defaultTextColor: Color = TextColor.OnPrimaryContainer)

DHIS2 Tag Short labels or identifiers used to categorize and organize elements, making them easier to locate and understand.

Link copied to clipboard
fun TextButtonSelector(enabled: Boolean = true, firstOptionText: String, middleText: String, secondOptionText: String, modifier: Modifier = Modifier, onClickFirstOption: () -> Unit, onClickSecondOption: () -> Unit)
Link copied to clipboard
fun Title(text: String, textColor: Color = TextColor.OnSurface, modifier: Modifier = Modifier)
Link copied to clipboard
fun ToggleInfoTextButton(sectionState: SectionState, shrinkLabelText: String, expandLabelText: String, onClick: (newSectionState: SectionState) -> Unit)
Link copied to clipboard
fun VerticalInfoListCard(modifier: Modifier = Modifier, listCardState: ListCardState, listAvatar: @Composable () -> Unit? = null, actionButton: @Composable () -> Unit? = null, onCardClick: () -> Unit, onSizeChanged: (IntSize) -> Unit? = null)

DHIS2 VerticalListCard. Component intended for Program/DataSet card display.