-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
104 lines (95 loc) · 2.32 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import React, { useState, Fragment } from 'react';
import AddUserForm from './forms/AddUserForm';
import EditUserForm from './forms/EditUserForm';
import UserTable from './table/UserTable';
const App = () => {
// Data
const usersData = [
{
id: 1,
name: 'Peter',
email: 'peter@gmail.com',
contact: 989898757,
status: 'Active',
},
{
id: 2,
name: 'Paul',
email: 'paul@gmail.com',
contact: 999898757,
status: 'Inactive',
},
{
id: 3,
name: 'Mary',
email: 'mary@gmail.com',
contact: 979898757,
status: 'Active',
},
];
const initialFormState = {
id: null,
name: '',
email: '',
contact: '',
status: '',
};
// Setting state
const [users, setUsers] = useState(usersData);
const [currentUser, setCurrentUser] = useState(initialFormState);
const [editing, setEditing] = useState(false);
// CRUD operations
const addUser = (user) => {
user.id = users.length + 1;
setUsers([...users, user]);
};
const deleteUser = (id) => {
setEditing(false);
setUsers(users.filter((user) => user.id !== id));
};
const updateUser = (id, updatedUser) => {
setEditing(false);
setUsers(users.map((user) => (user.id === id ? updatedUser : user)));
};
const editRow = (user) => {
setEditing(true);
setCurrentUser({
id: user.id,
name: user.name,
email: user.email,
contact: user.contact,
status: user.status,
});
};
return (
<div className="container">
<h1>Manage Employee</h1>
<div className="flex-row">
<div className="flex-large">
{editing ? (
<Fragment>
<h2>Edit user</h2>
<EditUserForm
editing={editing}
setEditing={setEditing}
currentUser={currentUser}
updateUser={updateUser}
/>
</Fragment>
) : (
<Fragment>
<h2>Add user</h2>
<AddUserForm addUser={addUser} />
</Fragment>
)}
</div>
<br />
<div className="flex-large">
<h2>View users</h2>
<UserTable users={users} editRow={editRow} deleteUser={deleteUser} />
</div>
</div>
</div>
);
};
export default App;