@expo/ui 56.0.0 → 56.0.2
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.
- package/CHANGELOG.md +12 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +1 -1
- package/android/src/main/java/expo/modules/ui/TextFieldView.kt +27 -80
- package/android/src/main/java/expo/modules/ui/icon/IconView.kt +6 -1
- package/build/community/bottom-sheet/BottomSheet.android.d.ts.map +1 -1
- package/build/community/bottom-sheet/BottomSheet.ios.d.ts.map +1 -1
- package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts +4 -0
- package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts +8 -0
- package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts.map +1 -1
- package/build/jetpack-compose/HorizontalPager/index.d.ts +2 -1
- package/build/jetpack-compose/HorizontalPager/index.d.ts.map +1 -1
- package/build/jetpack-compose/Icon/index.d.ts +12 -4
- package/build/jetpack-compose/Icon/index.d.ts.map +1 -1
- package/build/jetpack-compose/TextField/index.d.ts +21 -34
- package/build/jetpack-compose/TextField/index.d.ts.map +1 -1
- package/build/jetpack-compose/index.d.ts +2 -2
- package/build/jetpack-compose/index.d.ts.map +1 -1
- package/build/swift-ui/TextField/index.d.ts +1 -0
- package/build/swift-ui/TextField/index.d.ts.map +1 -1
- package/build/swift-ui/index.d.ts +1 -1
- package/build/swift-ui/index.d.ts.map +1 -1
- package/expo-module.config.json +1 -1
- package/ios/TextFieldView.swift +15 -15
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.0/expo.modules.ui-56.0.0-sources.jar → 56.0.2/expo.modules.ui-56.0.2-sources.jar} +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.0/expo.modules.ui-56.0.0.module → 56.0.2/expo.modules.ui-56.0.2.module} +22 -22
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.0/expo.modules.ui-56.0.0.pom → 56.0.2/expo.modules.ui-56.0.2.pom} +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
- package/package.json +14 -14
- package/src/community/bottom-sheet/BottomSheet.android.tsx +3 -2
- package/src/community/bottom-sheet/BottomSheet.ios.tsx +3 -2
- package/src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx +4 -6
- package/src/jetpack-compose/HorizontalFloatingToolbar/index.tsx +8 -8
- package/src/jetpack-compose/HorizontalPager/index.tsx +3 -1
- package/src/jetpack-compose/Icon/index.tsx +18 -5
- package/src/jetpack-compose/TextField/index.tsx +30 -50
- package/src/jetpack-compose/index.ts +17 -2
- package/src/swift-ui/TextField/index.tsx +3 -0
- package/src/swift-ui/index.tsx +6 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0-sources.jar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0-sources.jar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0-sources.jar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0-sources.jar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.aar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.aar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.aar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.aar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.module.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.0/expo.modules.ui-56.0.0.pom.sha512 +0 -1
package/ios/TextFieldView.swift
CHANGED
|
@@ -204,21 +204,6 @@ private struct StatefulSelectableTextField: View {
|
|
|
204
204
|
isFocused = true
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
.onChange(of: state.value as? String) { newValue in
|
|
208
|
-
if let max = props.maxLength, let str = newValue, str.count > max {
|
|
209
|
-
state.value = String(str.prefix(max))
|
|
210
|
-
return
|
|
211
|
-
}
|
|
212
|
-
props.onTextChange(["value": newValue])
|
|
213
|
-
props.onTextChangeSync?.invoke(arguments: [newValue])
|
|
214
|
-
}
|
|
215
|
-
.onChange(of: textManager.isFocused) { newValue in
|
|
216
|
-
isFocused = newValue
|
|
217
|
-
}
|
|
218
|
-
.onChange(of: isFocused) { newValue in
|
|
219
|
-
textManager.isFocused = newValue
|
|
220
|
-
props.onFocusChange(["value": newValue])
|
|
221
|
-
}
|
|
222
207
|
.onChange(of: localSelection) { newSel in
|
|
223
208
|
let text = (state.value as? String) ?? ""
|
|
224
209
|
var start = text.count
|
|
@@ -235,6 +220,21 @@ private struct StatefulSelectableTextField: View {
|
|
|
235
220
|
selection.value = ["start": start, "end": end]
|
|
236
221
|
props.onSelectionChange(["start": start, "end": end])
|
|
237
222
|
}
|
|
223
|
+
.onChange(of: state.value as? String) { newValue in
|
|
224
|
+
if let max = props.maxLength, let str = newValue, str.count > max {
|
|
225
|
+
state.value = String(str.prefix(max))
|
|
226
|
+
return
|
|
227
|
+
}
|
|
228
|
+
props.onTextChange(["value": newValue])
|
|
229
|
+
props.onTextChangeSync?.invoke(arguments: [newValue])
|
|
230
|
+
}
|
|
231
|
+
.onChange(of: textManager.isFocused) { newValue in
|
|
232
|
+
isFocused = newValue
|
|
233
|
+
}
|
|
234
|
+
.onChange(of: isFocused) { newValue in
|
|
235
|
+
textManager.isFocused = newValue
|
|
236
|
+
props.onFocusChange(["value": newValue])
|
|
237
|
+
}
|
|
238
238
|
.onChange(of: selection.value as? NSDictionary) { _ in
|
|
239
239
|
guard let start = extractInt(selection.value, "start"),
|
|
240
240
|
let end = extractInt(selection.value, "end") else { return }
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
25616b6077449f887cfccb76c53298bf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fcc61a62df8eb780a822914cee4b167b6e70519d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
30e043f7f04143f7b44a22ed5db105d71be86f4aa49f21d082d3c9acd84ea32a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
69bc561d70dc77219abb25903821b7f0f170b1a06c4cd40714ece8709b85404ad09bcd4fc9cbe67faf9a04e413a625e4880be8a5c78fd6426ed8f78f4b7ce4f6
|
|
Binary file
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c9daa8165fdcd9ceb61785e0c560a949
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a60331ab720130c5c2ab6c627a68c5c8f15aa917
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7c0946b01b4c9e3cc7c3790f36779a0d5ff3bb832562de233badb2168d613e45
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
222495b3d9e3c00846f79962ed79cdd46c2a2a2df76077b8752576200bfd728c3cc885cc0e0762869c57b24391882b9ee65ffa3f02a2c2490faa44e983640dd4
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.ui",
|
|
5
5
|
"module": "expo.modules.ui",
|
|
6
|
-
"version": "56.0.
|
|
6
|
+
"version": "56.0.2",
|
|
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-56.0.
|
|
28
|
-
"url": "expo.modules.ui-56.0.
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.ui-56.0.2.aar",
|
|
28
|
+
"url": "expo.modules.ui-56.0.2.aar",
|
|
29
|
+
"size": 1700493,
|
|
30
|
+
"sha512": "222495b3d9e3c00846f79962ed79cdd46c2a2a2df76077b8752576200bfd728c3cc885cc0e0762869c57b24391882b9ee65ffa3f02a2c2490faa44e983640dd4",
|
|
31
|
+
"sha256": "7c0946b01b4c9e3cc7c3790f36779a0d5ff3bb832562de233badb2168d613e45",
|
|
32
|
+
"sha1": "a60331ab720130c5c2ab6c627a68c5c8f15aa917",
|
|
33
|
+
"md5": "c9daa8165fdcd9ceb61785e0c560a949"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -141,13 +141,13 @@
|
|
|
141
141
|
],
|
|
142
142
|
"files": [
|
|
143
143
|
{
|
|
144
|
-
"name": "expo.modules.ui-56.0.
|
|
145
|
-
"url": "expo.modules.ui-56.0.
|
|
146
|
-
"size":
|
|
147
|
-
"sha512": "
|
|
148
|
-
"sha256": "
|
|
149
|
-
"sha1": "
|
|
150
|
-
"md5": "
|
|
144
|
+
"name": "expo.modules.ui-56.0.2.aar",
|
|
145
|
+
"url": "expo.modules.ui-56.0.2.aar",
|
|
146
|
+
"size": 1700493,
|
|
147
|
+
"sha512": "222495b3d9e3c00846f79962ed79cdd46c2a2a2df76077b8752576200bfd728c3cc885cc0e0762869c57b24391882b9ee65ffa3f02a2c2490faa44e983640dd4",
|
|
148
|
+
"sha256": "7c0946b01b4c9e3cc7c3790f36779a0d5ff3bb832562de233badb2168d613e45",
|
|
149
|
+
"sha1": "a60331ab720130c5c2ab6c627a68c5c8f15aa917",
|
|
150
|
+
"md5": "c9daa8165fdcd9ceb61785e0c560a949"
|
|
151
151
|
}
|
|
152
152
|
]
|
|
153
153
|
},
|
|
@@ -161,13 +161,13 @@
|
|
|
161
161
|
},
|
|
162
162
|
"files": [
|
|
163
163
|
{
|
|
164
|
-
"name": "expo.modules.ui-56.0.
|
|
165
|
-
"url": "expo.modules.ui-56.0.
|
|
166
|
-
"size":
|
|
167
|
-
"sha512": "
|
|
168
|
-
"sha256": "
|
|
169
|
-
"sha1": "
|
|
170
|
-
"md5": "
|
|
164
|
+
"name": "expo.modules.ui-56.0.2-sources.jar",
|
|
165
|
+
"url": "expo.modules.ui-56.0.2-sources.jar",
|
|
166
|
+
"size": 81393,
|
|
167
|
+
"sha512": "69bc561d70dc77219abb25903821b7f0f170b1a06c4cd40714ece8709b85404ad09bcd4fc9cbe67faf9a04e413a625e4880be8a5c78fd6426ed8f78f4b7ce4f6",
|
|
168
|
+
"sha256": "30e043f7f04143f7b44a22ed5db105d71be86f4aa49f21d082d3c9acd84ea32a",
|
|
169
|
+
"sha1": "fcc61a62df8eb780a822914cee4b167b6e70519d",
|
|
170
|
+
"md5": "25616b6077449f887cfccb76c53298bf"
|
|
171
171
|
}
|
|
172
172
|
]
|
|
173
173
|
}
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fe21a3ebc77261ba42803b0badb6b4b0
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7462e9cebfaf3618633f57bc7ccb3b20a78b1535
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ee0321724e44b775e5f24bf1712946ac3d8e8d71fffb8f567cfd13a631a3fd49
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
30a3a47f5c5c292e336d0eaf7363d8e4efabd422856c4012f90ae524197559a099c8bb06597ab67b976bd35f9dcd6db468520ab1c0460a6a057a1c117cb1ad8d
|
|
@@ -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>56.0.
|
|
12
|
+
<version>56.0.2</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.ui</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c2c86437b146e2fb044d5ec4d1ecf5fe
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ae97b3c0a7e08063fe763d3aa22eb4a39d49e893
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
94e0b9c22f4243dd3fae58fdff830551be50f8d9ee42e83c55c1dcb3dd50f6bb
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e716bb9fb13a6f3a41154d67632da322143d58a8313021c86a7725304a9b6159fb13672249e717876b6750f16d205dde1fd8291903c19e23835a3c626532ecfa
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>expo.modules.ui</groupId>
|
|
4
4
|
<artifactId>expo.modules.ui</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>56.0.
|
|
7
|
-
<release>56.0.
|
|
6
|
+
<latest>56.0.2</latest>
|
|
7
|
+
<release>56.0.2</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>56.0.
|
|
9
|
+
<version>56.0.2</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260506162907</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
62565e0bc43f40239455f1984b6f2783
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
ede29291f881a1a89bcda42bec68cca142494629
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6b80d88f119d1131b0152eb0c2bc170614baac7a8b4b601c46f98e77b3e6e638
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
13ed149e856276890b0fdc417974b41e8064a36cf93e2a59e2f8fdc2bb19f3d4df19eb6ea0d10f28194231b9774a27eb05ae835f6ad5a1dcba7c63c3755e11ef
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/ui",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.2",
|
|
4
4
|
"description": "A collection of UI components",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.fx.js"
|
|
@@ -48,14 +48,6 @@
|
|
|
48
48
|
"default": "./plugin/babel-plugin.js"
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
"scripts": {
|
|
52
|
-
"build": "expo-module build",
|
|
53
|
-
"clean": "expo-module clean",
|
|
54
|
-
"lint": "expo-module lint",
|
|
55
|
-
"test": "expo-module test",
|
|
56
|
-
"prepublishOnly": "expo-module prepublishOnly",
|
|
57
|
-
"expo-module": "expo-module"
|
|
58
|
-
},
|
|
59
51
|
"homepage": "https://docs.expo.dev/versions/latest/sdk/ui/",
|
|
60
52
|
"repository": {
|
|
61
53
|
"type": "git",
|
|
@@ -85,16 +77,17 @@
|
|
|
85
77
|
"@types/babel__core": "^7.20.5",
|
|
86
78
|
"@types/node": "^22.14.0",
|
|
87
79
|
"@types/react": "~19.2.0",
|
|
88
|
-
"expo-module-scripts": "56.0.0",
|
|
89
80
|
"react-native-reanimated": "4.3.0",
|
|
90
|
-
"react-native-worklets": "0.8.3"
|
|
81
|
+
"react-native-worklets": "0.8.3",
|
|
82
|
+
"expo": "56.0.0-preview.3",
|
|
83
|
+
"expo-module-scripts": "56.0.1"
|
|
91
84
|
},
|
|
92
85
|
"jest": {
|
|
93
86
|
"preset": "expo-module-scripts"
|
|
94
87
|
},
|
|
95
88
|
"peerDependencies": {
|
|
96
89
|
"@babel/core": "*",
|
|
97
|
-
"expo": "
|
|
90
|
+
"expo": "*",
|
|
98
91
|
"react": "*",
|
|
99
92
|
"react-dom": "*",
|
|
100
93
|
"react-native": "*",
|
|
@@ -115,5 +108,12 @@
|
|
|
115
108
|
"optional": true
|
|
116
109
|
}
|
|
117
110
|
},
|
|
118
|
-
"gitHead": "
|
|
119
|
-
|
|
111
|
+
"gitHead": "71ec800b2fa6133d22d69b70945132e22f1b7ae8",
|
|
112
|
+
"scripts": {
|
|
113
|
+
"build": "expo-module build",
|
|
114
|
+
"clean": "expo-module clean",
|
|
115
|
+
"lint": "expo-module lint",
|
|
116
|
+
"test": "expo-module test",
|
|
117
|
+
"expo-module": "expo-module"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
2
|
-
import { StyleSheet, View } from 'react-native';
|
|
2
|
+
import { StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { BottomSheetContext, BottomSheetInternalContext } from './context';
|
|
5
5
|
import type { BottomSheetMethods, BottomSheetProps } from './types';
|
|
@@ -65,6 +65,7 @@ export function BottomSheet(props: BottomSheetProps) {
|
|
|
65
65
|
backgroundStyle,
|
|
66
66
|
children,
|
|
67
67
|
} = props;
|
|
68
|
+
const { width } = useWindowDimensions();
|
|
68
69
|
|
|
69
70
|
const hasMultipleSnapPoints = snapPointsProp != null && snapPointsProp.length > 1;
|
|
70
71
|
const fitToContents = enableDynamicSizing && (!snapPointsProp || snapPointsProp.length === 0);
|
|
@@ -196,7 +197,7 @@ export function BottomSheet(props: BottomSheetProps) {
|
|
|
196
197
|
return (
|
|
197
198
|
<BottomSheetInternalContext.Provider value={internalContextValue}>
|
|
198
199
|
<BottomSheetContext.Provider value={methods}>
|
|
199
|
-
<Host
|
|
200
|
+
<Host style={{ position: 'absolute', width }}>
|
|
200
201
|
<ModalBottomSheet
|
|
201
202
|
ref={sheetRef}
|
|
202
203
|
onDismissRequest={handleDismiss}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
2
|
-
import { View } from 'react-native';
|
|
2
|
+
import { useWindowDimensions, View } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { BottomSheetContext, BottomSheetInternalContext } from './context';
|
|
5
5
|
import type { BottomSheetMethods, BottomSheetProps } from './types';
|
|
@@ -82,6 +82,7 @@ export function BottomSheet(props: BottomSheetProps) {
|
|
|
82
82
|
handleComponent,
|
|
83
83
|
children,
|
|
84
84
|
} = props;
|
|
85
|
+
const { width } = useWindowDimensions();
|
|
85
86
|
|
|
86
87
|
// Two-state pattern for animated close:
|
|
87
88
|
// - isMounted: whether the native sheet tree exists in the React tree
|
|
@@ -234,7 +235,7 @@ export function BottomSheet(props: BottomSheetProps) {
|
|
|
234
235
|
return (
|
|
235
236
|
<BottomSheetInternalContext.Provider value={internalContextValue}>
|
|
236
237
|
<BottomSheetContext.Provider value={methods}>
|
|
237
|
-
<Host
|
|
238
|
+
<Host style={{ position: 'absolute', width }}>
|
|
238
239
|
<NativeBottomSheet
|
|
239
240
|
isPresented={isPresented}
|
|
240
241
|
onIsPresentedChange={handlePresentedChange}
|
|
@@ -22,12 +22,10 @@ export type DropdownMenuItemElementColors = {
|
|
|
22
22
|
textColor?: ColorValue;
|
|
23
23
|
/** Color of the text when the menu item is disabled. */
|
|
24
24
|
disabledTextColor?: ColorValue;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// disabledLeadingIconColor?: ColorValue;
|
|
30
|
-
// disabledTrailingIconColor?: ColorValue;
|
|
25
|
+
leadingIconColor?: ColorValue;
|
|
26
|
+
trailingIconColor?: ColorValue;
|
|
27
|
+
disabledLeadingIconColor?: ColorValue;
|
|
28
|
+
disabledTrailingIconColor?: ColorValue;
|
|
31
29
|
};
|
|
32
30
|
|
|
33
31
|
/**
|
|
@@ -10,20 +10,20 @@ export type HorizontalFloatingToolbarColors = {
|
|
|
10
10
|
*/
|
|
11
11
|
toolbarContainerColor?: ColorValue;
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Color of the toolbar content (icons/text).
|
|
15
|
+
*/
|
|
16
|
+
toolbarContentColor?: ColorValue;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Color of the floating action button container (background).
|
|
20
20
|
*/
|
|
21
21
|
fabContainerColor?: ColorValue;
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Color of the floating action button content (icon).
|
|
25
|
+
*/
|
|
26
|
+
fabContentColor?: ColorValue;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
export type HorizontalFloatingToolbarProps = {
|
|
@@ -2,9 +2,11 @@ import { requireNativeView } from 'expo';
|
|
|
2
2
|
import type { Ref } from 'react';
|
|
3
3
|
|
|
4
4
|
import { type ModifierConfig, type ViewEvent } from '../../types';
|
|
5
|
-
import type
|
|
5
|
+
import { type PaddingValuesRecord } from '../Carousel';
|
|
6
6
|
import { createViewModifierEventListener } from '../modifiers/utils';
|
|
7
7
|
|
|
8
|
+
export type { PaddingValuesRecord };
|
|
9
|
+
|
|
8
10
|
export type HorizontalPagerHandle = {
|
|
9
11
|
/**
|
|
10
12
|
* Mirrors Compose's `PagerState.animateScrollToPage`. Resolves when the
|
|
@@ -23,16 +23,22 @@ export type IconProps = {
|
|
|
23
23
|
source: ImageSourcePropType;
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* The tint color to apply to the icon.
|
|
27
|
-
*
|
|
26
|
+
* The tint color to apply to the icon. Accepts hex strings, named colors,
|
|
27
|
+
* or RGB arrays.
|
|
28
|
+
*
|
|
29
|
+
* - When omitted, the icon inherits the color from the surrounding
|
|
30
|
+
* `LocalContentColor` (e.g. the toolbar/FAB content color).
|
|
31
|
+
* - When set to `null`, no tint is applied — the icon is drawn with its
|
|
32
|
+
* original colors (`Color.Unspecified`). Use this for multicolored icons.
|
|
28
33
|
*
|
|
29
34
|
* @example
|
|
30
35
|
* ```tsx
|
|
31
36
|
* <Icon source={require('./assets/star.xml')} tint="#007AFF" />
|
|
32
37
|
* <Icon source={require('./assets/star.xml')} tint="blue" />
|
|
38
|
+
* <Icon source={require('./assets/multicolor.xml')} tint={null} />
|
|
33
39
|
* ```
|
|
34
40
|
*/
|
|
35
|
-
tint?: ColorValue;
|
|
41
|
+
tint?: ColorValue | null;
|
|
36
42
|
|
|
37
43
|
/**
|
|
38
44
|
* The size of the icon in density-independent pixels (dp).
|
|
@@ -80,8 +86,10 @@ export type IconProps = {
|
|
|
80
86
|
/**
|
|
81
87
|
* @hidden
|
|
82
88
|
*/
|
|
83
|
-
export type NativeIconProps = Omit<IconProps, 'source'> & {
|
|
89
|
+
export type NativeIconProps = Omit<IconProps, 'source' | 'tint'> & {
|
|
84
90
|
source: ImageResolvedAssetSource;
|
|
91
|
+
tint?: ColorValue;
|
|
92
|
+
inheritTint: boolean;
|
|
85
93
|
};
|
|
86
94
|
|
|
87
95
|
const IconNativeView: React.ComponentType<NativeIconProps> = requireNativeView(
|
|
@@ -90,12 +98,17 @@ const IconNativeView: React.ComponentType<NativeIconProps> = requireNativeView(
|
|
|
90
98
|
);
|
|
91
99
|
|
|
92
100
|
function transformIconProps(props: IconProps): NativeIconProps {
|
|
93
|
-
const { source, modifiers, ...restProps } = props;
|
|
101
|
+
const { source, modifiers, tint, ...restProps } = props;
|
|
102
|
+
// Differentiate "tint not provided" (inherit `LocalContentColor`) from
|
|
103
|
+
// "tint explicitly null" (no tint, draw original colors).
|
|
104
|
+
const tintIsExplicitlyNull = 'tint' in props && tint === null;
|
|
94
105
|
|
|
95
106
|
return {
|
|
96
107
|
modifiers,
|
|
97
108
|
...(modifiers ? createViewModifierEventListener(modifiers) : undefined),
|
|
98
109
|
...restProps,
|
|
110
|
+
tint: tint ?? undefined,
|
|
111
|
+
inheritTint: !tintIsExplicitlyNull,
|
|
99
112
|
source: Image.resolveAssetSource(source),
|
|
100
113
|
};
|
|
101
114
|
}
|
|
@@ -126,23 +126,15 @@ export type TextFieldColors = {
|
|
|
126
126
|
errorSuffixColor?: ColorValue;
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
-
export type TextFieldValue = {
|
|
130
|
-
text: string;
|
|
131
|
-
selection: { start: number; end: number };
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
export type TextFieldValueLike = string | TextFieldValue;
|
|
135
|
-
|
|
136
129
|
/** Shared props between `TextField` and `OutlinedTextField`. */
|
|
137
|
-
type BaseTextFieldProps
|
|
130
|
+
type BaseTextFieldProps = {
|
|
138
131
|
ref?: Ref<TextFieldRef>;
|
|
139
132
|
/**
|
|
140
|
-
* An observable state that holds the current value. Create one with
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* If omitted, the field manages its own internal state.
|
|
133
|
+
* An observable state that holds the current text value. Create one with
|
|
134
|
+
* `useNativeState('initial text')`. If omitted, the field manages its own
|
|
135
|
+
* internal state.
|
|
144
136
|
*/
|
|
145
|
-
value?: ObservableState<
|
|
137
|
+
value?: ObservableState<string>;
|
|
146
138
|
/** If true, the text field will be focused automatically when mounted. @default false */
|
|
147
139
|
autoFocus?: boolean;
|
|
148
140
|
/** @default true */
|
|
@@ -173,20 +165,18 @@ type BaseTextFieldProps<T extends TextFieldValueLike = string> = {
|
|
|
173
165
|
};
|
|
174
166
|
|
|
175
167
|
/**
|
|
176
|
-
* Observable state
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
168
|
+
* Observable state holding the current selection range. Create with
|
|
169
|
+
* `useNativeState({ start: 0, end: 0 })`. The field writes user-driven
|
|
170
|
+
* changes back to it, and writes from JS (or a worklet) update the
|
|
171
|
+
* cursor/selection in the field. Use `ref.setSelection(start, end)` for
|
|
172
|
+
* imperative one-shot updates.
|
|
180
173
|
*/
|
|
181
174
|
selection?: ObservableState<{ start: number; end: number }>;
|
|
182
175
|
|
|
183
176
|
/** Maximum number of characters allowed. Truncates natively as the user types. */
|
|
184
177
|
maxLength?: number;
|
|
185
178
|
|
|
186
|
-
/**
|
|
187
|
-
* Called when the selection range changes.
|
|
188
|
-
* @internal
|
|
189
|
-
*/
|
|
179
|
+
/** Called when the selection range changes. */
|
|
190
180
|
onSelectionChange?: (selection: { start: number; end: number }) => void;
|
|
191
181
|
|
|
192
182
|
/**
|
|
@@ -215,15 +205,12 @@ type BaseTextFieldProps<T extends TextFieldValueLike = string> = {
|
|
|
215
205
|
keyboardOptions?: TextFieldKeyboardOptions;
|
|
216
206
|
keyboardActions?: TextFieldKeyboardActions;
|
|
217
207
|
/**
|
|
218
|
-
* Fires whenever the value changes.
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
* If marked with the `'worklet'` directive, runs synchronously on the UI thread;
|
|
224
|
-
* otherwise delivered asynchronously as a regular JS event.
|
|
208
|
+
* Fires whenever the text value changes. If marked with the `'worklet'`
|
|
209
|
+
* directive, runs synchronously on the UI thread; otherwise delivered
|
|
210
|
+
* asynchronously as a regular JS event. Use `onSelectionChange` (or read
|
|
211
|
+
* the `selection` observable) to react to selection-only changes.
|
|
225
212
|
*/
|
|
226
|
-
onValueChange?: (value:
|
|
213
|
+
onValueChange?: (value: string) => void;
|
|
227
214
|
/** A callback triggered when the field gains or loses focus. */
|
|
228
215
|
onFocusChanged?: (focused: boolean) => void;
|
|
229
216
|
shape?: object;
|
|
@@ -232,14 +219,13 @@ type BaseTextFieldProps<T extends TextFieldValueLike = string> = {
|
|
|
232
219
|
children?: React.ReactNode;
|
|
233
220
|
};
|
|
234
221
|
|
|
235
|
-
export type TextFieldProps
|
|
222
|
+
export type TextFieldProps = BaseTextFieldProps & {
|
|
236
223
|
colors?: TextFieldColors;
|
|
237
224
|
};
|
|
238
225
|
|
|
239
|
-
export type OutlinedTextFieldProps
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
};
|
|
226
|
+
export type OutlinedTextFieldProps = BaseTextFieldProps & {
|
|
227
|
+
colors?: TextFieldColors;
|
|
228
|
+
};
|
|
243
229
|
|
|
244
230
|
// endregion Types
|
|
245
231
|
|
|
@@ -263,7 +249,7 @@ type NativeTextFieldProps = Omit<
|
|
|
263
249
|
value?: number | null;
|
|
264
250
|
selection?: number | null;
|
|
265
251
|
onValueChangeSync?: number | null;
|
|
266
|
-
} & ViewEvent<'onValueChange',
|
|
252
|
+
} & ViewEvent<'onValueChange', { text: string; selection: { start: number; end: number } }> &
|
|
267
253
|
ViewEvent<'onFocusChanged', { value: boolean }> &
|
|
268
254
|
ViewEvent<'onSelectionChange', { start: number; end: number }> &
|
|
269
255
|
ViewEvent<'onKeyboardAction', { action: string; value: string }>;
|
|
@@ -273,8 +259,8 @@ const TextFieldNativeView: React.ComponentType<NativeTextFieldProps> = requireNa
|
|
|
273
259
|
'TextFieldView'
|
|
274
260
|
);
|
|
275
261
|
|
|
276
|
-
function useTransformedProps
|
|
277
|
-
props: TextFieldProps
|
|
262
|
+
function useTransformedProps(
|
|
263
|
+
props: TextFieldProps | OutlinedTextFieldProps,
|
|
278
264
|
variant: 'filled' | 'outlined'
|
|
279
265
|
): NativeTextFieldProps {
|
|
280
266
|
const {
|
|
@@ -289,8 +275,6 @@ function useTransformedProps<T extends TextFieldValueLike>(
|
|
|
289
275
|
...restProps
|
|
290
276
|
} = props;
|
|
291
277
|
|
|
292
|
-
const isStringMode = !value || typeof value.value === 'string';
|
|
293
|
-
|
|
294
278
|
const isWorklet = !!onValueChange && !!worklets?.isWorkletFunction?.(onValueChange);
|
|
295
279
|
const workletCallback = useWorkletProp(isWorklet ? onValueChange : undefined, 'onValueChange');
|
|
296
280
|
|
|
@@ -300,16 +284,11 @@ function useTransformedProps<T extends TextFieldValueLike>(
|
|
|
300
284
|
...restProps,
|
|
301
285
|
variant,
|
|
302
286
|
children,
|
|
303
|
-
value: getStateId(value
|
|
287
|
+
value: getStateId(value),
|
|
304
288
|
selection: getStateId(selection),
|
|
305
289
|
onValueChangeSync: getStateId(workletCallback),
|
|
306
290
|
onValueChange:
|
|
307
|
-
!isWorklet && onValueChange
|
|
308
|
-
? (event) => {
|
|
309
|
-
const payload = event.nativeEvent;
|
|
310
|
-
onValueChange((isStringMode ? payload.text : payload) as T);
|
|
311
|
-
}
|
|
312
|
-
: undefined,
|
|
291
|
+
!isWorklet && onValueChange ? (event) => onValueChange(event.nativeEvent.text) : undefined,
|
|
313
292
|
onFocusChanged: onFocusChanged ? (event) => onFocusChanged(event.nativeEvent.value) : undefined,
|
|
314
293
|
onSelectionChange: onSelectionChange
|
|
315
294
|
? (event) => onSelectionChange({ start: event.nativeEvent.start, end: event.nativeEvent.end })
|
|
@@ -370,7 +349,7 @@ function SupportingText(props: { children: React.ReactNode }) {
|
|
|
370
349
|
/**
|
|
371
350
|
* A Material3 `TextField`.
|
|
372
351
|
*/
|
|
373
|
-
function TextFieldComponent
|
|
352
|
+
function TextFieldComponent(props: TextFieldProps) {
|
|
374
353
|
return <TextFieldNativeView {...useTransformedProps(props, 'filled')} />;
|
|
375
354
|
}
|
|
376
355
|
|
|
@@ -385,9 +364,7 @@ TextFieldComponent.SupportingText = SupportingText;
|
|
|
385
364
|
/**
|
|
386
365
|
* A Material3 `OutlinedTextField` with a transparent background and border outline.
|
|
387
366
|
*/
|
|
388
|
-
function OutlinedTextFieldComponent
|
|
389
|
-
props: OutlinedTextFieldProps<T>
|
|
390
|
-
) {
|
|
367
|
+
function OutlinedTextFieldComponent(props: OutlinedTextFieldProps) {
|
|
391
368
|
return <TextFieldNativeView {...useTransformedProps(props, 'outlined')} />;
|
|
392
369
|
}
|
|
393
370
|
|
|
@@ -402,3 +379,6 @@ OutlinedTextFieldComponent.SupportingText = SupportingText;
|
|
|
402
379
|
// endregion Components
|
|
403
380
|
|
|
404
381
|
export { TextFieldComponent as TextField, OutlinedTextFieldComponent as OutlinedTextField };
|
|
382
|
+
|
|
383
|
+
// Exported for docs api data
|
|
384
|
+
export { type ObservableState };
|
|
@@ -27,12 +27,27 @@ export * from './Slider';
|
|
|
27
27
|
export * from './Spacer';
|
|
28
28
|
export * from './Switch';
|
|
29
29
|
export * from './SyncSwitch';
|
|
30
|
-
export
|
|
30
|
+
export {
|
|
31
|
+
TextField,
|
|
32
|
+
OutlinedTextField,
|
|
33
|
+
type TextFieldProps,
|
|
34
|
+
type TextFieldRef,
|
|
35
|
+
type TextFieldCapitalization,
|
|
36
|
+
type TextFieldImeAction,
|
|
37
|
+
type TextFieldKeyboardOptions,
|
|
38
|
+
type TextFieldKeyboardType,
|
|
39
|
+
type TextFieldKeyboardActions,
|
|
40
|
+
type TextFieldColors,
|
|
41
|
+
} from './TextField';
|
|
31
42
|
export * from './ToggleButton';
|
|
32
43
|
export * from './Shape';
|
|
33
44
|
export * from './ModalBottomSheet';
|
|
34
45
|
export * from './Carousel';
|
|
35
|
-
export
|
|
46
|
+
export {
|
|
47
|
+
HorizontalPager,
|
|
48
|
+
type HorizontalPagerHandle,
|
|
49
|
+
type HorizontalPagerProps,
|
|
50
|
+
} from './HorizontalPager';
|
|
36
51
|
export * from './SearchBar';
|
|
37
52
|
export * from './DockedSearchBar';
|
|
38
53
|
export * from './HorizontalFloatingToolbar';
|