Browse Source

added municipalities field, fixed scroll form

Michael Terrefortes 2 years ago
parent
commit
5f23dfa828

+ 26
- 5
Navigation.js View File

2
 import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
2
 import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
3
 import { createNativeStackNavigator } from "@react-navigation/native-stack";
3
 import { createNativeStackNavigator } from "@react-navigation/native-stack";
4
 import { NavigationContainer } from "@react-navigation/native";
4
 import { NavigationContainer } from "@react-navigation/native";
5
+import { Entypo } from '@expo/vector-icons'; 
6
+import { Ionicons } from '@expo/vector-icons';
5
 
7
 
6
 // Import the screens to be used in the navigator
8
 // Import the screens to be used in the navigator
7
 import Denuncias from "./screens/Denuncias";
9
 import Denuncias from "./screens/Denuncias";
10
 import Formulario from "./screens/Formulario";
12
 import Formulario from "./screens/Formulario";
11
 import Lista from "./screens/Lista";
13
 import Lista from "./screens/Lista";
12
 import Drna from "./screens/Drna";
14
 import Drna from "./screens/Drna";
15
+import { TabBarIOSItem } from "react-native";
13
 
16
 
14
 const StackDenuncias = createNativeStackNavigator();
17
 const StackDenuncias = createNativeStackNavigator();
15
 
18
 
28
 
31
 
29
 function Tabs() {
32
 function Tabs() {
30
   return (
33
   return (
31
-    <Tab.Navigator initialRouteName="Denuncias">
34
+    <Tab.Navigator initialRouteName="DenunciasIni">
32
       <Tab.Screen
35
       <Tab.Screen
33
         name="Denuncias"
36
         name="Denuncias"
34
         component={Stacks}
37
         component={Stacks}
35
         options={{
38
         options={{
36
-          headerShown: false,
37
-        }}
39
+                tabBarIcon: ({}) => (
40
+                    <Entypo name="megaphone" size={24} color="black" />
41
+                ),
42
+                 headerShown:false
43
+            }} 
38
       />
44
       />
39
-      <Tab.Screen name="Derechos" component={Derechos} />
40
-      <Tab.Screen name="Analisis" component={Analisis} />
45
+      <Tab.Screen 
46
+      name="Derechos" 
47
+      component={Derechos} 
48
+      options={{
49
+      tabBarIcon: ({}) => (
50
+                    <Ionicons name="ios-newspaper-outline" size={24} color="black" />
51
+                )
52
+            }}
53
+      />
54
+      <Tab.Screen 
55
+      name="Analisis" 
56
+      component={Analisis} 
57
+      options={{
58
+                tabBarIcon: ({}) => (
59
+                    <Ionicons name="earth" size={24} color="black" />
60
+                )
61
+            }}   />
41
     </Tab.Navigator>
62
     </Tab.Navigator>
42
   );
63
   );
43
 }
64
 }

+ 36
- 0
package-lock.json View File

18
         "react-native-custom-navigation-tabs": "^3.0.1",
18
         "react-native-custom-navigation-tabs": "^3.0.1",
19
         "react-native-dropdown-select-list": "^2.0.2",
19
         "react-native-dropdown-select-list": "^2.0.2",
20
         "react-native-gesture-handler": "~2.8.0",
20
         "react-native-gesture-handler": "~2.8.0",
21
+        "react-native-keyboard-aware-scroll-view": "^0.9.5",
21
         "react-native-safe-area-context": "4.4.1",
22
         "react-native-safe-area-context": "4.4.1",
22
         "react-native-screens": "~3.18.0"
23
         "react-native-screens": "~3.18.0"
23
       },
24
       },
10285
       "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
10286
       "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
10286
       "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
10287
       "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
10287
     },
10288
     },
10289
+    "node_modules/react-native-iphone-x-helper": {
10290
+      "version": "1.3.1",
10291
+      "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
10292
+      "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==",
10293
+      "peerDependencies": {
10294
+        "react-native": ">=0.42.0"
10295
+      }
10296
+    },
10297
+    "node_modules/react-native-keyboard-aware-scroll-view": {
10298
+      "version": "0.9.5",
10299
+      "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz",
10300
+      "integrity": "sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA==",
10301
+      "dependencies": {
10302
+        "prop-types": "^15.6.2",
10303
+        "react-native-iphone-x-helper": "^1.0.3"
10304
+      },
10305
+      "peerDependencies": {
10306
+        "react-native": ">=0.48.4"
10307
+      }
10308
+    },
10288
     "node_modules/react-native-pose": {
10309
     "node_modules/react-native-pose": {
10289
       "version": "0.9.1",
10310
       "version": "0.9.1",
10290
       "resolved": "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz",
10311
       "resolved": "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz",
20364
       "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
20385
       "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
20365
       "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
20386
       "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
20366
     },
20387
     },
20388
+    "react-native-iphone-x-helper": {
20389
+      "version": "1.3.1",
20390
+      "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
20391
+      "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==",
20392
+      "requires": {}
20393
+    },
20394
+    "react-native-keyboard-aware-scroll-view": {
20395
+      "version": "0.9.5",
20396
+      "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz",
20397
+      "integrity": "sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA==",
20398
+      "requires": {
20399
+        "prop-types": "^15.6.2",
20400
+        "react-native-iphone-x-helper": "^1.0.3"
20401
+      }
20402
+    },
20367
     "react-native-pose": {
20403
     "react-native-pose": {
20368
       "version": "0.9.1",
20404
       "version": "0.9.1",
20369
       "resolved": "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz",
20405
       "resolved": "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz",

+ 1
- 0
package.json View File

19
     "react-native-custom-navigation-tabs": "^3.0.1",
19
     "react-native-custom-navigation-tabs": "^3.0.1",
20
     "react-native-dropdown-select-list": "^2.0.2",
20
     "react-native-dropdown-select-list": "^2.0.2",
21
     "react-native-gesture-handler": "~2.8.0",
21
     "react-native-gesture-handler": "~2.8.0",
22
+    "react-native-keyboard-aware-scroll-view": "^0.9.5",
22
     "react-native-safe-area-context": "4.4.1",
23
     "react-native-safe-area-context": "4.4.1",
23
     "react-native-screens": "~3.18.0"
24
     "react-native-screens": "~3.18.0"
24
   },
25
   },

+ 1
- 0
screens/Analisis.js View File

3
   View,
3
   View,
4
   Text,
4
   Text,
5
   StyleSheet,
5
   StyleSheet,
6
+  Linking
6
 } from "react-native";
7
 } from "react-native";
7
 
8
 
8
 // TOOL DESCRIPTIONS
9
 // TOOL DESCRIPTIONS

+ 17
- 15
screens/Derechos.js View File

8
   Pressable,
8
   Pressable,
9
 } from "react-native";
9
 } from "react-native";
10
 import { FlatList, TouchableHighlight } from "react-native-gesture-handler";
10
 import { FlatList, TouchableHighlight } from "react-native-gesture-handler";
11
-import { ButtonLay } from "./Button.js";
12
-import Leyes from "./leyes.json";
13
-import LeyesPR from "./leyesPR.json";
14
-import DerechosAmb from "./derechos.json";
11
+import { ButtonLay } from "./components/Button.js";
12
+import Leyes from "./data/leyes.json";
13
+import LeyesPR from "./data/leyesPR.json";
14
+import DerechosAmb from "./data/derechos.json";
15
 
15
 
16
 const Derechos = () => {
16
 const Derechos = () => {
17
   return (
17
   return (
18
     <>
18
     <>
19
       <View>
19
       <View>
20
         <Text style={styles.container2}>1) Leyes de la Tierra</Text>
20
         <Text style={styles.container2}>1) Leyes de la Tierra</Text>
21
-        <View>
22
-          {Leyes.map((ley) => {
21
+        <View >
22
+          {Leyes.map(({id, title, link}) => {
23
             return (
23
             return (
24
               <>
24
               <>
25
                 <TouchableOpacity
25
                 <TouchableOpacity
26
                   style={styles.button}
26
                   style={styles.button}
27
+                  key={id}
27
                   onPress={() => {
28
                   onPress={() => {
28
-                    Linking.openURL(ley.link.toString());
29
+                    Linking.openURL(link.toString());
29
                   }}
30
                   }}
30
                 >
31
                 >
31
-                  <Text style={styles.text}>{ley.title}</Text>
32
+                  <Text style={styles.text}>{title}</Text>
32
                 </TouchableOpacity>
33
                 </TouchableOpacity>
33
               </>
34
               </>
34
             );
35
             );
41
           2) Derechos del activista climatico
42
           2) Derechos del activista climatico
42
         </Text>
43
         </Text>
43
         <View>
44
         <View>
44
-          {DerechosAmb.map((der) => {
45
+          {DerechosAmb.map(({id, title, link}) => {
45
             return (
46
             return (
46
               <>
47
               <>
47
                 <TouchableOpacity
48
                 <TouchableOpacity
49
+                 
48
                   style={styles.button}
50
                   style={styles.button}
49
                   onPress={() => {
51
                   onPress={() => {
50
-                    Linking.openURL(der.link.toString());
52
+                    Linking.openURL(link.toString());
51
                   }}
53
                   }}
52
                 >
54
                 >
53
-                  <Text style={styles.text}>{der.title}</Text>
55
+                  <Text style={styles.text}  key={id} >{title}</Text>
54
                 </TouchableOpacity>
56
                 </TouchableOpacity>
55
               </>
57
               </>
56
             );
58
             );
58
         </View>
60
         </View>
59
       </View>
61
       </View>
60
 
62
 
61
-      <View>
63
+       <View>
62
         <Text style={styles.container2}>3) Leyes de Puerto Rico</Text>
64
         <Text style={styles.container2}>3) Leyes de Puerto Rico</Text>
63
         <View>
65
         <View>
64
-          {LeyesPR.map((ley) => {
66
+          {LeyesPR.map(({id, title, link}) => {
65
             return (
67
             return (
66
               <>
68
               <>
67
                 <TouchableOpacity
69
                 <TouchableOpacity
68
                   style={styles.button}
70
                   style={styles.button}
69
                   onPress={() => {
71
                   onPress={() => {
70
-                    Linking.openURL(ley.link.toString());
72
+                    Linking.openURL(link.toString());
71
                   }}
73
                   }}
72
                 >
74
                 >
73
-                  <Text style={styles.text}>{ley.title}</Text>
75
+                  <Text style={styles.text} key={id}>{title}</Text>
74
                 </TouchableOpacity>
76
                 </TouchableOpacity>
75
               </>
77
               </>
76
             );
78
             );

+ 103
- 82
screens/Drna.js View File

5
   StyleSheet,
5
   StyleSheet,
6
   TouchableOpacity,
6
   TouchableOpacity,
7
   TextInput,
7
   TextInput,
8
+  KeyboardAvoidingView
8
 } from "react-native";
9
 } from "react-native";
9
 import { SelectList } from "react-native-dropdown-select-list";
10
 import { SelectList } from "react-native-dropdown-select-list";
11
+import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view';
12
+import leyesViolaciones from "./data/leyesViolaciones.json"
13
+import Municipalities from "./data/municipalities.json";
14
+
10
 
15
 
11
 const postData = (URL, data) => {
16
 const postData = (URL, data) => {
12
   fetch(URL, {
17
   fetch(URL, {
27
 };
32
 };
28
 
33
 
29
 const Drna = () => {
34
 const Drna = () => {
30
-  const URL = "http://192.168.7.178:5001/complaints/add";
35
+  const URL = "http://172.20.10.2:5001/complaints/add";
31
   const [name, onChangeName] = React.useState(null);
36
   const [name, onChangeName] = React.useState(null);
32
   const [email, onChangeEmail] = React.useState(null);
37
   const [email, onChangeEmail] = React.useState(null);
33
   const [place, onChangePlace] = React.useState(null);
38
   const [place, onChangePlace] = React.useState(null);
34
   const [selected, setSelected] = React.useState("");
39
   const [selected, setSelected] = React.useState("");
35
   const [description, onChangeDescription] = React.useState(null);
40
   const [description, onChangeDescription] = React.useState(null);
36
-  const leyesViolaciones = [
37
-    { key: "1", value: "Descarga de águas contaminadas" },
38
-    { key: "2", value: "Olores objetables-fuertes" },
39
-    { key: "3", value: "Tala y/o poda de árboles" },
40
-    { key: "4", value: "Rellenando un bosque" },
41
-    { key: "5", value: "Rellenando una quebrada" },
42
-    { key: "6", value: "Realizando perforaciones en el suelo" },
43
-    { key: "7", value: "Moviendo con maquinaria tierra de un lugar a otro" },
44
-    { key: "8", value: "Peces y/o otros organismos muertos" },
45
-    { key: "9", value: "Tapando la vegetación" },
46
-    { key: "10", value: "Destrucción de humedal" },
47
-    { key: "11", value: "Construcción sospechosa" },
48
-    { key: "12", value: "Otros (vertederos clandestinos, entre otros)" },
49
-  ];
41
+  const [location, onChangeLocation] = React.useState(null);
42
+  const [municipality, setMunicipality] = React.useState(null);
50
 
43
 
51
   return (
44
   return (
52
-    <View>
53
-      <Text
54
-        style={{
55
-          fontSize: 30,
56
-          textAlign: "center",
57
-          marginTop: "20%",
58
-        }}
59
-      >
60
-        Formulario DRNA
61
-      </Text>
45
+    <KeyboardAwareScrollView>
46
+      <View>
47
+        <Text
48
+          style={{
49
+            fontSize: 30,
50
+            textAlign: "center",
51
+            marginTop: "20%",
52
+          }}
53
+        >
54
+          Formulario DRNA
55
+        </Text>
62
 
56
 
63
-      <TextInput
64
-        style={styles.input}
65
-        value={name}
66
-        onChangeText={onChangeName}
67
-        placeholder="Nombre"
68
-        placeholderTextColor={"grey"}
69
-      />
70
-      <TextInput
71
-        style={styles.input}
72
-        value={email}
73
-        onChangeText={onChangeEmail}
74
-        placeholder="Email"
75
-        placeholderTextColor={"grey"}
76
-      />
77
-      {/* <TextInput
78
-            style={styles.input}
79
-            value={text}
80
-            placeholder="Fecha"
81
-            placeholderTextColor={"grey"}
82
-        /> */}
83
-      <SelectList
84
-        boxStyles={styles.input}
85
-        dropdownStyles={styles.input2}
86
-        data={leyesViolaciones}
87
-        setSelected={setSelected}
88
-        placeholder="Leyes en violacion"
89
-      />
90
-      <TextInput
91
-        style={styles.input}
92
-        value={place}
93
-        onChangeText={onChangePlace}
94
-        placeholder="Lugar de los hechos"
95
-        placeholderTextColor={"grey"}
96
-      />
97
-      <TextInput
98
-        style={styles.input2}
99
-        value={description}
100
-        placeholder="Descripcion de los hechos"
101
-        onChangeText={onChangeDescription}
102
-        placeholderTextColor={"grey"}
103
-      />
104
-      <TouchableOpacity
105
-        style={styles.button}
106
-        onPress={() =>
107
-          postData(URL, {
108
-            name: name,
109
-            email: email,
110
-            place: place,
111
-            complaint_status: "pending",
112
-            complaint_type: selected.valueOf(),
113
-            complaint_description: description,
114
-          })
115
-        }
116
-      >
117
-        <Text style={styles.text}>Someter</Text>
118
-      </TouchableOpacity>
119
-    </View>
57
+        <TextInput
58
+          style={styles.input}
59
+          value={name}
60
+          onChangeText={onChangeName}
61
+          placeholder="Nombre"
62
+          placeholderTextColor={"grey"}
63
+        />
64
+        <TextInput
65
+          style={styles.input}
66
+          value={email}
67
+          onChangeText={onChangeEmail}
68
+          placeholder="Email"
69
+          placeholderTextColor={"grey"}
70
+        />
71
+        {/* <TextInput
72
+              style={styles.input}
73
+              value={text}
74
+              placeholder="Fecha"
75
+              placeholderTextColor={"grey"}
76
+          /> */}
77
+        <SelectList
78
+          boxStyles={styles.input}
79
+          dropdownStyles={styles.input2}
80
+          data={
81
+            leyesViolaciones.map((der) => { 
82
+              return(
83
+                der.value
84
+                )
85
+                })
86
+            }
87
+          setSelected={setSelected}
88
+          placeholder="Leyes en violacion"
89
+        />
90
+        <SelectList
91
+          boxStyles={styles.input}
92
+          dropdownStyles={styles.input2}
93
+          data={
94
+            Municipalities.map((der) => { 
95
+              return(
96
+                der
97
+                )
98
+                })
99
+            }
100
+          setSelected={setMunicipality}
101
+          placeholder="Municipio donde ocurrio"
102
+        />
103
+        <TextInput
104
+          style={styles.input}
105
+          value={location}
106
+          onChangeText={onChangeLocation}
107
+          placeholder="Coordenadas de lo ocurrido"
108
+          placeholderTextColor={"grey"}
109
+        />
110
+        <TextInput
111
+          style={styles.input}
112
+          value={place}
113
+          onChangeText={onChangePlace}
114
+          placeholder="Lugar de los hechos"
115
+          placeholderTextColor={"grey"}
116
+        />
117
+        <TextInput
118
+          style={styles.input2}
119
+          value={description}
120
+          placeholder="Descripcion de los hechos"
121
+          onChangeText={onChangeDescription}
122
+          placeholderTextColor={"grey"}
123
+        />
124
+        <TouchableOpacity
125
+          style={styles.button}
126
+          onPress={() =>
127
+            postData(URL, {
128
+              name: name,
129
+              email: email,
130
+              place: place,
131
+              complaint_status: "pending",
132
+              complaint_type: selected.valueOf(),
133
+              complaint_description: description,
134
+            })
135
+          }
136
+        >
137
+          <Text style={styles.text}>Someter</Text>
138
+        </TouchableOpacity>
139
+      </View>
140
+    </KeyboardAwareScrollView>
120
   );
141
   );
121
 };
142
 };
122
 
143
 

+ 1
- 1
screens/Lista.js View File

14
 
14
 
15
   const getComplaints = async () => {
15
   const getComplaints = async () => {
16
     try {
16
     try {
17
-      const response = await fetch("http://192.168.7.178:5001/complaints/all");
17
+      const response = await fetch("http://172.20.10.2:5001/complaints/all");
18
       const json = await response.json();
18
       const json = await response.json();
19
       setData(json.Complaints);
19
       setData(json.Complaints);
20
     } catch (error) {
20
     } catch (error) {

screens/Button.js → screens/components/Button.js View File


screens/analisis.json → screens/data/analisis.json View File


screens/derechos.json → screens/data/derechos.json View File


screens/leyes.json → screens/data/leyes.json View File

1
 [
1
 [
2
     {
2
     {
3
-        "id": 1,
3
+        "id": 2,
4
         "title": "Ley de Tierras de Puerto Rico",
4
         "title": "Ley de Tierras de Puerto Rico",
5
         "link": "https://bvirtualogp.pr.gov/ogp/BVirtual/LeyesOrganicas/pdf/26-1941.pdf"
5
         "link": "https://bvirtualogp.pr.gov/ogp/BVirtual/LeyesOrganicas/pdf/26-1941.pdf"
6
     },
6
     },
7
     {
7
     {
8
-        "id": 2,
8
+        "id": 3,
9
         "title": "Ley Sobre Politica Publica Ambiental",
9
         "title": "Ley Sobre Politica Publica Ambiental",
10
         "link": "https://www.drna.pr.gov/wp-content/uploads/2019/12/Ley-416-2004-refrencias-LPRA-2018.pdf"
10
         "link": "https://www.drna.pr.gov/wp-content/uploads/2019/12/Ley-416-2004-refrencias-LPRA-2018.pdf"
11
     },
11
     },
12
     {
12
     {
13
-        "id":3,
13
+        "id":4,
14
         "title":"La Carta de la Tierra",
14
         "title":"La Carta de la Tierra",
15
         "link":"https://cartadelatierra.org/lea-la-carta-de-la-tierra/preambulo/"
15
         "link":"https://cartadelatierra.org/lea-la-carta-de-la-tierra/preambulo/"
16
     }
16
     }

screens/leyesPR.json → screens/data/leyesPR.json View File


+ 14
- 0
screens/data/leyesViolaciones.json View File

1
+[
2
+    { "key": 1, "value": "Descarga de águas contaminadas" },
3
+    { "key": 2, "value": "Olores objetables-fuertes" },
4
+    { "key": 3, "value": "Tala y/o poda de árboles" },
5
+    { "key": 4, "value": "Rellenando un bosque" },
6
+    { "key": 5, "value": "Rellenando una quebrada" },
7
+    { "key": 6, "value": "Realizando perforaciones en el suelo" },
8
+    { "key": 7, "value": "Moviendo con maquinaria tierra de un lugar a otro" },
9
+    { "key": 8, "value": "Peces y/o otros organismos muertos" },
10
+    { "key": 9, "value": "Tapando la vegetación" },
11
+    { "key": 10, "value": "Destrucción de humedal" },
12
+    { "key": 11, "value": "Construcción sospechosa" },
13
+    { "key": 12, "value": "Otros (vertederos clandestinos, entre otros)" }
14
+  ]

+ 9
- 0
screens/data/municipalities.json View File

1
+["Adjuntas","Aguada","Aguadilla","Aguas Buenas","Aibonito","Arecibo","Arroyo","Añasco",
2
+"Barceloneta","Barranquitas","Bayamón","Cabo Rojo","Caguas","Camuy","Canóvanas","Carolina",
3
+"Cataño","Cayey","Ceiba","Ciales","Cidra","Coamo","Comerío","Corozal","Culebra","Dorado",
4
+"Fajardo","Florida","Guayama","Guayanilla","Guaynabo","Gurabo","Guánica","Hatillo","Hormigueros",
5
+"Humacao","Isabela","Jayuya","Juana Díaz","Juncos","Lajas","Lares","Las Marías","Las Piedras",
6
+"Loiza","Luquillo","Manatí","Maricao","Maunabo","Mayagüez","Moca","Morovis","Naguabo","Naranjito",
7
+"Orocovis","Patillas","Peñuelas","Ponce","Quebradillas","Rincón","Rio Grande","Sabana Grande"
8
+,"Salinas","San Germán","San Juan","San Lorenzo","San Sebastián","Santa Isabel","Toa Alta",
9
+"Toa Baja","Trujillo Alto","Utuado","Vega Alta","Vega Baja","Vieques","Villalba","Yabucoa","Yauco"]

+ 18
- 0
screens/data/zipcode.json View File

1
+["00601","00602","00603","00604","00605","00606","00610","00611","00611",
2
+"00612","00613","00614","00616","00617","00622","00623","00624","00627","00631",
3
+"00631","00636","00637","00638","00641","00646","00647","00650","00652","00653",
4
+"00656","00659","00660","00662","00664","00667","00669","00670","00674","00676",
5
+"00677","00678","00680","00681","00682","00683","00685","00687","00688","00690",
6
+"00692","00693","00694","00698","00703","00704","00705","00707","00714","00715",
7
+"00716","00717","00718","00719","00720","00721","00721","00723","00725","00726",
8
+"00727","00728","00729","00730","00731","00732","00733","00734","00735","00736",
9
+"00737","00738","00739","00740","00741","00742","00744","00745","00745","00751",
10
+"00754","00757","00765","00766","00767","00769","00771","00772","00773","00775",
11
+"00777","00778","00780","00782","00783","00784","00785","00786","00791","00792",
12
+"00794","00795","00901","00902","00906","00907","00908","00909","00910","00911",
13
+"00912","00913","00914","00915","00916","00917","00919","00920","00921","00923",
14
+"00924","00925","00926","00927","00928","00929","00930","00931","00933","00934",
15
+"00936","00940","00949","00950","00951","00952","00953","00954","00956","00957",
16
+"00958","00959","00960","00961","00962","00963","00965","00966","00968","00969",
17
+"00970","00971","00976","00977","00978","00979","00981","00982","00983","00984",
18
+"00985","00986","00987","00988"]

+ 15
- 2
yarn.lock View File

5348
     "kleur" "^3.0.3"
5348
     "kleur" "^3.0.3"
5349
     "sisteransi" "^1.0.5"
5349
     "sisteransi" "^1.0.5"
5350
 
5350
 
5351
-"prop-types@^15.7.2":
5351
+"prop-types@^15.6.2", "prop-types@^15.7.2":
5352
   "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="
5352
   "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="
5353
   "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
5353
   "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
5354
   "version" "15.8.1"
5354
   "version" "15.8.1"
5491
   "resolved" "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz"
5491
   "resolved" "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz"
5492
   "version" "0.70.3"
5492
   "version" "0.70.3"
5493
 
5493
 
5494
+"react-native-iphone-x-helper@^1.0.3":
5495
+  "integrity" "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg=="
5496
+  "resolved" "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz"
5497
+  "version" "1.3.1"
5498
+
5499
+"react-native-keyboard-aware-scroll-view@^0.9.5":
5500
+  "integrity" "sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA=="
5501
+  "resolved" "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz"
5502
+  "version" "0.9.5"
5503
+  dependencies:
5504
+    "prop-types" "^15.6.2"
5505
+    "react-native-iphone-x-helper" "^1.0.3"
5506
+
5494
 "react-native-pose@^0.9.1":
5507
 "react-native-pose@^0.9.1":
5495
   "integrity" "sha512-JQ17SWXk6Hetlxfj3PO09/jYt5PMwu+MZ9YPcgRp5A//EtYXvfHS+IieXDnCg36wi74yZ80MvYx025//g/tqbQ=="
5508
   "integrity" "sha512-JQ17SWXk6Hetlxfj3PO09/jYt5PMwu+MZ9YPcgRp5A//EtYXvfHS+IieXDnCg36wi74yZ80MvYx025//g/tqbQ=="
5496
   "resolved" "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz"
5509
   "resolved" "https://registry.npmjs.org/react-native-pose/-/react-native-pose-0.9.1.tgz"
5512
     "react-freeze" "^1.0.0"
5525
     "react-freeze" "^1.0.0"
5513
     "warn-once" "^0.1.0"
5526
     "warn-once" "^0.1.0"
5514
 
5527
 
5515
-"react-native@*", "react-native@>=0.54.0", "react-native@0.70.5":
5528
+"react-native@*", "react-native@>=0.42.0", "react-native@>=0.48.4", "react-native@>=0.54.0", "react-native@0.70.5":
5516
   "integrity" "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw=="
5529
   "integrity" "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw=="
5517
   "resolved" "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz"
5530
   "resolved" "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz"
5518
   "version" "0.70.5"
5531
   "version" "0.70.5"