-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
69 lines (61 loc) · 1.83 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import * as React from 'react';
import {Button, StyleSheet, Text, View} from 'react-native';
import contacts, {compareNames} from './contacts'
import Constants from 'expo-constants';
import ContactForm from './components/ContactForm'
import FlatView from './components/FlatView'
import Row from './components/Row';
import ScrollViewContacts from './components/ScrollViewContacts'
import SectionListView from './components/SectionListView';
export default class App extends React.Component {
state = {
showContacts: true,
contacts: contacts.sort(compareNames)
}
phoneFormat = (input) => {//returns (###) ### ####
input = input.replace(/\D/g,'');
var size = input.length;
if (size>0) {input="("+input}
if (size>3) {input=input.slice(0,4)+") "+input.slice(4,11)}
if (size>6) {input=input.slice(0,9)+" " +input.slice(9)}
return input;
}
toggleContacts = () => {
this.setState(prevState => ({
showContacts: !prevState.showContacts
}))
}
sort = () => {
this.setState(prevState => ({
contacts: [...prevState.contacts].sort(compareNames)
}))
}
addContact = newContact => {
newContact.phone = this.phoneFormat(newContact.phone)
this.setState(prevState => ({
contacts: [...prevState.contacts, newContact]
}))
// Hide form
this.toggleContacts();
}
render() {
return (
<View style={styles.container}>
<Button title="ADD CONTACT" onPress={this.toggleContacts} />
{
this.state.showContacts ?(
<SectionListView contacts = {this.state.contacts} />
): <ContactForm onSubmit = {this.addContact} />
}
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
paddingTop: Constants.statusBarHeight,
paddingHorizontal: 5
},
});