@expo/ui 57.0.22 → 57.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/DatePickerView.kt +35 -2
  4. package/android/src/main/java/expo/modules/ui/DateRangePickerView.kt +35 -2
  5. package/android/src/main/java/expo/modules/ui/HostView.kt +21 -0
  6. package/android/src/main/java/expo/modules/ui/ModifierRegistry.kt +2 -2
  7. package/android/src/main/java/expo/modules/ui/RNHostView.kt +124 -17
  8. package/android/src/main/java/expo/modules/ui/menu/DropdownMenu.kt +8 -1
  9. package/android/src/main/java/expo/modules/ui/menu/DropdownMenuRecords.kt +13 -1
  10. package/build/community/bottom-sheet/BottomSheet.ios.d.ts.map +1 -1
  11. package/build/community/datetime-picker/DateTimePicker.android.d.ts.map +1 -1
  12. package/build/community/menu/MenuView.android.d.ts.map +1 -1
  13. package/build/jetpack-compose/DatePicker/index.d.ts +38 -0
  14. package/build/jetpack-compose/DatePicker/index.d.ts.map +1 -1
  15. package/build/jetpack-compose/DropdownMenu/index.d.ts +8 -1
  16. package/build/jetpack-compose/DropdownMenu/index.d.ts.map +1 -1
  17. package/build/jetpack-compose/RNHostView/index.d.ts +6 -1
  18. package/build/jetpack-compose/RNHostView/index.d.ts.map +1 -1
  19. package/build/swift-ui/Chart/index.d.ts +10 -0
  20. package/build/swift-ui/Chart/index.d.ts.map +1 -1
  21. package/build/swift-ui/RNHostView.d.ts +7 -2
  22. package/build/swift-ui/RNHostView.d.ts.map +1 -1
  23. package/build/swift-ui/modifiers/index.d.ts +1 -0
  24. package/build/swift-ui/modifiers/index.d.ts.map +1 -1
  25. package/build/swift-ui/modifiers/presentationModifiers.d.ts +17 -1
  26. package/build/swift-ui/modifiers/presentationModifiers.d.ts.map +1 -1
  27. package/build/swift-ui/modifiers/searchable.d.ts +84 -0
  28. package/build/swift-ui/modifiers/searchable.d.ts.map +1 -0
  29. package/build/types.d.ts +27 -0
  30. package/build/types.d.ts.map +1 -1
  31. package/build/universal/ListItem/ListItem.android.d.ts.map +1 -1
  32. package/build/universal/RNHostView/index.d.ts.map +1 -1
  33. package/build/universal/RNHostView/types.d.ts +9 -4
  34. package/build/universal/RNHostView/types.d.ts.map +1 -1
  35. package/build/utils/matchContents.d.ts +11 -0
  36. package/build/utils/matchContents.d.ts.map +1 -0
  37. package/expo-module.config.json +1 -1
  38. package/ios/ChartView.swift +15 -10
  39. package/ios/Modifiers/PresentationModifiers.swift +20 -4
  40. package/ios/Modifiers/SearchToolbarBehaviorModifier.swift +35 -0
  41. package/ios/Modifiers/SearchableModifier.swift +94 -0
  42. package/ios/Modifiers/ViewModifierRegistry.swift +8 -0
  43. package/ios/Picker/PickerView.swift +9 -7
  44. package/ios/RNHostView.swift +55 -9
  45. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.22/expo.modules.ui-57.0.22-sources.jar → 57.0.24/expo.modules.ui-57.0.24-sources.jar} +0 -0
  46. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24-sources.jar.md5 +1 -0
  47. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24-sources.jar.sha1 +1 -0
  48. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24-sources.jar.sha256 +1 -0
  49. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24-sources.jar.sha512 +1 -0
  50. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.aar +0 -0
  51. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.aar.md5 +1 -0
  52. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.aar.sha1 +1 -0
  53. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.aar.sha256 +1 -0
  54. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.aar.sha512 +1 -0
  55. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.22/expo.modules.ui-57.0.22.module → 57.0.24/expo.modules.ui-57.0.24.module} +22 -22
  56. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.module.md5 +1 -0
  57. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.module.sha1 +1 -0
  58. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.module.sha256 +1 -0
  59. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.module.sha512 +1 -0
  60. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.22/expo.modules.ui-57.0.22.pom → 57.0.24/expo.modules.ui-57.0.24.pom} +1 -1
  61. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.pom.md5 +1 -0
  62. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.pom.sha1 +1 -0
  63. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.pom.sha256 +1 -0
  64. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.24/expo.modules.ui-57.0.24.pom.sha512 +1 -0
  65. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  66. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  67. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  68. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  69. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  70. package/package.json +4 -4
  71. package/src/community/bottom-sheet/BottomSheet.ios.tsx +7 -6
  72. package/src/community/datetime-picker/DateTimePicker.android.tsx +4 -0
  73. package/src/community/menu/MenuView.android.tsx +12 -2
  74. package/src/jetpack-compose/DatePicker/index.tsx +38 -0
  75. package/src/jetpack-compose/DropdownMenu/index.tsx +12 -1
  76. package/src/jetpack-compose/RNHostView/index.tsx +17 -6
  77. package/src/swift-ui/Chart/index.tsx +10 -0
  78. package/src/swift-ui/RNHostView.tsx +11 -4
  79. package/src/swift-ui/modifiers/index.ts +1 -0
  80. package/src/swift-ui/modifiers/presentationModifiers.ts +18 -2
  81. package/src/swift-ui/modifiers/searchable.ts +107 -0
  82. package/src/types.ts +28 -0
  83. package/src/universal/ListItem/ListItem.android.tsx +7 -2
  84. package/src/universal/RNHostView/index.tsx +9 -4
  85. package/src/universal/RNHostView/types.ts +6 -4
  86. package/src/utils/matchContents.ts +14 -0
  87. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22-sources.jar.md5 +0 -1
  88. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22-sources.jar.sha1 +0 -1
  89. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22-sources.jar.sha256 +0 -1
  90. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22-sources.jar.sha512 +0 -1
  91. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.aar +0 -0
  92. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.aar.md5 +0 -1
  93. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.aar.sha1 +0 -1
  94. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.aar.sha256 +0 -1
  95. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.aar.sha512 +0 -1
  96. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.module.md5 +0 -1
  97. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.module.sha1 +0 -1
  98. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.module.sha256 +0 -1
  99. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.module.sha512 +0 -1
  100. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.pom.md5 +0 -1
  101. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.pom.sha1 +0 -1
  102. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.pom.sha256 +0 -1
  103. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.22/expo.modules.ui-57.0.22.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,31 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 57.0.24 — 2026-10-14
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [Android] Fix the community `MenuView` opening detached above its anchor near the bottom of the screen, and add a `properties` prop to the Jetpack Compose `DropdownMenu`. ([#51412](https://github.com/expo/expo/pull/51412) by [@nishan](https://github.com/intergalacticspacehighway))
18
+ - [Android] Fix the universal `ListItem` ignoring `testID`. The prop was never passed to Compose, so end-to-end tools such as Maestro could not find list rows on Android. It is now applied as the `testID` modifier, like the universal `Button` and `Checkbox` do. ([#51480](https://github.com/expo/expo/pull/51480) by [@devonik](https://github.com/devonik))
19
+
20
+ ## 57.0.23 — 2026-10-12
21
+
22
+ ### 🎉 New features
23
+
24
+ - [Android] Add `showTitle` and `showHeadline` to the Jetpack Compose `DateTimePicker`, `DatePickerDialog`, `DateRangePicker`, and `DateRangePickerDialog` to hide Material 3's title and headline. The community `DateTimePicker` with `presentation="inline"` now hides both on Android, matching iOS. To keep the title and headline, use `DateTimePicker` from `@expo/ui/jetpack-compose` instead. ([#51274](https://github.com/expo/expo/pull/51274) by [@IGx89](https://github.com/IGx89))
25
+ - [iOS] Add `searchable` and `searchToolbarBehavior` SwiftUI modifiers. ([#50369](https://github.com/expo/expo/pull/50369) by [@expo-bot](https://github.com/expo-bot))
26
+ - [iOS][Android] `RNHostView` `matchContents` accepts `{ horizontal, vertical }`, so hosted content can take its width from the parent and its height from the content. ([#50674](https://github.com/expo/expo/pull/50674) by [@nishan](https://github.com/intergalacticspacehighway))
27
+ - [iOS] Add `cornerRadius` and `opacity` to `Chart`'s `pieStyle`. Pie slices could not have rounded corners, and their opacity was fixed at 0.8, so a chart drawn in solid colors always looked washed out. Both default to the previous behavior. Rounded corners let a single-slice donut work as a progress ring with rounded ends. ([#51351](https://github.com/expo/expo/pull/51351) by [@jsg2021](https://github.com/jsg2021))
28
+
29
+ ### 🐛 Bug fixes
30
+
31
+ - [Android] Fix a `Pressable` (or any JS responder) being cancelled when a `MaskedView`, or any other component that renders a `Host`, is laid over it. Once React Native grants the JS responder, the responder's view intercepts the touch stream and sends `ACTION_CANCEL` to its native children, including that `Host`. The `Host` reported this cancel as Compose claiming the gesture, which cancelled the press it belonged to. Holds longer than about 30 ms never fired `onPress`. ([#51163](https://github.com/expo/expo/pull/51163) by [@1kuko3](https://github.com/1kuko3))
32
+ - [iOS] Fix `Picker` not reporting a selection that equals the last `selection` prop when the user changes it again before the prop updates. ([#51196](https://github.com/expo/expo/pull/51196) by [@expo-bot](https://github.com/expo-bot))
33
+ - [iOS] Fix `Chart` ignoring `lineStyle.width` on line charts. The line mark applied `.lineStyle` twice (once for the dash pattern, once for the width), and the first one wins, so lines always rendered at 1 pt. The width and the dash pattern are now set in one `StrokeStyle`. ([#51283](https://github.com/expo/expo/pull/51283) by [@brentvatne](https://github.com/brentvatne))
34
+ - [Android] Fix a numeric `width()` modifier crashing the app on launch with `FieldCastException: Cannot cast value for field 'width'` since the `IntrinsicSize` support added in 57.0.22 / 58.0.9. JS numbers reach the modifier record as `Double`, which matched neither branch of `Either<Int, IntrinsicSizeType>`; the field is now `Either<Double, IntrinsicSizeType>`, so numeric widths convert again and `width(IntrinsicSize.Min|Max)` keeps working. ([#51322](https://github.com/expo/expo/pull/51322) by [@expo-bot](https://github.com/expo-bot))
35
+ - [iOS] Fix the community `BottomSheet` clipping its content when the sheet is narrower than the window, as on iPhone Duo. When the sheet sized itself to its content, the content was pinned to the window width and centered in the sheet, so its leading edge was cut off. The content now takes its width from the sheet and its height from the content. `presentationSizing` takes a `fitted` option (`{ horizontal, vertical }`) to fit a sheet to its content on one axis only. ([#51319](https://github.com/expo/expo/pull/51319) by [@nishan](https://github.com/intergalacticspacehighway))
36
+ - [Android] Fix an `RNHostView` that ignores touches when a Compose button with a ripple in the same `Host` was pressed earlier. The ripple container that Compose adds was found first during React Native's touch-target search, so the touch went to the `Host` instead of the hosted view. ([#51237](https://github.com/expo/expo/pull/51237) by [@nishan](https://github.com/intergalacticspacehighway))
37
+
13
38
  ## 57.0.22 — 2026-10-06
14
39
 
15
40
  ### 🎉 New features
@@ -12,13 +12,13 @@ apply plugin: 'expo-module-gradle-plugin'
12
12
  apply plugin: 'org.jetbrains.kotlin.plugin.compose'
13
13
 
14
14
  group = 'expo.modules.ui'
15
- version = '57.0.22'
15
+ version = '57.0.24'
16
16
 
17
17
  android {
18
18
  namespace "expo.modules.ui"
19
19
  defaultConfig {
20
20
  versionCode 1
21
- versionName "57.0.22"
21
+ versionName "57.0.24"
22
22
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
23
23
  }
24
24
  buildFeatures {
@@ -4,6 +4,7 @@ import androidx.compose.material3.AlertDialog
4
4
  import androidx.compose.ui.res.stringResource
5
5
  import androidx.compose.material3.ButtonDefaults
6
6
  import androidx.compose.material3.DatePicker
7
+ import androidx.compose.material3.DatePickerColors
7
8
  import androidx.compose.material3.DatePickerDefaults
8
9
  import androidx.compose.material3.DatePickerDialog
9
10
  import androidx.compose.material3.DatePickerState
@@ -158,6 +159,8 @@ data class DateTimePickerProps(
158
159
  val variant: Variant = Variant.PICKER,
159
160
  val displayedComponents: DisplayedComponents = DisplayedComponents.DATE,
160
161
  val showVariantToggle: Boolean = true,
162
+ val showTitle: Boolean = true,
163
+ val showHeadline: Boolean = true,
161
164
  val is24Hour: Boolean = true,
162
165
  val color: AndroidColor? = null,
163
166
  val elementColors: DateTimePickerColorOverrides = DateTimePickerColorOverrides(),
@@ -170,6 +173,8 @@ data class DatePickerDialogProps(
170
173
  val initialDate: Long? = null,
171
174
  val variant: Variant = Variant.PICKER,
172
175
  val showVariantToggle: Boolean = true,
176
+ val showTitle: Boolean = true,
177
+ val showHeadline: Boolean = true,
173
178
  val confirmButtonLabel: String? = null,
174
179
  val dismissButtonLabel: String? = null,
175
180
  val color: AndroidColor? = null,
@@ -388,7 +393,7 @@ fun ExpoDatePickerDialogContent(props: DatePickerDialogProps, onDateSelected: (D
388
393
  // Material3's year-selector chevron tints from the ambient LocalContentColor (which defaults to
389
394
  // black), not `navigationContentColor`; bind the local so the chevron honors the navigation color.
390
395
  CompositionLocalProvider(LocalContentColor provides colors.navigationContentColor) {
391
- DatePicker(
396
+ MaterialDatePicker(
392
397
  modifier = if (displayMode == DisplayMode.Picker) {
393
398
  Modifier.wrapContentHeight(align = Alignment.Top, unbounded = true)
394
399
  } else {
@@ -396,6 +401,8 @@ fun ExpoDatePickerDialogContent(props: DatePickerDialogProps, onDateSelected: (D
396
401
  },
397
402
  state = state,
398
403
  showModeToggle = props.showVariantToggle,
404
+ showTitle = props.showTitle,
405
+ showHeadline = props.showHeadline,
399
406
  colors = colors
400
407
  )
401
408
  }
@@ -499,15 +506,41 @@ fun ExpoDatePicker(modifier: Modifier = Modifier, props: DateTimePickerProps, on
499
506
  // Material3's year-selector chevron tints from the ambient LocalContentColor (which defaults to
500
507
  // black), not `navigationContentColor`; bind the local so the chevron honors the navigation color.
501
508
  CompositionLocalProvider(LocalContentColor provides colors.navigationContentColor) {
502
- DatePicker(
509
+ MaterialDatePicker(
503
510
  modifier = modifier,
504
511
  state = state,
505
512
  showModeToggle = props.showVariantToggle,
513
+ showTitle = props.showTitle,
514
+ showHeadline = props.showHeadline,
506
515
  colors = colors
507
516
  )
508
517
  }
509
518
  }
510
519
 
520
+ // Material 3 hides the title or headline when its slot is `null`. Its default slots pad themselves
521
+ // with private constants, so branch on the call instead of copying them, keeping the defaults exact.
522
+ @OptIn(ExperimentalMaterial3Api::class)
523
+ @Composable
524
+ private fun MaterialDatePicker(
525
+ modifier: Modifier = Modifier,
526
+ state: DatePickerState,
527
+ showModeToggle: Boolean,
528
+ showTitle: Boolean,
529
+ showHeadline: Boolean,
530
+ colors: DatePickerColors
531
+ ) {
532
+ when {
533
+ showTitle && showHeadline ->
534
+ DatePicker(state = state, modifier = modifier, colors = colors, showModeToggle = showModeToggle)
535
+ showTitle ->
536
+ DatePicker(state = state, modifier = modifier, colors = colors, headline = null, showModeToggle = showModeToggle)
537
+ showHeadline ->
538
+ DatePicker(state = state, modifier = modifier, colors = colors, title = null, showModeToggle = showModeToggle)
539
+ else ->
540
+ DatePicker(state = state, modifier = modifier, colors = colors, title = null, headline = null, showModeToggle = showModeToggle)
541
+ }
542
+ }
543
+
511
544
  @OptIn(ExperimentalMaterial3Api::class)
512
545
  @Composable
513
546
  fun ExpoTimePicker(modifier: Modifier = Modifier, props: DateTimePickerProps, onDateSelected: (DatePickerResult) -> Unit) {
@@ -1,6 +1,7 @@
1
1
  package expo.modules.ui
2
2
 
3
3
  import androidx.compose.material3.ButtonDefaults
4
+ import androidx.compose.material3.DatePickerColors
4
5
  import androidx.compose.material3.DatePickerDefaults
5
6
  import androidx.compose.material3.DatePickerDialog
6
7
  import androidx.compose.material3.DateRangePicker
@@ -13,6 +14,7 @@ import androidx.compose.runtime.Composable
13
14
  import androidx.compose.runtime.CompositionLocalProvider
14
15
  import androidx.compose.runtime.LaunchedEffect
15
16
  import androidx.compose.runtime.remember
17
+ import androidx.compose.ui.Modifier
16
18
  import androidx.compose.ui.platform.LocalConfiguration
17
19
  import androidx.compose.ui.res.stringResource
18
20
  import expo.modules.kotlin.records.Field
@@ -38,6 +40,8 @@ data class DateRangePickerProps(
38
40
  val initialEndDate: Long? = null,
39
41
  val variant: Variant = Variant.PICKER,
40
42
  val showVariantToggle: Boolean = true,
43
+ val showTitle: Boolean = true,
44
+ val showHeadline: Boolean = true,
41
45
  val color: AndroidColor? = null,
42
46
  val elementColors: DateTimePickerColorOverrides = DateTimePickerColorOverrides(),
43
47
  val selectableDates: SelectableDatesRecord? = null,
@@ -50,6 +54,8 @@ data class DateRangePickerDialogProps(
50
54
  val initialEndDate: Long? = null,
51
55
  val variant: Variant = Variant.PICKER,
52
56
  val showVariantToggle: Boolean = true,
57
+ val showTitle: Boolean = true,
58
+ val showHeadline: Boolean = true,
53
59
  val confirmButtonLabel: String? = null,
54
60
  val dismissButtonLabel: String? = null,
55
61
  val color: AndroidColor? = null,
@@ -147,9 +153,11 @@ fun ExpoDateRangePickerDialogContent(
147
153
  ApplyDatePickerDialogKeyboardBehavior(displayMode)
148
154
 
149
155
  CompositionLocalProvider(LocalContentColor provides colors.navigationContentColor) {
150
- DateRangePicker(
156
+ MaterialDateRangePicker(
151
157
  state = state,
152
158
  showModeToggle = props.showVariantToggle,
159
+ showTitle = props.showTitle,
160
+ showHeadline = props.showHeadline,
153
161
  colors = colors
154
162
  )
155
163
  }
@@ -181,11 +189,36 @@ fun FunctionalComposableScope.DateRangePickerContent(
181
189
 
182
190
  val colors = buildDatePickerColors(props.elementColors, props.color.composeOrNull)
183
191
  CompositionLocalProvider(LocalContentColor provides colors.navigationContentColor) {
184
- DateRangePicker(
192
+ MaterialDateRangePicker(
185
193
  modifier = modifier,
186
194
  state = state,
187
195
  showModeToggle = props.showVariantToggle,
196
+ showTitle = props.showTitle,
197
+ showHeadline = props.showHeadline,
188
198
  colors = colors
189
199
  )
190
200
  }
191
201
  }
202
+
203
+ // See MaterialDatePicker: branching keeps Material 3's own default title and headline slots.
204
+ @OptIn(ExperimentalMaterial3Api::class)
205
+ @Composable
206
+ private fun MaterialDateRangePicker(
207
+ modifier: Modifier = Modifier,
208
+ state: DateRangePickerState,
209
+ showModeToggle: Boolean,
210
+ showTitle: Boolean,
211
+ showHeadline: Boolean,
212
+ colors: DatePickerColors
213
+ ) {
214
+ when {
215
+ showTitle && showHeadline ->
216
+ DateRangePicker(state = state, modifier = modifier, colors = colors, showModeToggle = showModeToggle)
217
+ showTitle ->
218
+ DateRangePicker(state = state, modifier = modifier, colors = colors, headline = null, showModeToggle = showModeToggle)
219
+ showHeadline ->
220
+ DateRangePicker(state = state, modifier = modifier, colors = colors, title = null, showModeToggle = showModeToggle)
221
+ else ->
222
+ DateRangePicker(state = state, modifier = modifier, colors = colors, title = null, headline = null, showModeToggle = showModeToggle)
223
+ }
224
+ }
@@ -4,6 +4,7 @@ package expo.modules.ui
4
4
 
5
5
  import android.annotation.SuppressLint
6
6
  import android.content.Context
7
+ import android.view.MotionEvent
7
8
  import androidx.compose.foundation.isSystemInDarkTheme
8
9
  import androidx.compose.foundation.layout.WindowInsets
9
10
  import androidx.compose.foundation.layout.displayCutout
@@ -104,6 +105,26 @@ internal class HostView(context: Context, appContext: AppContext) :
104
105
  private val onLayoutContent by EventDispatcher<LayoutContentEvent>()
105
106
  private var lastDispatchedContentSize: IntSize? = null
106
107
 
108
+ /**
109
+ * True while this view passes down an `ACTION_CANCEL` that came from its React Native parent,
110
+ * not from a Compose gesture detector. React Native already owns that gesture: the usual cause is
111
+ * the JS responder's view intercepting the stream, which cancels its native children.
112
+ */
113
+ internal var isDispatchingCancelFromParent = false
114
+ private set
115
+
116
+ override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
117
+ if (ev.actionMasked != MotionEvent.ACTION_CANCEL) {
118
+ return super.dispatchTouchEvent(ev)
119
+ }
120
+ isDispatchingCancelFromParent = true
121
+ try {
122
+ return super.dispatchTouchEvent(ev)
123
+ } finally {
124
+ isDispatchingCancelFromParent = false
125
+ }
126
+ }
127
+
107
128
  @Composable
108
129
  override fun ComposableScope.Content() {
109
130
  val context = LocalContext.current
@@ -141,7 +141,7 @@ internal enum class IntrinsicSizeType(val value: String) : Enumerable {
141
141
 
142
142
  @OptimizedRecord
143
143
  internal data class ComposeWidthParams(
144
- @Field val width: Either<Int, IntrinsicSizeType>? = null
144
+ @Field val width: Either<Double, IntrinsicSizeType>? = null
145
145
  ) : Record
146
146
 
147
147
  @OptimizedRecord
@@ -474,7 +474,7 @@ object ModifierRegistry {
474
474
  if (width?.`is`(IntrinsicSizeType::class) == true) {
475
475
  Modifier.width(width.second().toComposeIntrinsicSize())
476
476
  } else {
477
- Modifier.width((width?.first() ?: 0).dp)
477
+ Modifier.width((width?.first() ?: 0.0).dp)
478
478
  }
479
479
  }
480
480
 
@@ -8,15 +8,23 @@ import android.view.View
8
8
  import android.view.ViewGroup
9
9
  import android.view.ViewParent
10
10
  import android.widget.FrameLayout
11
+ import androidx.compose.foundation.layout.fillMaxHeight
11
12
  import androidx.compose.foundation.layout.fillMaxSize
13
+ import androidx.compose.foundation.layout.fillMaxWidth
14
+ import androidx.compose.foundation.layout.requiredHeight
12
15
  import androidx.compose.foundation.layout.requiredSize
16
+ import androidx.compose.foundation.layout.requiredWidth
17
+ import androidx.compose.foundation.layout.wrapContentHeight
18
+ import androidx.compose.foundation.layout.wrapContentWidth
13
19
  import androidx.compose.runtime.Composable
14
20
  import androidx.compose.runtime.MutableState
15
21
  import androidx.compose.runtime.mutableStateOf
22
+ import androidx.compose.ui.Alignment
16
23
  import androidx.compose.ui.Modifier
17
24
  import androidx.compose.ui.layout.onGloballyPositioned
18
25
  import androidx.compose.ui.layout.onSizeChanged
19
26
  import androidx.compose.ui.layout.positionInRoot
27
+ import androidx.compose.ui.platform.AbstractComposeView
20
28
  import androidx.compose.ui.platform.LocalDensity
21
29
  import androidx.compose.ui.unit.IntSize
22
30
  import androidx.compose.ui.viewinterop.AndroidView
@@ -40,7 +48,8 @@ import expo.modules.kotlin.views.OptimizedComposeProps
40
48
 
41
49
  @OptimizedComposeProps
42
50
  internal data class RNHostViewProps(
43
- val matchContents: MutableState<Boolean?> = mutableStateOf(null),
51
+ val matchContentsHorizontal: MutableState<Boolean?> = mutableStateOf(null),
52
+ val matchContentsVertical: MutableState<Boolean?> = mutableStateOf(null),
44
53
  // Adds LeafNode and MeasurableYogaNode trait in Shadow node
45
54
  val expoInternalSizeFromChildren: MutableState<Boolean?> = mutableStateOf(null),
46
55
  val modifiers: ModifierList = emptyList()
@@ -144,22 +153,33 @@ internal class RNHostView(context: Context, appContext: AppContext) :
144
153
 
145
154
  @Composable
146
155
  override fun ComposableScope.Content() {
147
- val matchContents = props.matchContents.value ?: false
156
+ val matchContentsHorizontal = props.matchContentsHorizontal.value ?: false
157
+ val matchContentsVertical = props.matchContentsVertical.value ?: false
148
158
  val scope: ComposableScope = this
149
159
 
150
160
  wrapperState.value?.let { wrapper ->
151
161
  childViewState.value ?: return@let
152
- val sizingModifier = if (matchContents) {
153
- applySizeFromYogaNodeModifier()
154
- } else {
155
- Modifier
156
- .fillMaxSize()
157
- .then(reportSizeToYogaNodeModifier())
162
+ val sizingModifier = when {
163
+ matchContentsHorizontal && matchContentsVertical -> applySizeFromYogaNodeModifier()
164
+ matchContentsVertical ->
165
+ Modifier
166
+ .fillMaxWidth()
167
+ .then(reportSizeToYogaNodeModifier(reportHeight = false))
168
+ .then(applyHeightFromYogaNodeModifier())
169
+ matchContentsHorizontal ->
170
+ Modifier
171
+ .fillMaxHeight()
172
+ .then(reportSizeToYogaNodeModifier(reportWidth = false))
173
+ .then(applyWidthFromYogaNodeModifier())
174
+ else ->
175
+ Modifier
176
+ .fillMaxSize()
177
+ .then(reportSizeToYogaNodeModifier())
158
178
  }
159
- // Origin last: a chain applies outside-in, so a caller `padding` or `offset` has to shift the
160
- // content before it is read.
161
- val modifiers = sizingModifier
162
- .then(ModifierRegistry.applyModifiers(props.modifiers, appContext, scope, globalEventDispatcher))
179
+ // A chain applies outside-in. Caller modifiers go first so a `padding` or `border` shrinks the
180
+ // box before its size is reported and its origin is read.
181
+ val modifiers = ModifierRegistry.applyModifiers(props.modifiers, appContext, scope, globalEventDispatcher)
182
+ .then(sizingModifier)
163
183
  .then(publishContentOriginModifier())
164
184
 
165
185
  AndroidView(
@@ -190,6 +210,28 @@ internal class RNHostView(context: Context, appContext: AppContext) :
190
210
  }
191
211
  }
192
212
 
213
+ @Composable
214
+ private fun applyHeightFromYogaNodeModifier(): Modifier {
215
+ val height = childSizeState.value.height
216
+ if (height <= 0) {
217
+ return Modifier
218
+ }
219
+ return Modifier
220
+ .wrapContentHeight(Alignment.Top, unbounded = true)
221
+ .requiredHeight(with(LocalDensity.current) { height.toDp() })
222
+ }
223
+
224
+ @Composable
225
+ private fun applyWidthFromYogaNodeModifier(): Modifier {
226
+ val width = childSizeState.value.width
227
+ if (width <= 0) {
228
+ return Modifier
229
+ }
230
+ return Modifier
231
+ .wrapContentWidth(Alignment.CenterHorizontally, unbounded = true)
232
+ .requiredWidth(with(LocalDensity.current) { width.toDp() })
233
+ }
234
+
193
235
  /**
194
236
  * Publishes where Compose placed this view inside its `Host`, which Yoga has no way to know:
195
237
  * Yoga puts the box at the `Host`'s origin while Compose may draw it anywhere inside. Without
@@ -219,13 +261,21 @@ internal class RNHostView(context: Context, appContext: AppContext) :
219
261
  // Sets Yoga node size from Compose view size
220
262
  // Listens Compose view size changes and updates the Yoga node size
221
263
  @Composable
222
- private fun reportSizeToYogaNodeModifier(): Modifier {
264
+ private fun reportSizeToYogaNodeModifier(reportWidth: Boolean = true, reportHeight: Boolean = true): Modifier {
223
265
  val density = LocalDensity.current
224
266
  return Modifier.onSizeChanged { size ->
225
267
  with(density) {
226
268
  shadowNodeProxy.setViewSize(
227
- size.width.toDp().value.toDouble(),
228
- size.height.toDp().value.toDouble()
269
+ if (reportWidth) {
270
+ size.width.toDp().value.toDouble()
271
+ } else {
272
+ Double.NaN
273
+ },
274
+ if (reportHeight) {
275
+ size.height.toDp().value.toDouble()
276
+ } else {
277
+ Double.NaN
278
+ }
229
279
  )
230
280
  }
231
281
  }
@@ -247,6 +297,28 @@ internal fun detachForReuse(wrapper: View) {
247
297
  wrapper.layout(0, 0, 0, 0)
248
298
  }
249
299
 
300
+ /**
301
+ * React Native looks for touch targets from the last child to the first, and Compose appends helper
302
+ * views such as ripple containers to its owner view after the hosted views. Those helpers have no
303
+ * React tag, so a touch on them goes to the `Host` instead of the hosted view.
304
+ * This is a workaround: React Native has no way to let the `Host` choose the touch target.
305
+ * This causes https://github.com/expo/expo/issues/51159
306
+ */
307
+ internal fun keepLastForTouchTargeting(composeOwnerView: ViewGroup, hostedViewsContainer: View) {
308
+ if (composeOwnerView.indexOfChild(hostedViewsContainer) != composeOwnerView.childCount - 1) {
309
+ composeOwnerView.bringChildToFront(hostedViewsContainer)
310
+ }
311
+ composeOwnerView.setOnHierarchyChangeListener(object : ViewGroup.OnHierarchyChangeListener {
312
+ override fun onChildViewAdded(parent: View, child: View) {
313
+ if (child !== hostedViewsContainer) {
314
+ composeOwnerView.bringChildToFront(hostedViewsContainer)
315
+ }
316
+ }
317
+
318
+ override fun onChildViewRemoved(parent: View, child: View) = Unit
319
+ })
320
+ }
321
+
250
322
  /**
251
323
  * A thin FrameLayout that intercepts touch events and dispatches them to JS via
252
324
  * JSTouchDispatcher/JSPointerDispatcher, replicating the pattern from React Native's
@@ -304,7 +376,8 @@ private class TouchDispatchingRootViewGroup(
304
376
 
305
377
  override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
306
378
  // Always gets called with EXACTLY mode
307
- // because parent has either fillMaxSize (matchContents = false) or requiredSize (matchContents = true) modifiers
379
+ // because parent has fillMaxSize (matchContents = false), requiredSize (matchContents = true), or a
380
+ // fillMax* + required* pair (one matched axis) modifiers
308
381
  setMeasuredDimension(
309
382
  MeasureSpec.getSize(widthMeasureSpec),
310
383
  MeasureSpec.getSize(heightMeasureSpec)
@@ -316,8 +389,25 @@ private class TouchDispatchingRootViewGroup(
316
389
  // and we must not override those values.
317
390
  }
318
391
 
392
+ override fun onAttachedToWindow() {
393
+ super.onAttachedToWindow()
394
+ // Walk up until the parent is the ComposeView. That ancestor is the Compose owner view, and the
395
+ // child we came from is the container that Compose keeps all hosted views in.
396
+ var hostedViewsContainer: View = this
397
+ var composeOwnerView = parent as? ViewGroup
398
+ while (composeOwnerView != null && composeOwnerView.parent !is AbstractComposeView) {
399
+ hostedViewsContainer = composeOwnerView
400
+ composeOwnerView = composeOwnerView.parent as? ViewGroup
401
+ }
402
+ composeOwnerView?.let { keepLastForTouchTargeting(it, hostedViewsContainer) }
403
+ }
404
+
319
405
  override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
320
- if (ev.actionMasked == MotionEvent.ACTION_CANCEL && !dispatchesTouchesToJS) {
406
+ if (
407
+ ev.actionMasked == MotionEvent.ACTION_CANCEL &&
408
+ !dispatchesTouchesToJS &&
409
+ !isCancelFromReactNative()
410
+ ) {
321
411
  // Compose cancels this subtree when a gesture detector above it claims the gesture. The
322
412
  // ancestor root, which dispatches this subtree's touches, keeps streaming moves, so a
323
413
  // `Pressable` still fires on release. Tell it a native child took over.
@@ -371,6 +461,23 @@ private class TouchDispatchingRootViewGroup(
371
461
  return handled
372
462
  }
373
463
 
464
+ /**
465
+ * Whether this cancel reached the `Host` from React Native rather than from Compose. The JS
466
+ * responder's view intercepts the stream once it's granted, which cancels its native children,
467
+ * including the `Host` of a `MaskedView` laid over a `Pressable`. JS still owns that gesture, so
468
+ * reporting it as a native one would cancel the press it belongs to.
469
+ */
470
+ private fun isCancelFromReactNative(): Boolean {
471
+ var current: ViewParent? = parent
472
+ while (current != null) {
473
+ if (current is HostView) {
474
+ return current.isDispatchingCancelFromParent
475
+ }
476
+ current = current.parent
477
+ }
478
+ return false
479
+ }
480
+
374
481
  private inline fun notifyAncestorRootViews(block: (RootView) -> Unit) {
375
482
  var current: ViewParent? = parent
376
483
  while (current != null) {
@@ -5,6 +5,7 @@ import androidx.compose.material3.DropdownMenu
5
5
  import androidx.compose.material3.MenuDefaults
6
6
  import androidx.compose.runtime.Composable
7
7
  import androidx.compose.ui.unit.dp
8
+ import androidx.compose.ui.window.PopupProperties
8
9
  import expo.modules.kotlin.views.FunctionalComposableScope
9
10
  import expo.modules.ui.UIComposableScope
10
11
  import expo.modules.ui.ModifierRegistry
@@ -27,7 +28,13 @@ fun FunctionalComposableScope.DropdownMenuContent(
27
28
  containerColor = props.color?.composeOrNull ?: MenuDefaults.containerColor,
28
29
  shadowElevation = props.shadowElevation?.dp ?: MenuDefaults.ShadowElevation,
29
30
  expanded = props.expanded,
30
- onDismissRequest = onDismissRequest
31
+ onDismissRequest = onDismissRequest,
32
+ properties = PopupProperties(
33
+ focusable = props.properties.focusable,
34
+ dismissOnBackPress = props.properties.dismissOnBackPress,
35
+ dismissOnClickOutside = props.properties.dismissOnClickOutside,
36
+ clippingEnabled = props.properties.clippingEnabled
37
+ )
31
38
  ) {
32
39
  itemsSlotView?.let {
33
40
  with(UIComposableScope()) {
@@ -1,7 +1,10 @@
1
1
  package expo.modules.ui.menu
2
2
 
3
3
  import android.graphics.Color
4
+ import expo.modules.kotlin.records.Field
5
+ import expo.modules.kotlin.records.Record
4
6
  import expo.modules.kotlin.types.Enumerable
7
+ import expo.modules.kotlin.types.OptimizedRecord
5
8
  import expo.modules.kotlin.views.ComposeProps
6
9
  import expo.modules.ui.ModifierList
7
10
  import expo.modules.kotlin.views.OptimizedComposeProps
@@ -11,11 +14,20 @@ enum class ActivationMethod(val value: String) : Enumerable {
11
14
  LONG_PRESS("longPress")
12
15
  }
13
16
 
17
+ @OptimizedRecord
18
+ data class ExpoPopupProperties(
19
+ @Field val focusable: Boolean = true,
20
+ @Field val dismissOnBackPress: Boolean = true,
21
+ @Field val dismissOnClickOutside: Boolean = true,
22
+ @Field val clippingEnabled: Boolean = true
23
+ ) : Record
24
+
14
25
  @OptimizedComposeProps
15
26
  data class DropdownMenuProps(
16
27
  val activationMethod: ActivationMethod = ActivationMethod.SINGLE_PRESS,
17
28
  val expanded: Boolean = false,
18
29
  val color: Color? = null,
19
30
  val modifiers: ModifierList = emptyList(),
20
- val shadowElevation: Float? = null
31
+ val shadowElevation: Float? = null,
32
+ val properties: ExpoPopupProperties = ExpoPopupProperties()
21
33
  ) : ComposeProps
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.ios.d.ts","sourceRoot":"","sources":["../../../src/community/bottom-sheet/BottomSheet.ios.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAepE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAwD3C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CA4KlD"}
1
+ {"version":3,"file":"BottomSheet.ios.d.ts","sourceRoot":"","sources":["../../../src/community/bottom-sheet/BottomSheet.ios.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAepE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAwD3C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CA6KlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.android.d.ts","sourceRoot":"","sources":["../../../src/community/datetime-picker/DateTimePicker.android.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoCjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAmGxD"}
1
+ {"version":3,"file":"DateTimePicker.android.d.ts","sourceRoot":"","sources":["../../../src/community/datetime-picker/DateTimePicker.android.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoCjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAuGxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuView.android.d.ts","sourceRoot":"","sources":["../../../src/community/menu/MenuView.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAc,kBAAkB,EAAE,gBAAgB,EAAqB,MAAM,SAAS,CAAC;AA4InG;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,2CAuEzF"}
1
+ {"version":3,"file":"MenuView.android.d.ts","sourceRoot":"","sources":["../../../src/community/menu/MenuView.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAc,kBAAkB,EAAE,gBAAgB,EAAqB,MAAM,SAAS,CAAC;AAmJnG;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,2CA0EzF"}
@@ -122,6 +122,20 @@ export interface DateTimePickerProps {
122
122
  * @default true
123
123
  */
124
124
  showVariantToggle?: boolean;
125
+ /**
126
+ * Whether the picker shows its title, such as "Select date". When `false`, the picker passes
127
+ * `null` to Material 3's `title` slot. This prop has no effect when `displayedComponents` is
128
+ * `'hourAndMinute'`.
129
+ * @default true
130
+ */
131
+ showTitle?: boolean;
132
+ /**
133
+ * Whether the picker shows its headline, which displays the current selection. When `false`,
134
+ * the picker passes `null` to Material 3's `headline` slot. This prop has no effect when
135
+ * `displayedComponents` is `'hourAndMinute'`.
136
+ * @default true
137
+ */
138
+ showHeadline?: boolean;
125
139
  /**
126
140
  * The components that the picker should display.
127
141
  * On Android, you can have a picker that selects just the date or just the time.
@@ -191,6 +205,18 @@ export interface DateRangePickerProps {
191
205
  * @default true
192
206
  */
193
207
  showVariantToggle?: boolean;
208
+ /**
209
+ * Whether the picker shows its title, such as "Select date". When `false`, the picker passes
210
+ * `null` to Material 3's `title` slot.
211
+ * @default true
212
+ */
213
+ showTitle?: boolean;
214
+ /**
215
+ * Whether the picker shows its headline, which displays the current selection. When `false`,
216
+ * the picker passes `null` to Material 3's `headline` slot.
217
+ * @default true
218
+ */
219
+ showHeadline?: boolean;
194
220
  /**
195
221
  * The tint color to use on the picker elements.
196
222
  */
@@ -224,6 +250,18 @@ export interface DatePickerDialogProps {
224
250
  initialDate?: string | null;
225
251
  variant?: AndroidVariant;
226
252
  showVariantToggle?: boolean;
253
+ /**
254
+ * Whether the picker shows its title, such as "Select date". When `false`, the picker passes
255
+ * `null` to Material 3's `title` slot.
256
+ * @default true
257
+ */
258
+ showTitle?: boolean;
259
+ /**
260
+ * Whether the picker shows its headline, which displays the current selection. When `false`,
261
+ * the picker passes `null` to Material 3's `headline` slot.
262
+ * @default true
263
+ */
264
+ showHeadline?: boolean;
227
265
  confirmButtonLabel?: string;
228
266
  dismissButtonLabel?: string;
229
267
  color?: ColorValue;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jetpack-compose/DatePicker/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jetpack-compose/DatePicker/index.tsx"],"names":[],"mappings":"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"}