@expo/ui 58.0.16 → 58.0.18

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 (63) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/android/build.gradle +6 -6
  3. package/android/src/main/java/expo/modules/ui/CarouselView.kt +2 -1
  4. package/android/src/main/java/expo/modules/ui/DatePickerView.kt +15 -5
  5. package/android/src/main/java/expo/modules/ui/SliderView.kt +21 -9
  6. package/android/src/main/java/expo/modules/ui/ToggleButtonView.kt +1 -1
  7. package/android/src/main/java/expo/modules/ui/VerticalSliderView.kt +23 -14
  8. package/android/src/main/java/expo/modules/ui/menu/ExposedDropdownMenuView.kt +1 -0
  9. package/build/jetpack-compose/Carousel/index.d.ts +7 -2
  10. package/build/jetpack-compose/Carousel/index.js.map +1 -1
  11. package/build/jetpack-compose/DatePicker/index.d.ts +20 -0
  12. package/build/jetpack-compose/DatePicker/index.js.map +1 -1
  13. package/build/universal/ListItem/ListItem.android.js +5 -2
  14. package/build/universal/ListItem/ListItem.android.js.map +1 -1
  15. package/build/universal/TextInput/index.android.js +5 -2
  16. package/build/universal/TextInput/index.android.js.map +1 -1
  17. package/ios/HostView.swift +1 -0
  18. package/ios/Modifiers/HostViewContentMarginsMitigation.swift +98 -0
  19. package/ios/UIBaseView.swift +13 -2
  20. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.16/expo.modules.ui-58.0.16-sources.jar → 58.0.18/expo.modules.ui-58.0.18-sources.jar} +0 -0
  21. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18-sources.jar.md5 +1 -0
  22. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18-sources.jar.sha1 +1 -0
  23. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18-sources.jar.sha256 +1 -0
  24. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18-sources.jar.sha512 +1 -0
  25. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.aar +0 -0
  26. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.aar.md5 +1 -0
  27. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.aar.sha1 +1 -0
  28. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.aar.sha256 +1 -0
  29. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.aar.sha512 +1 -0
  30. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.16/expo.modules.ui-58.0.16.module → 58.0.18/expo.modules.ui-58.0.18.module} +26 -26
  31. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.md5 +1 -0
  32. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha1 +1 -0
  33. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha256 +1 -0
  34. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha512 +1 -0
  35. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.16/expo.modules.ui-58.0.16.pom → 58.0.18/expo.modules.ui-58.0.18.pom} +5 -5
  36. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.md5 +1 -0
  37. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha1 +1 -0
  38. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha256 +1 -0
  39. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha512 +1 -0
  40. package/package.json +2 -2
  41. package/prebuilds/output/debug/xcframeworks/ExpoUI.tar.gz +0 -0
  42. package/prebuilds/output/release/xcframeworks/ExpoUI.tar.gz +0 -0
  43. package/src/jetpack-compose/Carousel/index.tsx +7 -2
  44. package/src/jetpack-compose/DatePicker/index.tsx +20 -0
  45. package/src/universal/ListItem/ListItem.android.tsx +7 -2
  46. package/src/universal/TextInput/index.android.tsx +8 -1
  47. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16-sources.jar.md5 +0 -1
  48. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16-sources.jar.sha1 +0 -1
  49. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16-sources.jar.sha256 +0 -1
  50. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16-sources.jar.sha512 +0 -1
  51. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.aar +0 -0
  52. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.aar.md5 +0 -1
  53. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.aar.sha1 +0 -1
  54. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.aar.sha256 +0 -1
  55. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.aar.sha512 +0 -1
  56. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.module.md5 +0 -1
  57. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.module.sha1 +0 -1
  58. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.module.sha256 +0 -1
  59. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.module.sha512 +0 -1
  60. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.pom.md5 +0 -1
  61. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.pom.sha1 +0 -1
  62. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.pom.sha256 +0 -1
  63. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.16/expo.modules.ui-58.0.16.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 58.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - [iOS] Speed up app launch by naming the SwiftUI views without protocol conformance lookups. ([#51459](https://github.com/expo/expo/pull/51459) by [@Kudo](https://github.com/Kudo))
8
+ - Fix Android universal TextInput placeholders ignoring textStyle. ([#51563](https://github.com/expo/expo/pull/51563) by [@sync](https://github.com/sync))
9
+ - [iOS] Fix `Form` and `List` sections in a `Host` starting 20pt inside the large title beside the iPhone Duo's rail, where iOS drops its content margin. This works around a SwiftUI bug and applies only on an edge where the inset comes from a bar beside the content. ([#51606](https://github.com/expo/expo/pull/51606) by [@huntie](https://github.com/huntie))
10
+
11
+ ## 58.0.17
12
+
13
+ ### Patch Changes
14
+
15
+ - [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))
16
+ - [Android] Bump Jetpack Compose UI and Foundation to 1.12.1 and Material3 to 1.5.0-beta01. Add `preferredItemWidth` to `HorizontalCenteredHeroCarousel` and deprecate `maxItemWidth`, matching the Material3 rename. Add `TimePickerElementColors` props without the `Unselected` infix (for example `clockDialContentColor`) and deprecate the old names. ([#51426](https://github.com/expo/expo/pull/51426) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
17
+
3
18
  ## 58.0.16
4
19
 
5
20
  ### Patch Changes
@@ -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 = '58.0.16'
15
+ version = '58.0.18'
16
16
 
17
17
  android {
18
18
  namespace "expo.modules.ui"
19
19
  defaultConfig {
20
20
  versionCode 1
21
- versionName "58.0.16"
21
+ versionName "58.0.18"
22
22
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
23
23
  }
24
24
  buildFeatures {
@@ -38,10 +38,10 @@ android {
38
38
  dependencies {
39
39
  implementation 'com.facebook.react:react-android'
40
40
 
41
- implementation 'androidx.compose.foundation:foundation-android:1.10.6'
42
- implementation 'androidx.compose.ui:ui-android:1.10.6'
43
- implementation "androidx.compose.material3:material3:1.5.0-alpha17"
44
- implementation 'androidx.compose.material3:material3-android:1.5.0-alpha17'
41
+ implementation 'androidx.compose.foundation:foundation-android:1.12.1'
42
+ implementation 'androidx.compose.ui:ui-android:1.12.1'
43
+ implementation "androidx.compose.material3:material3:1.5.0-beta01"
44
+ implementation 'androidx.compose.material3:material3-android:1.5.0-beta01'
45
45
  implementation 'androidx.lifecycle:lifecycle-runtime:2.10.0'
46
46
  implementation 'androidx.fragment:fragment-ktx:1.8.9'
47
47
  implementation "androidx.graphics:graphics-shapes:1.1.0"
@@ -24,6 +24,7 @@ enum class FlingBehaviorType(val value: String) : Enumerable {
24
24
 
25
25
  @OptimizedComposeProps
26
26
  data class HorizontalCenteredHeroCarouselProps(
27
+ val preferredItemWidth: Float? = null,
27
28
  val maxItemWidth: Float? = null,
28
29
  val itemSpacing: Float? = null,
29
30
  val contentPadding: Either<Float, PaddingValuesRecord>? = null,
@@ -50,7 +51,7 @@ fun FunctionalComposableScope.HorizontalCenteredHeroCarouselContent(props: Horiz
50
51
  HorizontalCenteredHeroCarousel(
51
52
  state = carouselState,
52
53
  modifier = ModifierRegistry.applyModifiers(props.modifiers, appContext, composableScope, globalEventDispatcher),
53
- maxItemWidth = props.maxItemWidth?.dp ?: Dp.Unspecified,
54
+ preferredItemWidth = (props.preferredItemWidth ?: props.maxItemWidth)?.dp ?: Dp.Unspecified,
54
55
  itemSpacing = (props.itemSpacing ?: 0f).dp,
55
56
  flingBehavior = flingBehavior,
56
57
  userScrollEnabled = props.userScrollEnabled ?: true,
@@ -123,6 +123,8 @@ class DateTimePickerColorOverrides : Record {
123
123
 
124
124
  @Field val clockDialSelectedContentColor: AndroidColor? = null
125
125
 
126
+ @Field val clockDialContentColor: AndroidColor? = null
127
+
126
128
  @Field val clockDialUnselectedContentColor: AndroidColor? = null
127
129
 
128
130
  @Field val selectorColor: AndroidColor? = null
@@ -131,18 +133,26 @@ class DateTimePickerColorOverrides : Record {
131
133
 
132
134
  @Field val periodSelectorSelectedContainerColor: AndroidColor? = null
133
135
 
136
+ @Field val periodSelectorContainerColor: AndroidColor? = null
137
+
134
138
  @Field val periodSelectorUnselectedContainerColor: AndroidColor? = null
135
139
 
136
140
  @Field val periodSelectorSelectedContentColor: AndroidColor? = null
137
141
 
142
+ @Field val periodSelectorContentColor: AndroidColor? = null
143
+
138
144
  @Field val periodSelectorUnselectedContentColor: AndroidColor? = null
139
145
 
140
146
  @Field val timeSelectorSelectedContainerColor: AndroidColor? = null
141
147
 
148
+ @Field val timeSelectorContainerColor: AndroidColor? = null
149
+
142
150
  @Field val timeSelectorUnselectedContainerColor: AndroidColor? = null
143
151
 
144
152
  @Field val timeSelectorSelectedContentColor: AndroidColor? = null
145
153
 
154
+ @Field val timeSelectorContentColor: AndroidColor? = null
155
+
146
156
  @Field val timeSelectorUnselectedContentColor: AndroidColor? = null
147
157
  }
148
158
 
@@ -323,17 +333,17 @@ fun buildTimePickerColors(
323
333
  containerColor = elementColors.containerColor.composeOrNull ?: defaults.containerColor,
324
334
  clockDialColor = elementColors.clockDialColor.composeOrNull ?: colorProp?.copy(alpha = 0.3f) ?: defaults.clockDialColor,
325
335
  clockDialSelectedContentColor = elementColors.clockDialSelectedContentColor.composeOrNull ?: defaults.clockDialSelectedContentColor,
326
- clockDialUnselectedContentColor = elementColors.clockDialUnselectedContentColor.composeOrNull ?: defaults.clockDialUnselectedContentColor,
336
+ clockDialContentColor = (elementColors.clockDialContentColor ?: elementColors.clockDialUnselectedContentColor).composeOrNull ?: defaults.clockDialContentColor,
327
337
  selectorColor = elementColors.selectorColor.composeOrNull ?: colorProp ?: defaults.selectorColor,
328
338
  periodSelectorBorderColor = elementColors.periodSelectorBorderColor.composeOrNull ?: defaults.periodSelectorBorderColor,
329
339
  periodSelectorSelectedContainerColor = elementColors.periodSelectorSelectedContainerColor.composeOrNull ?: defaults.periodSelectorSelectedContainerColor,
330
- periodSelectorUnselectedContainerColor = elementColors.periodSelectorUnselectedContainerColor.composeOrNull ?: defaults.periodSelectorUnselectedContainerColor,
340
+ periodSelectorContainerColor = (elementColors.periodSelectorContainerColor ?: elementColors.periodSelectorUnselectedContainerColor).composeOrNull ?: defaults.periodSelectorContainerColor,
331
341
  periodSelectorSelectedContentColor = elementColors.periodSelectorSelectedContentColor.composeOrNull ?: defaults.periodSelectorSelectedContentColor,
332
- periodSelectorUnselectedContentColor = elementColors.periodSelectorUnselectedContentColor.composeOrNull ?: defaults.periodSelectorUnselectedContentColor,
342
+ periodSelectorContentColor = (elementColors.periodSelectorContentColor ?: elementColors.periodSelectorUnselectedContentColor).composeOrNull ?: defaults.periodSelectorContentColor,
333
343
  timeSelectorSelectedContainerColor = elementColors.timeSelectorSelectedContainerColor.composeOrNull ?: colorProp ?: defaults.timeSelectorSelectedContainerColor,
334
- timeSelectorUnselectedContainerColor = elementColors.timeSelectorUnselectedContainerColor.composeOrNull ?: defaults.timeSelectorUnselectedContainerColor,
344
+ timeSelectorContainerColor = (elementColors.timeSelectorContainerColor ?: elementColors.timeSelectorUnselectedContainerColor).composeOrNull ?: defaults.timeSelectorContainerColor,
335
345
  timeSelectorSelectedContentColor = elementColors.timeSelectorSelectedContentColor.composeOrNull ?: defaults.timeSelectorSelectedContentColor,
336
- timeSelectorUnselectedContentColor = elementColors.timeSelectorUnselectedContentColor.composeOrNull ?: defaults.timeSelectorUnselectedContentColor
346
+ timeSelectorContentColor = (elementColors.timeSelectorContentColor ?: elementColors.timeSelectorUnselectedContentColor).composeOrNull ?: defaults.timeSelectorContentColor
337
347
  )
338
348
  }
339
349
 
@@ -5,10 +5,11 @@ import androidx.compose.foundation.interaction.MutableInteractionSource
5
5
  import androidx.compose.material3.ExperimentalMaterial3Api
6
6
  import androidx.compose.material3.Slider
7
7
  import androidx.compose.material3.SliderDefaults
8
+ import androidx.compose.material3.SliderState
8
9
  import androidx.compose.runtime.Composable
10
+ import androidx.compose.runtime.SideEffect
9
11
  import androidx.compose.runtime.getValue
10
12
  import androidx.compose.runtime.mutableFloatStateOf
11
- import androidx.compose.runtime.mutableStateOf
12
13
  import androidx.compose.runtime.remember
13
14
  import androidx.compose.runtime.setValue
14
15
  import expo.modules.kotlin.records.Field
@@ -66,13 +67,20 @@ fun FunctionalComposableScope.SliderContent(props: SliderProps) {
66
67
  val effectiveUpper = minOf(props.max, props.upperLimit ?: Float.POSITIVE_INFINITY)
67
68
 
68
69
  var localValue by remember { mutableFloatStateOf(props.value.coerceIn(effectiveLower, effectiveUpper)) }
69
- var isDragging by remember { mutableStateOf(false) }
70
70
  val clampedPropsValue = props.value.coerceIn(effectiveLower, effectiveUpper)
71
71
  var prevPropsValue by remember { mutableFloatStateOf(clampedPropsValue) }
72
72
 
73
+ val sliderState = remember(props.min, props.max, props.steps) {
74
+ SliderState(
75
+ value = localValue.coerceIn(effectiveLower, effectiveUpper),
76
+ steps = props.steps,
77
+ trackRange = props.min..props.max
78
+ )
79
+ }
80
+
73
81
  if (clampedPropsValue != prevPropsValue) {
74
82
  prevPropsValue = clampedPropsValue
75
- if (!isDragging) {
83
+ if (!sliderState.isDragging) {
76
84
  localValue = clampedPropsValue
77
85
  }
78
86
  }
@@ -88,24 +96,28 @@ fun FunctionalComposableScope.SliderContent(props: SliderProps) {
88
96
  inactiveTickColor = props.colors.inactiveTickColor.compose
89
97
  )
90
98
 
99
+ SideEffect {
100
+ val target = localValue.coerceIn(effectiveLower, effectiveUpper)
101
+ if (sliderState.value != target) {
102
+ sliderState.value = target
103
+ }
104
+ }
105
+
91
106
  Slider(
92
- value = localValue,
93
- valueRange = props.min..props.max,
94
- steps = props.steps,
107
+ state = sliderState,
95
108
  enabled = props.enabled,
96
109
  interactionSource = interactionSource,
97
110
  onValueChange = {
98
111
  val clamped = it.coerceIn(effectiveLower, effectiveUpper)
99
- isDragging = true
100
112
  localValue = clamped
113
+ sliderState.value = clamped
101
114
  onValueChange(SliderValueChangedEvent(clamped))
102
115
  },
103
116
  onValueChangeFinished = {
104
- isDragging = false
105
117
  onValueChangeFinished(Unit)
106
118
  },
107
119
  colors = sliderColors,
108
- thumb = { sliderState ->
120
+ thumb = {
109
121
  if (thumbSlotView != null) {
110
122
  with(UIComposableScope()) { with(thumbSlotView) { Content() } }
111
123
  } else {
@@ -52,7 +52,7 @@ fun FunctionalComposableScope.ToggleButtonContent(
52
52
  onCheckedChange = { onCheckedChange(ToggleButtonValueChangeEvent(it)) },
53
53
  enabled = props.enabled,
54
54
  modifier = modifier,
55
- colors = ToggleButtonDefaults.toggleButtonColors(
55
+ colors = ToggleButtonDefaults.colors(
56
56
  checkedContainerColor = props.colors.checkedContainerColor.compose,
57
57
  checkedContentColor = props.colors.checkedContentColor.compose,
58
58
  containerColor = props.colors.containerColor.compose,
@@ -49,7 +49,7 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
49
49
  SliderState(
50
50
  value = localValue.coerceIn(effectiveLower, effectiveUpper),
51
51
  steps = props.steps,
52
- valueRange = props.min..props.max
52
+ trackRange = props.min..props.max
53
53
  )
54
54
  }
55
55
 
@@ -77,16 +77,17 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
77
77
  globalEventDispatcher
78
78
  )
79
79
 
80
+ val handleValueChange: (Float) -> Unit = {
81
+ val clamped = it.coerceIn(effectiveLower, effectiveUpper)
82
+ localValue = clamped
83
+ sliderState.value = clamped
84
+ onValueChange(SliderValueChangedEvent(clamped))
85
+ }
86
+ val handleValueChangeFinished: () -> Unit = {
87
+ onValueChangeFinished(Unit)
88
+ }
89
+
80
90
  SideEffect {
81
- sliderState.onValueChange = {
82
- val clamped = it.coerceIn(effectiveLower, effectiveUpper)
83
- localValue = clamped
84
- sliderState.value = clamped
85
- onValueChange(SliderValueChangedEvent(clamped))
86
- }
87
- sliderState.onValueChangeFinished = {
88
- onValueChangeFinished(Unit)
89
- }
90
91
  val target = localValue.coerceIn(effectiveLower, effectiveUpper)
91
92
  if (sliderState.value != target) {
92
93
  sliderState.value = target
@@ -97,7 +98,9 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
97
98
  thumbSlotView != null && trackSlotView != null -> VerticalSlider(
98
99
  state = sliderState,
99
100
  enabled = props.enabled,
100
- reverseDirection = props.reverseDirection,
101
+ onValueChange = handleValueChange,
102
+ onValueChangeFinished = handleValueChangeFinished,
103
+ topToBottom = !props.reverseDirection,
101
104
  colors = sliderColors,
102
105
  interactionSource = interactionSource,
103
106
  thumb = {
@@ -112,7 +115,9 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
112
115
  thumbSlotView != null -> VerticalSlider(
113
116
  state = sliderState,
114
117
  enabled = props.enabled,
115
- reverseDirection = props.reverseDirection,
118
+ onValueChange = handleValueChange,
119
+ onValueChangeFinished = handleValueChangeFinished,
120
+ topToBottom = !props.reverseDirection,
116
121
  colors = sliderColors,
117
122
  interactionSource = interactionSource,
118
123
  thumb = {
@@ -124,7 +129,9 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
124
129
  trackSlotView != null -> VerticalSlider(
125
130
  state = sliderState,
126
131
  enabled = props.enabled,
127
- reverseDirection = props.reverseDirection,
132
+ onValueChange = handleValueChange,
133
+ onValueChangeFinished = handleValueChangeFinished,
134
+ topToBottom = !props.reverseDirection,
128
135
  colors = sliderColors,
129
136
  interactionSource = interactionSource,
130
137
  track = {
@@ -136,7 +143,9 @@ fun FunctionalComposableScope.VerticalSliderContent(props: VerticalSliderProps)
136
143
  else -> VerticalSlider(
137
144
  state = sliderState,
138
145
  enabled = props.enabled,
139
- reverseDirection = props.reverseDirection,
146
+ onValueChange = handleValueChange,
147
+ onValueChangeFinished = handleValueChangeFinished,
148
+ topToBottom = !props.reverseDirection,
140
149
  colors = sliderColors,
141
150
  interactionSource = interactionSource,
142
151
  modifier = modifier
@@ -2,6 +2,7 @@ package expo.modules.ui.menu
2
2
 
3
3
  import android.graphics.Color
4
4
  import androidx.compose.material3.ExperimentalMaterial3Api
5
+ import androidx.compose.material3.ExposedDropdownMenu
5
6
  import androidx.compose.material3.MenuDefaults
6
7
  import androidx.compose.runtime.Composable
7
8
  import expo.modules.kotlin.views.ComposeProps
@@ -46,8 +46,13 @@ export type CarouselCommonConfig = {
46
46
  };
47
47
  export interface HorizontalCenteredHeroCarouselProps extends CarouselCommonConfig {
48
48
  /**
49
- * Maximum width of the hero item in dp.
50
- * When unspecified, the hero item will be as wide as possible.
49
+ * The width that the large item aims for in dp. The carousel picks the arrangement whose large
50
+ * item width is closest to this value, so the final width can differ.
51
+ * When unspecified, one large item fills the viewport beside two small items.
52
+ */
53
+ preferredItemWidth?: number;
54
+ /**
55
+ * @deprecated Use `preferredItemWidth` instead. The value is now a preferred width, not a maximum.
51
56
  */
52
57
  maxItemWidth?: number;
53
58
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["jetpack-compose/Carousel/index.tsx"],"sourcesContent":[null],"names":["requireNativeView","createViewModifierEventListener","transformProps","props","modifiers","restProps","undefined","createCarouselComponent","viewName","NativeView","CarouselComponent","HorizontalCenteredHeroCarousel","HorizontalMultiBrowseCarousel","HorizontalUncontainedCarousel"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAGzC,SAASC,+BAA+B,QAAQ,qBAAqB;AAkDrE,SAASC,eAA2DC,KAAQ;IAC1E,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAW,GAAGF;IACpC,OAAO;QACLC;QACA,GAAIA,YAAYH,gCAAgCG,aAAaE,SAAS;QACtE,GAAGD,SAAS;IACd;AACF;AAEA,SAASE,wBACPC,QAAgB;IAEhB,MAAMC,aAAqCT,kBAAkB,UAAUQ;IACvE,OAAO,SAASE,kBAAkBP,KAAQ;QACxC,qBAAO,KAACM;YAAY,GAAGP,eAAeC,MAAM;;IAC9C;AACF;AAsBA;;;CAGC,GACD,OAAO,MAAMQ,iCACXJ,wBACE,sCACA;AAuBJ;;;CAGC,GACD,OAAO,MAAMK,gCACXL,wBAA4D,qCAAqC;AAanG;;;CAGC,GACD,OAAO,MAAMM,gCACXN,wBAA4D,qCAAqC,CAEnG,YAAY"}
1
+ {"version":3,"sources":["jetpack-compose/Carousel/index.tsx"],"sourcesContent":[null],"names":["requireNativeView","createViewModifierEventListener","transformProps","props","modifiers","restProps","undefined","createCarouselComponent","viewName","NativeView","CarouselComponent","HorizontalCenteredHeroCarousel","HorizontalMultiBrowseCarousel","HorizontalUncontainedCarousel"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAGzC,SAASC,+BAA+B,QAAQ,qBAAqB;AAkDrE,SAASC,eAA2DC,KAAQ;IAC1E,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAW,GAAGF;IACpC,OAAO;QACLC;QACA,GAAIA,YAAYH,gCAAgCG,aAAaE,SAAS;QACtE,GAAGD,SAAS;IACd;AACF;AAEA,SAASE,wBACPC,QAAgB;IAEhB,MAAMC,aAAqCT,kBAAkB,UAAUQ;IACvE,OAAO,SAASE,kBAAkBP,KAAQ;QACxC,qBAAO,KAACM;YAAY,GAAGP,eAAeC,MAAM;;IAC9C;AACF;AA2BA;;;CAGC,GACD,OAAO,MAAMQ,iCACXJ,wBACE,sCACA;AAuBJ;;;CAGC,GACD,OAAO,MAAMK,gCACXL,wBAA4D,qCAAqC;AAanG;;;CAGC,GACD,OAAO,MAAMM,gCACXN,wBAA4D,qCAAqC,CAEnG,YAAY"}
@@ -81,6 +81,10 @@ export type TimePickerElementColors = {
81
81
  /** The color of clock dial numbers when selected or overlapping the selector. */
82
82
  clockDialSelectedContentColor?: ColorValue;
83
83
  /** The color of clock dial numbers when unselected. */
84
+ clockDialContentColor?: ColorValue;
85
+ /**
86
+ * @deprecated Use `clockDialContentColor` instead.
87
+ */
84
88
  clockDialUnselectedContentColor?: ColorValue;
85
89
  /** The color of the clock dial selector (hand). */
86
90
  selectorColor?: ColorValue;
@@ -89,18 +93,34 @@ export type TimePickerElementColors = {
89
93
  /** The background color of the selected AM/PM period. */
90
94
  periodSelectorSelectedContainerColor?: ColorValue;
91
95
  /** The background color of the unselected AM/PM period. */
96
+ periodSelectorContainerColor?: ColorValue;
97
+ /**
98
+ * @deprecated Use `periodSelectorContainerColor` instead.
99
+ */
92
100
  periodSelectorUnselectedContainerColor?: ColorValue;
93
101
  /** The text color of the selected AM/PM period. */
94
102
  periodSelectorSelectedContentColor?: ColorValue;
95
103
  /** The text color of the unselected AM/PM period. */
104
+ periodSelectorContentColor?: ColorValue;
105
+ /**
106
+ * @deprecated Use `periodSelectorContentColor` instead.
107
+ */
96
108
  periodSelectorUnselectedContentColor?: ColorValue;
97
109
  /** The background color of the selected hour/minute segment. */
98
110
  timeSelectorSelectedContainerColor?: ColorValue;
99
111
  /** The background color of the unselected hour/minute segment. */
112
+ timeSelectorContainerColor?: ColorValue;
113
+ /**
114
+ * @deprecated Use `timeSelectorContainerColor` instead.
115
+ */
100
116
  timeSelectorUnselectedContainerColor?: ColorValue;
101
117
  /** The text color of the selected hour/minute segment. */
102
118
  timeSelectorSelectedContentColor?: ColorValue;
103
119
  /** The text color of the unselected hour/minute segment. */
120
+ timeSelectorContentColor?: ColorValue;
121
+ /**
122
+ * @deprecated Use `timeSelectorContentColor` instead.
123
+ */
104
124
  timeSelectorUnselectedContentColor?: ColorValue;
105
125
  };
106
126
  export interface DateTimePickerProps {
@@ -1 +1 @@
1
- {"version":3,"sources":["jetpack-compose/DatePicker/index.tsx"],"sourcesContent":[null],"names":["requireNativeView","createViewModifierEventListener","convertSelectableDates","selectableDates","start","getTime","end","convertTimestampToDate","timestamp","Date","transformDateTimePickerProps","props","modifiers","variant","initialDate","elementColors","color","rest","initialDateTimestamp","undefined","onDateSelected","nativeEvent","date","DatePickerNativeView","DateTimePicker","transformDateRangePickerProps","initialStartDate","initialEndDate","onDateRangeSelected","DateRangePickerNativeView","DateRangePicker","nativeProps","DatePickerDialogNativeView","DatePickerDialog","onDismissRequest","DateRangePickerDialogNativeView","DateRangePickerDialog","confirmButtonLabel","dismissButtonLabel","TimePickerDialogNativeView","TimePickerDialog"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAIzC,SAASC,+BAA+B,QAAQ,qBAAqB;AAgMrE,SAASC,uBAAuBC,eAG/B;IACC,IAAI,CAACA,iBAAiB,OAAO;IAC7B,OAAO;QACLC,OAAOD,gBAAgBC,KAAK,GAAGD,gBAAgBC,KAAK,CAACC,OAAO,KAAK;QACjEC,KAAKH,gBAAgBG,GAAG,GAAGH,gBAAgBG,GAAG,CAACD,OAAO,KAAK;IAC7D;AACF;AAEA,SAASE,uBAAuBC,SAAwB;IACtD,OAAOA,aAAa,OAAO,OAAO,IAAIC,KAAKD;AAC7C;AAEA,SAASE,6BAA6BC,KAA0B;IAC9D,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAEC,WAAW,EAAEX,eAAe,EAAEY,aAAa,EAAEC,KAAK,EAAE,GAAGC,MAAM,GAAGN;IAE5F,8CAA8C;IAC9C,MAAMO,uBAAuBJ,cAAc,IAAIL,KAAKK,aAAaT,OAAO,KAAK;IAE7E,OAAO;QACLO;QACA,GAAIA,YAAYX,gCAAgCW,aAAaO,SAAS;QACtE,GAAGF,IAAI;QACPD;QACAF,aAAaI;QACbf,iBAAiBD,uBAAuBC;QACxCiB,gBAAgB,CAAC,EAAEC,aAAa,EAAEC,IAAI,EAAE,EAAE;YACxCX,MAAMS,cAAc,GAAG,IAAIX,KAAKa;QAClC;QACAT;QACA,GAAIE,iBAAiB,OAAO;YAAEA;QAAc,IAAII,SAAS;IAC3D;AACF;AAEA,MAAMI,uBAAmEvB,kBACvE,UACA;AAGF;;CAEC,GACD,OAAO,SAASwB,eAAeb,KAA0B;IACvD,qBAAO,KAACY;QAAsB,GAAGb,6BAA6BC,MAAM;;AACtE;AAkEA,SAASc,8BACPd,KAA8C;IAE9C,MAAM,EACJe,gBAAgB,EAChBC,cAAc,EACdxB,eAAe,EACfY,aAAa,EACba,mBAAmB,EACnB,GAAGX,MACJ,GAAGN;IACJ,OAAO;QACL,GAAGM,IAAI;QACPS,kBAAkBA,mBAAmB,IAAIjB,KAAKiB,kBAAkBrB,OAAO,KAAK;QAC5EsB,gBAAgBA,iBAAiB,IAAIlB,KAAKkB,gBAAgBtB,OAAO,KAAK;QACtEF,iBAAiBD,uBAAuBC;QACxCyB,qBAAqB,CAAC,EAAEP,aAAa,EAAEjB,KAAK,EAAEE,GAAG,EAAE,EAAE;YACnDsB,sBAAsB;gBACpBxB,OAAOG,uBAAuBH;gBAC9BE,KAAKC,uBAAuBD;YAC9B;QACF;QACA,GAAIS,iBAAiB,OAAO;YAAEA;QAAc,IAAII,SAAS;IAC3D;AACF;AAEA,MAAMU,4BACJ7B,kBAAkB,UAAU;AAE9B;;CAEC,GACD,OAAO,SAAS8B,gBAAgBnB,KAA2B;IACzD,MAAM,EAAEC,SAAS,EAAE,GAAGK,MAAM,GAAGN;IAC/B,MAAMoB,cAA0C;QAC9CnB;QACA,GAAIA,YAAYX,gCAAgCW,aAAaO,SAAS;QACtE,GAAGM,8BAA8BR,KAAK;IACxC;IACA,qBAAO,KAACY;QAA2B,GAAGE,WAAW;;AACnD;AAiDA,MAAMC,6BACJhC,kBAAkB,UAAU;AAE9B,OAAO,SAASiC,iBAAiBtB,KAA4B;IAC3D,MAAM,EAAEE,OAAO,EAAEC,WAAW,EAAEX,eAAe,EAAEY,aAAa,EAAEmB,gBAAgB,EAAE,GAAGjB,MAAM,GAAGN;IAC5F,MAAMoB,cAA2C;QAC/C,GAAGd,IAAI;QACPJ;QACAC,aAAaA,cAAc,IAAIL,KAAKK,aAAaT,OAAO,KAAK;QAC7DF,iBAAiBD,uBAAuBC;QACxCiB,gBAAgB,CAAC,EAAEC,aAAa,EAAEC,IAAI,EAAE,EAAE;YACxCX,MAAMS,cAAc,GAAG,IAAIX,KAAKa;QAClC;QACAY;QACA,GAAInB,iBAAiB,OAAO;YAAEA;QAAc,IAAII,SAAS;IAC3D;IACA,qBAAO,KAACa;QAA4B,GAAGD,WAAW;;AACpD;AAyBA,MAAMI,kCACJnC,kBAAkB,UAAU;AAE9B;;CAEC,GACD,OAAO,SAASoC,sBAAsBzB,KAAiC;IACrE,MAAM,EAAE0B,kBAAkB,EAAEC,kBAAkB,EAAEJ,gBAAgB,EAAE,GAAGjB,MAAM,GAAGN;IAC9E,MAAMoB,cAAgD;QACpD,GAAGN,8BAA8BR,KAAK;QACtCoB;QACAC;QACAJ;IACF;IACA,qBAAO,KAACC;QAAiC,GAAGJ,WAAW;;AACzD;AAsBA,MAAMQ,6BACJvC,kBAAkB,UAAU;AAE9B,OAAO,SAASwC,iBAAiB7B,KAA4B;IAC3D,MAAM,EAAEG,WAAW,EAAEC,aAAa,EAAEmB,gBAAgB,EAAE,GAAGjB,MAAM,GAAGN;IAClE,MAAMoB,cAA2C;QAC/C,GAAGd,IAAI;QACPH,aAAaA,cAAc,IAAIL,KAAKK,aAAaT,OAAO,KAAK;QAC7De,gBAAgB,CAAC,EAAEC,aAAa,EAAEC,IAAI,EAAE,EAAE;YACxCX,MAAMS,cAAc,GAAG,IAAIX,KAAKa;QAClC;QACAY;QACA,GAAInB,iBAAiB,OAAO;YAAEA;QAAc,IAAII,SAAS;IAC3D;IACA,qBAAO,KAACoB;QAA4B,GAAGR,WAAW;;AACpD"}
1
+ {"version":3,"sources":["jetpack-compose/DatePicker/index.tsx"],"sourcesContent":[null],"names":["requireNativeView","createViewModifierEventListener","convertSelectableDates","selectableDates","start","getTime","end","convertTimestampToDate","timestamp","Date","transformDateTimePickerProps","props","modifiers","variant","initialDate","elementColors","color","rest","initialDateTimestamp","undefined","onDateSelected","nativeEvent","date","DatePickerNativeView","DateTimePicker","transformDateRangePickerProps","initialStartDate","initialEndDate","onDateRangeSelected","DateRangePickerNativeView","DateRangePicker","nativeProps","DatePickerDialogNativeView","DatePickerDialog","onDismissRequest","DateRangePickerDialogNativeView","DateRangePickerDialog","confirmButtonLabel","dismissButtonLabel","TimePickerDialogNativeView","TimePickerDialog"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { ListItem as ComposeListItem, Text } from '@expo/ui/jetpack-compose';
3
- import { clickable } from '@expo/ui/jetpack-compose/modifiers';
3
+ import { clickable, testID as testIDModifier } from '@expo/ui/jetpack-compose/modifiers';
4
4
  import { Children } from 'react';
5
5
  import { extractListItemSlots } from './ListItemSlots';
6
6
  // Compose hosts can't render raw strings — they need a `Text` composable.
@@ -17,7 +17,7 @@ function wrapStrings(node) {
17
17
  * Android implementation of `ListItem`.
18
18
  * Delegates to Material 3 `ListItem` and applies `clickable` for tap handling.
19
19
  */ export function ListItem(props) {
20
- const { children, onPress, leading: leadingProp, trailing: trailingProp, supportingText, modifiers, colors } = props;
20
+ const { children, onPress, leading: leadingProp, trailing: trailingProp, supportingText, testID, modifiers, colors } = props;
21
21
  const slots = extractListItemSlots(children);
22
22
  const leading = slots.leading ?? leadingProp;
23
23
  const trailing = slots.trailing ?? trailingProp;
@@ -26,6 +26,9 @@ function wrapStrings(node) {
26
26
  ...onPress ? [
27
27
  clickable(onPress)
28
28
  ] : [],
29
+ ...testID ? [
30
+ testIDModifier(testID)
31
+ ] : [],
29
32
  ...modifiers ?? []
30
33
  ];
31
34
  return /*#__PURE__*/ _jsxs(ComposeListItem, {
@@ -1 +1 @@
1
- {"version":3,"sources":["universal/ListItem/ListItem.android.tsx"],"sourcesContent":[null],"names":["ListItem","ComposeListItem","Text","clickable","Children","extractListItemSlots","wrapStrings","node","Array","isArray","map","props","children","onPress","leading","leadingProp","trailing","trailingProp","supportingText","modifiers","colors","slots","supporting","itemModifiers","length","undefined","HeadlineContent","headline","SupportingContent","LeadingContent","TrailingContent"],"mappings":";AAAA,SAASA,YAAYC,eAAe,EAAEC,IAAI,QAAQ,2BAA2B;AAC7E,SAASC,SAAS,QAAQ,qCAAqC;AAC/D,SAASC,QAAQ,QAAwB,QAAQ;AAEjD,SAASC,oBAAoB,QAAQ,kBAAkB;AAGvD,0EAA0E;AAC1E,4GAA4G;AAC5G,SAASC,YAAYC,IAAe;IAClC,IAAIA,QAAQ,QAAQ,OAAOA,SAAS,WAAW,OAAOA;IACtD,IAAI,OAAOA,SAAS,YAAY,OAAOA,SAAS,UAAU,qBAAO,KAACL;kBAAMK;;IACxE,IAAIC,MAAMC,OAAO,CAACF,OAAO,OAAOH,SAASM,GAAG,CAACH,MAAMD;IACnD,OAAOC;AACT;AAEA;;;CAGC,GACD,OAAO,SAASP,SAASW,KAAoB;IAC3C,MAAM,EACJC,QAAQ,EACRC,OAAO,EACPC,SAASC,WAAW,EACpBC,UAAUC,YAAY,EACtBC,cAAc,EACdC,SAAS,EACTC,MAAM,EACP,GAAGT;IACJ,MAAMU,QAAQhB,qBAAqBO;IACnC,MAAME,UAAUO,MAAMP,OAAO,IAAIC;IACjC,MAAMC,WAAWK,MAAML,QAAQ,IAAIC;IACnC,MAAMK,aAAaD,MAAMC,UAAU,IAAIJ;IACvC,MAAMK,gBAAgB;WAAKV,UAAU;YAACV,UAAUU;SAAS,GAAG,EAAE;WAAOM,aAAa,EAAE;KAAE;IAEtF,qBACE,MAAClB;QAAgBmB,QAAQA;QAAQD,WAAWI,cAAcC,MAAM,GAAGD,gBAAgBE;;0BACjF,KAACxB,gBAAgByB,eAAe;0BAC9B,cAAA;8BAAGpB,YAAYe,MAAMM,QAAQ;;;YAE9BL,cAAc,qBACb,KAACrB,gBAAgB2B,iBAAiB;0BAC/B,OAAON,eAAe,YAAY,OAAOA,eAAe,yBACvD,KAACpB;8BAAMoB;qBAEPA;iBAGF;YACHR,WAAW,qBACV,KAACb,gBAAgB4B,cAAc;0BAAEvB,YAAYQ;iBAC3C;YACHE,YAAY,qBACX,KAACf,gBAAgB6B,eAAe;0BAAExB,YAAYU;iBAC5C;;;AAGV;AAEA,cAAc,UAAU"}
1
+ {"version":3,"sources":["universal/ListItem/ListItem.android.tsx"],"sourcesContent":[null],"names":["ListItem","ComposeListItem","Text","clickable","testID","testIDModifier","Children","extractListItemSlots","wrapStrings","node","Array","isArray","map","props","children","onPress","leading","leadingProp","trailing","trailingProp","supportingText","modifiers","colors","slots","supporting","itemModifiers","length","undefined","HeadlineContent","headline","SupportingContent","LeadingContent","TrailingContent"],"mappings":";AAAA,SAASA,YAAYC,eAAe,EAAEC,IAAI,QAAQ,2BAA2B;AAC7E,SAASC,SAAS,EAAEC,UAAUC,cAAc,QAAQ,qCAAqC;AACzF,SAASC,QAAQ,QAAwB,QAAQ;AAEjD,SAASC,oBAAoB,QAAQ,kBAAkB;AAGvD,0EAA0E;AAC1E,4GAA4G;AAC5G,SAASC,YAAYC,IAAe;IAClC,IAAIA,QAAQ,QAAQ,OAAOA,SAAS,WAAW,OAAOA;IACtD,IAAI,OAAOA,SAAS,YAAY,OAAOA,SAAS,UAAU,qBAAO,KAACP;kBAAMO;;IACxE,IAAIC,MAAMC,OAAO,CAACF,OAAO,OAAOH,SAASM,GAAG,CAACH,MAAMD;IACnD,OAAOC;AACT;AAEA;;;CAGC,GACD,OAAO,SAAST,SAASa,KAAoB;IAC3C,MAAM,EACJC,QAAQ,EACRC,OAAO,EACPC,SAASC,WAAW,EACpBC,UAAUC,YAAY,EACtBC,cAAc,EACdhB,MAAM,EACNiB,SAAS,EACTC,MAAM,EACP,GAAGT;IACJ,MAAMU,QAAQhB,qBAAqBO;IACnC,MAAME,UAAUO,MAAMP,OAAO,IAAIC;IACjC,MAAMC,WAAWK,MAAML,QAAQ,IAAIC;IACnC,MAAMK,aAAaD,MAAMC,UAAU,IAAIJ;IACvC,MAAMK,gBAAgB;WAChBV,UAAU;YAACZ,UAAUY;SAAS,GAAG,EAAE;WACnCX,SAAS;YAACC,eAAeD;SAAQ,GAAG,EAAE;WACtCiB,aAAa,EAAE;KACpB;IAED,qBACE,MAACpB;QAAgBqB,QAAQA;QAAQD,WAAWI,cAAcC,MAAM,GAAGD,gBAAgBE;;0BACjF,KAAC1B,gBAAgB2B,eAAe;0BAC9B,cAAA;8BAAGpB,YAAYe,MAAMM,QAAQ;;;YAE9BL,cAAc,qBACb,KAACvB,gBAAgB6B,iBAAiB;0BAC/B,OAAON,eAAe,YAAY,OAAOA,eAAe,yBACvD,KAACtB;8BAAMsB;qBAEPA;iBAGF;YACHR,WAAW,qBACV,KAACf,gBAAgB8B,cAAc;0BAAEvB,YAAYQ;iBAC3C;YACHE,YAAY,qBACX,KAACjB,gBAAgB+B,eAAe;0BAAExB,YAAYU;iBAC5C;;;AAGV;AAEA,cAAc,UAAU"}
@@ -144,8 +144,11 @@ export function TextInput({ ref, value, onChangeText, placeholder, autoFocus, ed
144
144
  modifiers: [
145
145
  fillMaxWidth()
146
146
  ],
147
- style: textAlign && textAlign !== 'auto' ? {
148
- textAlign
147
+ style: textStyle || textAlign && textAlign !== 'auto' ? {
148
+ ...textStyle,
149
+ ...textAlign && textAlign !== 'auto' ? {
150
+ textAlign
151
+ } : null
149
152
  } : undefined,
150
153
  children: placeholder
151
154
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["universal/TextInput/index.android.tsx"],"sourcesContent":[null],"names":["BasicTextField","Box","Text","useNativeState","fillMaxWidth","onSizeChanged","semantics","testID","testIDModifier","useImperativeHandle","useRef","transformToModifiers","enterKeyHintToReturnKeyType","inputModeToKeyboardType","resolveEditable","mapReturnKeyType","value","mapKeyboardType","TextInput","ref","onChangeText","placeholder","autoFocus","editable","editableProp","multiline","keyboardType","keyboardTypeProp","autoCapitalize","autoCorrect","returnKeyType","returnKeyTypeProp","onSubmitEditing","onFocus","onBlur","cursorColor","textAlign","readOnly","inputMode","enterKeyHint","defaultValue","numberOfLines","numberOfLinesProp","rows","underlineColorAndroid","placeholderTextColor","textStyle","style","secureTextEntry","autoComplete","onContentSizeChange","maxLength","caretHidden","selectionColor","selectionHandleColor","selection","onSelectionChange","selectTextOnFocus","modifiers","userModifiers","initialFallbackRef","fallback","current","state","innerRef","isFocusedRef","focus","blur","clear","isFocused","setSelection","start","end","Promise","resolve","handleFocusChanged","focused","length","keyboardOptions","undefined","capitalization","autoCorrectEnabled","imeAction","keyboardActions","onDone","onGo","onNext","onSearch","onSend","onPrevious","contentType","singleLine","maxLines","minLines","visualTransformation","textSelectionColors","handleColor","backgroundColor","onValueChange","onFocusChanged","DecorationBox","contentAlignment","Placeholder","color","InnerTextField"],"mappings":"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"}
1
+ {"version":3,"sources":["universal/TextInput/index.android.tsx"],"sourcesContent":[null],"names":["BasicTextField","Box","Text","useNativeState","fillMaxWidth","onSizeChanged","semantics","testID","testIDModifier","useImperativeHandle","useRef","transformToModifiers","enterKeyHintToReturnKeyType","inputModeToKeyboardType","resolveEditable","mapReturnKeyType","value","mapKeyboardType","TextInput","ref","onChangeText","placeholder","autoFocus","editable","editableProp","multiline","keyboardType","keyboardTypeProp","autoCapitalize","autoCorrect","returnKeyType","returnKeyTypeProp","onSubmitEditing","onFocus","onBlur","cursorColor","textAlign","readOnly","inputMode","enterKeyHint","defaultValue","numberOfLines","numberOfLinesProp","rows","underlineColorAndroid","placeholderTextColor","textStyle","style","secureTextEntry","autoComplete","onContentSizeChange","maxLength","caretHidden","selectionColor","selectionHandleColor","selection","onSelectionChange","selectTextOnFocus","modifiers","userModifiers","initialFallbackRef","fallback","current","state","innerRef","isFocusedRef","focus","blur","clear","isFocused","setSelection","start","end","Promise","resolve","handleFocusChanged","focused","length","keyboardOptions","undefined","capitalization","autoCorrectEnabled","imeAction","keyboardActions","onDone","onGo","onNext","onSearch","onSend","onPrevious","contentType","singleLine","maxLines","minLines","visualTransformation","textSelectionColors","handleColor","backgroundColor","onValueChange","onFocusChanged","DecorationBox","contentAlignment","Placeholder","color","InnerTextField"],"mappings":";AAAA,SACEA,cAAc,EACdC,GAAG,EACHC,IAAI,EAIJC,cAAc,QACT,2BAA2B;AAClC,SACEC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,UAAUC,cAAc,QACnB,qCAAqC;AAC5C,SAASC,mBAAmB,EAAEC,MAAM,QAAQ,QAAQ;AAGpD,SAASC,oBAAoB,QAAQ,oBAAoB;AAEzD,SAASC,2BAA2B,EAAEC,uBAAuB,EAAEC,eAAe,QAAQ,UAAU;AAEhG,SAASC,iBAAiBC,KAA2B;IACnD,IAAIA,UAAU,YAAYA,UAAU,SAAS,OAAO;IACpD,IAAIA,UAAU,UAAUA,UAAU,WAAWA,UAAU,kBAAkB,OAAO;IAChF,OAAOA;AACT;AAEA,SAASC,gBAAgBD,KAA0B;IACjD,OAAQA;QACN,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT;YACE,OAAO;IACX;AACF;AAEA,OAAO,SAASE,UAAU,EACxBC,GAAG,EACHH,KAAK,EACLI,YAAY,EACZC,WAAW,EACXC,SAAS,EACTC,UAAUC,YAAY,EACtBC,SAAS,EACTC,cAAcC,gBAAgB,EAC9BC,cAAc,EACdC,WAAW,EACXC,eAAeC,iBAAiB,EAChCC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,YAAY,EACZC,eAAeC,iBAAiB,EAChCC,IAAI,EACJC,qBAAqB,EACrBrC,MAAM,EACNsC,oBAAoB,EACpBC,SAAS,EACTC,KAAK,EACLC,eAAe,EACfC,YAAY,EACZC,mBAAmB,EACnBC,SAAS,EACTC,WAAW,EACXC,cAAc,EACdC,oBAAoB,EACpBC,SAAS,EACTC,iBAAiB,EACjBC,iBAAiB,EACjBC,WAAWC,aAAa,EACT;IACf,MAAMpC,WAAWT,gBAAgBU,cAAca;IAC/C,MAAMI,gBAAgBC,qBAAqBC;IAC3C,MAAMjB,eAAeC,oBAAoBd,wBAAwByB;IACjE,MAAMR,gBAAgBC,qBAAqBnB,4BAA4B2B;IAEvE,MAAMqB,qBAAqBlD,OAAO8B,gBAAgB;IAClD,MAAMqB,WAAW1D,eAAuByD,mBAAmBE,OAAO;IAClE,MAAMC,QAAS/C,SAAS6C;IAExB,MAAMG,WAAWtD,OAAqB;IACtC,MAAMuD,eAAevD,OAAO;IAC5BD,oBACEU,KACA,IAAO,CAAA;YACL+C,OAAO;gBACLF,SAASF,OAAO,EAAEI;YACpB;YACAC,MAAM;gBACJH,SAASF,OAAO,EAAEK;YACpB;YACAC,OAAO;gBACLJ,SAASF,OAAO,EAAEM;YACpB;YACAC,WAAW,IAAMJ,aAAaH,OAAO;YACrCQ,cAAc,CAACC,OAAeC,MAC5BR,SAASF,OAAO,EAAEQ,aAAaC,OAAOC,QAAQC,QAAQC,OAAO;QACjE,CAAA,GACA,EAAE;IAGJ,MAAMC,qBAAqB,CAACC;QAC1BX,aAAaH,OAAO,GAAGc;QACvB,IAAIA,WAAWnB,mBAAmB;YAChCO,SAASF,OAAO,EAAEQ,aAAa,GAAGP,MAAM/C,KAAK,CAAC6D,MAAM;QACtD;QACA,IAAID,SAAS3C;aACRC;IACP;IAEA,MAAM4C,kBACJpD,gBAAgBE,kBAAkBC,gBAAgBkD,aAAajD,gBAC3D;QACE,GAAIJ,eAAe;YAAEA,cAAcT,gBAAgBS;QAAc,IAAI,IAAI;QACzE,GAAIE,iBAAiB;YAAEoD,gBAAgBpD;QAAe,IAAI,IAAI;QAC9D,GAAIC,gBAAgBkD,YAAY;YAAEE,oBAAoBpD;QAAY,IAAI,IAAI;QAC1E,GAAIC,gBAAgB;YAAEoD,WAAWnE,iBAAiBe;QAAe,IAAI,IAAI;IAC3E,IACAiD;IAEN,MAAMI,kBAAkBnD,kBACpB;QACEoD,QAAQpD;QACRqD,MAAMrD;QACNsD,QAAQtD;QACRuD,UAAUvD;QACVwD,QAAQxD;QACRyD,YAAYzD;IACd,IACA+C;IAEJ,qBACE,KAAC/E;QACCmB,KAAK6C;QACLN,WAAW;eACLC,iBAAiB,EAAE;eACpBhD,qBAAqBoC,OAAO,CAAC;eAC5BxC,SAAS;gBAACC,eAAeD;aAAQ,GAAG,EAAE;eACtC0C,eAAe;gBAAC3C,UAAU;oBAAEoF,aAAazC;gBAAa;aAAG,GAAG,EAAE;eAC9DC,sBAAsB;gBAAC7C,cAAc6C;aAAqB,GAAG,EAAE;SACpE;QACDlC,OAAO+C;QACPzC,WAAWA;QACXe,UAAUd,aAAa;QACvBoE,YAAY,CAAClE;QACbmE,UAAUnE,aAAagB,iBAAiBA,gBAAgB,IAAIA,gBAAgBsC;QAC5Ec,UAAUpE,aAAagB,iBAAiBA,gBAAgB,IAAIA,gBAAgBsC;QAC5E5C,aAAaiB,cAAc,gBAAiBjB,eAAekB;QAC3DP,WACEA,aAAcV,aAAaA,cAAc,SACrC;YACE,GAAGU,SAAS;YACZ,GAAIV,aAAaA,cAAc,SAAS;gBAAEA;YAAU,IAAI,IAAI;QAC9D,IACA2C;QAENe,sBAAsB9C,kBAAkB,aAAa+B;QACrDgB,qBACE1C,kBAAkBC,uBACd;YACE0C,aAAa1C,wBAAwBD;YACrC4C,iBAAiB5C;QACnB,IACA0B;QAEND,iBAAiBA;QACjBK,iBAAiBA;QACjBe,eAAe9E;QACf+B,WAAWA;QACXgD,gBAAgBxB;QAChBpB,WAAWA;QACXC,mBAAmBA;kBACnB,cAAA,KAACxD,eAAeoG,aAAa;sBAC3B,cAAA,MAACnG;gBACCyD,WAAW;oBAACtD;iBAAe;gBAC3BiG,kBACEjE,cAAc,WAAW,cAAcA,cAAc,UAAU,WAAW2C;;oBAE3E1D,eAAe,qBACd,KAACrB,eAAesG,WAAW;kCACzB,cAAA,KAACpG;4BACCqG,OAAO1D;4BACPa,WAAW;gCAACtD;6BAAe;4BAC3B2C,OACED,aAAcV,aAAaA,cAAc,SACrC;gCACE,GAAGU,SAAS;gCACZ,GAAIV,aAAaA,cAAc,SAAS;oCAAEA;gCAAU,IAAI,IAAI;4BAC9D,IACA2C;sCAEL1D;;yBAGH;kCACJ,KAACrB,eAAewG,cAAc;;;;;AAKxC;AAEA,cAAc,UAAU"}
@@ -90,6 +90,7 @@ struct HostView: ExpoSwiftUI.View, ExpoSwiftUI.WithHostingView {
90
90
  Children()
91
91
  }
92
92
  .environment(\.expoHostingView, props.hostingViewReference)
93
+ .modifier(HostViewContentMarginsMitigation(layoutDirection: layoutDirection, hostingView: props.hostingView))
93
94
  .fixedSize(horizontal: props.matchContentsHorizontal, vertical: props.matchContentsVertical)
94
95
  .modifier(LayoutDirectionModifier(layoutDirection: layoutDirection))
95
96
  .modifier(ColorSchemeModifier(colorScheme: props.colorScheme?.toColorScheme()))
@@ -0,0 +1,98 @@
1
+ // Copyright 2015-present 650 Industries. All rights reserved.
2
+
3
+ import SwiftUI
4
+ import ExpoModulesCore
5
+
6
+ /// Works around a SwiftUI bug on iPhone Duo: delete this file and its one use in `HostView` once iOS
7
+ /// fixes it.
8
+ ///
9
+ /// When the app is in a split view, positioned left, the tab bar becomes a rail beside the content and
10
+ /// iOS drops its content margin on that edge, so the large title starts on the safe-area edge. A `Form`
11
+ /// or `List` hosted under a UIKit navigation bar, as every `Host` is, keeps its 20pt section margin there
12
+ /// and starts 20pt inside the title:
13
+ ///
14
+ /// ```
15
+ /// RNSNavigationController navigation bar: large title at 84, the safe-area edge
16
+ /// └─ RNSScreen the pushed controller: safe area 84, layout margins 84
17
+ /// └─ UIHostingController the Host, a child controller: 84 + 20pt margin = 104 ❌ BUG
18
+ /// └─ Form sections at 104, 20pt inside the title
19
+ /// ```
20
+ ///
21
+ /// SwiftUI drops that 20pt only when the hosting controller is itself the pushed controller, which a
22
+ /// `Host` can never be.
23
+ ///
24
+ /// This sets the scroll content margin on such an edge to the hosted view's safe-area inset, measured
25
+ /// from the view's edge, so sections start with the title. It applies only where the inset exceeds the
26
+ /// window's own on that edge, so it comes from a bar beside the content, and the screen's layout margin
27
+ /// equals its safe area, so iOS has dropped the margin there.
28
+ ///
29
+ /// See ENG-27830.
30
+ internal struct HostViewContentMarginsMitigation: ViewModifier {
31
+ let layoutDirection: LayoutDirection
32
+ weak var hostingView: UIView?
33
+
34
+ /// The leading and trailing content margins to apply, or `nil` to keep the system's.
35
+ @State private var margins = Margins()
36
+
37
+ private struct Margins: Equatable {
38
+ var leading: CGFloat?
39
+ var trailing: CGFloat?
40
+ }
41
+
42
+ func body(content: Content) -> some View {
43
+ #if os(iOS)
44
+ if #available(iOS 17.0, *) {
45
+ content
46
+ .contentMargins(.leading, margins.leading, for: .scrollContent)
47
+ .contentMargins(.trailing, margins.trailing, for: .scrollContent)
48
+ .onGeometryChange(for: CGRect.self, of: { proxy in proxy.frame(in: .global) }) { _ in
49
+ updateMargins()
50
+ }
51
+ .onGeometryChange(for: EdgeInsets.self, of: { proxy in proxy.safeAreaInsets }) { _ in
52
+ updateMargins()
53
+ }
54
+ } else {
55
+ content
56
+ }
57
+ #else
58
+ content
59
+ #endif
60
+ }
61
+
62
+ #if os(iOS)
63
+ /// UIKit can update the screen's layout margins after SwiftUI reports the geometry change, as
64
+ /// when the window moves into a split view, so the margins are checked again once that settles.
65
+ private func updateMargins() {
66
+ margins = affectedMargins()
67
+ DispatchQueue.main.async {
68
+ margins = affectedMargins()
69
+ }
70
+ }
71
+
72
+ private func affectedMargins() -> Margins {
73
+ guard let hostingView, let window = hostingView.window, let screen = screenView(of: hostingView) else {
74
+ return Margins()
75
+ }
76
+ let host = hostingView.safeAreaInsets
77
+ let left: CGFloat? = host.left > window.safeAreaInsets.left
78
+ && abs(screen.layoutMargins.left - screen.safeAreaInsets.left) < 0.5 ? host.left : nil
79
+ let right: CGFloat? = host.right > window.safeAreaInsets.right
80
+ && abs(screen.layoutMargins.right - screen.safeAreaInsets.right) < 0.5 ? host.right : nil
81
+ return layoutDirection == .rightToLeft
82
+ ? Margins(leading: right, trailing: left)
83
+ : Margins(leading: left, trailing: right)
84
+ }
85
+
86
+ /// The view of the nearest view controller above the `Host`, which is the screen it is hosted in.
87
+ private func screenView(of view: UIView) -> UIView? {
88
+ var responder = view.next
89
+ while let current = responder {
90
+ if let controller = current as? UIViewController {
91
+ return controller.view
92
+ }
93
+ responder = current.next
94
+ }
95
+ return nil
96
+ }
97
+ #endif
98
+ }
@@ -73,7 +73,7 @@ public func ExpoUIView<Content: ExpoSwiftUI.View>(
73
73
  _ contentType: Content.Type
74
74
  ) -> ExpoSwiftUI.ViewDefinition<Content.Props, UIBaseView<Content.Props, Content>> where Content.Props: UIBaseViewProps {
75
75
  let wrappedType = UIBaseView<Content.Props, Content>.self
76
- let contentName = String(describing: contentType)
76
+ let contentName = unqualifiedTypeName(contentType)
77
77
 
78
78
  return View(wrappedType) {
79
79
  ViewName(contentName)
@@ -89,7 +89,18 @@ public func ExpoUIView<Content: ExpoSwiftUI.View>(
89
89
  @ExpoSwiftUI.ViewDefinitionBuilder<Content> _ elements: @escaping () -> [AnyViewDefinitionElement]
90
90
  ) -> ExpoSwiftUI.ViewDefinition<Content.Props, UIBaseView<Content.Props, Content>> where Content.Props: UIBaseViewProps {
91
91
  let wrappedType = UIBaseView<Content.Props, Content>.self
92
- let contentName = String(describing: contentType)
92
+ let contentName = unqualifiedTypeName(contentType)
93
93
 
94
94
  return ExpoSwiftUI.ViewDefinition(wrappedType, name: contentName, elements: elements())
95
95
  }
96
+
97
+ /**
98
+ The name `String(describing: type)` gives for a metatype, without its three protocol conformance probes and the `Mirror`.
99
+ It takes an opaque `Any.Type` and is never inlined on purpose.
100
+ With a statically known metatype the optimizer folds `_typeName` into a constant that keeps the file discriminator
101
+ of a `private` type, e.g. `(Foo in _ABC123…)`, where `String(describing:)` yields `Foo`.
102
+ */
103
+ @inline(never)
104
+ private func unqualifiedTypeName(_ type: Any.Type) -> String {
105
+ return _typeName(type, qualified: false)
106
+ }
@@ -0,0 +1 @@
1
+ f9a24faad34f9f66bebcdde7d05a6cf72a8b4b9030819b80049de5084a694ef0
@@ -0,0 +1 @@
1
+ 10ed672c04082cf5f06e6ca6dca0f28229f11f3d503d46e5b61dbc7d3ad50bfdc1399838dd38dc5b8c1643ec375c4bf1672c95606ce28f7ed36384f66b829b68
@@ -0,0 +1 @@
1
+ 93a6d734857d79049d179014133d651be167840a
@@ -0,0 +1 @@
1
+ 6cbb10f1e4cd5618c6997d87c2021e97c7bab1b8fc4ecc7be48f563e9c0e284a
@@ -0,0 +1 @@
1
+ ba561fa50c9fde30184d2c36051e644fd87db59555b7b38f8e2e5b7096b03bf0d2aec3e53fff1831d2705d85b174ec1a7fc2e9cadc69c41237aac262bbea9365
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "58.0.16",
6
+ "version": "58.0.18",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.ui-58.0.16.aar",
28
- "url": "expo.modules.ui-58.0.16.aar",
29
- "size": 1858313,
30
- "sha512": "9e42c8a718971e6d77015353c6747570385fe0c1d901cf388a50509e00c9ee8581a81ba88d0e83a611b7ec5a6d1dff4280ecf81ed92776d2cf7c26f48c0048c5",
31
- "sha256": "b8e480f4d8449359c2f5686c3614c9aa82ef98af9b7ce0edd4d839d14de7696f",
32
- "sha1": "64369f3b1f16363a28412ac36309b53dc2a29752",
33
- "md5": "812db5879217f7bbe3b44b5ffcb0725a"
27
+ "name": "expo.modules.ui-58.0.18.aar",
28
+ "url": "expo.modules.ui-58.0.18.aar",
29
+ "size": 1859361,
30
+ "sha512": "ba561fa50c9fde30184d2c36051e644fd87db59555b7b38f8e2e5b7096b03bf0d2aec3e53fff1831d2705d85b174ec1a7fc2e9cadc69c41237aac262bbea9365",
31
+ "sha256": "6cbb10f1e4cd5618c6997d87c2021e97c7bab1b8fc4ecc7be48f563e9c0e284a",
32
+ "sha1": "93a6d734857d79049d179014133d651be167840a",
33
+ "md5": "b51953e6905c7a42506ea0d23c859703"
34
34
  }
35
35
  ]
36
36
  },
@@ -65,28 +65,28 @@
65
65
  "group": "androidx.compose.foundation",
66
66
  "module": "foundation-android",
67
67
  "version": {
68
- "requires": "1.10.6"
68
+ "requires": "1.12.1"
69
69
  }
70
70
  },
71
71
  {
72
72
  "group": "androidx.compose.ui",
73
73
  "module": "ui-android",
74
74
  "version": {
75
- "requires": "1.10.6"
75
+ "requires": "1.12.1"
76
76
  }
77
77
  },
78
78
  {
79
79
  "group": "androidx.compose.material3",
80
80
  "module": "material3",
81
81
  "version": {
82
- "requires": "1.5.0-alpha17"
82
+ "requires": "1.5.0-beta01"
83
83
  }
84
84
  },
85
85
  {
86
86
  "group": "androidx.compose.material3",
87
87
  "module": "material3-android",
88
88
  "version": {
89
- "requires": "1.5.0-alpha17"
89
+ "requires": "1.5.0-beta01"
90
90
  }
91
91
  },
92
92
  {
@@ -141,13 +141,13 @@
141
141
  ],
142
142
  "files": [
143
143
  {
144
- "name": "expo.modules.ui-58.0.16.aar",
145
- "url": "expo.modules.ui-58.0.16.aar",
146
- "size": 1858313,
147
- "sha512": "9e42c8a718971e6d77015353c6747570385fe0c1d901cf388a50509e00c9ee8581a81ba88d0e83a611b7ec5a6d1dff4280ecf81ed92776d2cf7c26f48c0048c5",
148
- "sha256": "b8e480f4d8449359c2f5686c3614c9aa82ef98af9b7ce0edd4d839d14de7696f",
149
- "sha1": "64369f3b1f16363a28412ac36309b53dc2a29752",
150
- "md5": "812db5879217f7bbe3b44b5ffcb0725a"
144
+ "name": "expo.modules.ui-58.0.18.aar",
145
+ "url": "expo.modules.ui-58.0.18.aar",
146
+ "size": 1859361,
147
+ "sha512": "ba561fa50c9fde30184d2c36051e644fd87db59555b7b38f8e2e5b7096b03bf0d2aec3e53fff1831d2705d85b174ec1a7fc2e9cadc69c41237aac262bbea9365",
148
+ "sha256": "6cbb10f1e4cd5618c6997d87c2021e97c7bab1b8fc4ecc7be48f563e9c0e284a",
149
+ "sha1": "93a6d734857d79049d179014133d651be167840a",
150
+ "md5": "b51953e6905c7a42506ea0d23c859703"
151
151
  }
152
152
  ]
153
153
  },
@@ -161,13 +161,13 @@
161
161
  },
162
162
  "files": [
163
163
  {
164
- "name": "expo.modules.ui-58.0.16-sources.jar",
165
- "url": "expo.modules.ui-58.0.16-sources.jar",
166
- "size": 112962,
167
- "sha512": "79141ef63c1b975a30858d8c1ca7bccde8d14a64d337883063b3c1cbe44f977cc40e0fda89d3076fd84b5e47308e86b3659c71744a4fc3cac2b858a0686f38c6",
168
- "sha256": "101a40d45fc8e73887c9518fbc88c31e2a700ca6e62d2cc96dd65f72459a9d69",
169
- "sha1": "aef15fcbe60dff9cbb6491595df9269d819f7065",
170
- "md5": "6b0b0d2a72178b6d25a038ee47271abb"
164
+ "name": "expo.modules.ui-58.0.18-sources.jar",
165
+ "url": "expo.modules.ui-58.0.18-sources.jar",
166
+ "size": 113113,
167
+ "sha512": "10ed672c04082cf5f06e6ca6dca0f28229f11f3d503d46e5b61dbc7d3ad50bfdc1399838dd38dc5b8c1643ec375c4bf1672c95606ce28f7ed36384f66b829b68",
168
+ "sha256": "f9a24faad34f9f66bebcdde7d05a6cf72a8b4b9030819b80049de5084a694ef0",
169
+ "sha1": "5d7c4fd251da7578f23af5102d539533aefb3e64",
170
+ "md5": "83ac1d8d00a142a3ffa834c4a6c1db65"
171
171
  }
172
172
  ]
173
173
  }
@@ -0,0 +1 @@
1
+ 0280a28f44e2219abbc8ce054003200350f1dcc7
@@ -0,0 +1 @@
1
+ ea72887593516448266e9bc6baf03968872b368955a35eb088ea2ff6704a1554
@@ -0,0 +1 @@
1
+ a6322f157112637387e22d8a67960dd950773126129ee71be541575898307ddec6c5f16bb581ed0706a2f3694b40ba69bbec78060759038aaddca1f93084bf8b
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.ui</groupId>
11
11
  <artifactId>expo.modules.ui</artifactId>
12
- <version>58.0.16</version>
12
+ <version>58.0.18</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.ui</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -57,25 +57,25 @@
57
57
  <dependency>
58
58
  <groupId>androidx.compose.foundation</groupId>
59
59
  <artifactId>foundation-android</artifactId>
60
- <version>1.10.6</version>
60
+ <version>1.12.1</version>
61
61
  <scope>runtime</scope>
62
62
  </dependency>
63
63
  <dependency>
64
64
  <groupId>androidx.compose.ui</groupId>
65
65
  <artifactId>ui-android</artifactId>
66
- <version>1.10.6</version>
66
+ <version>1.12.1</version>
67
67
  <scope>runtime</scope>
68
68
  </dependency>
69
69
  <dependency>
70
70
  <groupId>androidx.compose.material3</groupId>
71
71
  <artifactId>material3</artifactId>
72
- <version>1.5.0-alpha17</version>
72
+ <version>1.5.0-beta01</version>
73
73
  <scope>runtime</scope>
74
74
  </dependency>
75
75
  <dependency>
76
76
  <groupId>androidx.compose.material3</groupId>
77
77
  <artifactId>material3-android</artifactId>
78
- <version>1.5.0-alpha17</version>
78
+ <version>1.5.0-beta01</version>
79
79
  <scope>runtime</scope>
80
80
  </dependency>
81
81
  <dependency>
@@ -0,0 +1 @@
1
+ d556d91a38a29be6a7ba659601e3a6b6aa33de81
@@ -0,0 +1 @@
1
+ 41cc6e28b0897992415819e13a13dc98d98755c22d717cfb456dfb169d6f620f
@@ -0,0 +1 @@
1
+ 5c5379544047a4326c296a599c1120e912f99ff4a427def0cfb7455ee1e9b4c99c51d36294ea4c023019a7ef565e85ffc1a3db6b1c812ae5a071d163d51ce385
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/ui",
3
- "version": "58.0.16",
3
+ "version": "58.0.18",
4
4
  "description": "A collection of UI components",
5
5
  "keywords": [
6
6
  "Jetpack Compose",
@@ -141,7 +141,7 @@
141
141
  },
142
142
  "devDependencies": {
143
143
  "@babel/core": "^7.26.0",
144
- "@expo/internal-scripts": "58.0.1",
144
+ "@expo/internal-scripts": "58.0.3",
145
145
  "@playwright/test": "^1.59.0",
146
146
  "@testing-library/react": "^16.3.0",
147
147
  "@testing-library/react-native": "^14.0.1",
@@ -73,8 +73,13 @@ function createCarouselComponent<P extends { modifiers?: ModifierConfig[] }>(
73
73
 
74
74
  export interface HorizontalCenteredHeroCarouselProps extends CarouselCommonConfig {
75
75
  /**
76
- * Maximum width of the hero item in dp.
77
- * When unspecified, the hero item will be as wide as possible.
76
+ * The width that the large item aims for in dp. The carousel picks the arrangement whose large
77
+ * item width is closest to this value, so the final width can differ.
78
+ * When unspecified, one large item fills the viewport beside two small items.
79
+ */
80
+ preferredItemWidth?: number;
81
+ /**
82
+ * @deprecated Use `preferredItemWidth` instead. The value is now a preferred width, not a maximum.
78
83
  */
79
84
  maxItemWidth?: number;
80
85
  /**
@@ -89,6 +89,10 @@ export type TimePickerElementColors = {
89
89
  /** The color of clock dial numbers when selected or overlapping the selector. */
90
90
  clockDialSelectedContentColor?: ColorValue;
91
91
  /** The color of clock dial numbers when unselected. */
92
+ clockDialContentColor?: ColorValue;
93
+ /**
94
+ * @deprecated Use `clockDialContentColor` instead.
95
+ */
92
96
  clockDialUnselectedContentColor?: ColorValue;
93
97
  /** The color of the clock dial selector (hand). */
94
98
  selectorColor?: ColorValue;
@@ -97,18 +101,34 @@ export type TimePickerElementColors = {
97
101
  /** The background color of the selected AM/PM period. */
98
102
  periodSelectorSelectedContainerColor?: ColorValue;
99
103
  /** The background color of the unselected AM/PM period. */
104
+ periodSelectorContainerColor?: ColorValue;
105
+ /**
106
+ * @deprecated Use `periodSelectorContainerColor` instead.
107
+ */
100
108
  periodSelectorUnselectedContainerColor?: ColorValue;
101
109
  /** The text color of the selected AM/PM period. */
102
110
  periodSelectorSelectedContentColor?: ColorValue;
103
111
  /** The text color of the unselected AM/PM period. */
112
+ periodSelectorContentColor?: ColorValue;
113
+ /**
114
+ * @deprecated Use `periodSelectorContentColor` instead.
115
+ */
104
116
  periodSelectorUnselectedContentColor?: ColorValue;
105
117
  /** The background color of the selected hour/minute segment. */
106
118
  timeSelectorSelectedContainerColor?: ColorValue;
107
119
  /** The background color of the unselected hour/minute segment. */
120
+ timeSelectorContainerColor?: ColorValue;
121
+ /**
122
+ * @deprecated Use `timeSelectorContainerColor` instead.
123
+ */
108
124
  timeSelectorUnselectedContainerColor?: ColorValue;
109
125
  /** The text color of the selected hour/minute segment. */
110
126
  timeSelectorSelectedContentColor?: ColorValue;
111
127
  /** The text color of the unselected hour/minute segment. */
128
+ timeSelectorContentColor?: ColorValue;
129
+ /**
130
+ * @deprecated Use `timeSelectorContentColor` instead.
131
+ */
112
132
  timeSelectorUnselectedContentColor?: ColorValue;
113
133
  };
114
134
 
@@ -1,5 +1,5 @@
1
1
  import { ListItem as ComposeListItem, Text } from '@expo/ui/jetpack-compose';
2
- import { clickable } from '@expo/ui/jetpack-compose/modifiers';
2
+ import { clickable, testID as testIDModifier } from '@expo/ui/jetpack-compose/modifiers';
3
3
  import { Children, type ReactNode } from 'react';
4
4
 
5
5
  import { extractListItemSlots } from './ListItemSlots';
@@ -25,6 +25,7 @@ export function ListItem(props: ListItemProps) {
25
25
  leading: leadingProp,
26
26
  trailing: trailingProp,
27
27
  supportingText,
28
+ testID,
28
29
  modifiers,
29
30
  colors,
30
31
  } = props;
@@ -32,7 +33,11 @@ export function ListItem(props: ListItemProps) {
32
33
  const leading = slots.leading ?? leadingProp;
33
34
  const trailing = slots.trailing ?? trailingProp;
34
35
  const supporting = slots.supporting ?? supportingText;
35
- const itemModifiers = [...(onPress ? [clickable(onPress)] : []), ...(modifiers ?? [])];
36
+ const itemModifiers = [
37
+ ...(onPress ? [clickable(onPress)] : []),
38
+ ...(testID ? [testIDModifier(testID)] : []),
39
+ ...(modifiers ?? []),
40
+ ];
36
41
 
37
42
  return (
38
43
  <ComposeListItem colors={colors} modifiers={itemModifiers.length ? itemModifiers : undefined}>
@@ -206,7 +206,14 @@ export function TextInput({
206
206
  <Text
207
207
  color={placeholderTextColor as string | undefined}
208
208
  modifiers={[fillMaxWidth()]}
209
- style={textAlign && textAlign !== 'auto' ? { textAlign } : undefined}>
209
+ style={
210
+ textStyle || (textAlign && textAlign !== 'auto')
211
+ ? {
212
+ ...textStyle,
213
+ ...(textAlign && textAlign !== 'auto' ? { textAlign } : null),
214
+ }
215
+ : undefined
216
+ }>
210
217
  {placeholder}
211
218
  </Text>
212
219
  </BasicTextField.Placeholder>
@@ -1 +0,0 @@
1
- aef15fcbe60dff9cbb6491595df9269d819f7065
@@ -1 +0,0 @@
1
- 101a40d45fc8e73887c9518fbc88c31e2a700ca6e62d2cc96dd65f72459a9d69
@@ -1 +0,0 @@
1
- 79141ef63c1b975a30858d8c1ca7bccde8d14a64d337883063b3c1cbe44f977cc40e0fda89d3076fd84b5e47308e86b3659c71744a4fc3cac2b858a0686f38c6
@@ -1 +0,0 @@
1
- 64369f3b1f16363a28412ac36309b53dc2a29752
@@ -1 +0,0 @@
1
- b8e480f4d8449359c2f5686c3614c9aa82ef98af9b7ce0edd4d839d14de7696f
@@ -1 +0,0 @@
1
- 9e42c8a718971e6d77015353c6747570385fe0c1d901cf388a50509e00c9ee8581a81ba88d0e83a611b7ec5a6d1dff4280ecf81ed92776d2cf7c26f48c0048c5
@@ -1 +0,0 @@
1
- 81f23fddc089c0a466c08356e6c33881fd08d65c
@@ -1 +0,0 @@
1
- d57d5ce3086debe5c6c7760679de69409aa264c6871d034bac2140af6245f9f4
@@ -1 +0,0 @@
1
- 44da04bba32c6fbb281c187d7382eabf9cf3cf674dc9f469335345dfe7268e2818a725531749822cd788eb96ce8c56ecb3535f30c757da77fb67630c050de4f3
@@ -1 +0,0 @@
1
- de7f94f1b4c3356f8244f8b620146bb9f37c52b8
@@ -1 +0,0 @@
1
- 2bc1691b86aa0689fbf3bd19f3904aed5b40d206a8a152a03bf27c92eb871f28
@@ -1 +0,0 @@
1
- 528fce22a7b79c091d7dab483702c8e99ae783b76bd79c6b11e2086d9c59308f28a1b77e9379d8dc81f3ce6b3916f100d8c5c873ac165f75f780262ae8f56264