Skip to content

Commit ad1ff30

Browse files
committed
Form styling and live placeholder and version, css prefixing update
1 parent 027ed25 commit ad1ff30

File tree

5 files changed

+65
-20
lines changed

5 files changed

+65
-20
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "myapp",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"private": true,
55
"homepage": "https://kroljs.com/LP-Timer",
66
"dependencies": {
@@ -9,7 +9,8 @@
99
"react-icons": "^3.10.0",
1010
"react-router-dom": "^5.2.0",
1111
"react-scripts": "3.4.1",
12-
"gh-pages": "3.0.0"
12+
"gh-pages": "3.0.0",
13+
"whatwg-fetch": "3.2.0"
1314
},
1415
"scripts": {
1516
"start": "react-scripts start",
@@ -22,9 +23,7 @@
2223
},
2324
"browserslist": {
2425
"production": [
25-
">0.2%",
26-
"not dead",
27-
"not op_mini all"
26+
"since 2010"
2827
],
2928
"development": [
3029
"last 1 chrome version",

src/components/utilities/Footer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Link } from 'react-router-dom';
55
function Footer() {
66
return (
77
<footer>
8-
<p>LP Timer PWA v1.2.1 - Copyright 2020 <a href="https://kroljs.com" target="_blank" rel="noopener noreferrer">Jacob Krol</a> - <Link to="/about">Learn More</Link></p>
8+
<p>LP Timer PWA v1.2.2 - Copyright 2020 <a href="https://kroljs.com" target="_blank" rel="noopener noreferrer">Jacob Krol</a> - <Link to="/about">Learn More</Link></p>
99
</footer>
1010
)
1111
}

src/components/utilities/Form.js

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import 'whatwg-fetch';
23
import '../../styles/Form.css';
34

45
class Form extends React.Component {
@@ -8,12 +9,37 @@ class Form extends React.Component {
89
title: '',
910
type: '',
1011
details: '',
12+
detailsPH: '',
1113
disabled: false
1214
};
1315

1416
handleChange = (evt) => {
15-
//update state with changed input value
16-
this.setState({[evt.target.name]: evt.target.value});
17+
//change details placeholder when type is selected
18+
if(evt.target.name === 'type') {
19+
let placeholder = '';
20+
switch(evt.target.value) {
21+
case 'bug':
22+
placeholder = "Please provide as many details as possible, including your device and browser, if possible";
23+
break;
24+
case 'enhancement':
25+
placeholder = "Describe how your feature might work here";
26+
break;
27+
case 'question':
28+
placeholder = "What's up?"
29+
break;
30+
default:
31+
placeholder = "";
32+
break;
33+
}
34+
//update changed input value and details placeholder text
35+
this.setState({
36+
[evt.target.name]: evt.target.value,
37+
detailsPH: placeholder
38+
});
39+
} else {
40+
//update state with changed input value
41+
this.setState({[evt.target.name]: evt.target.value});
42+
}
1743
}
1844

1945
handleSubmit = (evt) => {
@@ -27,13 +53,14 @@ class Form extends React.Component {
2753
headers: {
2854
'Content-Type': 'application/json',
2955
},
30-
body: JSON.stringify(this.state)
56+
credentials: "same-origin",
57+
body: this.getFormData()
3158
};
3259
//define variables needed for user feedback
3360
let status = null;
3461
const errText = "An error has occurred submitting your feedback. Please verify your internet connection and try again later.\n\nError Code: ";
3562
//make api fetch call to server
36-
fetch('https://lp-timer.herokuapp.com/add',requestOptions)
63+
fetch('http://192.168.0.6:5000/add',requestOptions)
3764
//save http status, return response text
3865
.then(res => {
3966
status = res.status;
@@ -58,25 +85,34 @@ class Form extends React.Component {
5885
evt.preventDefault();
5986
}
6087

88+
getFormData = () => {
89+
let data = {...this.state};
90+
delete data.disabled;
91+
data['version'] = "1.2.2";
92+
return JSON.stringify(data);
93+
}
94+
6195
render() {
6296
return (
6397
<form onSubmit={this.handleSubmit}>
64-
<label>Your Name:</label>
98+
<span className="required"> required field</span>
99+
<label className="required">Your Name:</label>
65100
<input type="text" name="name" onChange={this.handleChange} value={this.state.name} disabled={this.state.disabled} required />
66-
<label>Your Email:</label>
101+
<label className="required">Your Email:</label>
67102
<input type="email" name="email" placeholder="[email protected]" onChange={this.handleChange} value={this.state.email} disabled={this.state.disabled} required />
68-
<label>Title of Feedback:</label>
103+
<label className="required">Title of Feedback:</label>
69104
<input type="text" name="title" className="extend" placeholder="Ex: Verbals not working" onChange={this.handleChange} value={this.state.title} disabled={this.state.disabled} required />
70-
<label>Type of Feedback:</label>
105+
<label className="required">Type of Feedback:</label>
71106
<select name="type" onChange={this.handleChange} value={this.state.type} disabled={this.state.disabled} required>
72107
<option value="">Choose one...</option>
73108
<option value="bug">Bug (something isn't working)</option>
74109
<option value="enhancement">Enhancement (new feature or request)</option>
75110
<option value="question">Question (further information is requested)&nbsp;&nbsp;</option>
76111
</select>
77112
<label>Feedback Details:</label>
78-
<textarea name="details" className="extend" placeholder="(optional, but encouraged)" onChange={this.handleChange} value={this.state.details} disabled={this.state.disabled} />
113+
<textarea name="details" className="extend" placeholder={this.state.detailsPH} onChange={this.handleChange} value={this.state.details} disabled={this.state.disabled} />
79114
<input type="submit" disabled={this.state.disabled} />
115+
80116
</form>
81117
)
82118
}

src/styles/Form.css

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
form * {
1+
form > * {
22
display: block;
33
text-align: left;
44
}
@@ -29,3 +29,13 @@ form input[type="submit"]:disabled {
2929
form option {
3030
font-size: 11pt;
3131
}
32+
33+
form .required:not(span)::after {
34+
content: '*';
35+
color: red;
36+
}
37+
38+
form span.required::before {
39+
content: '*';
40+
color: red;
41+
}

0 commit comments

Comments
 (0)