diff --git a/app/helpers.jsx b/app/helpers.jsx index eab6d35..d15e9e4 100644 --- a/app/helpers.jsx +++ b/app/helpers.jsx @@ -1,9 +1,9 @@ import styled from 'styled-components'; import Constants from 'expo-constants'; -import { View, Text, Image, TextInput, TouchableOpacity } from 'react-native'; +import { View, Text, LayoutAnimation, Image, TextInput, TouchableOpacity, TouchableNativeFeedback } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; -import { Picker } from '@react-native-picker/picker'; -import { Children } from 'react'; +import { Row } from '../components/Row'; +import { Container } from '../components/Container'; const StatusBarHeight = Constants.statusBarHeight; @@ -117,6 +117,82 @@ export const TextLinkContent = styled.Text` font-size: 15px; ` +const ProviderDropdown = styled.TouchableOpacity` + background-color: #E5E7EB; + padding: 15px 55px 15px 55px; + border-radius: 5px; + font-size: 16px; + height: 60px; + margin-vertical: 3px; + margin-bottom: 10px; +` + +export const providerMenu = { + menuName: 'providerList', + placeholder: 'Select Provider', + iconColor: 'red', + iconName: 'globe-outline', + dropdownList: [ + { label: 'AllTel', value: 'alltel' }, + { label: 'AT&T', value: 'att' }, + { label: 'AT&T MMS', value: 'attmms' }, + { label: 'Boost', value: 'boost' }, + { label: 'Boost MMS', value: 'boostmms' }, + { label: 'C Spire', value: 'c' }, + { label: 'Consumer Cellular', value: 'consumer' }, + { label: 'Cricket', value: 'cricket' }, + { label: 'Cricket MMS', value: 'cricketmms' }, + { label: 'Google Fi', value: 'googlefi' }, + { label: 'Mint Mobile', value: 'mint' }, + { label: 'MetroPCS', value: 'metro' }, + { label: 'Optimum', value: 'optimum' }, + { label: 'Republic Wireless', value: 'republic' }, + { label: 'Spectrum', value: 'spectrum' }, + { label: 'Sprint', value: 'sprint' }, + { label: 'Sprint MMS', value: 'sprintmms' }, + { label: 'Ting', value: 'ting' }, + { label: 'T-Mobile', value: 'tmobile' }, + { label: 'TracFone', value: 'tracfone' }, + { label: 'US Cellular', value: 'us' }, + { label: 'US Cellular MMS', value: 'usmms' }, + { label: 'Verizon', value: 'verizon' }, + { label: 'Verizon MMS', value: 'verizonmms' }, + { label: 'VerizonBiz', value: 'verizonbiz' }, + { label: 'Virgin', value: 'virgin' }, + { label: 'Virgin MMS', value: 'virginmms' }, + ] +} + +const providerConversion = { + alltel: 'AllTel', + att: 'AT&T', + attmms: 'AT&T MMS', + boost: 'Boost', + boostmms: 'Boost MMS', + c: 'C Spire', + consumer: 'Consumer Cellular', + cricket: 'Cricket', + cricketmms: 'Cricket MMS', + googlefi: 'Google Fi', + mint: 'Mint Mobile', + metro: 'MetroPCS', + optimum: 'Optimum', + republic: 'Republic Wireless', + spectrum: 'Spectrum', + sprint: 'Sprint', + sprintmms: 'Sprint MMS', + ting: 'Ting', + tmobile: 'T-Mobile', + tracfone: 'TracFone', + us: 'US Cellular', + usmms: 'US Cellular MMS', + verizon: 'Verizon', + verizonmms: 'Verizon MMS', + verizonbiz: 'VerizonBiz', + virgin: 'Virgin', + virginmms: 'Virgin MMS', +} + export const PageHeader = ({ children }) => { @@ -153,24 +229,58 @@ export const LoginTextInput = ({ ) } -export const LoginDropdownInput = ({ - label, - icon, +export const TestLoginDropDownInput = ({ + label, + isOpen, + setOpen, selectedValue, onValueChange, - items, + menu }) => { return ( - + {label} - - {items.map((provider) => { - return - })} - - + { + // LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) + LayoutAnimation.configureNext(LayoutAnimation.create(200, 'easeInEaseOut', 'opacity')) + isOpen ? setOpen(false) : setOpen(true); + }}> + + + + {selectedValue ? providerConversion[selectedValue] : menu.placeholder} + + + {isOpen && + {menu.dropdownList.map((subMenu, index) => ( + + + {subMenu.label} + + + ))} + } + + ) } \ No newline at end of file diff --git a/app/register.jsx b/app/register.jsx index b07e0fa..7ed4398 100644 --- a/app/register.jsx +++ b/app/register.jsx @@ -6,6 +6,7 @@ import { useFormik } from 'formik'; import { SafeAreaView } from 'react-native-safe-area-context'; import { Ionicons } from '@expo/vector-icons'; import { + providerMenu, PageHeader, StyledContainer, InnerContainer, @@ -17,21 +18,17 @@ import { ButtonText, MessageBox, LoginTextInput, - LoginDropdownInput + LoginDropdownInput, + TestLoginDropDownInput, } from './helpers.jsx'; -const providers = [ - {label: 'Verizon', value: 'verizon'}, - {label: 'AT&T', value: 'att'}, - {label: 'T-Mobile', value: 'tmobile'} -] - - export default function Register() { + const [providerDropdownOpen, setProviderDropdownOpen] = useState(false); const [hidePassword, setHidePassword] = useState(true); const [registerButtonDisabled, setRegisterButtonDisabled] = useState(true); + const formik = useFormik({ initialValues: { firstName: '', @@ -112,11 +109,13 @@ export default function Register() { keyboardType="number-pad" maxLength={14} /> - { + return ( + {children} + ) +}; \ No newline at end of file diff --git a/components/Row.tsx b/components/Row.tsx new file mode 100644 index 0000000..f6b0424 --- /dev/null +++ b/components/Row.tsx @@ -0,0 +1,24 @@ +import { View, ViewStyle } from "react-native"; +import { ReactNode } from "react"; + +interface RowProps { + children?: ReactNode | ReactNode[]; + backgroundColor?: string; + style?: ViewStyle | ViewStyle[]; +} + +export const Row = ({ + children, + backgroundColor, + style, +}: RowProps) => { + return ( + + {children} + + ) +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index efa38ac..61207e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "1.0.1", "dependencies": { "@expo/vector-icons": "^14.0.2", - "@react-native-picker/picker": "2.7.5", "@react-navigation/native": "^6.0.2", "expo": "~51.0.24", "expo-constants": "~16.0.2", @@ -5892,15 +5891,6 @@ "node": ">=8" } }, - "node_modules/@react-native-picker/picker": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.7.5.tgz", - "integrity": "sha512-vhMaOLkXSUb+YKVbukMJToU4g+89VMhBG2U9+cLYF8X8HtFRidrHjohGqT8/OyesDuKIXeLIP+UFYI9Q9CRA9Q==", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/@react-native/assets-registry": { "version": "0.74.85", "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.85.tgz", diff --git a/package.json b/package.json index 8017cf3..20b8c86 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ }, "dependencies": { "@expo/vector-icons": "^14.0.2", - "@react-native-picker/picker": "2.7.5", "@react-navigation/native": "^6.0.2", "expo": "~51.0.24", "expo-constants": "~16.0.2",