Skip to content

Commit 6b376a9

Browse files
committed
resume update
1 parent 943479c commit 6b376a9

File tree

7 files changed

+174
-81
lines changed

7 files changed

+174
-81
lines changed

index.html

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
2+
<!DOCTYPE html>
3+
<html lang="en">
4+
<head>
5+
<meta charset="UTF-8" />
6+
<title>Contact</title>
7+
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
8+
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
9+
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
10+
</head>
11+
<body>
12+
13+
<!-- A little help for the Netlify post-processing bots -->
14+
<form name="contact" netlify netlify-honeypot="bot-field" hidden>
15+
<input type="text" name="name" />
16+
<input type="email" name="email" />
17+
<textarea name="message"></textarea>
18+
</form>
19+
20+
<div id="root"></div>
21+
22+
<script type="text/babel">
23+
24+
const encode = (data) => {
25+
return Object.keys(data)
26+
.map(key => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
27+
.join("&");
28+
}
29+
30+
class ContactForm extends React.Component {
31+
constructor(props) {
32+
super(props);
33+
this.state = { name: "", email: "", message: "" };
34+
}
35+
36+
/* Here’s the juicy bit for posting the form submission */
37+
38+
handleSubmit = e => {
39+
fetch("/", {
40+
method: "POST",
41+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
42+
body: encode({ "form-name": "contact", ...this.state })
43+
})
44+
.then(() => alert("Success!"))
45+
.catch(error => alert(error));
46+
47+
e.preventDefault();
48+
};
49+
50+
handleChange = e => this.setState({ [e.target.name]: e.target.value });
51+
52+
render() {
53+
const { name, email, message } = this.state;
54+
return (
55+
<form onSubmit={this.handleSubmit}>
56+
<p>
57+
<label>
58+
Your Name: <input type="text" name="name" value={name} onChange={this.handleChange} />
59+
</label>
60+
</p>
61+
<p>
62+
<label>
63+
Your Email: <input type="email" name="email" value={email} onChange={this.handleChange} />
64+
</label>
65+
</p>
66+
<p>
67+
<label>
68+
Message: <textarea name="message" value={message} onChange={this.handleChange} />
69+
</label>
70+
</p>
71+
<p>
72+
<button type="submit">Send</button>
73+
</p>
74+
</form>
75+
);
76+
}
77+
}
78+
79+
ReactDOM.render(<ContactForm />, document.getElementById("root"));
80+
81+
</script>
82+
</body>
83+
</html>
161 KB
Binary file not shown.
-203 KB
Binary file not shown.

src/components/Contacts/Contacts.js

Lines changed: 77 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -167,84 +167,84 @@ function Contacts() {
167167
<h1 style={{ color: theme.primary }}>Contacts</h1>
168168
<div className='contacts-body'>
169169
<div className='contacts-form'>
170-
{/* <form onSubmit={handleContactForm}>
171-
<div className='input-container'>
172-
<label htmlFor='Name' className={classes.label}>
173-
Name
174-
</label>
175-
<input
176-
placeholder='Jon Christie'
177-
value={name}
178-
onChange={(e) => setName(e.target.value)}
179-
type='text'
180-
name='Name'
181-
className={`form-input ${classes.input}`}
182-
/>
183-
</div>
184-
<div className='input-container'>
185-
<label
186-
htmlFor='Email'
187-
className={classes.label}
188-
>
189-
Email
190-
</label>
191-
<input
192-
placeholder='jon@jonchristie.io'
193-
value={email}
194-
onChange={(e) => setEmail(e.target.value)}
195-
type='email'
196-
name='Email'
197-
className={`form-input ${classes.input}`}
198-
/>
199-
</div>
200-
<div className='input-container'>
201-
<label
202-
htmlFor='Message'
203-
className={classes.label}
204-
>
205-
Message
206-
</label>
207-
<textarea
208-
placeholder='Type your message....'
209-
value={message}
210-
onChange={(e) => setMessage(e.target.value)}
211-
type='text'
212-
name='Message'
213-
className={`form-message ${classes.message}`}
214-
/>
215-
</div>
170+
<form onSubmit={handleContactForm}>
171+
<div className='input-container'>
172+
<label htmlFor='Name' className={classes.label}>
173+
Name
174+
</label>
175+
<input
176+
placeholder='Jon Christie'
177+
value={name}
178+
onChange={(e) => setName(e.target.value)}
179+
type='text'
180+
name='Name'
181+
className={`form-input ${classes.input}`}
182+
/>
183+
</div>
184+
<div className='input-container'>
185+
<label
186+
htmlFor='Email'
187+
className={classes.label}
188+
>
189+
Email
190+
</label>
191+
<input
192+
placeholder='jon@jonchristie.io'
193+
value={email}
194+
onChange={(e) => setEmail(e.target.value)}
195+
type='email'
196+
name='Email'
197+
className={`form-input ${classes.input}`}
198+
/>
199+
</div>
200+
<div className='input-container'>
201+
<label
202+
htmlFor='Message'
203+
className={classes.label}
204+
>
205+
Message
206+
</label>
207+
<textarea
208+
placeholder='Type your message....'
209+
value={message}
210+
onChange={(e) => setMessage(e.target.value)}
211+
type='text'
212+
name='Message'
213+
className={`form-message ${classes.message}`}
214+
/>
215+
</div>
216216

217-
<div className='submit-btn'>
218-
<button
219-
type='submit'
220-
className={classes.submitBtn}
221-
>
222-
<p>{!success ? 'Send' : 'Sent'}</p>
223-
<div className='submit-icon'>
224-
<AiOutlineSend
225-
className='send-icon'
226-
style={{
227-
animation: !success
228-
? 'initial'
229-
: 'fly 0.8s linear both',
230-
position: success
231-
? 'absolute'
232-
: 'initial',
233-
}}
234-
/>
235-
<AiOutlineCheckCircle
236-
className='success-icon'
237-
style={{
238-
display: !success
239-
? 'none'
240-
: 'inline-flex',
241-
opacity: !success ? '0' : '1',
242-
}}
243-
/>
244-
</div>
245-
</button>
246-
</div>
247-
</form> */}
217+
<div className='submit-btn'>
218+
<button
219+
type='submit'
220+
className={classes.submitBtn}
221+
>
222+
<p>{!success ? 'Send' : 'Sent'}</p>
223+
<div className='submit-icon'>
224+
<AiOutlineSend
225+
className='send-icon'
226+
style={{
227+
animation: !success
228+
? 'initial'
229+
: 'fly 0.8s linear both',
230+
position: success
231+
? 'absolute'
232+
: 'initial',
233+
}}
234+
/>
235+
<AiOutlineCheckCircle
236+
className='success-icon'
237+
style={{
238+
display: !success
239+
? 'none'
240+
: 'inline-flex',
241+
opacity: !success ? '0' : '1',
242+
}}
243+
/>
244+
</div>
245+
</button>
246+
</div>
247+
</form>
248248
<Snackbar
249249
anchorOrigin={{
250250
vertical: 'top',

src/components/Services/Services.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import React, { useContext } from 'react';
2-
32
import { ThemeContext } from '../../contexts/ThemeContext';
4-
53
import { servicesData } from '../../data/servicesData';
6-
74
import './Services.css'
85
import SingleService from './SingleService/SingleService';
96

@@ -18,7 +15,6 @@ function Services() {
1815
<h1 style={{ color: theme.primary }}>Services</h1>
1916
</div>
2017
<div className="services-body">
21-
2218
<div className="services-bodycontainer">
2319
{servicesData.map(services => (
2420
<SingleService

src/data/projectsData.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ import p2h from '../assets/svg/projects/p2h.svg'
66
import keys from '../assets/svg/projects/keys.png'
77

88
export const projectsData = [
9+
{
10+
id: 1,
11+
projectName: 'Gladis & Co',
12+
projectDesc: 'One of several projects I was hired as a solo developer to upgrade websites for clients. A unique situation where my client bought out his companyand needed his website (WordpPress) completely remade. Used advanced Javascript methods and CSS selectors that could find a needle in a haystack to override the entire site. Certain tasks, such as changing the order of images and their links, required server-side rendering that helped make the end product exceed my client\'s expectations.',
13+
tags: ['WordPress', 'GoDaddy', 'JS', 'Jest', 'Bulma'],
14+
code: '',
15+
demo: 'www.gladisandco.com',
16+
image: zero
17+
},
918
{
1019
id: 1,
1120
projectName: 'Super Pantry Buddy',

src/data/responseData.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const responseData = {
2+
name: `string`,
3+
email: `string`,
4+
message: `string`,
5+
}

0 commit comments

Comments
 (0)