@momo-kits/native-kits 0.157.1-beta.8-debug → 0.157.1-beta.9-debug
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/compose/build.gradle.kts +1 -1
- package/compose/compose.podspec +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +7 -21
- package/example/ios/Example.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +46 -0
- package/gradle.properties +1 -1
- package/ios/Input/Input.swift +108 -50
- package/ios/Input/InputPhoneNumber.swift +2 -1
- package/local.properties +2 -2
- package/package.json +1 -1
package/compose/build.gradle.kts
CHANGED
package/compose/compose.podspec
CHANGED
|
@@ -8,11 +8,8 @@ import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
|
8
8
|
import androidx.compose.foundation.layout.Arrangement
|
|
9
9
|
import androidx.compose.foundation.layout.Box
|
|
10
10
|
import androidx.compose.foundation.layout.Column
|
|
11
|
-
import androidx.compose.foundation.layout.IntrinsicSize
|
|
12
11
|
import androidx.compose.foundation.layout.Row
|
|
13
12
|
import androidx.compose.foundation.layout.Spacer
|
|
14
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
15
|
-
import androidx.compose.foundation.layout.height
|
|
16
13
|
import androidx.compose.foundation.layout.offset
|
|
17
14
|
import androidx.compose.foundation.layout.padding
|
|
18
15
|
import androidx.compose.foundation.layout.size
|
|
@@ -224,7 +221,7 @@ private class TooltipPositionProvider(
|
|
|
224
221
|
fun Tooltip(
|
|
225
222
|
state: TooltipState,
|
|
226
223
|
title: String? = null,
|
|
227
|
-
description: String,
|
|
224
|
+
description: String? = null,
|
|
228
225
|
buttons: List<TooltipButton> = emptyList(),
|
|
229
226
|
placement: TooltipPlacement = TooltipPlacement.TOP,
|
|
230
227
|
align: TooltipAlign = TooltipAlign.CENTER,
|
|
@@ -285,7 +282,6 @@ private fun TooltipPopupContent(
|
|
|
285
282
|
Column(
|
|
286
283
|
modifier = Modifier
|
|
287
284
|
.widthIn(max = tooltipMaxWidth)
|
|
288
|
-
.width(IntrinsicSize.Max)
|
|
289
285
|
.background(Colors.black_17, tooltipShape)
|
|
290
286
|
.clip(tooltipShape)
|
|
291
287
|
.conditional(IsShowBaseLineDebug) {
|
|
@@ -293,8 +289,8 @@ private fun TooltipPopupContent(
|
|
|
293
289
|
}
|
|
294
290
|
.padding(Spacing.M)
|
|
295
291
|
) {
|
|
296
|
-
Row
|
|
297
|
-
Column(modifier = Modifier.weight(1f)) {
|
|
292
|
+
Row {
|
|
293
|
+
Column(modifier = Modifier.weight(1f, fill = false)) {
|
|
298
294
|
if (!title.isNullOrEmpty()) {
|
|
299
295
|
Text(
|
|
300
296
|
text = title,
|
|
@@ -311,6 +307,7 @@ private fun TooltipPopupContent(
|
|
|
311
307
|
style = Typography.descriptionDefaultRegular,
|
|
312
308
|
color = Colors.black_01,
|
|
313
309
|
maxLines = 2,
|
|
310
|
+
modifier = Modifier.padding(bottom = Spacing.M),
|
|
314
311
|
overflow = TextOverflow.Ellipsis,
|
|
315
312
|
)
|
|
316
313
|
}
|
|
@@ -333,7 +330,6 @@ private fun TooltipPopupContent(
|
|
|
333
330
|
}
|
|
334
331
|
}
|
|
335
332
|
if (buttons.isNotEmpty()) {
|
|
336
|
-
Spacer(Modifier.height(Spacing.M))
|
|
337
333
|
TooltipButtons(
|
|
338
334
|
buttons = buttons,
|
|
339
335
|
modifier = Modifier.align(Alignment.End),
|
|
@@ -492,7 +488,6 @@ private fun TooltipButtons(buttons: List<TooltipButton>, modifier: Modifier = Mo
|
|
|
492
488
|
TooltipSecondaryButton(
|
|
493
489
|
title = secondary.title ?: "",
|
|
494
490
|
onPress = secondary.onPress ?: {},
|
|
495
|
-
modifier = Modifier.weight(1f, fill = false),
|
|
496
491
|
)
|
|
497
492
|
Spacer(modifier = Modifier.width(Spacing.S))
|
|
498
493
|
TooltipPrimaryButton(
|
|
@@ -525,12 +520,6 @@ private fun TooltipSingleButton(btn: TooltipButton) {
|
|
|
525
520
|
)
|
|
526
521
|
}
|
|
527
522
|
}
|
|
528
|
-
|
|
529
|
-
private const val MAX_BUTTON_LENGTH = 16
|
|
530
|
-
|
|
531
|
-
private fun String.limitWithEllipsis(max: Int = 16): String {
|
|
532
|
-
return if (length > max) take(max) + "…" else this
|
|
533
|
-
}
|
|
534
523
|
@Composable
|
|
535
524
|
private fun TooltipPrimaryButton(
|
|
536
525
|
title: String,
|
|
@@ -538,7 +527,7 @@ private fun TooltipPrimaryButton(
|
|
|
538
527
|
) {
|
|
539
528
|
Button(
|
|
540
529
|
onClick = onPress,
|
|
541
|
-
title = title
|
|
530
|
+
title = title,
|
|
542
531
|
type = ButtonType.SECONDARY,
|
|
543
532
|
size = Size.MEDIUM,
|
|
544
533
|
isFull = false,
|
|
@@ -548,21 +537,18 @@ private fun TooltipPrimaryButton(
|
|
|
548
537
|
private fun TooltipSecondaryButton(
|
|
549
538
|
title: String,
|
|
550
539
|
onPress: () -> Unit,
|
|
551
|
-
modifier: Modifier = Modifier,
|
|
552
540
|
) {
|
|
553
541
|
Box(
|
|
554
|
-
modifier =
|
|
542
|
+
modifier = Modifier
|
|
555
543
|
.activeOpacityClickable {
|
|
556
544
|
onPress()
|
|
557
545
|
}
|
|
558
546
|
.padding(horizontal = Spacing.M, vertical = Spacing.S),
|
|
559
547
|
) {
|
|
560
548
|
Text(
|
|
561
|
-
text = title
|
|
549
|
+
text = title,
|
|
562
550
|
color = Colors.black_01,
|
|
563
551
|
style = Typography.actionSBold,
|
|
564
|
-
maxLines = 1,
|
|
565
|
-
overflow = TextOverflow.Ellipsis,
|
|
566
552
|
)
|
|
567
553
|
}
|
|
568
554
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>Example.xcscheme_^#shared#^_</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>orderHint</key>
|
|
10
|
+
<integer>7</integer>
|
|
11
|
+
</dict>
|
|
12
|
+
</dict>
|
|
13
|
+
</dict>
|
|
14
|
+
</plist>
|
package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate
ADDED
|
Binary file
|
package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "3B6FB503A75BF5BC1FA6F30BC06B9D28"
|
|
18
|
+
BuildableName = "MoMoUIKits.framework"
|
|
19
|
+
BlueprintName = "MoMoUIKits"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "0AEE99A309977BD12A049FF48AF9BA4B"
|
|
18
|
+
BuildableName = "Pods_Example.framework"
|
|
19
|
+
BlueprintName = "Pods-Example"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "3847153A6E5EEFB86565BA840768F429"
|
|
18
|
+
BuildableName = "SDWebImage.framework"
|
|
19
|
+
BlueprintName = "SDWebImage"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "92EBFA3E7005B4C18A9C0B44324EB80F"
|
|
18
|
+
BuildableName = "SDWebImageSwiftUI.framework"
|
|
19
|
+
BlueprintName = "SDWebImageSwiftUI"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "6510766A9670BFA3B251E2A62446FC5D"
|
|
18
|
+
BuildableName = "SkeletonUI.framework"
|
|
19
|
+
BlueprintName = "SkeletonUI"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "BF2A15FEC3F3424BBC4B9AD5F86F2D54"
|
|
18
|
+
BuildableName = "LottiePrivacyInfo.bundle"
|
|
19
|
+
BlueprintName = "lottie-ios-LottiePrivacyInfo"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1600"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "0B967D7F8561D42493EE289EC8D450D1"
|
|
18
|
+
BuildableName = "Lottie.framework"
|
|
19
|
+
BlueprintName = "lottie-ios"
|
|
20
|
+
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
</ProfileAction>
|
|
51
|
+
<AnalyzeAction
|
|
52
|
+
buildConfiguration = "Debug">
|
|
53
|
+
</AnalyzeAction>
|
|
54
|
+
<ArchiveAction
|
|
55
|
+
buildConfiguration = "Release"
|
|
56
|
+
revealArchiveInOrganizer = "YES">
|
|
57
|
+
</ArchiveAction>
|
|
58
|
+
</Scheme>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>MoMoUIKits.xcscheme</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>isShown</key>
|
|
10
|
+
<false/>
|
|
11
|
+
</dict>
|
|
12
|
+
<key>Pods-Example.xcscheme</key>
|
|
13
|
+
<dict>
|
|
14
|
+
<key>isShown</key>
|
|
15
|
+
<false/>
|
|
16
|
+
</dict>
|
|
17
|
+
<key>SDWebImage.xcscheme</key>
|
|
18
|
+
<dict>
|
|
19
|
+
<key>isShown</key>
|
|
20
|
+
<false/>
|
|
21
|
+
</dict>
|
|
22
|
+
<key>SDWebImageSwiftUI.xcscheme</key>
|
|
23
|
+
<dict>
|
|
24
|
+
<key>isShown</key>
|
|
25
|
+
<false/>
|
|
26
|
+
</dict>
|
|
27
|
+
<key>SkeletonUI.xcscheme</key>
|
|
28
|
+
<dict>
|
|
29
|
+
<key>isShown</key>
|
|
30
|
+
<false/>
|
|
31
|
+
</dict>
|
|
32
|
+
<key>lottie-ios-LottiePrivacyInfo.xcscheme</key>
|
|
33
|
+
<dict>
|
|
34
|
+
<key>isShown</key>
|
|
35
|
+
<false/>
|
|
36
|
+
</dict>
|
|
37
|
+
<key>lottie-ios.xcscheme</key>
|
|
38
|
+
<dict>
|
|
39
|
+
<key>isShown</key>
|
|
40
|
+
<false/>
|
|
41
|
+
</dict>
|
|
42
|
+
</dict>
|
|
43
|
+
<key>SuppressBuildableAutocreation</key>
|
|
44
|
+
<dict/>
|
|
45
|
+
</dict>
|
|
46
|
+
</plist>
|
package/gradle.properties
CHANGED
package/ios/Input/Input.swift
CHANGED
|
@@ -32,7 +32,6 @@ public struct Input: View {
|
|
|
32
32
|
|
|
33
33
|
@State private var isFocused: Bool = false
|
|
34
34
|
@State private var isPasswordHidden: Bool = true
|
|
35
|
-
@State private var lastTextValue: String = ""
|
|
36
35
|
|
|
37
36
|
public init(
|
|
38
37
|
text: Binding<String>,
|
|
@@ -93,14 +92,6 @@ public struct Input: View {
|
|
|
93
92
|
let textBinding = Binding<String>(
|
|
94
93
|
get: { self.text },
|
|
95
94
|
set: { newValue in
|
|
96
|
-
// For SecureField, infer focus when text changes
|
|
97
|
-
if self.secureTextEntry && !self.isFocused && newValue != self.lastTextValue {
|
|
98
|
-
DispatchQueue.main.async {
|
|
99
|
-
self.isFocused = true
|
|
100
|
-
self.onFocus?()
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
self.lastTextValue = newValue
|
|
104
95
|
self.text = newValue
|
|
105
96
|
self.onChangeText?(newValue)
|
|
106
97
|
}
|
|
@@ -144,17 +135,18 @@ public struct Input: View {
|
|
|
144
135
|
}
|
|
145
136
|
|
|
146
137
|
if secureTextEntry && isPasswordHidden {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
138
|
+
SecureInputField(
|
|
139
|
+
text: $text,
|
|
140
|
+
keyboardType: keyboardType,
|
|
141
|
+
fontSize: scaleSize(14),
|
|
142
|
+
fontWeight: fontWeight == .bold ? .bold : .regular,
|
|
143
|
+
textColor: UIColor(getTextColor()),
|
|
144
|
+
isDisabled: disabled || readOnly,
|
|
145
|
+
onFocusChange: { focused in
|
|
146
|
+
handleFocusChange(focused)
|
|
147
|
+
},
|
|
148
|
+
onChangeText: onChangeText
|
|
149
|
+
)
|
|
158
150
|
} else {
|
|
159
151
|
TextField("", text: textBinding, onEditingChanged: { focused in
|
|
160
152
|
handleFocusChange(focused)
|
|
@@ -223,26 +215,10 @@ public struct Input: View {
|
|
|
223
215
|
hintText: hintText
|
|
224
216
|
)
|
|
225
217
|
}
|
|
226
|
-
.onAppear {
|
|
227
|
-
lastTextValue = text
|
|
228
|
-
}
|
|
229
218
|
.onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { _ in
|
|
230
|
-
|
|
231
|
-
if isFocused {
|
|
232
|
-
DispatchQueue.main.async {
|
|
233
|
-
if secureTextEntry {
|
|
234
|
-
handleSecureFieldBlur()
|
|
235
|
-
} else {
|
|
236
|
-
handleFocusChange(false)
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
.onReceive(NotificationCenter.default.publisher(for: UITextField.textDidEndEditingNotification)) { _ in
|
|
242
|
-
// Reset focus when any text field ends editing
|
|
243
|
-
if isFocused && secureTextEntry {
|
|
219
|
+
if isFocused && !secureTextEntry {
|
|
244
220
|
DispatchQueue.main.async {
|
|
245
|
-
|
|
221
|
+
handleFocusChange(false)
|
|
246
222
|
}
|
|
247
223
|
}
|
|
248
224
|
}
|
|
@@ -259,18 +235,6 @@ public struct Input: View {
|
|
|
259
235
|
}
|
|
260
236
|
}
|
|
261
237
|
|
|
262
|
-
private func handleSecureFieldFocus() {
|
|
263
|
-
if !isFocused {
|
|
264
|
-
isFocused = true
|
|
265
|
-
onFocus?()
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
private func handleSecureFieldBlur() {
|
|
270
|
-
isFocused = false
|
|
271
|
-
onBlur?()
|
|
272
|
-
}
|
|
273
|
-
|
|
274
238
|
private func togglePasswordVisibility() {
|
|
275
239
|
isPasswordHidden.toggle()
|
|
276
240
|
onRightIconPressed?()
|
|
@@ -307,6 +271,100 @@ public struct Input: View {
|
|
|
307
271
|
}
|
|
308
272
|
|
|
309
273
|
|
|
274
|
+
// MARK: - Secure Input Field (UIViewRepresentable)
|
|
275
|
+
private struct SecureInputField: UIViewRepresentable {
|
|
276
|
+
@Binding var text: String
|
|
277
|
+
var keyboardType: UIKeyboardType
|
|
278
|
+
var fontSize: CGFloat
|
|
279
|
+
var fontWeight: UIFont.Weight
|
|
280
|
+
var textColor: UIColor
|
|
281
|
+
var isDisabled: Bool
|
|
282
|
+
var onFocusChange: (Bool) -> Void
|
|
283
|
+
var onChangeText: ((String) -> Void)?
|
|
284
|
+
|
|
285
|
+
func makeCoordinator() -> Coordinator {
|
|
286
|
+
Coordinator(self)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
func makeUIView(context: Context) -> UITextField {
|
|
290
|
+
let textField = UITextField()
|
|
291
|
+
textField.isSecureTextEntry = true
|
|
292
|
+
textField.delegate = context.coordinator
|
|
293
|
+
textField.keyboardType = keyboardType
|
|
294
|
+
textField.font = UIFont.systemFont(ofSize: fontSize, weight: fontWeight)
|
|
295
|
+
textField.textColor = textColor
|
|
296
|
+
textField.isEnabled = !isDisabled
|
|
297
|
+
textField.setContentHuggingPriority(.defaultLow, for: .horizontal)
|
|
298
|
+
textField.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
|
299
|
+
textField.text = text
|
|
300
|
+
textField.tintColor = UIColor(Colors.primary)
|
|
301
|
+
textField.addTarget(
|
|
302
|
+
context.coordinator,
|
|
303
|
+
action: #selector(Coordinator.textFieldDidChange(_:)),
|
|
304
|
+
for: .editingChanged
|
|
305
|
+
)
|
|
306
|
+
return textField
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
func updateUIView(_ textField: UITextField, context: Context) {
|
|
310
|
+
if textField.text != text {
|
|
311
|
+
textField.text = text
|
|
312
|
+
}
|
|
313
|
+
textField.isEnabled = !isDisabled
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
class Coordinator: NSObject, UITextFieldDelegate {
|
|
317
|
+
var parent: SecureInputField
|
|
318
|
+
private var isResettingText = false
|
|
319
|
+
|
|
320
|
+
init(_ parent: SecureInputField) {
|
|
321
|
+
self.parent = parent
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
func textFieldDidBeginEditing(_ textField: UITextField) {
|
|
325
|
+
let existingText = textField.text ?? ""
|
|
326
|
+
if !existingText.isEmpty {
|
|
327
|
+
// When a secure text field regains focus, iOS marks the
|
|
328
|
+
// existing text as "committed". The next keystroke would
|
|
329
|
+
// replace ALL committed text with the new character.
|
|
330
|
+
// Prevent this by clearing and re-inserting via insertText(),
|
|
331
|
+
// which puts the text into an "active editing" state.
|
|
332
|
+
isResettingText = true
|
|
333
|
+
textField.text = ""
|
|
334
|
+
textField.insertText(existingText)
|
|
335
|
+
isResettingText = false
|
|
336
|
+
}
|
|
337
|
+
parent.onFocusChange(true)
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
func textFieldDidEndEditing(_ textField: UITextField) {
|
|
341
|
+
parent.text = textField.text ?? ""
|
|
342
|
+
parent.onFocusChange(false)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
func textField(
|
|
346
|
+
_ textField: UITextField,
|
|
347
|
+
shouldChangeCharactersIn range: NSRange,
|
|
348
|
+
replacementString string: String
|
|
349
|
+
) -> Bool {
|
|
350
|
+
if isResettingText { return true }
|
|
351
|
+
return true
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
@objc func textFieldDidChange(_ textField: UITextField) {
|
|
355
|
+
if isResettingText { return }
|
|
356
|
+
let newText = textField.text ?? ""
|
|
357
|
+
parent.text = newText
|
|
358
|
+
parent.onChangeText?(newText)
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
|
362
|
+
textField.resignFirstResponder()
|
|
363
|
+
return true
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
310
368
|
// MARK: - Helper Extension
|
|
311
369
|
private extension View {
|
|
312
370
|
func applyPrimaryCursorColor() -> some View {
|
|
@@ -89,7 +89,7 @@ public struct InputPhoneNumber: View {
|
|
|
89
89
|
MomoText(placeholder, typography: size == .small ? .headerSSemibold : .headerMBold, color: Colors.black12)
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
TextField(
|
|
92
|
+
TextField("", text: textBinding, onEditingChanged: { focused in
|
|
93
93
|
handleFocusChange(focused)
|
|
94
94
|
})
|
|
95
95
|
.keyboardType(.numberPad)
|
|
@@ -98,6 +98,7 @@ public struct InputPhoneNumber: View {
|
|
|
98
98
|
.applyPrimaryCursorColor()
|
|
99
99
|
.lineLimit(1)
|
|
100
100
|
.accessibility(identifier: accessibilityLabel ?? "")
|
|
101
|
+
.accessibilityValue(textBinding.wrappedValue.isEmpty ? placeholder : textBinding.wrappedValue)
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
// Clear button
|
package/local.properties
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
# Location of the SDK. This is only used by Gradle.
|
|
5
5
|
# For customization when using a Version Control System, please read the
|
|
6
6
|
# header note.
|
|
7
|
-
#
|
|
8
|
-
sdk.dir=/Users/
|
|
7
|
+
#Thu Jan 09 10:43:10 ICT 2025
|
|
8
|
+
sdk.dir=/Users/sophia/Library/Android/sdk
|