@expo/ui 57.0.10 → 57.0.12

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 (96) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +21 -1
  4. package/android/src/main/java/expo/modules/ui/graphics/DrawablePainter.kt +43 -0
  5. package/android/src/main/java/expo/modules/ui/{icon/VectorIconLoader.kt → graphics/ImageLoader.kt} +122 -87
  6. package/android/src/main/java/expo/modules/ui/graphics/ImageSource.kt +28 -0
  7. package/android/src/main/java/expo/modules/ui/{icon → graphics}/ResourceIdHelper.kt +1 -1
  8. package/android/src/main/java/expo/modules/ui/icon/IconView.kt +7 -78
  9. package/android/src/main/java/expo/modules/ui/image/ImageView.kt +136 -0
  10. package/build/State/useWorkletProp.d.ts.map +1 -1
  11. package/build/jetpack-compose/Image/index.d.ts +107 -0
  12. package/build/jetpack-compose/Image/index.d.ts.map +1 -0
  13. package/build/jetpack-compose/index.d.ts +1 -0
  14. package/build/jetpack-compose/index.d.ts.map +1 -1
  15. package/build/swift-ui/Alert/index.d.ts.map +1 -1
  16. package/build/swift-ui/ConfirmationDialog/index.d.ts.map +1 -1
  17. package/build/swift-ui/Overlay/index.d.ts.map +1 -1
  18. package/build/swift-ui/Popover/index.d.ts.map +1 -1
  19. package/build/swift-ui/Slider/index.d.ts.map +1 -1
  20. package/build/swift-ui/modifiers/index.d.ts +61 -9
  21. package/build/swift-ui/modifiers/index.d.ts.map +1 -1
  22. package/build/universal/BottomSheet/index.android.d.ts +1 -1
  23. package/build/universal/BottomSheet/index.android.d.ts.map +1 -1
  24. package/build/universal/BottomSheet/index.d.ts +1 -1
  25. package/build/universal/BottomSheet/index.d.ts.map +1 -1
  26. package/build/universal/BottomSheet/index.ios.d.ts +1 -1
  27. package/build/universal/BottomSheet/index.ios.d.ts.map +1 -1
  28. package/build/universal/BottomSheet/types.d.ts +28 -0
  29. package/build/universal/BottomSheet/types.d.ts.map +1 -1
  30. package/build/universal/BottomSheet/utils.d.ts +13 -0
  31. package/build/universal/BottomSheet/utils.d.ts.map +1 -0
  32. package/expo-module.config.json +1 -1
  33. package/ios/Convertibles/PaddingValue.swift +57 -0
  34. package/ios/Modifiers/MenuIndicatorModifier.swift +18 -0
  35. package/ios/Modifiers/MenuStyleModifier.swift +28 -0
  36. package/ios/Modifiers/ViewModifierRegistry.swift +105 -18
  37. package/ios/SliderView.swift +11 -5
  38. package/ios/State/WorkletCallbackClassDef.swift +7 -0
  39. package/ios/Toggle/ToggleView.swift +16 -18
  40. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.10/expo.modules.ui-57.0.10-sources.jar → 57.0.12/expo.modules.ui-57.0.12-sources.jar} +0 -0
  41. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12-sources.jar.md5 +1 -0
  42. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12-sources.jar.sha1 +1 -0
  43. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12-sources.jar.sha256 +1 -0
  44. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12-sources.jar.sha512 +1 -0
  45. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.aar +0 -0
  46. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.aar.md5 +1 -0
  47. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.aar.sha1 +1 -0
  48. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.aar.sha256 +1 -0
  49. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.aar.sha512 +1 -0
  50. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.10/expo.modules.ui-57.0.10.module → 57.0.12/expo.modules.ui-57.0.12.module} +22 -22
  51. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.module.md5 +1 -0
  52. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.module.sha1 +1 -0
  53. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.module.sha256 +1 -0
  54. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.module.sha512 +1 -0
  55. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{57.0.10/expo.modules.ui-57.0.10.pom → 57.0.12/expo.modules.ui-57.0.12.pom} +1 -1
  56. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.pom.md5 +1 -0
  57. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.pom.sha1 +1 -0
  58. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.pom.sha256 +1 -0
  59. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.12/expo.modules.ui-57.0.12.pom.sha512 +1 -0
  60. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  61. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  62. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  63. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  64. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  65. package/package.json +4 -4
  66. package/src/State/useWorkletProp.ts +31 -14
  67. package/src/jetpack-compose/Image/index.tsx +149 -0
  68. package/src/jetpack-compose/index.ts +1 -0
  69. package/src/swift-ui/Alert/index.tsx +1 -0
  70. package/src/swift-ui/ConfirmationDialog/index.tsx +1 -0
  71. package/src/swift-ui/Overlay/index.tsx +1 -0
  72. package/src/swift-ui/Popover/index.tsx +1 -0
  73. package/src/swift-ui/Slider/index.tsx +14 -8
  74. package/src/swift-ui/modifiers/index.ts +70 -8
  75. package/src/universal/BottomSheet/index.android.tsx +13 -2
  76. package/src/universal/BottomSheet/index.ios.tsx +9 -1
  77. package/src/universal/BottomSheet/index.tsx +17 -2
  78. package/src/universal/BottomSheet/types.ts +33 -0
  79. package/src/universal/BottomSheet/utils.ts +35 -0
  80. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10-sources.jar.md5 +0 -1
  81. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10-sources.jar.sha1 +0 -1
  82. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10-sources.jar.sha256 +0 -1
  83. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10-sources.jar.sha512 +0 -1
  84. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.aar +0 -0
  85. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.aar.md5 +0 -1
  86. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.aar.sha1 +0 -1
  87. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.aar.sha256 +0 -1
  88. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.aar.sha512 +0 -1
  89. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.module.md5 +0 -1
  90. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.module.sha1 +0 -1
  91. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.module.sha256 +0 -1
  92. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.module.sha512 +0 -1
  93. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.pom.md5 +0 -1
  94. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.pom.sha1 +0 -1
  95. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.pom.sha256 +0 -1
  96. package/local-maven-repo/expo/modules/ui/expo.modules.ui/57.0.10/expo.modules.ui-57.0.10.pom.sha512 +0 -1
@@ -9,6 +9,7 @@ import {
9
9
  } from '@expo/ui/swift-ui/modifiers';
10
10
 
11
11
  import type { BottomSheetProps, SnapPoint } from './types';
12
+ import { resolveContentPadding } from './utils';
12
13
 
13
14
  function snapPointToDetent(snapPoint: SnapPoint): PresentationDetent {
14
15
  if (snapPoint === 'half') return 'medium';
@@ -24,10 +25,17 @@ export function BottomSheet({
24
25
  snapPoints,
25
26
  testID,
26
27
  modifiers,
28
+ contentPadding,
27
29
  }: BottomSheetProps) {
30
+ const { top, bottom, left, right } = resolveContentPadding(contentPadding, {
31
+ top: 16,
32
+ bottom: 0,
33
+ left: 16,
34
+ right: 16,
35
+ });
28
36
  const presentationModifiers: ModifierConfig[] = [
29
37
  frame({ maxWidth: Infinity, alignment: 'topLeading' }),
30
- padding({ top: 16, leading: 16, trailing: 16 }),
38
+ padding({ top, bottom, leading: left, trailing: right }),
31
39
  presentationDragIndicator(showDragIndicator ? 'visible' : 'hidden'),
32
40
  ];
33
41
  if (snapPoints && snapPoints.length > 0) {
@@ -2,6 +2,7 @@ import { useColorScheme } from 'react-native';
2
2
  import { Drawer } from 'vaul';
3
3
 
4
4
  import type { BottomSheetProps, SnapPoint } from './types';
5
+ import { resolveContentPadding } from './utils';
5
6
 
6
7
  // Visually-hidden style for the screen-reader-only Drawer.Title.
7
8
  const visuallyHiddenStyle: React.CSSProperties = {
@@ -33,8 +34,15 @@ export function BottomSheet({
33
34
  showDragIndicator = true,
34
35
  snapPoints,
35
36
  testID,
37
+ contentPadding,
36
38
  }: BottomSheetProps) {
37
39
  const isDark = useColorScheme() === 'dark';
40
+ const { top, bottom, left, right } = resolveContentPadding(contentPadding, {
41
+ top: 16,
42
+ bottom: 16,
43
+ left: 16,
44
+ right: 16,
45
+ });
38
46
  const vaulSnapPoints = snapPoints?.length ? snapPoints.map(snapPointToVaul) : undefined;
39
47
  const hasSnapPoints = vaulSnapPoints != null;
40
48
 
@@ -60,7 +68,15 @@ export function BottomSheet({
60
68
  {/* Radix Dialog requires a title for a11y; render visually-hidden. */}
61
69
  <Drawer.Title style={visuallyHiddenStyle}>Bottom sheet</Drawer.Title>
62
70
  {showDragIndicator && <Drawer.Handle />}
63
- <div style={innerStyle} data-testid={testID}>
71
+ <div
72
+ style={{
73
+ ...innerStyle,
74
+ paddingTop: top,
75
+ paddingBottom: bottom,
76
+ paddingLeft: left,
77
+ paddingRight: right,
78
+ }}
79
+ data-testid={testID}>
64
80
  {children}
65
81
  </div>
66
82
  </Drawer.Content>
@@ -99,7 +115,6 @@ const noSnapPointContentStyle: React.CSSProperties = {
99
115
  };
100
116
 
101
117
  const innerStyle: React.CSSProperties = {
102
- padding: 16,
103
118
  overflow: 'auto',
104
119
  };
105
120
 
@@ -15,6 +15,19 @@ import type { ModifierConfig } from '../../types';
15
15
  */
16
16
  export type SnapPoint = 'half' | 'full' | { fraction: number } | { height: number };
17
17
 
18
+ /**
19
+ * Padding between a [`BottomSheet`](#bottomsheet) and its content — a single value applied to every
20
+ * edge, or per-edge values where an edge that is left out is `0`.
21
+ */
22
+ export type BottomSheetContentPadding =
23
+ | number
24
+ | {
25
+ top?: number;
26
+ bottom?: number;
27
+ left?: number;
28
+ right?: number;
29
+ };
30
+
18
31
  /**
19
32
  * Props for the [`BottomSheet`](#bottomsheet) component, a modal sheet that slides up from the bottom of the screen.
20
33
  */
@@ -50,11 +63,31 @@ export interface BottomSheetProps {
50
63
  */
51
64
  snapPoints?: SnapPoint[];
52
65
 
66
+ /**
67
+ * Padding between the sheet and [`children`](#children), in dp on Android, points on iOS, and
68
+ * CSS pixels on web. Pass `0` for content that reaches the sheet's edges.
69
+ *
70
+ * When omitted, each platform keeps the inset it applies by default.
71
+ *
72
+ * @example `contentPadding={0}` — full-bleed content
73
+ * @example `contentPadding={{ top: 8, bottom: 24 }}` — no horizontal inset
74
+ */
75
+ contentPadding?: BottomSheetContentPadding;
76
+
53
77
  /**
54
78
  * Identifier used to locate the component in end-to-end tests.
55
79
  */
56
80
  testID?: string;
57
81
 
82
+ /**
83
+ * Whether pressing the Android hardware back button (or back gesture) dismisses the bottom sheet.
84
+ * When `false`, the back press does not dismiss the sheet (note: the press still does not reach
85
+ * React Native's `BackHandler`).
86
+ * @default true
87
+ * @platform android
88
+ */
89
+ shouldDismissOnBackPress?: boolean;
90
+
58
91
  /**
59
92
  * Platform-specific modifier escape hatch. Pass an array of modifier configs
60
93
  * from `@expo/ui/swift-ui/modifiers` or `@expo/ui/jetpack-compose/modifiers`.
@@ -0,0 +1,35 @@
1
+ import type { BottomSheetContentPadding } from './types';
2
+
3
+ export type ResolvedContentPadding = {
4
+ top: number;
5
+ bottom: number;
6
+ left: number;
7
+ right: number;
8
+ };
9
+
10
+ /**
11
+ * Resolves the `contentPadding` prop against the inset the platform applies when the prop is
12
+ * omitted. A number applies to every edge, and an edge left out of an object is `0`.
13
+ */
14
+ export function resolveContentPadding(
15
+ contentPadding: BottomSheetContentPadding | undefined,
16
+ platformDefault: ResolvedContentPadding
17
+ ): ResolvedContentPadding {
18
+ if (contentPadding == null) {
19
+ return platformDefault;
20
+ }
21
+ if (typeof contentPadding === 'number') {
22
+ return {
23
+ top: contentPadding,
24
+ bottom: contentPadding,
25
+ left: contentPadding,
26
+ right: contentPadding,
27
+ };
28
+ }
29
+ return {
30
+ top: contentPadding.top ?? 0,
31
+ bottom: contentPadding.bottom ?? 0,
32
+ left: contentPadding.left ?? 0,
33
+ right: contentPadding.right ?? 0,
34
+ };
35
+ }
@@ -1 +0,0 @@
1
- ab9529856e2d9014c4500bd026ef87271d46390e
@@ -1 +0,0 @@
1
- daa8952f564fc49bf1e8248beaa2f2bc5f305c02f01f9ea9f9209323034d7cdf
@@ -1 +0,0 @@
1
- 6773d96e9e4bc26584cb012c44b9e9f6afd9d4d099aa7c93eb35a2089a77b71155a671302db4a9f9d97267c310ad266476d2bbb04ce77cc4fa36f7b3e262e696
@@ -1 +0,0 @@
1
- 128612487df27ee99651882fde63af29121cec37
@@ -1 +0,0 @@
1
- 497fae34b972934a9eb0ae4b1343527eb1e5f872ad97c44de758d4e3095cf2d9
@@ -1 +0,0 @@
1
- 65dd5f448fa7a5db1112becf801262b96f1ded388023a72616e1623ed9eb3fa1aaa25e479db58ee56aed07e97a1e5d72c3b66c4eecd6c8de39f67f92c1dbf993
@@ -1 +0,0 @@
1
- 50ff217e440913da2e4012ea61dda7727808e484
@@ -1 +0,0 @@
1
- c79327c07e0ada70fa83a5b245fca76f7664aa45920bfd547c84008ad06464ab
@@ -1 +0,0 @@
1
- 50884390eba625182faf35c12c524d62b90eec6936e381f26b7ee7c50f3d85304ea0dc6922876cee54492283770714332c4cc4ede2cc9d605e5ff8698fd01197
@@ -1 +0,0 @@
1
- 2d91e78a3e97454791f366df9ddca9fcbae04387
@@ -1 +0,0 @@
1
- 17b90d969bfae0e720e475072158f0cd5f9ebf9c17a19628d4e89a71804f5d10
@@ -1 +0,0 @@
1
- 9a5997ae6c7ac0870d23e87ac434f0ca01d3bb6fecd0cd6bcaa5fcf7afa8997314955813a41488c4c55724a8623996733256ea4189d08342c9f34945681e5a95