@ha_tecno/live-id-sdk 2.7.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +59 -287
- package/lib/commonjs/components/CaptureButton/index.js +3 -1
- package/lib/commonjs/components/CaptureButton/index.js.map +1 -1
- package/lib/commonjs/components/recordButton/recordButton.js +3 -1
- package/lib/commonjs/components/recordButton/recordButton.js.map +1 -1
- package/lib/commonjs/screens/FingerAuth/FingerAuth.js +3 -1
- package/lib/commonjs/screens/FingerAuth/FingerAuth.js.map +1 -1
- package/lib/commonjs/screens/FingerRegister/FingerRegister.js +3 -1
- package/lib/commonjs/screens/FingerRegister/FingerRegister.js.map +1 -1
- package/lib/commonjs/screens/LifeCertificate/LifeCertificate.js +2 -0
- package/lib/commonjs/screens/LifeCertificate/LifeCertificate.js.map +1 -1
- package/lib/commonjs/screens/MultiFingerRegister/MultiFingerRegister.js +13 -3
- package/lib/commonjs/screens/MultiFingerRegister/MultiFingerRegister.js.map +1 -1
- package/lib/commonjs/screens/MultiFingerRegister/styles.js +5 -0
- package/lib/commonjs/screens/MultiFingerRegister/styles.js.map +1 -1
- package/lib/module/components/CaptureButton/index.js +3 -1
- package/lib/module/components/CaptureButton/index.js.map +1 -1
- package/lib/module/components/recordButton/recordButton.js +3 -1
- package/lib/module/components/recordButton/recordButton.js.map +1 -1
- package/lib/module/screens/FingerAuth/FingerAuth.js +3 -1
- package/lib/module/screens/FingerAuth/FingerAuth.js.map +1 -1
- package/lib/module/screens/FingerRegister/FingerRegister.js +3 -1
- package/lib/module/screens/FingerRegister/FingerRegister.js.map +1 -1
- package/lib/module/screens/LifeCertificate/LifeCertificate.js +2 -0
- package/lib/module/screens/LifeCertificate/LifeCertificate.js.map +1 -1
- package/lib/module/screens/MultiFingerRegister/MultiFingerRegister.js +14 -4
- package/lib/module/screens/MultiFingerRegister/MultiFingerRegister.js.map +1 -1
- package/lib/module/screens/MultiFingerRegister/styles.js +5 -0
- package/lib/module/screens/MultiFingerRegister/styles.js.map +1 -1
- package/lib/typescript/src/components/CaptureButton/index.d.ts +2 -1
- package/lib/typescript/src/components/CaptureButton/index.d.ts.map +1 -1
- package/lib/typescript/src/components/recordButton/recordButton.d.ts +2 -1
- package/lib/typescript/src/components/recordButton/recordButton.d.ts.map +1 -1
- package/lib/typescript/src/screens/FingerAuth/FingerAuth.d.ts +2 -1
- package/lib/typescript/src/screens/FingerAuth/FingerAuth.d.ts.map +1 -1
- package/lib/typescript/src/screens/FingerRegister/FingerRegister.d.ts +2 -1
- package/lib/typescript/src/screens/FingerRegister/FingerRegister.d.ts.map +1 -1
- package/lib/typescript/src/screens/LifeCertificate/LifeCertificate.d.ts +2 -1
- package/lib/typescript/src/screens/LifeCertificate/LifeCertificate.d.ts.map +1 -1
- package/lib/typescript/src/screens/MultiFingerRegister/MultiFingerRegister.d.ts +2 -1
- package/lib/typescript/src/screens/MultiFingerRegister/MultiFingerRegister.d.ts.map +1 -1
- package/lib/typescript/src/screens/MultiFingerRegister/styles.d.ts +5 -0
- package/lib/typescript/src/screens/MultiFingerRegister/styles.d.ts.map +1 -1
- package/package.json +5 -2
- package/src/components/CaptureButton/index.tsx +3 -2
- package/src/components/recordButton/recordButton.tsx +3 -2
- package/src/screens/FingerAuth/FingerAuth.tsx +3 -2
- package/src/screens/FingerRegister/FingerRegister.tsx +3 -2
- package/src/screens/LifeCertificate/LifeCertificate.tsx +3 -1
- package/src/screens/MultiFingerRegister/MultiFingerRegister.tsx +9 -4
- package/src/screens/MultiFingerRegister/styles.ts +2 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recordButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/recordButton/recordButton.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"recordButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/recordButton/recordButton.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,YAAY,sDAAuD,KAAK,gBAqD7E,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
@@ -4,7 +4,8 @@ type Props = {
|
|
4
4
|
onSuccess: (code: number) => void;
|
5
5
|
isFocused?: boolean;
|
6
6
|
mock?: boolean;
|
7
|
+
testID?: string;
|
7
8
|
};
|
8
|
-
declare const FingerAuth: ({ UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
|
+
declare const FingerAuth: ({ testID, UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
10
|
export default FingerAuth;
|
10
11
|
//# sourceMappingURL=FingerAuth.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FingerAuth.d.ts","sourceRoot":"","sources":["../../../../../src/screens/FingerAuth/FingerAuth.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"FingerAuth.d.ts","sourceRoot":"","sources":["../../../../../src/screens/FingerAuth/FingerAuth.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,UAAU,gDAAiD,KAAK,gBAiGrE,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
@@ -4,7 +4,8 @@ type Props = {
|
|
4
4
|
onSuccess: (code: number) => void;
|
5
5
|
isFocused?: boolean;
|
6
6
|
mock?: boolean;
|
7
|
+
testID?: string;
|
7
8
|
};
|
8
|
-
declare const FingerRegister: ({ UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
|
+
declare const FingerRegister: ({ testID, UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
10
|
export default FingerRegister;
|
10
11
|
//# sourceMappingURL=FingerRegister.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FingerRegister.d.ts","sourceRoot":"","sources":["../../../../../src/screens/FingerRegister/FingerRegister.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"FingerRegister.d.ts","sourceRoot":"","sources":["../../../../../src/screens/FingerRegister/FingerRegister.tsx"],"names":[],"mappings":";AAYA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,cAAc,gDAAiD,KAAK,gBA4GzE,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
@@ -2,7 +2,8 @@
|
|
2
2
|
type Props = {
|
3
3
|
UID: string;
|
4
4
|
mock?: boolean;
|
5
|
+
testID?: string;
|
5
6
|
};
|
6
|
-
declare const LifeCertificate: ({ UID, mock }: Props) => JSX.Element;
|
7
|
+
declare const LifeCertificate: ({ testID, UID, mock }: Props) => JSX.Element;
|
7
8
|
export default LifeCertificate;
|
8
9
|
//# sourceMappingURL=LifeCertificate.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LifeCertificate.d.ts","sourceRoot":"","sources":["../../../../../src/screens/LifeCertificate/LifeCertificate.tsx"],"names":[],"mappings":";AASA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"LifeCertificate.d.ts","sourceRoot":"","sources":["../../../../../src/screens/LifeCertificate/LifeCertificate.tsx"],"names":[],"mappings":";AASA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,eAAe,0BAA2B,KAAK,gBAyIpD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
@@ -4,7 +4,8 @@ type Props = {
|
|
4
4
|
onSuccess: (code: number) => void;
|
5
5
|
isFocused?: boolean;
|
6
6
|
mock?: boolean;
|
7
|
+
testID?: string;
|
7
8
|
};
|
8
|
-
declare const MultiFingerRegister: ({ UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
|
+
declare const MultiFingerRegister: ({ testID, UID, onSuccess, isFocused, mock }: Props) => JSX.Element;
|
9
10
|
export default MultiFingerRegister;
|
10
11
|
//# sourceMappingURL=MultiFingerRegister.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MultiFingerRegister.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MultiFingerRegister/MultiFingerRegister.tsx"],"names":[],"mappings":";AA2BA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"MultiFingerRegister.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MultiFingerRegister/MultiFingerRegister.tsx"],"names":[],"mappings":";AA2BA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,mBAAmB,gDAAiD,KAAK,gBA8K9E,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MultiFingerRegister/styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MultiFingerRegister/styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CjB,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ha_tecno/live-id-sdk",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.9.0",
|
4
4
|
"description": "React Native SDK for Live ID",
|
5
5
|
"main": "lib/commonjs/index",
|
6
6
|
"module": "lib/module/index",
|
@@ -30,7 +30,8 @@
|
|
30
30
|
"typecheck": "tsc --noEmit",
|
31
31
|
"format": "prettier --write .",
|
32
32
|
"lint": "eslint . --ext .ts,.tsx",
|
33
|
-
"prepare": "
|
33
|
+
"prepare": "husky",
|
34
|
+
"bob": "bob build",
|
34
35
|
"release": "release-it"
|
35
36
|
},
|
36
37
|
"keywords": [
|
@@ -70,7 +71,9 @@
|
|
70
71
|
"eslint-plugin-react": "^7.34.1",
|
71
72
|
"eslint-plugin-react-hooks": "^4.6.0",
|
72
73
|
"globals": "^15.0.0",
|
74
|
+
"husky": "^9.1.4",
|
73
75
|
"jest": "^28.1.1",
|
76
|
+
"lint-staged": "^15.2.7",
|
74
77
|
"pod-install": "^0.1.0",
|
75
78
|
"prettier": "^3.2.5",
|
76
79
|
"react": "18.2.0",
|
@@ -9,9 +9,10 @@ type Props = {
|
|
9
9
|
imagesCount?: number;
|
10
10
|
authFinger?: boolean;
|
11
11
|
loading?: boolean;
|
12
|
+
testID?: string;
|
12
13
|
};
|
13
14
|
|
14
|
-
const CaptureButton = ({ onPress, imagesCount, authFinger, loading }: Props) => {
|
15
|
+
const CaptureButton = ({ testID, onPress, imagesCount, authFinger, loading }: Props) => {
|
15
16
|
const width = useSharedValue(75);
|
16
17
|
const translateX = useSharedValue(0);
|
17
18
|
const opacity = useSharedValue(0);
|
@@ -58,7 +59,7 @@ const CaptureButton = ({ onPress, imagesCount, authFinger, loading }: Props) =>
|
|
58
59
|
}
|
59
60
|
|
60
61
|
return (
|
61
|
-
<Pressable onPress={handlePress} disabled={imagesCount === 3 ? true : false}>
|
62
|
+
<Pressable onPress={handlePress} disabled={imagesCount === 3 ? true : false} testID={testID}>
|
62
63
|
<Animated.View style={[styles.box, animatedView]}>
|
63
64
|
<Animated.View style={animatedIcon}>
|
64
65
|
<Icon name="camera-outline" size={40} color="white" />
|
@@ -15,9 +15,10 @@ type Props = {
|
|
15
15
|
disabled: boolean;
|
16
16
|
isRecording: boolean;
|
17
17
|
timer: number;
|
18
|
+
testID?: string;
|
18
19
|
};
|
19
20
|
|
20
|
-
const RecordButton = ({ onPress, disabled, timer, isRecording }: Props) => {
|
21
|
+
const RecordButton = ({ testID, onPress, disabled, timer, isRecording }: Props) => {
|
21
22
|
const progress = useSharedValue(0);
|
22
23
|
const width = useSharedValue(100);
|
23
24
|
const translateX = useSharedValue(0);
|
@@ -59,7 +60,7 @@ const RecordButton = ({ onPress, disabled, timer, isRecording }: Props) => {
|
|
59
60
|
};
|
60
61
|
|
61
62
|
return (
|
62
|
-
<Pressable onPress={handlePress} disabled={disabled}>
|
63
|
+
<Pressable onPress={handlePress} disabled={disabled} testID={testID}>
|
63
64
|
<Animated.View style={[styles.container, animatedView]}>
|
64
65
|
<Animated.View style={animatedIcon}>
|
65
66
|
<Icon name="videocam-outline" size={40} color="white" />
|
@@ -15,9 +15,10 @@ type Props = {
|
|
15
15
|
onSuccess: (code: number) => void;
|
16
16
|
isFocused?: boolean;
|
17
17
|
mock?: boolean;
|
18
|
+
testID?: string;
|
18
19
|
};
|
19
20
|
|
20
|
-
const FingerAuth = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
21
|
+
const FingerAuth = ({ testID, UID, onSuccess, isFocused, mock }: Props) => {
|
21
22
|
const cameraRef = useRef<Camera>(null);
|
22
23
|
const isForeground = useIsForeground();
|
23
24
|
const isActive = isFocused !== undefined ? isForeground && isFocused : isForeground;
|
@@ -108,7 +109,7 @@ const FingerAuth = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
|
108
109
|
</View>
|
109
110
|
</GestureDetector>
|
110
111
|
<View style={containerCaptureStyled}>
|
111
|
-
<CaptureButton authFinger onPress={takePhoto} loading={state.loading} />
|
112
|
+
<CaptureButton authFinger onPress={takePhoto} loading={state.loading} testID={testID} />
|
112
113
|
</View>
|
113
114
|
{state.showButtonInfo && <CameraConfigInfo exposure={state.exposure} zoom={state.zoom} />}
|
114
115
|
<ModalMessage isLoading={state.loading} modal={state.modal} />
|
@@ -15,9 +15,10 @@ type Props = {
|
|
15
15
|
onSuccess: (code: number) => void;
|
16
16
|
isFocused?: boolean;
|
17
17
|
mock?: boolean;
|
18
|
+
testID?: string;
|
18
19
|
};
|
19
20
|
|
20
|
-
const FingerRegister = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
21
|
+
const FingerRegister = ({ testID, UID, onSuccess, isFocused, mock }: Props) => {
|
21
22
|
const cameraRef = useRef<Camera>(null);
|
22
23
|
const isForeground = useIsForeground();
|
23
24
|
const isActive = isFocused !== undefined ? isForeground && isFocused : isForeground;
|
@@ -119,7 +120,7 @@ const FingerRegister = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
|
119
120
|
</View>
|
120
121
|
</GestureDetector>
|
121
122
|
<View style={containerCaptureStyled}>
|
122
|
-
<CaptureButton onPress={takePhoto} imagesCount={base64ImagesCount} />
|
123
|
+
<CaptureButton onPress={takePhoto} imagesCount={base64ImagesCount} testID={testID} />
|
123
124
|
</View>
|
124
125
|
{state.showButtonInfo && <CameraConfigInfo exposure={state.exposure} zoom={state.zoom} />}
|
125
126
|
<ModalMessage isLoading={state.loading} modal={state.modal} />
|
@@ -10,9 +10,10 @@ import { useIsForeground } from "../../utils";
|
|
10
10
|
type Props = {
|
11
11
|
UID: string;
|
12
12
|
mock?: boolean;
|
13
|
+
testID?: string;
|
13
14
|
};
|
14
15
|
|
15
|
-
const LifeCertificate = ({ UID, mock }: Props) => {
|
16
|
+
const LifeCertificate = ({ testID, UID, mock }: Props) => {
|
16
17
|
const camera = useRef<Camera>(null);
|
17
18
|
const isActive = useIsForeground();
|
18
19
|
const state = useSelector();
|
@@ -138,6 +139,7 @@ const LifeCertificate = ({ UID, mock }: Props) => {
|
|
138
139
|
/>
|
139
140
|
<View style={containerRecordStyled}>
|
140
141
|
<RecordButton
|
142
|
+
testID={testID}
|
141
143
|
onPress={recordingVideo}
|
142
144
|
disabled={state.isRecording || state.loading}
|
143
145
|
timer={timer}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
2
|
-
import { View, Modal, TouchableOpacity } from "react-native";
|
2
|
+
import { View, Modal, TouchableOpacity, Platform } from "react-native";
|
3
3
|
import { Camera, Point, useCameraDevice, useCameraFormat, useCameraPermission } from "react-native-vision-camera";
|
4
4
|
import Orientation from "react-native-orientation-locker";
|
5
5
|
import { Gesture, GestureDetector, GestureHandlerRootView } from "react-native-gesture-handler";
|
@@ -30,9 +30,10 @@ type Props = {
|
|
30
30
|
onSuccess: (code: number) => void;
|
31
31
|
isFocused?: boolean;
|
32
32
|
mock?: boolean;
|
33
|
+
testID?: string;
|
33
34
|
};
|
34
35
|
|
35
|
-
const MultiFingerRegister = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
36
|
+
const MultiFingerRegister = ({ testID, UID, onSuccess, isFocused, mock }: Props) => {
|
36
37
|
const [showModal, setShowModal] = useState(false);
|
37
38
|
const cameraRef = useRef<Camera>(null);
|
38
39
|
const isForeground = useIsForeground();
|
@@ -151,6 +152,7 @@ const MultiFingerRegister = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
|
151
152
|
};
|
152
153
|
|
153
154
|
const handleCurrentFinger = (value: string) => {
|
155
|
+
setTimeout(() => Platform.OS === "android" && closeModel(), 500);
|
154
156
|
dispatch.setCurrentFinger(value as Finger);
|
155
157
|
};
|
156
158
|
|
@@ -177,17 +179,20 @@ const MultiFingerRegister = ({ UID, onSuccess, isFocused, mock }: Props) => {
|
|
177
179
|
</GestureDetector>
|
178
180
|
<View style={styles.containerModalIcon}>
|
179
181
|
<TouchableOpacity onPress={openModal}>
|
180
|
-
<Icon name="cog" size={
|
182
|
+
<Icon name="cog" size={40} color="#fff" />
|
181
183
|
</TouchableOpacity>
|
182
184
|
</View>
|
183
185
|
<View style={containerCaptureStyled}>
|
184
|
-
<CaptureButton onPress={takePhoto} imagesCount={state.base64Images.length} />
|
186
|
+
<CaptureButton onPress={takePhoto} imagesCount={state.base64Images.length} testID={testID} />
|
185
187
|
</View>
|
186
188
|
{state.showButtonInfo && <CameraConfigInfo exposure={state.exposure} zoom={state.zoom} />}
|
187
189
|
<ModalMessage isLoading={state.loading} modal={state.modal} />
|
188
190
|
<Modal animationType="slide" transparent={true} visible={showModal} onRequestClose={closeModel}>
|
189
191
|
<View style={styles.containerModal}>
|
190
192
|
<View style={styles.modal}>
|
193
|
+
<TouchableOpacity onPress={closeModel} style={styles.iconClose}>
|
194
|
+
<Icon name="close" size={32} color="red" />
|
195
|
+
</TouchableOpacity>
|
191
196
|
<Picker
|
192
197
|
style={pickerStyled}
|
193
198
|
useNativeAndroidPickerStyle={false}
|