react-native-payengine 1.0.5
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/LICENSE +20 -0
- package/README.md +152 -0
- package/android/.gradle/5.6.4/fileChanges/last-build.bin +0 -0
- package/android/.gradle/5.6.4/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/5.6.4/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/5.6.4/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +18 -0
- package/android/.idea/jarRepositories.xml +35 -0
- package/android/.idea/misc.xml +10 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/build.gradle +147 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/android/gradle.properties +5 -0
- package/android/gradlew +172 -0
- package/android/gradlew.bat +84 -0
- package/android/local.properties +8 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/reactnativepayengine/PayengineModule.java +33 -0
- package/android/src/main/java/com/reactnativepayengine/PayenginePackage.java +64 -0
- package/android/src/main/java/com/reactnativepayengine/collect/VGSCollectModule.java +148 -0
- package/android/src/main/java/com/reactnativepayengine/collect/VGSCollectOnCreateViewInstanceListener.java +6 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCVCField.java +67 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCardHolderNameField.java +53 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCardNumberField.java +57 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSExpDateField.java +54 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSTextField.java +57 -0
- package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSZipCodeField.java +62 -0
- package/android/src/main/java/com/reactnativepayengine/util/JSONObjectUtil.java +138 -0
- package/android/src/main/java/com/reactnativepayengine/util/ResourceUtil.java +14 -0
- package/android/vgscollect-1.7.2-debug.aar +0 -0
- package/ios/Payengine-Bridging-Header.h +2 -0
- package/ios/Payengine.m +55 -0
- package/ios/Payengine.swift +637 -0
- package/ios/Payengine.xcodeproj/project.pbxproj +317 -0
- package/ios/Payengine.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Payengine.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Payengine.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +34 -0
- package/ios/Payengine.xcodeproj/project.xcworkspace/xcuserdata/tringuyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Payengine.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +24 -0
- package/ios/Payengine.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/Payengine.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Payengine.xcworkspace/xcuserdata/tringuyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Pods/Pods.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcschemes/Pods-Payengine.xcscheme +58 -0
- package/ios/Pods/Pods.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcschemes/VGSCollectSDK-CardIcon.xcscheme +58 -0
- package/ios/Pods/Pods.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcschemes/VGSCollectSDK.xcscheme +58 -0
- package/ios/Pods/Pods.xcodeproj/xcuserdata/tringuyen.xcuserdatad/xcschemes/xcschememanagement.plist +32 -0
- package/lib/commonjs/components/LoadingIndicator.js +42 -0
- package/lib/commonjs/components/LoadingIndicator.js.map +1 -0
- package/lib/commonjs/components/PayEngine.js +141 -0
- package/lib/commonjs/components/PayEngine.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/CVCField.js +26 -0
- package/lib/commonjs/components/SecureFields/VGS/CVCField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/CardHolderNameField.js +26 -0
- package/lib/commonjs/components/SecureFields/VGS/CardHolderNameField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/CardNumberField.js +26 -0
- package/lib/commonjs/components/SecureFields/VGS/CardNumberField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/CollectManager.js +65 -0
- package/lib/commonjs/components/SecureFields/VGS/CollectManager.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/ExpDateField.js +26 -0
- package/lib/commonjs/components/SecureFields/VGS/ExpDateField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/TextField.js +30 -0
- package/lib/commonjs/components/SecureFields/VGS/TextField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/VGS/ZipCodeField.js +26 -0
- package/lib/commonjs/components/SecureFields/VGS/ZipCodeField.js.map +1 -0
- package/lib/commonjs/components/SecureFields/index.js +34 -0
- package/lib/commonjs/components/SecureFields/index.js.map +1 -0
- package/lib/commonjs/index.js +42 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/utils/index.js +112 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/module/components/LoadingIndicator.js +28 -0
- package/lib/module/components/LoadingIndicator.js.map +1 -0
- package/lib/module/components/PayEngine.js +124 -0
- package/lib/module/components/PayEngine.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/CVCField.js +14 -0
- package/lib/module/components/SecureFields/VGS/CVCField.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/CardHolderNameField.js +14 -0
- package/lib/module/components/SecureFields/VGS/CardHolderNameField.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/CardNumberField.js +14 -0
- package/lib/module/components/SecureFields/VGS/CardNumberField.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/CollectManager.js +50 -0
- package/lib/module/components/SecureFields/VGS/CollectManager.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/ExpDateField.js +14 -0
- package/lib/module/components/SecureFields/VGS/ExpDateField.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/TextField.js +17 -0
- package/lib/module/components/SecureFields/VGS/TextField.js.map +1 -0
- package/lib/module/components/SecureFields/VGS/ZipCodeField.js +14 -0
- package/lib/module/components/SecureFields/VGS/ZipCodeField.js.map +1 -0
- package/lib/module/components/SecureFields/index.js +17 -0
- package/lib/module/components/SecureFields/index.js.map +1 -0
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/utils/index.js +96 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/typescript/components/LoadingIndicator.d.ts +2 -0
- package/lib/typescript/components/PayEngine.d.ts +15 -0
- package/lib/typescript/components/SecureFields/VGS/CVCField.d.ts +10 -0
- package/lib/typescript/components/SecureFields/VGS/CardHolderNameField.d.ts +10 -0
- package/lib/typescript/components/SecureFields/VGS/CardNumberField.d.ts +10 -0
- package/lib/typescript/components/SecureFields/VGS/CollectManager.d.ts +12 -0
- package/lib/typescript/components/SecureFields/VGS/ExpDateField.d.ts +10 -0
- package/lib/typescript/components/SecureFields/VGS/TextField.d.ts +14 -0
- package/lib/typescript/components/SecureFields/VGS/ZipCodeField.d.ts +10 -0
- package/lib/typescript/components/SecureFields/index.d.ts +16 -0
- package/lib/typescript/index.d.ts +5 -0
- package/lib/typescript/utils/index.d.ts +45 -0
- package/package.json +154 -0
- package/react-native-payengine.podspec +38 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
package com.reactnativepayengine.collect.fields;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
import androidx.annotation.Nullable;
|
|
5
|
+
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
8
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
9
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
10
|
+
import com.reactnativepayengine.collect.VGSCollectOnCreateViewInstanceListener;
|
|
11
|
+
import com.verygoodsecurity.vgscollect.view.card.validation.rules.VGSInfoRule;
|
|
12
|
+
import com.verygoodsecurity.vgscollect.widget.ExpirationDateEditText;
|
|
13
|
+
import com.verygoodsecurity.vgscollect.widget.VGSEditText;
|
|
14
|
+
import com.verygoodsecurity.vgscollect.widget.VGSTextInputLayout;
|
|
15
|
+
|
|
16
|
+
public class VGSZipCodeField extends SimpleViewManager<VGSTextInputLayout> {
|
|
17
|
+
private final VGSCollectOnCreateViewInstanceListener listener;
|
|
18
|
+
|
|
19
|
+
private VGSEditText editText;
|
|
20
|
+
private VGSTextInputLayout vgsTextInputLayout;
|
|
21
|
+
|
|
22
|
+
ReactApplicationContext mCallerContext;
|
|
23
|
+
|
|
24
|
+
public VGSZipCodeField(VGSCollectOnCreateViewInstanceListener listener, ReactApplicationContext reactContext) {
|
|
25
|
+
this.listener = listener;
|
|
26
|
+
mCallerContext = reactContext;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@Override
|
|
30
|
+
public String getName() {
|
|
31
|
+
return "VGSZipCodeField";
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@NonNull
|
|
35
|
+
@Override
|
|
36
|
+
protected VGSTextInputLayout createViewInstance(@NonNull ThemedReactContext reactContext) {
|
|
37
|
+
vgsTextInputLayout = new VGSTextInputLayout(reactContext);
|
|
38
|
+
vgsTextInputLayout.setHint("Zip code");
|
|
39
|
+
editText = new VGSEditText(reactContext);
|
|
40
|
+
editText.setIsRequired(true);
|
|
41
|
+
editText.setFieldName("address_zip");
|
|
42
|
+
VGSInfoRule rule = new VGSInfoRule.ValidationBuilder()
|
|
43
|
+
.setRegex("^(\\d{5}(-\\d{4})?|[a-z]\\d[a-z][- ]*\\d[a-z]\\d)$")
|
|
44
|
+
.setAllowableMinLength(1)
|
|
45
|
+
.setAllowableMaxLength(8)
|
|
46
|
+
.build();
|
|
47
|
+
editText.setRule(rule);
|
|
48
|
+
editText.enableValidation(true);
|
|
49
|
+
editText.setPadding(10, 0, 10, 0);
|
|
50
|
+
|
|
51
|
+
vgsTextInputLayout.addView(editText);
|
|
52
|
+
|
|
53
|
+
this.listener.onCreateViewInstance(editText);
|
|
54
|
+
return vgsTextInputLayout;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@ReactProp(name = "placeholder")
|
|
58
|
+
public void setPlaceholder(VGSTextInputLayout view, @Nullable String placeholder) {
|
|
59
|
+
vgsTextInputLayout.setHint(placeholder);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
package com.reactnativepayengine.util;
|
|
2
|
+
|
|
3
|
+
import static com.facebook.react.bridge.ReadableType.Array;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
6
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
7
|
+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
8
|
+
import com.facebook.react.bridge.WritableArray;
|
|
9
|
+
import com.facebook.react.bridge.WritableMap;
|
|
10
|
+
import com.facebook.react.bridge.WritableNativeArray;
|
|
11
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
12
|
+
|
|
13
|
+
import org.json.JSONArray;
|
|
14
|
+
import org.json.JSONObject;
|
|
15
|
+
import org.json.JSONException;
|
|
16
|
+
|
|
17
|
+
import java.util.Iterator;
|
|
18
|
+
|
|
19
|
+
public class JSONObjectUtil {
|
|
20
|
+
|
|
21
|
+
public static String getValue(String bodyStr, String key) {
|
|
22
|
+
try {
|
|
23
|
+
JSONObject body = new JSONObject(bodyStr);
|
|
24
|
+
if (body.has("json") && body.getJSONObject("json").has(key)) {
|
|
25
|
+
return body.getJSONObject("json").getString(key);
|
|
26
|
+
}
|
|
27
|
+
} catch (JSONException e) {
|
|
28
|
+
e.printStackTrace();
|
|
29
|
+
}
|
|
30
|
+
return "";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static WritableMap convertJsonToMap(JSONObject jsonObject) throws JSONException {
|
|
34
|
+
WritableMap map = new WritableNativeMap();
|
|
35
|
+
|
|
36
|
+
Iterator<String> iterator = jsonObject.keys();
|
|
37
|
+
while (iterator.hasNext()) {
|
|
38
|
+
String key = iterator.next();
|
|
39
|
+
Object value = jsonObject.get(key);
|
|
40
|
+
if (value instanceof JSONObject) {
|
|
41
|
+
map.putMap(key, convertJsonToMap((JSONObject) value));
|
|
42
|
+
} else if (value instanceof JSONArray) {
|
|
43
|
+
map.putArray(key, convertJsonToArray((JSONArray) value));
|
|
44
|
+
} else if (value instanceof Boolean) {
|
|
45
|
+
map.putBoolean(key, (Boolean) value);
|
|
46
|
+
} else if (value instanceof Integer) {
|
|
47
|
+
map.putInt(key, (Integer) value);
|
|
48
|
+
} else if (value instanceof Double) {
|
|
49
|
+
map.putDouble(key, (Double) value);
|
|
50
|
+
} else if (value instanceof String) {
|
|
51
|
+
map.putString(key, (String) value);
|
|
52
|
+
} else {
|
|
53
|
+
map.putString(key, value.toString());
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return map;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public static WritableArray convertJsonToArray(JSONArray jsonArray) throws JSONException {
|
|
60
|
+
WritableArray array = new WritableNativeArray();
|
|
61
|
+
|
|
62
|
+
for (int i = 0; i < jsonArray.length(); i++) {
|
|
63
|
+
Object value = jsonArray.get(i);
|
|
64
|
+
if (value instanceof JSONObject) {
|
|
65
|
+
array.pushMap(convertJsonToMap((JSONObject) value));
|
|
66
|
+
} else if (value instanceof JSONArray) {
|
|
67
|
+
array.pushArray(convertJsonToArray((JSONArray) value));
|
|
68
|
+
} else if (value instanceof Boolean) {
|
|
69
|
+
array.pushBoolean((Boolean) value);
|
|
70
|
+
} else if (value instanceof Integer) {
|
|
71
|
+
array.pushInt((Integer) value);
|
|
72
|
+
} else if (value instanceof Double) {
|
|
73
|
+
array.pushDouble((Double) value);
|
|
74
|
+
} else if (value instanceof String) {
|
|
75
|
+
array.pushString((String) value);
|
|
76
|
+
} else {
|
|
77
|
+
array.pushString(value.toString());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return array;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public static JSONObject convertMapToJson(ReadableMap readableMap) throws JSONException {
|
|
84
|
+
JSONObject object = new JSONObject();
|
|
85
|
+
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
|
|
86
|
+
while (iterator.hasNextKey()) {
|
|
87
|
+
String key = iterator.nextKey();
|
|
88
|
+
switch (readableMap.getType(key)) {
|
|
89
|
+
case Null:
|
|
90
|
+
object.put(key, JSONObject.NULL);
|
|
91
|
+
break;
|
|
92
|
+
case Boolean:
|
|
93
|
+
object.put(key, readableMap.getBoolean(key));
|
|
94
|
+
break;
|
|
95
|
+
case Number:
|
|
96
|
+
object.put(key, readableMap.getDouble(key));
|
|
97
|
+
break;
|
|
98
|
+
case String:
|
|
99
|
+
object.put(key, readableMap.getString(key));
|
|
100
|
+
break;
|
|
101
|
+
case Map:
|
|
102
|
+
object.put(key, convertMapToJson(readableMap.getMap(key)));
|
|
103
|
+
break;
|
|
104
|
+
case Array:
|
|
105
|
+
object.put(key, convertArrayToJson(readableMap.getArray(key)));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return object;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public static JSONArray convertArrayToJson(ReadableArray readableArray) throws JSONException {
|
|
113
|
+
JSONArray array = new JSONArray();
|
|
114
|
+
for (int i = 0; i < readableArray.size(); i++) {
|
|
115
|
+
switch (readableArray.getType(i)) {
|
|
116
|
+
case Null:
|
|
117
|
+
break;
|
|
118
|
+
case Boolean:
|
|
119
|
+
array.put(readableArray.getBoolean(i));
|
|
120
|
+
break;
|
|
121
|
+
case Number:
|
|
122
|
+
array.put(readableArray.getDouble(i));
|
|
123
|
+
break;
|
|
124
|
+
case String:
|
|
125
|
+
array.put(readableArray.getString(i));
|
|
126
|
+
break;
|
|
127
|
+
case Map:
|
|
128
|
+
array.put(convertMapToJson(readableArray.getMap(i)));
|
|
129
|
+
break;
|
|
130
|
+
case Array:
|
|
131
|
+
array.put(convertArrayToJson(readableArray.getArray(i)));
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return array;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.reactnativepayengine.util;
|
|
2
|
+
|
|
3
|
+
import android.util.DisplayMetrics;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
import android.util.TypedValue;
|
|
6
|
+
|
|
7
|
+
public class ResourceUtil {
|
|
8
|
+
|
|
9
|
+
public static int convertPxToDp(Context context, int dip) {
|
|
10
|
+
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
|
|
11
|
+
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, displayMetrics);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
}
|
|
Binary file
|
package/ios/Payengine.m
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <Foundation/Foundation.h>
|
|
3
|
+
#import <React/RCTViewManager.h>
|
|
4
|
+
|
|
5
|
+
@interface RCT_EXTERN_MODULE(Payengine, NSObject)
|
|
6
|
+
|
|
7
|
+
RCT_EXTERN_METHOD(multiply:(float)a withB:(float)b
|
|
8
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
9
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
10
|
+
|
|
11
|
+
+ (BOOL)requiresMainQueueSetup
|
|
12
|
+
{
|
|
13
|
+
return NO;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
@interface RCT_EXTERN_MODULE(VGSCollectManager, RCTViewManager)
|
|
19
|
+
|
|
20
|
+
RCT_EXTERN_METHOD(setConfiguration: (NSString *)vaultId environment:(NSString *)environment hostname:(NSString *)hostname satellitePort:(NSInteger *)satellitePort);
|
|
21
|
+
|
|
22
|
+
RCT_EXTERN_METHOD(createCard: (NSString *)merchantId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);
|
|
23
|
+
RCT_EXTERN_METHOD(createBankAccount: (NSString *)merchantId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);
|
|
24
|
+
|
|
25
|
+
@end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@interface RCT_EXTERN_MODULE(VGSCardNumberFieldManager, RCTViewManager)
|
|
29
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
30
|
+
@end
|
|
31
|
+
|
|
32
|
+
@interface RCT_EXTERN_MODULE(VGSExpDateFieldManager, RCTViewManager)
|
|
33
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
34
|
+
@end
|
|
35
|
+
|
|
36
|
+
@interface RCT_EXTERN_MODULE(VGSCVCFieldManager, RCTViewManager)
|
|
37
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
38
|
+
@end
|
|
39
|
+
|
|
40
|
+
@interface RCT_EXTERN_MODULE(VGSCardHolderNameFieldManager, RCTViewManager)
|
|
41
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
42
|
+
@end
|
|
43
|
+
|
|
44
|
+
@interface RCT_EXTERN_MODULE(VGSZipCodeFieldManager, RCTViewManager)
|
|
45
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
46
|
+
@end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@interface RCT_EXTERN_MODULE(VGSTextFieldManager, RCTViewManager)
|
|
50
|
+
RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString)
|
|
51
|
+
RCT_EXPORT_VIEW_PROPERTY(name, NSString)
|
|
52
|
+
RCT_EXPORT_VIEW_PROPERTY(pattern, NSString)
|
|
53
|
+
RCT_EXPORT_VIEW_PROPERTY(maxlength, NSNumber)
|
|
54
|
+
@end
|
|
55
|
+
|