diff --git a/Application/assets/icons/delete_list_button.png b/Application/assets/icons/delete.png similarity index 100% rename from Application/assets/icons/delete_list_button.png rename to Application/assets/icons/delete.png diff --git a/Application/assets/icons/delete_button.png b/Application/assets/icons/delete_button.png old mode 100644 new mode 100755 index 8f141bd..81444d5 Binary files a/Application/assets/icons/delete_button.png and b/Application/assets/icons/delete_button.png differ diff --git a/Application/assets/icons/down_button.png b/Application/assets/icons/down_button.png old mode 100644 new mode 100755 index 54f24c3..89f66ad Binary files a/Application/assets/icons/down_button.png and b/Application/assets/icons/down_button.png differ diff --git a/Application/assets/icons/menu.png b/Application/assets/icons/menu.png new file mode 100644 index 0000000..deaeb9c Binary files /dev/null and b/Application/assets/icons/menu.png differ diff --git a/Application/assets/icons/new.png b/Application/assets/icons/new.png new file mode 100644 index 0000000..2e41ca5 Binary files /dev/null and b/Application/assets/icons/new.png differ diff --git a/Application/assets/icons/new_list_button.png b/Application/assets/icons/new_list_button.png deleted file mode 100644 index b06258a..0000000 Binary files a/Application/assets/icons/new_list_button.png and /dev/null differ diff --git a/Application/assets/icons/up_button.png b/Application/assets/icons/up_button.png old mode 100644 new mode 100755 index 1d18ea2..55d814d Binary files a/Application/assets/icons/up_button.png and b/Application/assets/icons/up_button.png differ diff --git a/Application/navigation/CrowdSourceNavigator.js b/Application/navigation/CrowdSourceNavigator.js deleted file mode 100644 index 8fe0f8a..0000000 --- a/Application/navigation/CrowdSourceNavigator.js +++ /dev/null @@ -1,42 +0,0 @@ -import { createDrawerNavigator, createAppContainer} from 'react-navigation'; -import RegisterItemPage from '../pages/RegisterItemPage' -import CrowdSourcePage from '../pages/CrowdSourcePage'; -import AddItemLocationPage from '../pages/AddItemLocationPage'; -import MapCreatorPage from '../pages/MapCreatorPage' - -/** - * This is the navigator used for accessing - * the crowd sourcing components in the application. - */ -const CrowdSourceNavigator = createDrawerNavigator( - { - MainCrowdSourcePage: { - screen: CrowdSourcePage - }, - RegisterItemPage: { - screen: RegisterItemPage, - navigationOptions:{ - drawerLabel: "Register Items" - } - }, - AddItemLocationPage: { - screen: AddItemLocationPage, - navigationOptions:{ - drawerLabel: "Add Item Locations" - } - }, - MapCreatorPage: { - screen: MapCreatorPage, - navigationOptions: { - drawerLabel: "Map Creator" - } - }, - }, - { - gesturesEnabled: false - } -); - -const App = createAppContainer(CrowdSourceNavigator); - -export default App; \ No newline at end of file diff --git a/Application/navigation/MainDrawerNavigator.js b/Application/navigation/MainDrawerNavigator.js index e68abaf..a3be99e 100644 --- a/Application/navigation/MainDrawerNavigator.js +++ b/Application/navigation/MainDrawerNavigator.js @@ -1,43 +1,94 @@ import { createDrawerNavigator, - createAppContainer + createAppContainer, + createStackNavigator } from 'react-navigation'; import HomePage from '../pages/HomePage'; import YourLists from '../pages/YourLists' import CurrentList from '../pages/CurrentList' +import MapCreatorPage from '../pages/MapCreatorPage' +import SideMenu from './SideMenu'; +import RegisterItemPage from '../pages/RegisterItemPage' +import CrowdSourcePage from '../pages/CrowdSourcePage'; +import AddItemLocationPage from '../pages/AddItemLocationPage'; -import CrowdSourcePage from '../pages/CrowdSourcePage' -import CrowdSourceNavigator from './CrowdSourceNavigator'; -const MainDrawerNavigator = createDrawerNavigator({ +const StackNavigator = createStackNavigator({ Home: { screen: HomePage }, - CrowdSourceOptionPage: { - screen: CrowdSourcePage, - navigationOptions:{ - drawerLabel: "Crowd Source Options" + AddItemLocationPage: { + screen: AddItemLocationPage + }, + MapCreatorPage: { + screen: MapCreatorPage + }, + YourListsPage: { + screen: YourLists + }, + CurrentListPage: { + screen: CurrentList + }, + CrowdSourcePage: { + screen: CrowdSourcePage + }, + RegisterItemPage: { + screen: RegisterItemPage + }, +}, { + //TODO + initialRouteName: "YourListsPage", + headerMode: "none" +}); + +const MainDrawerNavigator = createDrawerNavigator({ + Home: { + screen: StackNavigator, + navigationOptions: { + drawerLabel: "Home" } }, - CrowdSource: { - screen: CrowdSourceNavigator + AddItemLocationPage: { + screen: StackNavigator, + navigationOptions: { + drawerLabel: "Add Item Location" + } + }, + MapCreatorPage: { + screen: StackNavigator, + navigationOptions: { + drawerLabel: "Map a Store" + } }, YourListsPage: { - screen: YourLists, + screen: StackNavigator, navigationOptions: { drawerLabel: "Your Lists" } }, + CrowdSourcePage: { + screen: StackNavigator, + navigationOptions: { + drawerLabel: () => null + } + }, + RegisterItemPage: { + screen: StackNavigator, + navigationOptions: { + drawerLabel: "Register an Item" + } + }, CurrentListPage: { - screen: CurrentList, + screen: StackNavigator, navigationOptions: { drawerLabel: () => null } - } - + }, }, { - gesturesEnabled: false + gesturesEnabled: false, + contentComponent: SideMenu, + drawerWidth: 250 }); const App = createAppContainer(MainDrawerNavigator); diff --git a/Application/navigation/RootNavigation.js b/Application/navigation/RootNavigation.js index 65f3ab2..b55df06 100644 --- a/Application/navigation/RootNavigation.js +++ b/Application/navigation/RootNavigation.js @@ -4,7 +4,6 @@ import LoginPage from "../pages/LoginPage"; import ForgotPasswordPage from "../pages/ForgotPasswordPage"; import VerificationPage from "../pages/VerificationPage"; import RegisterPage from "../pages/RegisterPage"; -import MainDrawerNavigator from './MainDrawerNavigator'; const RootStackNavigator = createStackNavigator( { @@ -12,8 +11,6 @@ const RootStackNavigator = createStackNavigator( ForgotPassword: {screen: ForgotPasswordPage}, Registration: {screen:RegisterPage}, Verification: {screen: VerificationPage}, - - Main: { screen: MainDrawerNavigator, }, }, { headerMode: "none" diff --git a/Application/navigation/SideMenu.js b/Application/navigation/SideMenu.js new file mode 100644 index 0000000..07eb681 --- /dev/null +++ b/Application/navigation/SideMenu.js @@ -0,0 +1,72 @@ +import PropTypes from 'prop-types'; +import React, { Component } from 'react'; +import styles from './SideMenuStyle'; +import { NavigationActions } from 'react-navigation'; +import { ScrollView, Text, View } from 'react-native'; +import firebase from 'firebase'; + +class SideMenu extends Component { + + constructor(props) { + super(props) + } + navigateToScreen = (route) => () => { + if (route == 'Logout') { + firebase.auth().signOut(); + } else { + const navigateAction = NavigationActions.navigate({ + routeName: route + }); + this.props.navigation.dispatch(navigateAction); + } + } + + render() { + return ( + + + + + Your Data + + + {/* + Home + */} + + Your Lists + + + + + + Feedback + + + + Add Item Location + + + Map a Store + + + Register an Item + + + + + + + Sign Out + + + + ); + } +} + +SideMenu.propTypes = { + navigation: PropTypes.object +}; + +export default SideMenu; \ No newline at end of file diff --git a/Application/navigation/SideMenuStyle.js b/Application/navigation/SideMenuStyle.js new file mode 100644 index 0000000..385ef36 --- /dev/null +++ b/Application/navigation/SideMenuStyle.js @@ -0,0 +1,26 @@ +export default { + container: { + paddingTop: 35, + flex: 1, + backgroundColor: 'black', + color: 'white', + }, + navItemStyle: { + padding: 10, + paddingHorizontal: 30 + }, + navSectionStyle: { + backgroundColor: 'white' + }, + sectionHeadingStyle: { + paddingVertical: 10, + paddingHorizontal: 10, + color: 'white', + fontWeight: 'bold', + fontSize: 20 + }, + footerContainer: { + padding: 20, + backgroundColor: 'white', + } +}; \ No newline at end of file diff --git a/Application/package-lock.json b/Application/package-lock.json index e9344fe..2b04f30 100644 --- a/Application/package-lock.json +++ b/Application/package-lock.json @@ -1365,11 +1365,43 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.17.tgz", "integrity": "sha512-p/sGgiPaathCfOtqu2fx5Mu1bcjuP8ALFg4xpGgNkcin7LwRyzUKniEHBKdcE1RPsenq5JVPIpMTJSygLboygQ==" }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, "@types/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.5.3.tgz", "integrity": "sha512-Jugo5V/1bS0fRhy2z8+cUAHEyWOATaz4rbyLVvcFs7+dXp5HfwpEwzF1Q11bB10ApUqHf+yTauxI0UXQDwGrbA==" }, + "@types/react": { + "version": "16.9.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", + "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-native": { + "version": "0.60.22", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.60.22.tgz", + "integrity": "sha512-LTXMKEyGA+x4kadmjujX6yAgpcaZutJ01lC7zLJWCULaZg7Qw5/3iOQpwIJRUcOc+a8A2RR7rSxplehVf9IuhA==", + "requires": { + "@types/prop-types": "*", + "@types/react": "*" + } + }, + "@types/react-native-vector-icons": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.4.tgz", + "integrity": "sha512-G1Iry/8i23IPjZzNjydMt/WcjV+T1Xu3cTXDwSsP9lpKu0bA0j+c7AACJ1aIka8HVnWXS41NoZnKkHImO0SMkw==", + "requires": { + "@types/react": "*", + "@types/react-native": "*" + } + }, "@types/uuid-js": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/uuid-js/-/uuid-js-0.7.2.tgz", @@ -1412,6 +1444,27 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", @@ -1838,6 +1891,11 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, "async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", @@ -2305,6 +2363,15 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2318,6 +2385,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -2521,6 +2597,11 @@ } } }, + "csstype": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" + }, "debounce": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", @@ -2557,6 +2638,16 @@ "is-obj": "^1.0.0" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -2624,6 +2715,14 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, "dom-storage": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", @@ -2644,6 +2743,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.170.tgz", "integrity": "sha512-vDEhHcwMogbM+WXDTh6ZktwQOqLcK7MJdCOM99UZXRI1ct3Y9OeYYJTrIHnswzv+IYwoXNj0Furh+K6UotcHVg==" }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2697,11 +2801,264 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", + "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "requires": { + "type-fest": "^0.5.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -3256,6 +3613,21 @@ "time-stamp": "^1.0.0" } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "faye-websocket": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", @@ -3341,6 +3713,14 @@ "escape-string-regexp": "^1.0.5" } }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -3446,6 +3826,21 @@ "@firebase/util": "0.2.27" } }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, "fontfaceobserver": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", @@ -3983,6 +4378,11 @@ } } }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, "gauge": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", @@ -4659,6 +5059,11 @@ "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, "image-size": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", @@ -4971,6 +5376,11 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -4979,6 +5389,11 @@ "jsonify": "~0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", @@ -5024,6 +5439,15 @@ "invert-kv": "^1.0.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -5752,6 +6176,11 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -5951,6 +6380,11 @@ "mimic-fn": "^1.0.0" } }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==" + }, "opn": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", @@ -5980,6 +6414,19 @@ } } }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, "options": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", @@ -6062,6 +6509,21 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -6280,6 +6742,11 @@ "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-1.0.1.tgz", "integrity": "sha1-/mOhfal3YRq+98uAJssalVP9g1k=" }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -6309,6 +6776,11 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -6366,6 +6838,11 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, "qs": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", @@ -6654,6 +7131,31 @@ "resolved": "https://registry.npmjs.org/react-native-double-tap/-/react-native-double-tap-1.0.1.tgz", "integrity": "sha512-tDhQv9IJnH4a5tPTQVBzvwcDo9+6a1Xz1JiFbqfORk9fkBnopx+1T2ZdTIUAvgxuUgdbwIRWnSzE3IIkmkeKFw==" }, + "react-native-elements": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-1.2.7.tgz", + "integrity": "sha512-0S+0R1cbItl15i64qrkWnyMztwpw60d0SUsZGVDKRAMf0Jvq9Clgyh/MzxJx2sr42mbedQP1sg5Et4fZM7Fp1w==", + "requires": { + "@types/react-native-vector-icons": "^6.4.4", + "color": "^3.1.0", + "deepmerge": "^3.1.0", + "hoist-non-react-statics": "^3.1.0", + "opencollective-postinstall": "^2.0.0", + "prop-types": "^15.7.2", + "react-native-ratings": "^6.3.0", + "react-native-status-bar-height": "^2.2.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } + } + } + }, "react-native-gesture-handler": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.2.1.tgz", @@ -6686,6 +7188,15 @@ "lodash.isequal": "^4.5.0" } }, + "react-native-ratings": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/react-native-ratings/-/react-native-ratings-6.5.0.tgz", + "integrity": "sha512-YMcfQ7UQCmXGEc/WPlukHSHs5yvckTwjq5fTRk1FG8gaO7fZCNygEUGPuw4Dbvvp3IlsCUn0bOQd63RYsb7NDQ==", + "requires": { + "lodash": "^4.17.4", + "prop-types": "^15.5.10" + } + }, "react-native-reanimated": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.0.1.tgz", @@ -6712,6 +7223,11 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.22.tgz", "integrity": "sha512-kSyAt0AeVU6N7ZonfV6dP6iZF8B7Bce+tk3eujXhzBGsLg0VSLnU7uE9VqJF0xdQrHR91ZjGgVMieo/8df9KTA==" }, + "react-native-status-bar-height": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-native-status-bar-height/-/react-native-status-bar-height-2.4.0.tgz", + "integrity": "sha512-pWvZFlyIHiuxLugLioq97vXiaGSovFXEyxt76wQtbq0gxv4dGXMPqYow46UmpwOgeJpBhqL1E0EKxnfJRrFz5w==" + }, "react-native-svg": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.4.0.tgz", @@ -6958,6 +7474,11 @@ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==" }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, "regexpu-core": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", @@ -7097,6 +7618,14 @@ "rx-lite": "*" } }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -7557,11 +8086,36 @@ "plist": "^3.0.1" } }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, "slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", @@ -7852,6 +8406,11 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -7865,6 +8424,47 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", @@ -7881,6 +8481,11 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", @@ -7986,6 +8591,19 @@ "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", "integrity": "sha1-GuOlDnxguz3vd06scHrLynO7w/8=" }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -8153,6 +8771,14 @@ } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -8192,6 +8818,11 @@ "resolved": "https://registry.npmjs.org/uuid-js/-/uuid-js-0.7.5.tgz", "integrity": "sha1-bIhtAqU9LUDc8l2RoXC0p7JblNA=" }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -8308,6 +8939,14 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, "write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", diff --git a/Application/package.json b/Application/package.json index 4a1c5d5..4771b03 100644 --- a/Application/package.json +++ b/Application/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "braces": "^3.0.2", + "eslint": "^6.6.0", "expo": "^33.0.0", "expo-asset": "^6.0.0", "firebase": "^6.5.0", @@ -18,6 +19,7 @@ "react-native-dialog": "^5.6.0", "react-native-dialog-input": "^1.0.7", "react-native-double-tap": "^1.0.1", + "react-native-elements": "^1.2.7", "react-native-picker-select": "^6.3.3", "react-native-swipeout": "^2.3.6", "react-native-web": "^0.11.4", diff --git a/Application/pages/AddItemLocationPage.js b/Application/pages/AddItemLocationPage.js index a128d98..ace3765 100644 --- a/Application/pages/AddItemLocationPage.js +++ b/Application/pages/AddItemLocationPage.js @@ -13,7 +13,9 @@ import { styles, pickerStyle } from "./pageStyles/AddItemLocationPageStyle"; import globalStyles from "./pageStyles/GlobalStyle"; import * as firebase from "firebase"; import RNPickerSelect from 'react-native-picker-select'; -import {departments} from "../DepartmentList"; +import { departments } from "../DepartmentList"; +import Menu from "./Menu" + const keyboardVerticalOffset = Platform.OS === 'ios' ? (Header.HEIGHT + 64) : (Header.HEIGHT + 0) const keyboardAvoidingViewBehavior = Platform.OS === 'ios' ? "padding" : "padding" @@ -51,9 +53,9 @@ class AddItemLocationPage extends Component { * * @returns None */ - handleChangeDepartment(val){ - if (val != DEFAULT_ITEM_DEPARTMENT){ - this.setState({itemDepartment: val}); + handleChangeDepartment(val) { + if (val != DEFAULT_ITEM_DEPARTMENT) { + this.setState({ itemDepartment: val }); } } @@ -72,32 +74,32 @@ class AddItemLocationPage extends Component { * @returns Boolean True if the user has inputted a value for all valid fields * False otherwise */ - checkReqFields(){ + checkReqFields() { // Check the generic name field if (this.state.genericName == DEFAULT_GENERIC_NAME) { Alert.alert("Please enter a value for the generic name."); - return(false); + return (false); } // Check the department field if (this.state.itemDepartment == DEFAULT_ITEM_DEPARTMENT) { Alert.alert("Please enter a value for the item department."); - return(false); + return (false); } // Check the store name field if (this.state.storeName == DEFAULT_STORE_NAME) { Alert.alert("Please enter a value for the store name."); - return(false); + return (false); } // Check the aisle number field if (this.state.aisleNum == DEFAULT_AISLE_NUM) { Alert.alert("Please enter a value for the aisle number."); - return(false); + return (false); } - return(true); + return (true); } /** @@ -113,7 +115,7 @@ class AddItemLocationPage extends Component { handleAdd = () => { var retVal = this.checkReqFields(); - if (retVal == true){ + if (retVal == true) { firebase.database().ref("/itemLocs").push({ genericName: this.state.genericName, specificName: this.state.specificName, @@ -139,7 +141,7 @@ class AddItemLocationPage extends Component { * @returns None */ renderRequiredText(bodyText, reqText = "(*)") { - return( + return ( {bodyText} @@ -151,102 +153,105 @@ class AddItemLocationPage extends Component { render() { return ( - - - Add Item Location: - + + this.props.navigation.toggleDrawer()} /> + + + Add Item Location: + - - - - {this.renderRequiredText("Generic Name: ")} - + + + + {this.renderRequiredText("Generic Name: ")} + - - this.setState({ genericName })} - value={this.state.genericName} - /> + + this.setState({ genericName })} + value={this.state.genericName} + /> + - - - - Specific Name: - + + + Specific Name: + - - this.setState({ specificName })} - value={this.state.specificName} - /> + + this.setState({ specificName })} + value={this.state.specificName} + /> + - - - - {this.renderRequiredText("Item Department: ")} - + + + {this.renderRequiredText("Item Department: ")} + - - this.setState({itemDepartment})}/> + + this.setState({ itemDepartment })} /> + - - - - {this.renderRequiredText("Store Name: ")} - + + + {this.renderRequiredText("Store Name: ")} + - - this.setState({ storeName })} - value={this.state.storeName} - /> + + this.setState({ storeName })} + value={this.state.storeName} + /> + - - - - {this.renderRequiredText("Aisle Number: ")} - + + + {this.renderRequiredText("Aisle Number: ")} + - - this.setState({ aisleNum })} - value={this.state.aisleNum} - /> + + this.setState({ aisleNum })} + value={this.state.aisleNum} + /> + + + + + + {"Add Item Location"} + - - - - - {"Add Item Location"} - - + ); } } diff --git a/Application/pages/CrowdSourcePage.js b/Application/pages/CrowdSourcePage.js index 1230b02..2f45ea8 100644 --- a/Application/pages/CrowdSourcePage.js +++ b/Application/pages/CrowdSourcePage.js @@ -1,6 +1,7 @@ import React, { Component } from "react"; import { Text, View, TouchableHighlight } from "react-native"; import globalStyles from "../pages/pageStyles/GlobalStyle"; +import Menu from "./Menu" // Text to display on the buttons const REGISTER_ITEM = "Go To Register Item Page" @@ -40,6 +41,8 @@ class CrowdSourcePage extends Component { render() { return ( + + this.props.navigation.toggleDrawer()} /> Crowd Sourcing Options @@ -61,10 +64,11 @@ class CrowdSourcePage extends Component { style={[globalStyles.defaultButtonContainer, globalStyles.defaultButton]} onPress={() => this.buttonListener(MAP_CREATOR)} > - {MAP_CREATOR} - + {MAP_CREATOR} + + ); } } diff --git a/Application/pages/CurrentList.js b/Application/pages/CurrentList.js index 8e23b32..826a103 100644 --- a/Application/pages/CurrentList.js +++ b/Application/pages/CurrentList.js @@ -6,6 +6,8 @@ import Swipeout from "react-native-swipeout"; import DoubleClick from "react-native-double-tap"; import lf from "./ListFunctions"; import Dialog from "react-native-dialog"; +import Menu from "./Menu" + class CurrentList extends Component { constructor(props) { @@ -56,7 +58,7 @@ class CurrentList extends Component { style={{ height: 1, width: "100%", - backgroundColor: "#607D8B" + backgroundColor: "#00b5ec" }} /> ); @@ -113,7 +115,7 @@ class CurrentList extends Component { flexDirection: "column" }} > - + ), backgroundColor: "red", @@ -124,75 +126,70 @@ class CurrentList extends Component { } ]; return ( - - + + this.props.navigation.toggleDrawer()} /> + - {/* Take out once stack is fixed */} - - {"<<--Your Lists"} - - {/* Temporary to quickly add items */} - - Add Item - - Enter the name of the items you would like to add to the list: + {/* Temporary to quickly add items */} + + Add Item + + Enter the name of the items you would like to add to the list: - this.DELETEME3(name)} - > - - - + this.DELETEME3(name)} + > + + + - - {this.state.listName}: {this.state.listItems.length} Items + + {this.state.listName}: {this.state.listItems.length} Items - this.setState({ isDialogVisible: true })} - > - - - index.name} - ItemSeparatorComponent={this.FlatListItemSeparator} - renderItem={({ item, index }) => ( - - this.handleSwipeOpen(rowId, direction) - } - close={this.state.activeRow !== index} - > - { - this.HandleDoubleTapItem(index); - }} - delay={500} + this.setState({ isDialogVisible: true })} + > + + + index.name} + ItemSeparatorComponent={this.FlatListItemSeparator} + renderItem={({ item, index }) => ( + + this.handleSwipeOpen(rowId, direction) + } + close={this.state.activeRow !== index} > - - {this.GenerateListItem(item)} - - - - )} - /> - + { + this.HandleDoubleTapItem(index); + }} + delay={500} + > + + {this.GenerateListItem(item)} + + + + )} + /> + + ); } } diff --git a/Application/pages/HomePage.js b/Application/pages/HomePage.js index bab114d..11f29f1 100644 --- a/Application/pages/HomePage.js +++ b/Application/pages/HomePage.js @@ -2,13 +2,14 @@ import React, { Component } from "react"; import { Text, View, TouchableHighlight } from "react-native"; import globalStyles from "../pages/pageStyles/GlobalStyle"; import firebase from 'firebase'; +import Menu from "./Menu" const YOUR_LISTS = "Go To Your Lists Page" const CROWD_SOURCE = "Go To Crowd Source Page" const SIGN_OUT = "Sign Out" const YOUR_LISTS_PAGE = "YourListsPage"; -const CROWD_SOURCE_PAGE = "CrowdSourceOptionPage"; +const CROWD_SOURCE_PAGE = "CrowdSourcePage"; @@ -30,31 +31,34 @@ class HomePage extends Component { render() { return ( - - HomePage - - this.buttonListener(CROWD_SOURCE)} - > - {CROWD_SOURCE} - - - this.buttonListener(YOUR_LISTS)} - > - {YOUR_LISTS} - - - this.buttonListener(SIGN_OUT)} - > - {SIGN_OUT} - - - + + this.props.navigation.toggleDrawer()} /> + + HomePage + + this.buttonListener(CROWD_SOURCE)} + > + {CROWD_SOURCE} + + + this.buttonListener(YOUR_LISTS)} + > + {YOUR_LISTS} + + + this.buttonListener(SIGN_OUT)} + > + {SIGN_OUT} + + + + ); } } diff --git a/Application/pages/LoginPage.js b/Application/pages/LoginPage.js index 6b75649..364456b 100644 --- a/Application/pages/LoginPage.js +++ b/Application/pages/LoginPage.js @@ -17,7 +17,8 @@ const LOGIN = "Login"; const REGISTER = "Register"; const FORGOT_PASSWORD = "Forgot your password?"; -const HOMEPAGE = "Home"; +const HOMEPAGE = "YourListsPage"; +// TODO const HOMEPAGE = "Home"; const REGISTERPAGE = "Registration"; const FORGOTPASSWORDPAGE = "ForgotPassword"; const VERIFICATIONPAGE = "Verification"; diff --git a/Application/pages/MapCreatorPage.js b/Application/pages/MapCreatorPage.js index f6fe701..d4c6fbc 100644 --- a/Application/pages/MapCreatorPage.js +++ b/Application/pages/MapCreatorPage.js @@ -1,17 +1,19 @@ import React, { Component } from "react"; -import { Text, - View, - TouchableHighlight, - TextInput, - Picker, - Alert, - Image} from "react-native"; -import {styles, pickerStyle} from "../pages/pageStyles/MapCreatorPageStyle"; +import { + Text, + View, + TouchableHighlight, + TextInput, + Alert, + Image +} from "react-native"; +import { styles, pickerStyle } from "../pages/pageStyles/MapCreatorPageStyle"; import globalStyles from "../pages/pageStyles/GlobalStyle"; -import {departments} from "../DepartmentList" +import { departments } from "../DepartmentList" import { FlatList } from "react-native-gesture-handler"; import * as firebase from "firebase"; import RNPickerSelect from 'react-native-picker-select'; +import Menu from "./Menu" class MapCreatorPage extends Component { constructor(props) { @@ -36,7 +38,7 @@ class MapCreatorPage extends Component { @input None @return void */ - componentDidMount () { + componentDidMount() { this._mounted = true this.setState({ arrayHolder: [...this.currDepartments] }) @@ -49,7 +51,7 @@ class MapCreatorPage extends Component { @input None @return void */ - componentWillUnmount () { + componentWillUnmount() { this._mounted = false } @@ -63,10 +65,10 @@ class MapCreatorPage extends Component { */ addDepartment = () => { // Add a department to the list - this.currDepartments.push({depName : departments[0].label}); + this.currDepartments.push({ depName: departments[0].label }); // Rerender the screen - this.setState({ arrayHolder: [...this.currDepartments]}) + this.setState({ arrayHolder: [...this.currDepartments] }) } /* @@ -81,7 +83,7 @@ class MapCreatorPage extends Component { var deps = [] // Copy the current list of departments - for (var i = 0; i < this.currDepartments.length; i++){ + for (var i = 0; i < this.currDepartments.length; i++) { deps.push(this.currDepartments[i]["depName"]) } @@ -105,7 +107,7 @@ class MapCreatorPage extends Component { updateDepartment(ind, newVal) { this.currDepartments[ind]["depName"] = newVal - this.setState({ arrayHolder: [...this.currDepartments]}) + this.setState({ arrayHolder: [...this.currDepartments] }) } /* @@ -126,7 +128,7 @@ class MapCreatorPage extends Component { this.currDepartments[ind]["depName"] = aboveItem // Update the state - this.setState({ arrayHolder: [...this.currDepartments]}) + this.setState({ arrayHolder: [...this.currDepartments] }) } } @@ -142,7 +144,7 @@ class MapCreatorPage extends Component { this.currDepartments.splice(ind, 1) // Update the state - this.setState({ arrayHolder: [...this.currDepartments]}) + this.setState({ arrayHolder: [...this.currDepartments] }) } /* @@ -163,7 +165,7 @@ class MapCreatorPage extends Component { this.currDepartments[ind]["depName"] = belowItem // Update the state - this.setState({ arrayHolder: [...this.currDepartments]}) + this.setState({ arrayHolder: [...this.currDepartments] }) } } @@ -183,8 +185,8 @@ class MapCreatorPage extends Component { {/* Render the up button */} this.upButtonPressed(index)}> + style={[styles.listButton, { backgroundColor: "black" }]} + onPress={() => this.upButtonPressed(index)}> {/* Place buffers between elements to make it clearer */} - + {/* Render the delete button */} this.delButtonPressed(index)}> + style={[styles.listButton, { backgroundColor: "black" }]} + onPress={() => this.delButtonPressed(index)}> - + {/* Render the down button */} this.downButtonPressed(index)}> + style={[styles.listButton, { backgroundColor: "black" }]} + onPress={() => this.downButtonPressed(index)}> - + {/* Render the department picker */} - + this.updateDepartment(index, val)}/> + onValueChange={(val) => this.updateDepartment(index, val)} /> {/* Add a blank area at the end of the row to allow for scrolling */} - + {/* */} ) } render() { return ( - - - - Map Creator: - - - - Store Name: + + this.props.navigation.toggleDrawer()} /> + + + + Map Creator + + + + + Store Name: + + + + this.setState({ storeName })} + value={this.state.storeName} + /> + + + - - this.setState({storeName})} - value={this.state.storeName} + + this.renderListElem(index)} + keyExtractor={(item, index) => index.toString()} /> - - - - - this.renderListElem(index)} - keyExtractor={(item, index) => index.toString()} - /> - - - - - - - {"Add Department"} - - - - - - - {"Save Map"} - + + + + + {"Add Department"} + + + + + + + {"Save Map"} + + + - - + ); } } diff --git a/Application/pages/Menu.js b/Application/pages/Menu.js new file mode 100644 index 0000000..838c452 --- /dev/null +++ b/Application/pages/Menu.js @@ -0,0 +1,31 @@ +import React, { Component } from "react"; +import { + TouchableOpacity, + View, + Image +} from "react-native"; + +class Menu extends Component { + constructor(props) { + super(props); + } + + render() { + return ( + + { this.props.toggleAction() }} + > + + + + + ); + } +} +export default Menu; \ No newline at end of file diff --git a/Application/pages/RegisterItemPage.js b/Application/pages/RegisterItemPage.js index 79a92eb..7594d1f 100644 --- a/Application/pages/RegisterItemPage.js +++ b/Application/pages/RegisterItemPage.js @@ -9,11 +9,12 @@ import { KeyboardAvoidingView, } from "react-native"; import { Header } from "react-navigation" -import {styles, pickerStyle} from "./pageStyles/RegisterItemPageStyle"; +import { styles, pickerStyle } from "./pageStyles/RegisterItemPageStyle"; import globalStyles from "../pages/pageStyles/GlobalStyle"; import * as firebase from "firebase"; import RNPickerSelect from 'react-native-picker-select'; -import {units} from "../UnitList"; +import { units } from "../UnitList"; +import Menu from "./Menu" const keyboardVerticalOffset = Platform.OS === 'ios' ? (Header.HEIGHT + 64) : (Header.HEIGHT + 0) const keyboardAvoidingViewBehavior = Platform.OS === 'ios' ? "padding" : "padding" @@ -51,7 +52,7 @@ class RegisterItemPage extends Component { var retVal = this.checkReqFields(); // Saves the data if all required fields have values - if (retVal){ + if (retVal) { firebase.database().ref("/items").push({ genericName: this.state.genericName, specificName: this.state.specificName, @@ -78,20 +79,20 @@ class RegisterItemPage extends Component { * @returns Boolean True if the user has inputted a value for all valid fields * False otherwise */ - checkReqFields(){ + checkReqFields() { // Check the generic name field if (this.state.genericName == DEFAULT_GENERIC_NAME) { Alert.alert("Please enter a value for the generic name."); - return(false); + return (false); } // Check the specific name field if (this.state.specificName == DEFAULT_SPECIFIC_NAME) { Alert.alert("Please enter a value for the specific name."); - return(false); + return (false); } - return(true); + return (true); } /** * @@ -107,7 +108,7 @@ class RegisterItemPage extends Component { * @returns None */ renderRequiredText(bodyText, reqText = "(*)") { - return( + return ( {bodyText} @@ -119,83 +120,86 @@ class RegisterItemPage extends Component { render() { return ( - - - Register Item: - - - - - - {this.renderRequiredText("Generic Name: ")} - - - - this.setState({ genericName })} - value={this.state.genericName} - /> - + + this.props.navigation.toggleDrawer()} /> + + + Register Item - - - {this.renderRequiredText("Specific Name: ")} + + + + {this.renderRequiredText("Generic Name: ")} + + + + this.setState({ genericName })} + value={this.state.genericName} + /> + - - this.setState({ specificName })} - value={this.state.specificName} - /> + + + {this.renderRequiredText("Specific Name: ")} + + + + this.setState({ specificName })} + value={this.state.specificName} + /> + - - - - - Size: - - - - this.setState({ size })} - value={this.state.size} - /> - - - - - this.setState({ sizeUnit })}/> + + + Size: + + + + this.setState({ size })} + value={this.state.size} + /> + + + + + + this.setState({ sizeUnit })} /> + + + + + + {"Register Item"} + - - - - - {"Register Item"} - - + ); } } diff --git a/Application/pages/RegisterPage.js b/Application/pages/RegisterPage.js index 8fe1036..220acd5 100644 --- a/Application/pages/RegisterPage.js +++ b/Application/pages/RegisterPage.js @@ -8,7 +8,6 @@ import { Alert, ActivityIndicator } from "react-native"; -import * as Firebase from "firebase"; import styles from "./pageStyles/RegisterPageStyle"; import FirebaseUser from "../components/FirebaseUser" diff --git a/Application/pages/VerificationPage.js b/Application/pages/VerificationPage.js index 2007490..3cac699 100644 --- a/Application/pages/VerificationPage.js +++ b/Application/pages/VerificationPage.js @@ -12,7 +12,8 @@ import FirebaseUser from "../components/FirebaseUser"; const VERIFY = "Verify"; const RESEND = "Resend confirmation link"; -const HOMEPAGE = "Home"; +const HOMEPAGE = "YourListsPage"; +// TODO const HOMEPAGE = "Home"; export default class VerificationPage extends Component { constructor(props) { diff --git a/Application/pages/YourLists.js b/Application/pages/YourLists.js index 2a9ec53..c892d19 100644 --- a/Application/pages/YourLists.js +++ b/Application/pages/YourLists.js @@ -10,6 +10,7 @@ import styles from "./pageStyles/YourListsPageStyle"; import Swipeout from "react-native-swipeout"; import Dialog from "react-native-dialog"; import lf from "./ListFunctions"; +import Menu from "./Menu" class YourLists extends Component { @@ -53,7 +54,7 @@ class YourLists extends Component { style={{ height: 1, width: "100%", - backgroundColor: "#607D8B" + backgroundColor: "#00b5ec" }} /> ); @@ -93,7 +94,7 @@ class YourLists extends Component { flexDirection: "column" }} > - + ), backgroundColor: "red", @@ -103,53 +104,56 @@ class YourLists extends Component { } ]; return ( - - - New List - - Enter the name of the new list you would like to create: + + this.props.navigation.toggleDrawer()} /> + + + New List + + Enter the name of the new list you would like to create: - this.setNewListName(name)} - > - - - - - All Lists: {this.state.listTitles.length} - - this.setState({ isDialogVisible: true })} - > - - - index.toString()} - ItemSeparatorComponent={this.FlatListItemSeparator} - renderItem={({ item, index }) => ( - - this.handleSwipeOpen(rowId, direction) - } - close={this.state.activeRow !== index} - > - - {item} - - - )} - /> - + this.setNewListName(name)} + > + + + + + All Lists: {this.state.listTitles.length} + + this.setState({ isDialogVisible: true })} + > + + + index.toString()} + ItemSeparatorComponent={this.FlatListItemSeparator} + renderItem={({ item, index }) => ( + + this.handleSwipeOpen(rowId, direction) + } + close={this.state.activeRow !== index} + > + + {item} + + + )} + /> + + ); } } diff --git a/Application/pages/pageStyles/AddItemLocationPageStyle.js b/Application/pages/pageStyles/AddItemLocationPageStyle.js index 5c42bcc..8cec8a8 100644 --- a/Application/pages/pageStyles/AddItemLocationPageStyle.js +++ b/Application/pages/pageStyles/AddItemLocationPageStyle.js @@ -1,4 +1,6 @@ -import { StyleSheet } from 'react-native'; +import { + StyleSheet +} from 'react-native'; export const styles = StyleSheet.create({ container: { @@ -40,15 +42,15 @@ export const styles = StyleSheet.create({ color: 'black', }, textInput: { - height: 40, - borderColor: "gray", + height: 40, + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", }, picker: { - height: 40, - borderColor: "gray", + height: 40, + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", @@ -57,22 +59,23 @@ export const styles = StyleSheet.create({ flexDirection: "row", padding: 20, }, -}); +}); export const pickerStyle = { inputAndroid: { height: 40, - borderColor: "gray", + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", paddingRight: 30, - }, + }, inputIOS: { - borderColor: "gray", + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", + height: 40, paddingRight: 30, }, -}; \ No newline at end of file +}; \ No newline at end of file diff --git a/Application/pages/pageStyles/MapCreatorPageStyle.js b/Application/pages/pageStyles/MapCreatorPageStyle.js index ca602f9..a80d692 100644 --- a/Application/pages/pageStyles/MapCreatorPageStyle.js +++ b/Application/pages/pageStyles/MapCreatorPageStyle.js @@ -1,15 +1,17 @@ -import { StyleSheet, - Dimensions } from 'react-native'; +import { + StyleSheet, + Dimensions +} from 'react-native'; -export const styles = StyleSheet.create({ +export const styles = StyleSheet.create({ mainContainer: { flex: 1, - backgroundColor: "white", + backgroundColor: "black", borderLeftWidth: Dimensions.get('window').width / 20, borderRightWidth: Dimensions.get('window').width / 20, - borderColor: "white", + borderColor: "black", justifyContent: "space-between", - }, + }, topContainer: { flex: 2, }, @@ -24,47 +26,45 @@ export const styles = StyleSheet.create({ }, textContainer: { flex: 1, - backgroundColor: "white", + backgroundColor: "black", justifyContent: "center", alignItems: "center", }, outerButtonContainer: { flex: 1, - backgroundColor: "white", + backgroundColor: "black", justifyContent: "center", alignItems: "center", }, pickerContainer: { flex: 1, - backgroundColor: "white", + backgroundColor: "black", justifyContent: "center", alignItems: "stretch", }, midContainer: { - flex: 8, - borderWidth: 5, - borderColor: "black", + flex: 8 }, botContainer: { flex: 2, }, textInput: { - height: 40, - borderColor: "black", + height: 40, + borderColor: "white", borderWidth: 1, justifyContent: "flex-end", - color: "black", + color: "white", }, blackHeaderText: { - color: 'black', + color: 'white', fontSize: 20, }, picker: { - height: 40, - borderColor: "black", - borderWidth: 1, - justifyContent: "flex-end", - color: "black", + height: 40, + borderColor: "white", + borderWidth: 1, + justifyContent: "flex-end", + color: "white", }, buttonContainer: { height: 45, @@ -88,21 +88,23 @@ export const styles = StyleSheet.create({ image: { flex: 1, } -}); +}); export const pickerStyle = { inputAndroid: { - borderColor: "white", + borderColor: "black", borderWidth: 1, justifyContent: "flex-end", color: "black", paddingRight: 30, + height: 40 }, inputIOS: { - borderColor: "gray", + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", - color: "black", + color: "white", paddingRight: 30, + height: 40 }, -}; \ No newline at end of file +}; \ No newline at end of file diff --git a/Application/pages/pageStyles/RegisterItemPageStyle.js b/Application/pages/pageStyles/RegisterItemPageStyle.js index 2ecc9ec..2aa4dba 100644 --- a/Application/pages/pageStyles/RegisterItemPageStyle.js +++ b/Application/pages/pageStyles/RegisterItemPageStyle.js @@ -2,7 +2,7 @@ import { StyleSheet } from 'react-native'; -export const styles = StyleSheet.create({ +export const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', @@ -53,18 +53,21 @@ export const styles = StyleSheet.create({ export const pickerStyle = { inputAndroid: { - height: 40, - borderColor: "gray", + height: 30, + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", paddingRight: 30, - }, + width: 80 + }, inputIOS: { - borderColor: "gray", + height: 30, + borderColor: "gray", borderWidth: 1, justifyContent: "flex-end", color: "white", paddingRight: 30, + width: 80 }, -}; \ No newline at end of file +}; \ No newline at end of file diff --git a/Application/pages/pageStyles/YourListsPageStyle.js b/Application/pages/pageStyles/YourListsPageStyle.js index 97540c0..b29609f 100644 --- a/Application/pages/pageStyles/YourListsPageStyle.js +++ b/Application/pages/pageStyles/YourListsPageStyle.js @@ -14,14 +14,10 @@ export default StyleSheet.create({ }, pageTitle: { padding: 30, - paddingTop: 50, paddingBottom: 15, color: "white", fontSize: 30 }, - flatList: { - paddingTop: 30 - }, item: { padding: 10, fontSize: 18,