aboutsummaryrefslogtreecommitdiff
path: root/src/components/GuestbookForm.jsx
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2024-02-04 12:30:02 -0500
committerAndrew Lee <alee14498@protonmail.com>2024-02-04 12:30:02 -0500
commit71093a4c88ed41bd51a3387f1e91c7ee05f2203c (patch)
treed45138d7e3a7afc52c11fff65f77f3d040f2ffe8 /src/components/GuestbookForm.jsx
parent27153476429c4a85630dedcf940a50089ea02151 (diff)
downloadpersonal-website-71093a4c88ed41bd51a3387f1e91c7ee05f2203c.tar.gz
personal-website-71093a4c88ed41bd51a3387f1e91c7ee05f2203c.tar.bz2
personal-website-71093a4c88ed41bd51a3387f1e91c7ee05f2203c.zip
Almost finished implementing guestbook; More consistency in cards
Diffstat (limited to 'src/components/GuestbookForm.jsx')
-rw-r--r--src/components/GuestbookForm.jsx56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/components/GuestbookForm.jsx b/src/components/GuestbookForm.jsx
new file mode 100644
index 0000000..aae5e10
--- /dev/null
+++ b/src/components/GuestbookForm.jsx
@@ -0,0 +1,56 @@
+import { h, Component } from 'preact';
+import { createMessage } from '../services/GuestbookService';
+
+class GuestbookForm extends Component {
+ state = {
+ name: '',
+ email: '',
+ website: '',
+ message: ''
+ };
+
+ handleChange = (e) => {
+ this.setState({ [e.target.name]: e.target.value });
+ }
+
+ handleSubmit = async (e) => {
+ e.preventDefault();
+ await createMessage(this.state);
+ this.setState({
+ name: '',
+ email: '',
+ website: '',
+ message: ''
+ });
+ }
+
+ render() {
+ return (
+ <form class="card" onSubmit={this.handleSubmit}>
+ <h2>Submit Message</h2>
+ <label>
+ Name<br />
+ <input type="text" name="name" placeholder="Name" required value={this.state.name} onChange={this.handleChange} />
+ </label>
+ <br />
+ <label>
+ Email Address<br />
+ <input type="email" name="email" placeholder="Email Address (optional)" value={this.state.email} onChange={this.handleChange} />
+ </label>
+ <br />
+ <label>
+ Your Website<br />
+ <input type="url" name="website" placeholder="https://example.com (optional)" value={this.state.website} onChange={this.handleChange} />
+ </label>
+ <br />
+ <label>
+ Message<br />
+ <textarea name="message" placeholder="Message (Up to 1000 characters)" required value={this.state.message} onChange={this.handleChange}></textarea>
+ </label>
+ <button type="submit">Send</button>
+ </form>
+ );
+ }
+}
+
+export default GuestbookForm;