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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ data class LoanTemplate(

val multiDisburseLoan: Boolean? = null,

val transactionProcessingStrategyCode: String? = null,

val canDefineInstallmentAmount: Boolean? = null,

val canDisburse: Boolean? = null,
Expand All @@ -185,4 +187,7 @@ data class LoanTemplate(

@IgnoredOnParcel
val accountLinkingOptions: List<AccountLinkingOptions> = emptyList(),

val loanScheduleType: TermFrequencyTypeOptions? = null,

) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@
package com.mifos.core.designsystem.component

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
Expand All @@ -21,6 +25,7 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.mifos.core.designsystem.theme.DesignToken
import com.mifos.core.designsystem.theme.MifosTheme
import com.mifos.core.designsystem.theme.MifosTypography
Expand Down Expand Up @@ -133,6 +138,65 @@ fun MifosBasicDialog(
}
}

@Composable
fun MifosBasicDialog(
onConfirm: () -> Unit,
onDismissRequest: () -> Unit,
confirmText: String = "Ok",
dismissText: String = "Cancel",
isConfirmEnabled: Boolean = true,
title: String,
content: @Composable () -> Unit,
) {
AlertDialog(
onDismissRequest = onDismissRequest,
confirmButton = {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly,
) {
MifosOutlinedButton(
onClick = { onDismissRequest() },
text = {
Text(
text = dismissText,
color = MaterialTheme.colorScheme.primary,
style = MifosTypography.labelLarge,
)
},
modifier = Modifier.weight(1f),
)

Spacer(modifier = Modifier.width(8.dp))

MifosTextButton(
onClick = { onConfirm() },
text = {
Text(
text = confirmText,
style = MifosTypography.labelLarge,
)
},
modifier = Modifier.weight(1f),
enabled = isConfirmEnabled,
)
}
},
title = {
Text(
text = title,
style = MifosTypography.titleMediumEmphasized,
modifier = Modifier
.fillMaxWidth()
.testTag("AlertTitleText"),
)
},
text = { content() },
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh,
modifier = Modifier.semantics { testTag = "AlertPopup" },
)
}

@Preview
@Composable
private fun MifosBasicDialog_preview() {
Expand Down
2 changes: 0 additions & 2 deletions core/ui/src/commonMain/composeResources/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,4 @@
<string name="error_digits_only">This field should contain digits only</string>
<string name="error_number_zero">Number should not be zero</string>



</resources>
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* Copyright 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
* See https://github.com/openMF/android-client/blob/master/LICENSE.md
*/
package com.mifos.core.ui.components

import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.width
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 com.mifos.core.designsystem.component.MifosOutlinedButton
import com.mifos.core.designsystem.theme.DesignToken
import com.mifos.core.designsystem.theme.MifosTheme
import com.mifos.core.designsystem.theme.MifosTypography
import org.jetbrains.compose.ui.tooling.preview.Preview

@Composable
fun MifosRowWithTextAndButton(
onBtnClick: () -> Unit,
btnText: String,
btnEnabled: Boolean = true,
text: String,
modifier: Modifier = Modifier,
) {
MifosListingComponentOutline(
modifier = modifier,
content = {
Row(
Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = text,
style = MifosTypography.bodyLarge,
modifier = Modifier.weight(1f),
)
Spacer(Modifier.width(DesignToken.padding.extraSmall))
MifosOutlinedButton(
onClick = { onBtnClick() },
text = {
Text(
text = btnText,
color = MaterialTheme.colorScheme.primary,
style = MifosTypography.labelMediumEmphasized,
)
},
enabled = btnEnabled,
)
}
},
)
}

@Composable
@Preview
fun MifosRowWithTextAndButtonPreview() {
MifosTheme {
MifosRowWithTextAndButton(
onBtnClick = {},
btnText = "View",
text = "2 Collaterals",
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,12 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController
import co.touchlab.kermit.Logger
import com.mifos.core.designsystem.component.BasicDialogState
import com.mifos.core.designsystem.component.MifosBasicDialog
import com.mifos.core.designsystem.component.MifosScaffold
Expand Down Expand Up @@ -155,13 +153,6 @@ private fun ClientProfileDetailsScaffold(
modifier: Modifier = Modifier,
onAction: (ClientProfileDetailsAction) -> Unit,
) {
LaunchedEffect(true) {
val backStack = navController.currentBackStack.value
.mapNotNull { it.destination.route }
Logger.e("Revanth") {
backStack.toString()
}
}
MifosScaffold(
title = stringResource(Res.string.client_profile_details_title),
onBackPressed = { onAction(ClientProfileDetailsAction.NavigateBack) },
Expand Down
53 changes: 53 additions & 0 deletions feature/loan/src/commonMain/composeResources/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -157,4 +157,57 @@
<string name="step_charges">Charges</string>
<string name="step_schedule">Schedule</string>
<string name="step_preview">Preview</string>

<!-- Collateral Dialog -->
<string name="add_new_collateral">Add New Collateral</string>
<string name="view_collaterals">View Collaterals</string>
<string name="add">Add</string>
<string name="add_new">Add New</string>

<!-- Collateral Fields -->
<string name="collateral">Collateral</string>
<string name="quantity">Quantity</string>
<string name="total_value">Total Value</string>
<string name="total_collateral_value">Total Collateral Value</string>
<string name="terms">Terms</string>
<string name="term_options">Term Options?</string>
<string name="repayments">Repayments</string>
<string name="repaid_every">Repaid Every?</string>
<string name="nominal_interest_rate">Nominal interest rate</string>
<string name="loan_schedule">Loan Schedule</string>
<string name="interest_calculations">Interest Calculations</string>
<string name="moratorium">Moratorium?</string>
<string name="collateral_data">Collateral Data</string>
<string name="principal">Principal</string>
<string name="loan_term">Loan Term</string>
<string name="term_frequency">Term Frequency</string>
<string name="number_of_repayments">Number of Repayments</string>
<string name="first_repayment_date">First Repayment Date</string>
<string name="interest_charged_from">Interest Charged From</string>
<string name="repaid_every_label">Repaid Every</string>
<string name="frequency">Frequency</string>
<string name="select_on">Select On</string>
<string name="select_day">Select Day</string>
<string name="nominal_interest_rate_percent">Nominal interest rate (in %)</string>
<string name="interest_method">Interest Method</string>
<string name="amortization">Amortization</string>
<string name="is_equal_amortization">Is Equal Amortization</string>
<string name="loan_schedule_type">Loan Schedule Type</string>
<string name="repayment_strategy">Repayment Strategy</string>
<string name="balloon_repayment_amount">Balloon Repayment Amount</string>
<string name="interest_calculation_period">Interest Calculation Period</string>
<string name="calculate_interest_partial">Calculate interest for exact days in partial period</string>
<string name="arrears_tolerance">Arrears Tolerance</string>
<string name="interest_free_period">Interest Free Period</string>
<string name="grace_on_principal_payment">Grace On Principal Payment</string>
<string name="grace_on_interest_payment">Grace On Interest Payment</string>
<string name="on_arrears_ageing">On Arrears Ageing</string>
<string name="view">View</string>
<string name="select">Select</string>
<string name="cancel">Cancel</string>
<string name="collateral_count">%1$d Collaterals</string>
<string name="recalculate_interest">Recalculate Interest</string>
<string name="yes">Yes</string>
<string name="no">No</string>

</resources>
Loading