@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.
Files changed (51) hide show
  1. package/README.md +59 -287
  2. package/lib/commonjs/components/CaptureButton/index.js +3 -1
  3. package/lib/commonjs/components/CaptureButton/index.js.map +1 -1
  4. package/lib/commonjs/components/recordButton/recordButton.js +3 -1
  5. package/lib/commonjs/components/recordButton/recordButton.js.map +1 -1
  6. package/lib/commonjs/screens/FingerAuth/FingerAuth.js +3 -1
  7. package/lib/commonjs/screens/FingerAuth/FingerAuth.js.map +1 -1
  8. package/lib/commonjs/screens/FingerRegister/FingerRegister.js +3 -1
  9. package/lib/commonjs/screens/FingerRegister/FingerRegister.js.map +1 -1
  10. package/lib/commonjs/screens/LifeCertificate/LifeCertificate.js +2 -0
  11. package/lib/commonjs/screens/LifeCertificate/LifeCertificate.js.map +1 -1
  12. package/lib/commonjs/screens/MultiFingerRegister/MultiFingerRegister.js +13 -3
  13. package/lib/commonjs/screens/MultiFingerRegister/MultiFingerRegister.js.map +1 -1
  14. package/lib/commonjs/screens/MultiFingerRegister/styles.js +5 -0
  15. package/lib/commonjs/screens/MultiFingerRegister/styles.js.map +1 -1
  16. package/lib/module/components/CaptureButton/index.js +3 -1
  17. package/lib/module/components/CaptureButton/index.js.map +1 -1
  18. package/lib/module/components/recordButton/recordButton.js +3 -1
  19. package/lib/module/components/recordButton/recordButton.js.map +1 -1
  20. package/lib/module/screens/FingerAuth/FingerAuth.js +3 -1
  21. package/lib/module/screens/FingerAuth/FingerAuth.js.map +1 -1
  22. package/lib/module/screens/FingerRegister/FingerRegister.js +3 -1
  23. package/lib/module/screens/FingerRegister/FingerRegister.js.map +1 -1
  24. package/lib/module/screens/LifeCertificate/LifeCertificate.js +2 -0
  25. package/lib/module/screens/LifeCertificate/LifeCertificate.js.map +1 -1
  26. package/lib/module/screens/MultiFingerRegister/MultiFingerRegister.js +14 -4
  27. package/lib/module/screens/MultiFingerRegister/MultiFingerRegister.js.map +1 -1
  28. package/lib/module/screens/MultiFingerRegister/styles.js +5 -0
  29. package/lib/module/screens/MultiFingerRegister/styles.js.map +1 -1
  30. package/lib/typescript/src/components/CaptureButton/index.d.ts +2 -1
  31. package/lib/typescript/src/components/CaptureButton/index.d.ts.map +1 -1
  32. package/lib/typescript/src/components/recordButton/recordButton.d.ts +2 -1
  33. package/lib/typescript/src/components/recordButton/recordButton.d.ts.map +1 -1
  34. package/lib/typescript/src/screens/FingerAuth/FingerAuth.d.ts +2 -1
  35. package/lib/typescript/src/screens/FingerAuth/FingerAuth.d.ts.map +1 -1
  36. package/lib/typescript/src/screens/FingerRegister/FingerRegister.d.ts +2 -1
  37. package/lib/typescript/src/screens/FingerRegister/FingerRegister.d.ts.map +1 -1
  38. package/lib/typescript/src/screens/LifeCertificate/LifeCertificate.d.ts +2 -1
  39. package/lib/typescript/src/screens/LifeCertificate/LifeCertificate.d.ts.map +1 -1
  40. package/lib/typescript/src/screens/MultiFingerRegister/MultiFingerRegister.d.ts +2 -1
  41. package/lib/typescript/src/screens/MultiFingerRegister/MultiFingerRegister.d.ts.map +1 -1
  42. package/lib/typescript/src/screens/MultiFingerRegister/styles.d.ts +5 -0
  43. package/lib/typescript/src/screens/MultiFingerRegister/styles.d.ts.map +1 -1
  44. package/package.json +5 -2
  45. package/src/components/CaptureButton/index.tsx +3 -2
  46. package/src/components/recordButton/recordButton.tsx +3 -2
  47. package/src/screens/FingerAuth/FingerAuth.tsx +3 -2
  48. package/src/screens/FingerRegister/FingerRegister.tsx +3 -2
  49. package/src/screens/LifeCertificate/LifeCertificate.tsx +3 -1
  50. package/src/screens/MultiFingerRegister/MultiFingerRegister.tsx +9 -4
  51. 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;CACf,CAAC;AAEF,QAAA,MAAM,YAAY,8CAA+C,KAAK,gBAqDrE,CAAC;AAEF,eAAe,YAAY,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;CAChB,CAAC;AAEF,QAAA,MAAM,UAAU,wCAAyC,KAAK,gBAiG7D,CAAC;AAEF,eAAe,UAAU,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;CAChB,CAAC;AAEF,QAAA,MAAM,cAAc,wCAAyC,KAAK,gBA4GjE,CAAC;AAEF,eAAe,cAAc,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;CAChB,CAAC;AAEF,QAAA,MAAM,eAAe,kBAAmB,KAAK,gBAwI5C,CAAC;AAEF,eAAe,eAAe,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;CAChB,CAAC;AAEF,QAAA,MAAM,mBAAmB,wCAAyC,KAAK,gBA0KtE,CAAC;AAEF,eAAe,mBAAmB,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"}
@@ -46,5 +46,10 @@ export declare const styles: {
46
46
  shadowRadius: number;
47
47
  elevation: number;
48
48
  };
49
+ iconClose: {
50
+ position: "absolute";
51
+ alignSelf: "flex-end";
52
+ padding: number;
53
+ };
49
54
  };
50
55
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MultiFingerRegister/styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CjB,CAAC"}
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.7.0",
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": "bob build",
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={35} color="#fff" />
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}
@@ -45,5 +45,6 @@ export const styles = StyleSheet.create({
45
45
  shadowOpacity: 0.25,
46
46
  shadowRadius: 4,
47
47
  elevation: 5
48
- }
48
+ },
49
+ iconClose: { position: "absolute", alignSelf: "flex-end", padding: 8 }
49
50
  });