diff --git a/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/PanDetailsInputWidgetLayout.kt b/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/PanDetailsInputWidgetLayout.kt index 55c5a02230..eb4c173981 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/PanDetailsInputWidgetLayout.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/common/custom_view/PanDetailsInputWidgetLayout.kt @@ -18,6 +18,8 @@ import android.view.View import androidx.appcompat.app.AlertDialog import androidx.appcompat.content.res.AppCompatResources import androidx.core.view.isVisible +import androidx.core.view.marginLeft +import androidx.core.view.marginTop import androidx.core.widget.doOnTextChanged import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding @@ -82,14 +84,27 @@ class PanDetailsInputWidgetLayout @JvmOverloads constructor( callback: ((cta: CtaData) -> Unit)? ) { setTextInputFields(naviWidgetData.textInputFields, binding, callback) - naviWidgetData.checkboxInputField?.let { checkboxInputField -> - setCheckboxField(checkboxInputField, binding, callback) - } naviWidgetData.dobInputField?.let { dobInputField -> - setDobInputField(dobInputField, binding, callback) + if(dobInputField.disabled == true) { + binding.dateInputContainer.isVisible = false + } else { + setDobInputField(dobInputField, binding, callback) + } } naviWidgetData.genderInputField?.let { genderInputField -> - setGenderInputField(genderInputField, binding, callback) + if(genderInputField.disabled == true) { + binding.genderInputContainer.isVisible = false + } else { + setGenderInputField(genderInputField, binding, callback) + } + } + naviWidgetData.checkboxInputField?.let { checkboxInputField -> + if(!binding.dateInputContainer.isVisible && !binding.genderInputContainer.isVisible){ + val layoutParams = binding.confirmationCheckbox.layoutParams + (layoutParams as? MarginLayoutParams)?.setMargins(binding.confirmationCheckbox.marginLeft, 0, 0, 0) + binding.confirmationCheckbox.layoutParams = layoutParams + } + setCheckboxField(checkboxInputField, binding, callback) } //open nudge bottom sheet if cta not null naviWidgetData.bottomSheetNudgeCta?.let { ctaData -> @@ -182,7 +197,6 @@ class PanDetailsInputWidgetLayout @JvmOverloads constructor( binding.genderInputContainer.isClickable = false binding.genderInputContainer.isFocusable = false binding.genderFieldTv.isEnabled = false - disableView(binding.genderFieldTv) } validateForm() } @@ -213,7 +227,6 @@ class PanDetailsInputWidgetLayout @JvmOverloads constructor( binding.dateInputContainer.isClickable = false binding.dateInputContainer.isFocusable = false binding.dobFieldTv.isEnabled = false - disableView(binding.dobFieldTv) } validateForm() } diff --git a/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GenericInfoBottomSheet.kt b/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GenericInfoBottomSheet.kt index 760cbcc3c5..561903d6d4 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GenericInfoBottomSheet.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GenericInfoBottomSheet.kt @@ -1,6 +1,22 @@ package com.navi.insurance.common.fragment +import android.graphics.Color import android.view.ViewStub +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +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.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import com.google.gson.Gson @@ -11,10 +27,12 @@ import com.navi.insurance.common.models.GenericInfoBottomSheetData import com.navi.insurance.databinding.GenericInfoBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING +import com.navi.naviwidgets.extensions.NaviText import com.navi.naviwidgets.extensions.addOnMultipleClicksHandler import com.navi.naviwidgets.extensions.setImageFieldData import com.navi.naviwidgets.extensions.setTextFieldData import com.navi.naviwidgets.models.response.ImageFieldData +import com.navi.naviwidgets.utils.NaviWidgetIconUtils class GenericInfoBottomSheet : BaseBottomSheet() { @@ -52,6 +70,10 @@ class GenericInfoBottomSheet : BaseBottomSheet() { } binding.title.setTextFieldData(bottomSheetData?.title) binding.subtitle.setTextFieldData(bottomSheetData?.subtitle) + binding.composeLayout.isVisible = bottomSheetData?.bulletedList?.isNotEmpty() == true + binding.composeLayout.setContent { + BullettedList(bottomSheetData?.bulletedList.orEmpty()) + } bottomSheetData?.buttonCta?.let { buttonCtaData -> binding.actionButton.text = buttonCtaData.title.orEmpty() binding.actionButton.addOnMultipleClicksHandler { @@ -70,4 +92,33 @@ class GenericInfoBottomSheet : BaseBottomSheet() { override val screenName: String get() = TAG + @Composable + fun BullettedList(termList: List){ + Column( + ) { + for (item in termList) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(vertical = 8.dp) + ) { + val imageResId = NaviWidgetIconUtils.getImageFromIconCode(item.iconCode) + if (imageResId == -1){ + //Do nothing + } else{ + Image( + painter = painterResource(id = imageResId), // Load the outlined bullet vector drawable + contentDescription = "bullet", // Optional content description + modifier = Modifier.align(Alignment.Top) + + ) + } + Spacer(modifier = Modifier.width(8.dp)) + NaviText( + textFieldData = item.text, + ) + } + } + } + } + } \ No newline at end of file diff --git a/navi-insurance/src/main/java/com/navi/insurance/common/models/FooterWithLeftRightButtonData.kt b/navi-insurance/src/main/java/com/navi/insurance/common/models/FooterWithLeftRightButtonData.kt index fb3f5a968b..2f63c0bf0a 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/common/models/FooterWithLeftRightButtonData.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/common/models/FooterWithLeftRightButtonData.kt @@ -37,14 +37,15 @@ data class FooterButtonItem( data class FooterOfferTag( @SerializedName("selectedState") val selectedState: FooterOfferTagState? = null, @SerializedName("unselectedState") val unselectedState: FooterOfferTagState? = null, - var minItemsSelected: Boolean = false + @SerializedName("minItemsSelected") var minItemsSelected: Boolean = false ) data class FooterOfferTagState( @SerializedName("offerText") val offerText: TextFieldData? = null, @SerializedName("backgroundColor") val backgroundColor: String? = null, @SerializedName("dividerColor") val dividerColor: String? = null, -) + @SerializedName("showDivider") var showDivider: Boolean? = false, + ) data class FooterProgress( @SerializedName("value") val value: Int? = null, diff --git a/navi-insurance/src/main/java/com/navi/insurance/common/models/GenericInfoBottomSheetData.kt b/navi-insurance/src/main/java/com/navi/insurance/common/models/GenericInfoBottomSheetData.kt index d7a4bb29b0..8485b91d1c 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/common/models/GenericInfoBottomSheetData.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/common/models/GenericInfoBottomSheetData.kt @@ -8,5 +8,11 @@ data class GenericInfoBottomSheetData( @SerializedName("title") val title: TextFieldData? = null, @SerializedName("subtitle") val subtitle: TextFieldData? = null, @SerializedName("iconCode") val iconCode: String? = null, - @SerializedName("buttonCta") val buttonCta: CtaData? = null -) + @SerializedName("buttonCta") val buttonCta: CtaData? = null, + @SerializedName("bulletedList") val bulletedList: List? = null +) { + data class BulletItem( + @SerializedName("itemText") val text: TextFieldData? = null, + @SerializedName("iconCode") val iconCode: String? = null + ) +} diff --git a/navi-insurance/src/main/java/com/navi/insurance/common/widgets/FooterWithLeftRightButtonView.kt b/navi-insurance/src/main/java/com/navi/insurance/common/widgets/FooterWithLeftRightButtonView.kt index 1c75955991..1be92ab378 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/common/widgets/FooterWithLeftRightButtonView.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/common/widgets/FooterWithLeftRightButtonView.kt @@ -99,9 +99,9 @@ constructor(context: Context, attrs: AttributeSet? = null) : BaseNaviWidgetView( viewData?.offerTagData?.let { this.binding?.offerLl?.visibility = View.VISIBLE if (it.minItemsSelected) { - setOfferData(it.selectedState, viewData.progress.isNull(), ctaDataCallback) + setOfferData(it.selectedState, viewData.progress.isNull() || (viewData.offerTagData.selectedState?.showDivider == true), ctaDataCallback) } else { - setOfferData(it.unselectedState, viewData.progress.isNull(), ctaDataCallback) + setOfferData(it.unselectedState, viewData.progress.isNull() || (viewData.offerTagData.unselectedState?.showDivider == true), ctaDataCallback) } } diff --git a/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt b/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt index 0784d693ab..080ef51383 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt @@ -27,6 +27,7 @@ import com.navi.base.utils.isNull import com.navi.base.utils.orFalse import com.navi.common.network.models.ErrorMessage import com.navi.common.utils.Constants +import com.navi.design.utils.isValidHexColor import com.navi.insurance.R import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.common.GiBaseFragment @@ -57,6 +58,7 @@ import com.navi.naviwidgets.models.response.TextFieldData import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import javax.inject.Inject +import android.graphics.Color @AndroidEntryPoint @@ -261,6 +263,13 @@ class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwne formPageViewState.data?.metaData?.analyticsInitEventName, applicationType = formPageViewState.data?.metaData?.applicationType ) + formPageViewState.data?.pageLayoutParams.let { pageLayoutParams -> + if (isValidHexColor(pageLayoutParams?.pageBackgroundColor)) { + binding.root.setBackgroundColor( + Color.parseColor(pageLayoutParams?.pageBackgroundColor) + ) + } + } } is FormPageResponseState.Loading -> { binding.progressBar.isVisible = true diff --git a/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt b/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt index 384d5b213e..9451b7fc8b 100644 --- a/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt +++ b/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt @@ -6,7 +6,6 @@ */ package com.navi.insurance.formbase.pre_purchase.repo - import com.navi.common.network.models.RepoResult import com.navi.insurance.models.request.FormNextPageRequest import com.navi.insurance.models.request.FormPreviousPageRequest diff --git a/navi-insurance/src/main/res/layout/footer_with_left_right_button_widget.xml b/navi-insurance/src/main/res/layout/footer_with_left_right_button_widget.xml index 020a02a92b..40e8b06dff 100644 --- a/navi-insurance/src/main/res/layout/footer_with_left_right_button_widget.xml +++ b/navi-insurance/src/main/res/layout/footer_with_left_right_button_widget.xml @@ -78,6 +78,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/dp_8" + android:paddingHorizontal="@dimen/dp_20" + android:textAlignment="center" android:fontFamily="@font/tt_medium" android:textSize="@dimen/sp_12" tools:text="Yay! 25% off will now be applicable" /> @@ -113,6 +115,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/dp_3" android:layout_marginHorizontal="@dimen/dp_16" + android:paddingHorizontal="@dimen/dp_20" android:background="@drawable/dash_line_grey_horizontal" android:visibility="gone" app:layout_constraintBottom_toTopOf="@+id/button_ll" diff --git a/navi-insurance/src/main/res/layout/generic_info_bottom_sheet.xml b/navi-insurance/src/main/res/layout/generic_info_bottom_sheet.xml index 044c483023..6acc9dbfd1 100644 --- a/navi-insurance/src/main/res/layout/generic_info_bottom_sheet.xml +++ b/navi-insurance/src/main/res/layout/generic_info_bottom_sheet.xml @@ -47,6 +47,11 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> + +