@momo-kits/native-kits 0.114.2-beta.1 → 0.114.2-beta.3
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 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +28 -30
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +29 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +4 -4
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +3 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +3 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +3 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +3 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +4 -4
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +3 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/dateTimePicker/DateTimePicker.kt +178 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/dateTimePicker/DateTimePickerExample.kt +90 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/dateTimePicker/DateTimePickerTypes.kt +15 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/dateTimePicker/DateTimePickerUtils.kt +226 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/dateTimePicker/WheelPicker.kt +201 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +84 -124
- package/ios/Application/ApplicationEnvironment.swift +17 -9
- package/ios/Application/HeaderRight.swift +29 -30
- package/ios/Template/TrustBanner/TrustBanner.swift +75 -144
- package/local.properties +2 -2
- package/package.json +1 -1
|
@@ -11,179 +11,110 @@ import SDWebImageSwiftUI
|
|
|
11
11
|
|
|
12
12
|
let jsonUrl = "https://static.momocdn.net/app/json/component-kits/design_system.json"
|
|
13
13
|
|
|
14
|
-
struct TrustBannerData: Decodable {
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
struct TrustBanner: Decodable {
|
|
19
|
-
let content: Dictionary<String, String>
|
|
14
|
+
public struct TrustBannerData: Decodable {
|
|
15
|
+
let content: [String: String]
|
|
16
|
+
let subContent: [String: String]
|
|
20
17
|
let pciImage: String
|
|
21
18
|
let sslImage: String
|
|
22
19
|
let urlConfig: String
|
|
23
|
-
let featureCode: String
|
|
24
20
|
let icons: [String]
|
|
25
21
|
let momoImage: String
|
|
26
|
-
|
|
22
|
+
|
|
27
23
|
enum CodingKeys: String, CodingKey {
|
|
28
|
-
case content
|
|
24
|
+
case content
|
|
25
|
+
case subContent
|
|
26
|
+
case pciImage
|
|
27
|
+
case sslImage
|
|
28
|
+
case icons
|
|
29
|
+
case momoImage
|
|
29
30
|
case urlConfig = "url_config"
|
|
30
|
-
case featureCode = "feature_code"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
let defaultBanner =
|
|
35
|
-
content: ["vi": "
|
|
36
|
-
"en": "
|
|
34
|
+
let defaultBanner = TrustBannerData(
|
|
35
|
+
content: ["vi": "An toàn tài sản & Bảo mật thông tin của bạn là ưu tiên hàng đầu của MoMo.",
|
|
36
|
+
"en": "Ensuring financial security and data privacy is MoMo's highest priority."],
|
|
37
|
+
subContent: [
|
|
38
|
+
"vi": "Tìm hiểu thêm",
|
|
39
|
+
"en": "Learn more"
|
|
40
|
+
],
|
|
37
41
|
pciImage: "https://static.momocdn.net/app/img/kits/trustBanner/pci.png",
|
|
38
42
|
sslImage: "https://static.momocdn.net/app/img/kits/trustBanner/ssl.png",
|
|
39
|
-
urlConfig: "
|
|
40
|
-
featureCode: "login_and_security",
|
|
43
|
+
urlConfig: "login_and_security",
|
|
41
44
|
icons: [
|
|
42
45
|
"https://static.momocdn.net/app/img/kits/trustBanner/ic_viettinbank.png",
|
|
43
46
|
"https://static.momocdn.net/app/img/kits/trustBanner/ic_agribank.png",
|
|
44
47
|
"https://static.momocdn.net/app/img/kits/trustBanner/ic_vietcombank.png",
|
|
45
48
|
"https://static.momocdn.net/app/img/kits/trustBanner/ic_bidv.png"
|
|
46
49
|
],
|
|
47
|
-
momoImage: "https://static.momocdn.net/app/img/kits/trustBanner/
|
|
50
|
+
momoImage: "https://static.momocdn.net/app/img/kits/trustBanner/ic_secu.png"
|
|
48
51
|
)
|
|
49
52
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
init() {
|
|
56
|
-
fetchData(from: jsonUrl)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
func fetchData(from urlString: String) {
|
|
60
|
-
guard let url = URL(string: urlString) else { return }
|
|
61
|
-
|
|
62
|
-
URLSession.shared.dataTask(with: url) { [weak self] data, response, error in
|
|
63
|
-
guard let self = self else { return }
|
|
64
|
-
|
|
65
|
-
if let error = error {
|
|
66
|
-
print("Data fetching error: \(error)")
|
|
67
|
-
return
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
guard let data = data else {
|
|
71
|
-
print("No data received")
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
do {
|
|
75
|
-
let decodedData = try JSONDecoder().decode(TrustBannerData.self, from: data)
|
|
76
|
-
DispatchQueue.main.async {
|
|
77
|
-
self.trustBanner = decodedData
|
|
78
|
-
}
|
|
79
|
-
} catch {
|
|
80
|
-
print("Decoding error: \(error)")
|
|
81
|
-
}
|
|
82
|
-
}.resume()
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public struct TrustBannerView: View {
|
|
87
|
-
var serviceName: String? = ""
|
|
88
|
-
var screenName: String? = ""
|
|
89
|
-
var onPress: ((_ params: NSDictionary) -> Void)?
|
|
90
|
-
var trackEvent: ((_ eventName: String, _ params: NSDictionary) -> Void)?
|
|
91
|
-
var language: String?
|
|
92
|
-
|
|
93
|
-
@ObservedObject private var viewModel = TrustBannerViewModel()
|
|
94
|
-
|
|
95
|
-
public init(serviceName: String?,
|
|
96
|
-
screenName: String?,
|
|
97
|
-
onPress: ((_ params: NSDictionary) -> Void)?,
|
|
98
|
-
trackEvent: ((_ eventName: String,_ params: NSDictionary) -> Void)?, language: String? = "vi") {
|
|
99
|
-
if let trackEvent = trackEvent {
|
|
100
|
-
trackEvent("service_component_displayed", ["service_name": serviceName ?? "", "screen_name": screenName ?? "", "component_name": "logo_trust"])
|
|
101
|
-
}
|
|
53
|
+
public struct TrustBanner: View {
|
|
54
|
+
@EnvironmentObject var applicationEnvironment: ApplicationEnvironment
|
|
55
|
+
|
|
56
|
+
var onPress: ((String)->Void)?
|
|
57
|
+
|
|
58
|
+
public init(onPress: ((String)->Void)?) {
|
|
102
59
|
self.onPress = onPress
|
|
103
|
-
self.trackEvent = trackEvent
|
|
104
|
-
self.screenName = screenName
|
|
105
|
-
self.serviceName = serviceName
|
|
106
|
-
self.language = language
|
|
107
60
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
61
|
+
|
|
62
|
+
var language: String? = "vi"
|
|
63
|
+
|
|
64
|
+
func onPressSecurity() {
|
|
65
|
+
if (onPress != nil) {
|
|
66
|
+
onPress!(applicationEnvironment.config?.trustBanner?.urlConfig ?? defaultBanner.urlConfig)
|
|
112
67
|
}
|
|
113
68
|
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
struct TrustBannerContentView: View {
|
|
117
|
-
var trustBanner: TrustBanner
|
|
118
|
-
var onPress: ((_ params: NSDictionary) -> Void)?
|
|
119
|
-
var trackEvent: ((_ eventName: String, _ params: NSDictionary) -> Void)?
|
|
120
|
-
var serviceName: String?
|
|
121
|
-
var screenName: String?
|
|
122
|
-
var language: String?
|
|
123
69
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
70
|
+
|
|
71
|
+
public var body: some View {
|
|
72
|
+
HStack(alignment: .center, spacing: 8) {
|
|
73
|
+
WebImage(url: URL(string: applicationEnvironment.config?.trustBanner?.momoImage ?? defaultBanner.momoImage))
|
|
74
|
+
.resizable()
|
|
75
|
+
.scaledToFit()
|
|
76
|
+
.frame(width: 64, height: 64)
|
|
77
|
+
VStack(alignment: .leading){
|
|
78
|
+
Text(applicationEnvironment.config?.trustBanner?.content[language ?? "vi"] as? String ?? defaultBanner.content[language ?? "vi"])
|
|
79
|
+
.foregroundColor(Color(hex: "484848"))
|
|
80
|
+
.lineLimit(2)
|
|
81
|
+
.font(.system(size: 13, weight: Font.Weight.regular))
|
|
82
|
+
.lineSpacing(3)
|
|
83
|
+
.padding(.bottom, 8)
|
|
84
|
+
HStack {
|
|
85
|
+
HStack(spacing: 0) {
|
|
86
|
+
Text(applicationEnvironment.config?.trustBanner?.subContent[language ?? "vi"] as? String ?? defaultBanner.subContent[language ?? "vi"])
|
|
87
|
+
.foregroundColor(Colors.pink03)
|
|
88
|
+
.font(.system(size: 13, weight: .bold))
|
|
89
|
+
.padding(.trailing, 4)
|
|
90
|
+
|
|
91
|
+
Icon(source: "arrow_chevron_right_small", color: Colors.pink03)
|
|
92
|
+
}.onTapGesture {
|
|
93
|
+
onPressSecurity()
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
Spacer()
|
|
137
97
|
HStack{
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
.frame(width: 52, height: 20)
|
|
147
|
-
}
|
|
148
|
-
Spacer()
|
|
149
|
-
HStack(spacing: -6){
|
|
150
|
-
ForEach(trustBanner.icons, id: \.self) { iconURL in
|
|
151
|
-
WebImage(url: URL(string: iconURL))
|
|
152
|
-
.resizable()
|
|
153
|
-
.scaledToFit()
|
|
154
|
-
.frame(width:24, height: 24)
|
|
155
|
-
.background(Color.white)
|
|
156
|
-
.cornerRadius(12)
|
|
157
|
-
.overlay(
|
|
158
|
-
Circle().stroke(Color(hex: 0xFFE8E8E8), lineWidth: 1)
|
|
159
|
-
)
|
|
160
|
-
}
|
|
161
|
-
Text("36+")
|
|
162
|
-
.font(.system(size: 10, weight: Font.Weight.regular))
|
|
163
|
-
.frame(width: 24, height: 24, alignment: .center)
|
|
164
|
-
.foregroundColor(Color(hex: 0xFFEB2F96))
|
|
165
|
-
.background(Color(hex: 0xFFFDEAF4))
|
|
166
|
-
.cornerRadius(12)
|
|
167
|
-
.overlay(
|
|
168
|
-
Circle()
|
|
169
|
-
.stroke(Color(hex: 0xFFE8E8E8), lineWidth: 1)
|
|
170
|
-
)
|
|
171
|
-
}.frame(width: 96, height: 24)
|
|
98
|
+
WebImage(url: URL(string: applicationEnvironment.config?.trustBanner?.pciImage ?? defaultBanner.pciImage))
|
|
99
|
+
.resizable()
|
|
100
|
+
.scaledToFit()
|
|
101
|
+
.frame(width: 24, height: 20)
|
|
102
|
+
WebImage(url: URL(string: applicationEnvironment.config?.trustBanner?.sslImage ?? defaultBanner.sslImage))
|
|
103
|
+
.resizable()
|
|
104
|
+
.scaledToFit()
|
|
105
|
+
.frame(width: 52, height: 20)
|
|
172
106
|
}
|
|
173
107
|
}
|
|
108
|
+
|
|
174
109
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
if let onPress = onPress {
|
|
184
|
-
onPress(["service_name": self.serviceName ?? "", "screen_name": self.screenName ?? "", "component_name": "logo_trust", "url_config": trustBanner.urlConfig, "feature_code": trustBanner.featureCode])
|
|
185
|
-
}
|
|
186
|
-
}
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
.padding(.all, 12)
|
|
113
|
+
.background(Color(hex: "F2F8FF"))
|
|
114
|
+
.cornerRadius(12)
|
|
115
|
+
.onTapGesture {
|
|
116
|
+
onPressSecurity()
|
|
187
117
|
}
|
|
118
|
+
.frame(maxWidth: UIScreen.main.bounds.size.width)
|
|
188
119
|
}
|
|
189
120
|
}
|
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
|
+
#Tue Apr 23 16:40:15 ICT 2024
|
|
8
|
+
sdk.dir=/Users/hung.dao1/Library/Android/sdk
|