Skip to content

Commit 49c55fd

Browse files
authored
Merge pull request #789 from microsoft/dhruvMishra/fluentNativeControlFixes
[Fluent V2] Fixes for Fluent Native Controls
2 parents a8ef82c + d091fc7 commit 49c55fd

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/demos/V2MenuActivity.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.microsoft.fluentui.tokenized.menu.Menu
3737
import com.microsoft.fluentuidemo.R
3838
import com.microsoft.fluentuidemo.V2DemoActivity
3939

40+
val DefaultMenuInputWidthFraction = 0.35f
4041

4142
class V2MenuActivity : V2DemoActivity() {
4243
init {
@@ -66,33 +67,37 @@ fun CreateMenuActivityUI(context: Context) {
6667
Column {
6768
Column {
6869
ListItem.Header(title = context.getString(R.string.menu_xOffset),
70+
titleMaxLines = 2,
6971
trailingAccessoryContent = {
7072
BasicTextField(value = xOffsetState.value,
7173
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
7274
onValueChange = { xOffsetState.value = it.trim() },
73-
modifier = Modifier.background(Color.White))
75+
modifier = Modifier.background(Color.White).fillMaxWidth(fraction = DefaultMenuInputWidthFraction))
7476
}
7577
)
7678
ListItem.Header(title = context.getString(R.string.menu_yOffset),
79+
titleMaxLines = 2,
7780
trailingAccessoryContent = {
7881
BasicTextField(value = yOffsetState.value,
7982
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
8083
onValueChange = { yOffsetState.value = it.trim() },
81-
modifier = Modifier.background(Color.White))
84+
modifier = Modifier.background(Color.White).fillMaxWidth(fraction = DefaultMenuInputWidthFraction))
8285
})
8386
ListItem.Header(title = context.getString(R.string.menu_content_text),
87+
titleMaxLines = 2,
8488
trailingAccessoryContent = {
8589
BasicTextField(
8690
value = contentTextState.value,
8791
onValueChange = { contentTextState.value = it },
88-
modifier = Modifier.background(Color.White))
92+
modifier = Modifier.background(Color.White).fillMaxWidth(fraction = DefaultMenuInputWidthFraction))
8993
})
9094
ListItem.Header(title = context.getString(R.string.menu_repeat_content_text),
95+
titleMaxLines = 2,
9196
trailingAccessoryContent = {
9297
BasicTextField(value = repeatContentTextCountState.value,
9398
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
9499
onValueChange = { repeatContentTextCountState.value = it.trim() },
95-
modifier = Modifier.background(Color.White))
100+
modifier = Modifier.background(Color.White).fillMaxWidth(fraction = DefaultMenuInputWidthFraction))
96101
})
97102
ListItem.SectionDescription(description = context.getString(R.string.menu_description))
98103
}

FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/demos/V2ScaffoldActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ class V2ScaffoldActivity : V2DemoActivity() {
160160
}
161161
}
162162

163+
@OptIn(ExperimentalLayoutApi::class)
163164
@Composable
164165
private fun GetContent(context: Context, snackbarState: SnackbarState? = null) {
165166
val size = remember { mutableStateOf(5) }
@@ -171,7 +172,7 @@ class V2ScaffoldActivity : V2DemoActivity() {
171172
drawerState = drawerState,
172173
drawerContent = { CreateList(size = 20, context = context) }
173174
)
174-
Row(
175+
FlowRow(
175176
modifier = Modifier.padding(8.dp),
176177
horizontalArrangement = Arrangement.spacedBy(8.dp)
177178
) {

fluentui_listitem/src/main/java/com/microsoft/fluentui/tokenized/contentBuilder/ListContentBuilder.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import androidx.compose.ui.focus.onFocusEvent
1111
import androidx.compose.ui.graphics.Color
1212
import androidx.compose.ui.graphics.vector.ImageVector
1313
import androidx.compose.ui.layout.Layout
14+
import androidx.compose.ui.semantics.contentDescription
15+
import androidx.compose.ui.semantics.semantics
1416
import androidx.compose.ui.unit.Dp
1517
import androidx.compose.ui.unit.dp
1618
import com.microsoft.fluentui.theme.FluentTheme
@@ -100,7 +102,7 @@ class ListContentBuilder {
100102
header: String? = null,
101103
maxItemInRow: Int = 4,
102104
equidistant: Boolean = false,
103-
tabItemTokens: TabItemTokens? = null
105+
tabItemTokens: TabItemTokens? = TabItemTokens()
104106
): ListContentBuilder {
105107
add(VerticalGridContentData(itemDataList, header, maxItemInRow, equidistant, tabItemTokens))
106108
return this
@@ -157,7 +159,7 @@ class ListContentBuilder {
157159
header: String?,
158160
maxItemsInRow: Int,
159161
equidistant: Boolean,
160-
tabItemTokens: TabItemTokens? = null
162+
tabItemTokens: TabItemTokens? = TabItemTokens()
161163
): LazyListScope.() -> Unit {
162164
return {
163165
if (header != null) {
@@ -189,13 +191,16 @@ class ListContentBuilder {
189191
else
190192
1.0f / min(itemsInRow, (size - (row * itemsInRow)))
191193
while (col < itemsInRow && (row * itemsInRow + col) < size) {
194+
val titleString = itemDataList[row * itemsInRow + col].title
192195
TabItem(
193-
title = itemDataList[row * itemsInRow + col].title,
196+
title = titleString,
194197
enabled = itemDataList[row * itemsInRow + col].enabled,
195198
onClick = itemDataList[row * itemsInRow + col].onClick,
196199
accessory = itemDataList[row * itemsInRow + col].accessory,
197200
icon = itemDataList[row * itemsInRow + col].icon,
198-
modifier = Modifier.fillMaxWidth(widthRatio),
201+
modifier = Modifier.fillMaxWidth(widthRatio).semantics {
202+
contentDescription = titleString
203+
},
199204
tabItemTokens = tabItemTokens
200205
)
201206
col++
@@ -233,7 +238,7 @@ class ListContentBuilder {
233238
itemDataList: List<ItemData>,
234239
header: String?,
235240
fixedWidth: Boolean = false,
236-
tabItemTokens: TabItemTokens? = null
241+
tabItemTokens: TabItemTokens? = TabItemTokens()
237242
): LazyListScope.() -> Unit {
238243
return {
239244
if (header != null) {
@@ -277,6 +282,9 @@ class ListContentBuilder {
277282
)
278283
}
279284
}
285+
}
286+
.semantics {
287+
contentDescription = item.title
280288
},
281289
tabItemTokens = tabItemTokens
282290
)
@@ -289,7 +297,7 @@ class ListContentBuilder {
289297
private fun createVerticalList(
290298
itemDataList: List<ItemData>,
291299
header: String?,
292-
listItemTokens: ListItemTokens? = null
300+
listItemTokens: ListItemTokens? = ListItemTokens()
293301
): LazyListScope.() -> Unit {
294302
return {
295303
if (header != null) {

0 commit comments

Comments
 (0)