@expo/ui 55.0.2 → 55.0.4

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 (232) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/AnimatedVisibilityView.kt +130 -0
  4. package/android/src/main/java/expo/modules/ui/BottomSheetView.kt +91 -13
  5. package/android/src/main/java/expo/modules/ui/CardView.kt +138 -34
  6. package/android/src/main/java/expo/modules/ui/CheckboxView.kt +98 -0
  7. package/android/src/main/java/expo/modules/ui/ChipView.kt +267 -142
  8. package/android/src/main/java/expo/modules/ui/DatePickerView.kt +258 -70
  9. package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +209 -61
  10. package/android/src/main/java/expo/modules/ui/ModifierRegistry.kt +44 -1
  11. package/android/src/main/java/expo/modules/ui/ProgressView.kt +189 -89
  12. package/android/src/main/java/expo/modules/ui/RadioButtonView.kt +3 -7
  13. package/android/src/main/java/expo/modules/ui/SegmentedButtonView.kt +115 -0
  14. package/android/src/main/java/expo/modules/ui/SegmentedControlView.kt +35 -0
  15. package/android/src/main/java/expo/modules/ui/SliderView.kt +70 -12
  16. package/android/src/main/java/expo/modules/ui/SwitchView.kt +53 -161
  17. package/android/src/main/java/expo/modules/ui/TextInputView.kt +39 -15
  18. package/android/src/main/java/expo/modules/ui/ToggleButtonView.kt +95 -57
  19. package/android/src/main/java/expo/modules/ui/button/Button.kt +117 -158
  20. package/android/src/main/java/expo/modules/ui/button/FloatingActionButton.kt +92 -0
  21. package/android/src/main/java/expo/modules/ui/button/IconButton.kt +73 -86
  22. package/android/src/main/java/expo/modules/ui/menu/DropdownMenu.kt +39 -0
  23. package/android/src/main/java/expo/modules/ui/menu/DropdownMenuItem.kt +70 -0
  24. package/android/src/main/java/expo/modules/ui/menu/DropdownMenuRecords.kt +18 -0
  25. package/build/datetime-picker/DateTimePicker.android.d.ts +3 -0
  26. package/build/datetime-picker/DateTimePicker.android.d.ts.map +1 -0
  27. package/build/datetime-picker/DateTimePicker.d.ts +3 -0
  28. package/build/datetime-picker/DateTimePicker.d.ts.map +1 -0
  29. package/build/datetime-picker/DateTimePicker.web.d.ts +3 -0
  30. package/build/datetime-picker/DateTimePicker.web.d.ts.map +1 -0
  31. package/build/datetime-picker/index.d.ts +5 -0
  32. package/build/datetime-picker/index.d.ts.map +1 -0
  33. package/build/datetime-picker/types.d.ts +128 -0
  34. package/build/datetime-picker/types.d.ts.map +1 -0
  35. package/build/jetpack-compose/AnimatedVisibility/index.d.ts +134 -0
  36. package/build/jetpack-compose/AnimatedVisibility/index.d.ts.map +1 -0
  37. package/build/jetpack-compose/AnimatedVisibility/symbols.d.ts +3 -0
  38. package/build/jetpack-compose/AnimatedVisibility/symbols.d.ts.map +1 -0
  39. package/build/jetpack-compose/Button/index.d.ts +65 -51
  40. package/build/jetpack-compose/Button/index.d.ts.map +1 -1
  41. package/build/jetpack-compose/Card/index.d.ts +72 -14
  42. package/build/jetpack-compose/Card/index.d.ts.map +1 -1
  43. package/build/jetpack-compose/Checkbox/index.d.ts +73 -0
  44. package/build/jetpack-compose/Checkbox/index.d.ts.map +1 -0
  45. package/build/jetpack-compose/Chip/index.d.ts +247 -27
  46. package/build/jetpack-compose/Chip/index.d.ts.map +1 -1
  47. package/build/jetpack-compose/DatePicker/index.d.ts +38 -3
  48. package/build/jetpack-compose/DatePicker/index.d.ts.map +1 -1
  49. package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts +70 -0
  50. package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts.map +1 -0
  51. package/build/jetpack-compose/DropdownMenu/index.d.ts +68 -0
  52. package/build/jetpack-compose/DropdownMenu/index.d.ts.map +1 -0
  53. package/build/jetpack-compose/FloatingActionButton/index.d.ts +150 -0
  54. package/build/jetpack-compose/FloatingActionButton/index.d.ts.map +1 -0
  55. package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts +2 -2
  56. package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts.map +1 -1
  57. package/build/jetpack-compose/IconButton/index.d.ts +45 -29
  58. package/build/jetpack-compose/IconButton/index.d.ts.map +1 -1
  59. package/build/jetpack-compose/ModalBottomSheet/index.d.ts +65 -13
  60. package/build/jetpack-compose/ModalBottomSheet/index.d.ts.map +1 -1
  61. package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts +17 -0
  62. package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts.map +1 -0
  63. package/build/jetpack-compose/Progress/index.d.ts +78 -35
  64. package/build/jetpack-compose/Progress/index.d.ts.map +1 -1
  65. package/build/jetpack-compose/RadioButton/index.d.ts +2 -2
  66. package/build/jetpack-compose/RadioButton/index.d.ts.map +1 -1
  67. package/build/jetpack-compose/SegmentedButton/index.d.ts +74 -0
  68. package/build/jetpack-compose/SegmentedButton/index.d.ts.map +1 -0
  69. package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts +17 -0
  70. package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts.map +1 -0
  71. package/build/jetpack-compose/Slider/index.d.ts +34 -10
  72. package/build/jetpack-compose/Slider/index.d.ts.map +1 -1
  73. package/build/jetpack-compose/Switch/index.d.ts +10 -50
  74. package/build/jetpack-compose/Switch/index.d.ts.map +1 -1
  75. package/build/jetpack-compose/TextInput/index.d.ts +9 -0
  76. package/build/jetpack-compose/TextInput/index.d.ts.map +1 -1
  77. package/build/jetpack-compose/ToggleButton/index.d.ts +60 -32
  78. package/build/jetpack-compose/ToggleButton/index.d.ts.map +1 -1
  79. package/build/jetpack-compose/index.d.ts +5 -4
  80. package/build/jetpack-compose/index.d.ts.map +1 -1
  81. package/build/jetpack-compose/modifiers/index.d.ts +18 -1
  82. package/build/jetpack-compose/modifiers/index.d.ts.map +1 -1
  83. package/build/swift-ui/Link/index.d.ts +36 -0
  84. package/build/swift-ui/Link/index.d.ts.map +1 -0
  85. package/build/swift-ui/ProgressView/index.d.ts +1 -5
  86. package/build/swift-ui/ProgressView/index.d.ts.map +1 -1
  87. package/build/swift-ui/Stepper/index.d.ts +3 -3
  88. package/build/swift-ui/Stepper/index.d.ts.map +1 -1
  89. package/build/swift-ui/Text/index.d.ts +33 -1
  90. package/build/swift-ui/Text/index.d.ts.map +1 -1
  91. package/build/swift-ui/index.d.ts +1 -0
  92. package/build/swift-ui/index.d.ts.map +1 -1
  93. package/build/swift-ui/modifiers/environment.d.ts +16 -1
  94. package/build/swift-ui/modifiers/environment.d.ts.map +1 -1
  95. package/build/swift-ui/modifiers/index.d.ts +24 -7
  96. package/build/swift-ui/modifiers/index.d.ts.map +1 -1
  97. package/build/swift-ui/modifiers/shapes/index.d.ts +2 -2
  98. package/build/swift-ui/modifiers/widgets.d.ts +14 -0
  99. package/build/swift-ui/modifiers/widgets.d.ts.map +1 -0
  100. package/build/swift-ui/types.d.ts +7 -0
  101. package/build/swift-ui/types.d.ts.map +1 -1
  102. package/expo-module.config.json +1 -1
  103. package/ios/BottomSheetView.swift +1 -6
  104. package/ios/ClosedRangeDateRecord.swift +10 -0
  105. package/ios/ColorPickerView.swift +9 -8
  106. package/ios/ConfirmationDialog/ConfirmationDialog.swift +4 -6
  107. package/ios/DatePickerView.swift +7 -5
  108. package/ios/DisclosureGroupView.swift +5 -7
  109. package/ios/ExpoUIModule.swift +1 -0
  110. package/ios/LinkView.swift +29 -0
  111. package/ios/ListView.swift +6 -14
  112. package/ios/Modifiers/DefaultScrollAnchorForRoleModifier.swift +32 -0
  113. package/ios/Modifiers/DefaultScrollAnchorModifier.swift +16 -0
  114. package/ios/Modifiers/EnvironmentModifier.swift +14 -0
  115. package/ios/Modifiers/ViewModifierRegistry.swift +12 -0
  116. package/ios/Modifiers/WidgetModifiers.swift +12 -0
  117. package/ios/Picker/PickerView.swift +6 -10
  118. package/ios/Popover/PopoverView.swift +3 -5
  119. package/ios/ProgressView.swift +0 -5
  120. package/ios/SectionView.swift +3 -5
  121. package/ios/SliderView.swift +8 -6
  122. package/ios/StepperView.swift +12 -16
  123. package/ios/TextView.swift +37 -1
  124. package/ios/Toggle/ToggleView.swift +5 -7
  125. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar +0 -0
  126. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.md5 +1 -0
  127. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha1 +1 -0
  128. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha256 +1 -0
  129. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha512 +1 -0
  130. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar +0 -0
  131. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.md5 +1 -0
  132. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha1 +1 -0
  133. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha256 +1 -0
  134. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha512 +1 -0
  135. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.2/expo.modules.ui-55.0.2.module → 55.0.4/expo.modules.ui-55.0.4.module} +22 -22
  136. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.md5 +1 -0
  137. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha1 +1 -0
  138. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha256 +1 -0
  139. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha512 +1 -0
  140. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.2/expo.modules.ui-55.0.2.pom → 55.0.4/expo.modules.ui-55.0.4.pom} +1 -1
  141. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.md5 +1 -0
  142. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha1 +1 -0
  143. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha256 +1 -0
  144. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha512 +1 -0
  145. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  146. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  147. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  148. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  149. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  150. package/package.json +9 -2
  151. package/src/datetime-picker/DateTimePicker.android.tsx +126 -0
  152. package/src/datetime-picker/DateTimePicker.tsx +94 -0
  153. package/src/datetime-picker/DateTimePicker.web.tsx +5 -0
  154. package/src/datetime-picker/index.tsx +11 -0
  155. package/src/datetime-picker/types.tsx +147 -0
  156. package/src/jetpack-compose/AnimatedVisibility/index.tsx +206 -0
  157. package/src/jetpack-compose/AnimatedVisibility/symbols.ts +8 -0
  158. package/src/jetpack-compose/Button/index.tsx +69 -92
  159. package/src/jetpack-compose/Card/index.tsx +105 -29
  160. package/src/jetpack-compose/Checkbox/index.tsx +126 -0
  161. package/src/jetpack-compose/Chip/index.tsx +391 -51
  162. package/src/jetpack-compose/DatePicker/index.tsx +112 -7
  163. package/src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx +126 -0
  164. package/src/jetpack-compose/DropdownMenu/index.tsx +107 -0
  165. package/src/jetpack-compose/FloatingActionButton/index.tsx +207 -0
  166. package/src/jetpack-compose/HorizontalFloatingToolbar/index.tsx +4 -2
  167. package/src/jetpack-compose/IconButton/index.tsx +49 -56
  168. package/src/jetpack-compose/ModalBottomSheet/index.tsx +85 -15
  169. package/src/jetpack-compose/MultiChoiceSegmentedButtonRow/index.tsx +34 -0
  170. package/src/jetpack-compose/Progress/index.tsx +120 -62
  171. package/src/jetpack-compose/RadioButton/index.tsx +8 -9
  172. package/src/jetpack-compose/SegmentedButton/index.tsx +109 -0
  173. package/src/jetpack-compose/SingleChoiceSegmentedButtonRow/index.tsx +34 -0
  174. package/src/jetpack-compose/Slider/index.tsx +76 -29
  175. package/src/jetpack-compose/Switch/index.tsx +17 -87
  176. package/src/jetpack-compose/TextInput/index.tsx +10 -0
  177. package/src/jetpack-compose/ToggleButton/index.tsx +67 -43
  178. package/src/jetpack-compose/index.ts +5 -4
  179. package/src/jetpack-compose/modifiers/index.ts +26 -2
  180. package/src/swift-ui/Link/index.tsx +52 -0
  181. package/src/swift-ui/ProgressView/index.tsx +1 -3
  182. package/src/swift-ui/Stepper/index.tsx +7 -7
  183. package/src/swift-ui/Text/index.tsx +66 -2
  184. package/src/swift-ui/index.tsx +1 -0
  185. package/src/swift-ui/modifiers/environment.ts +17 -4
  186. package/src/swift-ui/modifiers/index.ts +44 -10
  187. package/src/swift-ui/modifiers/widgets.ts +18 -0
  188. package/src/swift-ui/types.ts +5 -0
  189. package/android/src/main/java/expo/modules/ui/FilterChipView.kt +0 -59
  190. package/android/src/main/java/expo/modules/ui/PickerView.kt +0 -161
  191. package/android/src/main/java/expo/modules/ui/TextButtonView.kt +0 -33
  192. package/android/src/main/java/expo/modules/ui/menu/ContextMenu.kt +0 -183
  193. package/android/src/main/java/expo/modules/ui/menu/ContextMenuRecords.kt +0 -64
  194. package/build/jetpack-compose/Button/types.d.ts +0 -5
  195. package/build/jetpack-compose/Button/types.d.ts.map +0 -1
  196. package/build/jetpack-compose/ContextMenu/Submenu.d.ts +0 -17
  197. package/build/jetpack-compose/ContextMenu/Submenu.d.ts.map +0 -1
  198. package/build/jetpack-compose/ContextMenu/index.d.ts +0 -65
  199. package/build/jetpack-compose/ContextMenu/index.d.ts.map +0 -1
  200. package/build/jetpack-compose/ContextMenu/utils.d.ts +0 -24
  201. package/build/jetpack-compose/ContextMenu/utils.d.ts.map +0 -1
  202. package/build/jetpack-compose/FilterChip/index.d.ts +0 -49
  203. package/build/jetpack-compose/FilterChip/index.d.ts.map +0 -1
  204. package/build/jetpack-compose/Picker/index.d.ts +0 -62
  205. package/build/jetpack-compose/Picker/index.d.ts.map +0 -1
  206. package/build/jetpack-compose/TextButton/index.d.ts +0 -29
  207. package/build/jetpack-compose/TextButton/index.d.ts.map +0 -1
  208. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar +0 -0
  209. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.md5 +0 -1
  210. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha1 +0 -1
  211. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha256 +0 -1
  212. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha512 +0 -1
  213. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar +0 -0
  214. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.md5 +0 -1
  215. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha1 +0 -1
  216. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha256 +0 -1
  217. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha512 +0 -1
  218. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.md5 +0 -1
  219. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha1 +0 -1
  220. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha256 +0 -1
  221. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha512 +0 -1
  222. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.md5 +0 -1
  223. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha1 +0 -1
  224. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha256 +0 -1
  225. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha512 +0 -1
  226. package/src/jetpack-compose/Button/types.ts +0 -57
  227. package/src/jetpack-compose/ContextMenu/Submenu.tsx +0 -21
  228. package/src/jetpack-compose/ContextMenu/index.tsx +0 -149
  229. package/src/jetpack-compose/ContextMenu/utils.ts +0 -144
  230. package/src/jetpack-compose/FilterChip/index.tsx +0 -89
  231. package/src/jetpack-compose/Picker/index.tsx +0 -90
  232. package/src/jetpack-compose/TextButton/index.tsx +0 -55
@@ -6,20 +6,29 @@ import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
6
6
  import androidx.compose.material3.SwitchDefaults
7
7
  import androidx.compose.material3.ToggleButtonDefaults
8
8
  import androidx.compose.runtime.remember
9
+ import expo.modules.kotlin.functions.Coroutine
9
10
  import expo.modules.kotlin.modules.Module
10
11
  import expo.modules.kotlin.modules.ModuleDefinition
11
12
  import expo.modules.kotlin.viewevent.getValue
12
13
  import expo.modules.ui.button.ButtonContent
13
14
  import expo.modules.ui.button.ButtonPressedEvent
14
15
  import expo.modules.ui.button.ButtonProps
16
+ import expo.modules.ui.button.ElevatedButtonContent
17
+ import expo.modules.ui.button.FilledTonalButtonContent
18
+ import expo.modules.ui.button.OutlinedButtonContent
19
+ import expo.modules.ui.button.TextButtonContent
20
+ import expo.modules.ui.button.FloatingActionButtonContent
21
+ import expo.modules.ui.button.FloatingActionButtonProps
15
22
  import expo.modules.ui.button.IconButtonContent
16
- import expo.modules.ui.button.IconButtonProps
23
+ import expo.modules.ui.button.FilledIconButtonContent
24
+ import expo.modules.ui.button.FilledTonalIconButtonContent
25
+ import expo.modules.ui.button.OutlinedIconButtonContent
17
26
  import expo.modules.ui.icon.IconView
18
- import expo.modules.ui.menu.ContextMenuButtonPressedEvent
19
- import expo.modules.ui.menu.ContextMenuContent
20
- import expo.modules.ui.menu.ContextMenuProps
21
- import expo.modules.ui.menu.ContextMenuSwitchValueChangeEvent
22
- import expo.modules.ui.menu.ExpandedChangedEvent
27
+ import expo.modules.ui.menu.DropdownMenuContent
28
+ import expo.modules.ui.menu.DropdownMenuProps
29
+ import expo.modules.ui.menu.DropdownMenuItemContent
30
+ import expo.modules.ui.menu.DropdownMenuItemProps
31
+ import expo.modules.ui.menu.ItemPressedEvent
23
32
  import okhttp3.OkHttpClient
24
33
 
25
34
  class ExpoUIModule : Module() {
@@ -84,26 +93,48 @@ class ExpoUIModule : Module() {
84
93
 
85
94
  //region Expo UI views
86
95
 
87
- ExpoUIView("ModalBottomSheetView", events = {
96
+ View(ModalBottomSheetView::class) {
88
97
  Events("onDismissRequest")
89
- }) { props: ModalBottomSheetProps ->
90
- val onDismissRequest by remember { EventDispatcher<Unit>() }
91
- ModalBottomSheetContent(props) { onDismissRequest(Unit) }
98
+ AsyncFunction("hide") Coroutine { view: ModalBottomSheetView ->
99
+ view.hide()
100
+ }
101
+ }
102
+
103
+ ExpoUIView("SingleChoiceSegmentedButtonRowView") { props: SingleChoiceSegmentedButtonRowProps ->
104
+ SingleChoiceSegmentedButtonRowContent(props)
92
105
  }
93
106
 
94
- // Defines a single view for now – a single choice segmented control
95
- ExpoUIView("PickerView", events = {
96
- Events("onOptionSelected")
97
- }) { props: PickerProps ->
98
- val onOptionSelected by remember { EventDispatcher<PickerOptionSelectedEvent>() }
99
- PickerContent(props) { onOptionSelected(it) }
107
+ ExpoUIView("MultiChoiceSegmentedButtonRowView") { props: MultiChoiceSegmentedButtonRowProps ->
108
+ MultiChoiceSegmentedButtonRowContent(props)
109
+ }
110
+
111
+ ExpoUIView("SegmentedButtonView", events = {
112
+ Events("onButtonPressed", "onCheckedChange")
113
+ }) { props: SegmentedButtonProps ->
114
+ val onButtonPressed by remember { EventDispatcher<Unit>() }
115
+ val onCheckedChange by remember { EventDispatcher<GenericEventPayload1<Boolean>>() }
116
+ SegmentedButtonContent(props, { onButtonPressed(Unit) }, { onCheckedChange(it) })
100
117
  }
101
118
 
102
119
  ExpoUIView("SwitchView", events = {
103
- Events("onValueChange")
120
+ Events("onCheckedChange")
104
121
  }) { props: SwitchProps ->
105
- val onValueChange by remember { EventDispatcher<ValueChangeEvent>() }
106
- SwitchContent(props) { onValueChange(it) }
122
+ val onCheckedChange by remember { EventDispatcher<CheckedChangeEvent>() }
123
+ SwitchContent(props) { value -> onCheckedChange(CheckedChangeEvent(value)) }
124
+ }
125
+
126
+ ExpoUIView("CheckboxView", events = {
127
+ Events("onCheckedChange")
128
+ }) { props: CheckboxProps ->
129
+ val onCheckedChange by remember { EventDispatcher<CheckedChangeEvent>() }
130
+ CheckboxContent(props) { value -> onCheckedChange(CheckedChangeEvent(value)) }
131
+ }
132
+
133
+ ExpoUIView("TriStateCheckboxView", events = {
134
+ Events("onNativeClick")
135
+ }) { props: TriStateCheckboxProps ->
136
+ val onNativeClick by remember { EventDispatcher<Unit>() }
137
+ TriStateCheckboxContent(props) { onNativeClick(Unit) }
107
138
  }
108
139
 
109
140
  ExpoUIView("Button", events = {
@@ -113,15 +144,64 @@ class ExpoUIModule : Module() {
113
144
  ButtonContent(props) { onButtonPressed(it) }
114
145
  }
115
146
 
147
+ ExpoUIView("FilledTonalButton", events = {
148
+ Events("onButtonPressed")
149
+ }) { props: ButtonProps ->
150
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
151
+ FilledTonalButtonContent(props) { onButtonPressed(it) }
152
+ }
153
+
154
+ ExpoUIView("OutlinedButton", events = {
155
+ Events("onButtonPressed")
156
+ }) { props: ButtonProps ->
157
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
158
+ OutlinedButtonContent(props) { onButtonPressed(it) }
159
+ }
160
+
161
+ ExpoUIView("ElevatedButton", events = {
162
+ Events("onButtonPressed")
163
+ }) { props: ButtonProps ->
164
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
165
+ ElevatedButtonContent(props) { onButtonPressed(it) }
166
+ }
167
+
168
+ ExpoUIView("TextButton", events = {
169
+ Events("onButtonPressed")
170
+ }) { props: ButtonProps ->
171
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
172
+ TextButtonContent(props) { onButtonPressed(it) }
173
+ }
174
+
116
175
  ExpoUIView("IconButton", events = {
117
176
  Events("onButtonPressed")
118
- }) { props: IconButtonProps ->
177
+ }) { props: ButtonProps ->
119
178
  val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
120
179
  IconButtonContent(props) { onButtonPressed(it) }
121
180
  }
122
181
 
182
+ ExpoUIView("FilledIconButton", events = {
183
+ Events("onButtonPressed")
184
+ }) { props: ButtonProps ->
185
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
186
+ FilledIconButtonContent(props) { onButtonPressed(it) }
187
+ }
188
+
189
+ ExpoUIView("FilledTonalIconButton", events = {
190
+ Events("onButtonPressed")
191
+ }) { props: ButtonProps ->
192
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
193
+ FilledTonalIconButtonContent(props) { onButtonPressed(it) }
194
+ }
195
+
196
+ ExpoUIView("OutlinedIconButton", events = {
197
+ Events("onButtonPressed")
198
+ }) { props: ButtonProps ->
199
+ val onButtonPressed by remember { EventDispatcher<ButtonPressedEvent>() }
200
+ OutlinedIconButtonContent(props) { onButtonPressed(it) }
201
+ }
202
+
123
203
  ExpoUIView("SliderView", events = {
124
- Events("onValueChanged")
204
+ Events("onValueChange", "onValueChangeFinished")
125
205
  }) { props: SliderProps ->
126
206
  SliderContent(props)
127
207
  }
@@ -141,26 +221,50 @@ class ExpoUIModule : Module() {
141
221
  DateTimePickerContent(props) { onDateSelected(it) }
142
222
  }
143
223
 
144
- ExpoUIView("ContextMenuView", events = {
145
- Events(
146
- "onContextMenuButtonPressed",
147
- "onContextMenuSwitchValueChanged",
148
- "onExpandedChanged"
149
- )
150
- }) { props: ContextMenuProps ->
151
- val onContextMenuButtonPressed by remember { EventDispatcher<ContextMenuButtonPressedEvent>() }
152
- val onContextMenuSwitchValueChanged by remember { EventDispatcher<ContextMenuSwitchValueChangeEvent>() }
153
- val onExpandedChanged by remember { EventDispatcher<ExpandedChangedEvent>() }
154
- ContextMenuContent(
155
- props,
156
- { onContextMenuButtonPressed(it) },
157
- { onContextMenuSwitchValueChanged(it) },
158
- { onExpandedChanged(it) }
159
- )
224
+ ExpoUIView("DatePickerDialogView", events = {
225
+ Events("onDateSelected", "onDismissRequest")
226
+ }) { props: DatePickerDialogProps ->
227
+ val onDateSelected by remember { EventDispatcher<DatePickerResult>() }
228
+ val onDismissRequest by remember { EventDispatcher<Unit>() }
229
+ ExpoDatePickerDialogContent(props, { onDateSelected(it) }, { onDismissRequest(Unit) })
230
+ }
231
+
232
+ ExpoUIView("TimePickerDialogView", events = {
233
+ Events("onDateSelected", "onDismissRequest")
234
+ }) { props: TimePickerDialogProps ->
235
+ val onDateSelected by remember { EventDispatcher<DatePickerResult>() }
236
+ val onDismissRequest by remember { EventDispatcher<Unit>() }
237
+ ExpoTimePickerDialogContent(props, { onDateSelected(it) }, { onDismissRequest(Unit) })
238
+ }
239
+
240
+ ExpoUIView("DropdownMenuView", events = {
241
+ Events("onDismissRequest")
242
+ }) { props: DropdownMenuProps ->
243
+ val onDismissRequest by remember { EventDispatcher<Unit>() }
244
+ DropdownMenuContent(props) { onDismissRequest(Unit) }
245
+ }
246
+
247
+ ExpoUIView("DropdownMenuItemView", events = {
248
+ Events("onItemPressed")
249
+ }) { props: DropdownMenuItemProps ->
250
+ val onItemPressed by remember { EventDispatcher<ItemPressedEvent>() }
251
+ DropdownMenuItemContent(props) { onItemPressed(it) }
252
+ }
253
+
254
+ ExpoUIView("LinearProgressIndicatorView") { props: LinearProgressIndicatorProps ->
255
+ LinearProgressIndicatorContent(props)
256
+ }
257
+
258
+ ExpoUIView("CircularProgressIndicatorView") { props: CircularProgressIndicatorProps ->
259
+ CircularProgressIndicatorContent(props)
260
+ }
261
+
262
+ ExpoUIView("LinearWavyProgressIndicatorView") { props: LinearWavyProgressIndicatorProps ->
263
+ LinearWavyProgressIndicatorContent(props)
160
264
  }
161
265
 
162
- ExpoUIView("ProgressView") { props: ProgressProps ->
163
- ProgressContent(props)
266
+ ExpoUIView("CircularWavyProgressIndicatorView") { props: CircularWavyProgressIndicatorProps ->
267
+ CircularWavyProgressIndicatorContent(props)
164
268
  }
165
269
 
166
270
  ExpoUIView("BoxView") { props: LayoutProps ->
@@ -227,42 +331,74 @@ class ExpoUIModule : Module() {
227
331
  )
228
332
  }
229
333
 
230
- ExpoUIView("ChipView", events = {
231
- Events(
232
- "onPress",
233
- "onDismiss"
234
- )
235
- }) { props: ChipProps ->
236
- val onPress by remember { EventDispatcher<ChipPressedEvent>() }
237
- val onDismiss by remember { EventDispatcher<ChipPressedEvent>() }
238
- ChipContent(props, { onPress(it) }, { onDismiss(it) })
334
+ ExpoUIView("AssistChipView", events = {
335
+ Events("onNativeClick")
336
+ }) { props: AssistChipProps ->
337
+ val onNativeClick by remember { EventDispatcher<ChipPressedEvent>() }
338
+ AssistChipContent(props) { onNativeClick(it) }
339
+ }
340
+
341
+ ExpoUIView("InputChipView", events = {
342
+ Events("onNativeClick")
343
+ }) { props: InputChipProps ->
344
+ val onNativeClick by remember { EventDispatcher<ChipPressedEvent>() }
345
+ InputChipContent(props) { onNativeClick(it) }
346
+ }
347
+
348
+ ExpoUIView("SuggestionChipView", events = {
349
+ Events("onNativeClick")
350
+ }) { props: SuggestionChipProps ->
351
+ val onNativeClick by remember { EventDispatcher<ChipPressedEvent>() }
352
+ SuggestionChipContent(props) { onNativeClick(it) }
239
353
  }
240
354
 
241
355
  ExpoUIView("FilterChipView", events = {
242
- Events("onPress")
356
+ Events("onNativeClick")
243
357
  }) { props: FilterChipProps ->
244
- val onPress by remember { EventDispatcher<FilterChipPressedEvent>() }
245
- FilterChipContent(props) { onPress(it) }
358
+ val onNativeClick by remember { EventDispatcher<ChipPressedEvent>() }
359
+ FilterChipContent(props) { onNativeClick(it) }
246
360
  }
247
361
 
248
- ExpoUIView("TextButtonView", events = {
249
- Events("onButtonPressed")
250
- }) { props: TextButtonProps ->
251
- val onButtonPressed by remember { EventDispatcher<expo.modules.ui.button.ButtonPressedEvent>() }
252
- TextButtonContent(props) { onButtonPressed(it) }
362
+ ExpoUIView("ToggleButton", events = {
363
+ Events("onCheckedChange")
364
+ }) { props: ToggleButtonProps ->
365
+ val onCheckedChange by remember { EventDispatcher<ToggleButtonValueChangeEvent>() }
366
+ ToggleButtonContent(props) { onCheckedChange(it) }
253
367
  }
254
368
 
255
- ExpoUIView("ToggleButtonView", events = {
369
+ ExpoUIView("IconToggleButton", events = {
256
370
  Events("onCheckedChange")
257
371
  }) { props: ToggleButtonProps ->
258
372
  val onCheckedChange by remember { EventDispatcher<ToggleButtonValueChangeEvent>() }
259
- ToggleButtonContent(props) { onCheckedChange(it) }
373
+ IconToggleButtonContent(props) { onCheckedChange(it) }
374
+ }
375
+
376
+ ExpoUIView("FilledIconToggleButton", events = {
377
+ Events("onCheckedChange")
378
+ }) { props: ToggleButtonProps ->
379
+ val onCheckedChange by remember { EventDispatcher<ToggleButtonValueChangeEvent>() }
380
+ FilledIconToggleButtonContent(props) { onCheckedChange(it) }
381
+ }
382
+
383
+ ExpoUIView("OutlinedIconToggleButton", events = {
384
+ Events("onCheckedChange")
385
+ }) { props: ToggleButtonProps ->
386
+ val onCheckedChange by remember { EventDispatcher<ToggleButtonValueChangeEvent>() }
387
+ OutlinedIconToggleButtonContent(props) { onCheckedChange(it) }
260
388
  }
261
389
 
262
390
  ExpoUIView("CardView") { props: CardProps ->
263
391
  CardContent(props)
264
392
  }
265
393
 
394
+ ExpoUIView("ElevatedCardView") { props: ElevatedCardProps ->
395
+ ElevatedCardContent(props)
396
+ }
397
+
398
+ ExpoUIView("OutlinedCardView") { props: OutlinedCardProps ->
399
+ OutlinedCardContent(props)
400
+ }
401
+
266
402
  ExpoUIView("ListItemView") { props: ListItemProps ->
267
403
  ListItemContent(props)
268
404
  }
@@ -282,11 +418,23 @@ class ExpoUIModule : Module() {
282
418
  SurfaceContent(props)
283
419
  }
284
420
 
421
+ ExpoUIView("AnimatedVisibilityView") { props: AnimatedVisibilityProps ->
422
+ AnimatedVisibilityContent(props)
423
+ }
424
+
285
425
  ExpoUIView("RadioButtonView", events = {
286
- Events("onNativeClick")
426
+ Events("onButtonPressed")
287
427
  }) { props: RadioButtonProps ->
288
- val onNativeClick by remember { EventDispatcher<Unit>() }
289
- RadioButtonContent(props) { onNativeClick(Unit) }
428
+ val onButtonPressed by remember { EventDispatcher<Unit>() }
429
+ val clickHandler = if (props.clickable) { { onButtonPressed(Unit) } } else null
430
+ RadioButtonContent(props, clickHandler)
431
+ }
432
+
433
+ ExpoUIView("FloatingActionButtonView", events = {
434
+ Events("onButtonPressed")
435
+ }) { props: FloatingActionButtonProps ->
436
+ val onButtonPressed by remember { EventDispatcher<Unit>() }
437
+ FloatingActionButtonContent(props) { onButtonPressed(Unit) }
290
438
  }
291
439
 
292
440
  //endregion Expo UI views
@@ -21,6 +21,9 @@ import androidx.compose.foundation.layout.width
21
21
  import androidx.compose.foundation.layout.wrapContentHeight
22
22
  import androidx.compose.foundation.layout.wrapContentWidth
23
23
  import androidx.compose.foundation.selection.selectable
24
+ import androidx.compose.foundation.selection.selectableGroup
25
+ import androidx.compose.foundation.selection.toggleable
26
+ import androidx.compose.ui.semantics.Role
24
27
  import androidx.compose.foundation.shape.CircleShape
25
28
  import androidx.compose.foundation.shape.CutCornerShape
26
29
  import androidx.compose.foundation.shape.RoundedCornerShape
@@ -177,13 +180,26 @@ internal data class ClipParams(
177
180
  ) : Record
178
181
 
179
182
  internal data class SelectableParams(
180
- @Field val selected: Boolean = false
183
+ @Field val selected: Boolean = false,
184
+ @Field val role: String? = null
181
185
  ) : Record
182
186
 
183
187
  internal data class ClickableParams(
184
188
  @Field val indication: Boolean = true
185
189
  ) : Record
186
190
 
191
+ internal enum class SemanticRoleType(val value: String) : Enumerable {
192
+ CHECKBOX("checkbox"),
193
+ RADIO_BUTTON("radioButton"),
194
+ SWITCH("switch"),
195
+ TAB("tab")
196
+ }
197
+
198
+ internal data class ToggleableParams(
199
+ @Field val value: Boolean = false,
200
+ @Field val role: SemanticRoleType? = null
201
+ ) : Record
202
+
187
203
  // endregion
188
204
 
189
205
  /**
@@ -508,8 +524,35 @@ object ModifierRegistry {
508
524
  val params = recordFromMap<SelectableParams>(map)
509
525
  Modifier.selectable(
510
526
  selected = params.selected,
527
+ role = when (params.role) {
528
+ "radioButton" -> androidx.compose.ui.semantics.Role.RadioButton
529
+ "checkbox" -> androidx.compose.ui.semantics.Role.Checkbox
530
+ "switch" -> androidx.compose.ui.semantics.Role.Switch
531
+ "tab" -> androidx.compose.ui.semantics.Role.Tab
532
+ else -> null
533
+ },
511
534
  onClick = { eventDispatcher("selectable", emptyMap()) }
512
535
  )
513
536
  }
537
+
538
+ register("selectableGroup") { _, _, _, _ ->
539
+ Modifier.selectableGroup()
540
+ }
541
+
542
+ register("toggleable") { map, _, _, eventDispatcher ->
543
+ val params = recordFromMap<ToggleableParams>(map)
544
+ val role = when (params.role) {
545
+ SemanticRoleType.CHECKBOX -> Role.Checkbox
546
+ SemanticRoleType.RADIO_BUTTON -> Role.RadioButton
547
+ SemanticRoleType.SWITCH -> Role.Switch
548
+ SemanticRoleType.TAB -> Role.Tab
549
+ null -> null
550
+ }
551
+ Modifier.toggleable(
552
+ value = params.value,
553
+ role = role,
554
+ onValueChange = { eventDispatcher("toggleable", emptyMap()) }
555
+ )
556
+ }
514
557
  }
515
558
  }