From 8e753de53d891311baf8bdb8443e9389fbb35259 Mon Sep 17 00:00:00 2001 From: Pranjal Singh Date: Thu, 2 Apr 2026 12:16:21 +0530 Subject: [PATCH 1/2] Icon callback fix --- .../microsoft/fluentuidemo/V2StackableSnackbarActivity.kt | 8 ++------ .../fluentui/tokenized/notification/StackableSnackbar.kt | 8 ++++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/V2StackableSnackbarActivity.kt b/FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/V2StackableSnackbarActivity.kt index 79318a1bd..57c0cfe72 100644 --- a/FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/V2StackableSnackbarActivity.kt +++ b/FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/V2StackableSnackbarActivity.kt @@ -133,9 +133,7 @@ fun SnackBarStackDemoLayout(context: V2StackableSnackbarActivity) { } } ), - getTrailingIconBasedOnOverflow = { - null - }, + onTitleOverflowChange = { }, onActionTextClicked = { stackState.toggleExpandedState() }, @@ -175,9 +173,7 @@ fun SnackBarStackDemoLayout(context: V2StackableSnackbarActivity) { } } ), - getTrailingIconBasedOnOverflow = { - null - }, + onTitleOverflowChange = { }, onActionTextClicked = { stackState.toggleExpandedState() }, diff --git a/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt b/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt index 2a3cf11e3..57607922f 100644 --- a/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt +++ b/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt @@ -136,7 +136,7 @@ private val DEFAULT_SNACKBAR_TOKENS = StackableSnackBarTokens() * @property snackBarToken The tokens for customizing the snackbar's appearance. * @property onActionTextClicked The callback to be invoked when the action button is clicked. * @property enableSwipeToDismiss If `true`, swiping the snackbar item horizontally will dismiss it. - * @property getTrailingIconBasedOnOverflow The callback to determine the trailing icon based on whether the text has overflow. It receives a boolean indicating if there is an overflow and returns a FluentIcon to be used as the trailing icon. + * @property onTitleOverflowChange The callback to determine on whether the text(title) has overflown. It receives a boolean indicating if there is an overflow. */ @Stable data class SnackBarItemModel( @@ -150,7 +150,7 @@ data class SnackBarItemModel( val snackBarToken: StackableSnackBarTokens = DEFAULT_SNACKBAR_TOKENS, val onActionTextClicked: () -> Unit = {}, val enableSwipeToDismiss: Boolean = true, - val getTrailingIconBasedOnOverflow: (Boolean) -> FluentIcon? = { _ -> trailingIcon } + val onTitleOverflowChange: (Boolean) -> Unit = { } ) internal data class SnackbarItemInternal( @@ -716,7 +716,6 @@ private fun SnackBarStackItem( ) { var hasTextOverflow by remember { mutableStateOf(false) } - val trailingIcon by remember { derivedStateOf { model.getTrailingIconBasedOnOverflow(hasTextOverflow) ?: model.trailingIcon } } if (model.leadingIcon != null && model.leadingIcon.isIconAvailable()) { Box( modifier = Modifier @@ -758,6 +757,7 @@ private fun SnackBarStackItem( onTextLayout = { textLayout -> if (hasTextOverflow != textLayout.hasVisualOverflow) { hasTextOverflow = textLayout.hasVisualOverflow + model.onTitleOverflowChange(hasTextOverflow) } } ) @@ -799,7 +799,7 @@ private fun SnackBarStackItem( ) } - trailingIcon?.let { icon -> + model.trailingIcon?.let { icon -> if (icon.isIconAvailable()) { Box( modifier = Modifier From 5012ae4966912ac62665ee010831c6e6e397ad49 Mon Sep 17 00:00:00 2001 From: Pranjal Singh Date: Mon, 6 Apr 2026 14:41:03 +0530 Subject: [PATCH 2/2] making callback as nullable --- .../fluentui/tokenized/notification/StackableSnackbar.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt b/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt index 57607922f..9d56fbbdd 100644 --- a/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt +++ b/fluentui_notification/src/main/java/com/microsoft/fluentui/tokenized/notification/StackableSnackbar.kt @@ -150,7 +150,7 @@ data class SnackBarItemModel( val snackBarToken: StackableSnackBarTokens = DEFAULT_SNACKBAR_TOKENS, val onActionTextClicked: () -> Unit = {}, val enableSwipeToDismiss: Boolean = true, - val onTitleOverflowChange: (Boolean) -> Unit = { } + val onTitleOverflowChange: ((Boolean) -> Unit)? = null ) internal data class SnackbarItemInternal( @@ -757,7 +757,7 @@ private fun SnackBarStackItem( onTextLayout = { textLayout -> if (hasTextOverflow != textLayout.hasVisualOverflow) { hasTextOverflow = textLayout.hasVisualOverflow - model.onTitleOverflowChange(hasTextOverflow) + model.onTitleOverflowChange?.invoke(hasTextOverflow) } } )