From 8aeaf9ab9884ed6f669633b1ab67c1ae219f7916 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 4 Feb 2024 17:33:39 -0500 Subject: Guestbook refreshes once submitting a message --- src/components/Guestbook.jsx | 40 ++++++++++++++++++++++------------------ src/components/GuestbookForm.jsx | 27 +++++++++++++-------------- src/pages/guestbook.astro | 2 -- src/styles/GuestbookForm.css | 5 +++++ src/styles/cards.css | 2 +- 5 files changed, 41 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/components/Guestbook.jsx b/src/components/Guestbook.jsx index 498bbbe..41d0271 100644 --- a/src/components/Guestbook.jsx +++ b/src/components/Guestbook.jsx @@ -2,6 +2,7 @@ import { h, Component } from 'preact'; import { pb } from '../services/pocketbase'; import { formatDate } from "../util"; import sanitizeHtml from 'sanitize-html'; +import GuestbookForm from "./GuestbookForm.jsx"; class Guestbook extends Component { state = { @@ -25,29 +26,32 @@ class Guestbook extends Component { await this.fetchMessages(); } + refresh = async () => { + await this.fetchMessages(); + } + render() { const { message, error } = this.state; - if (error) { - return

{error}

; - } - - if (!message) { - return

Loading messages...

; - } - return (
-
- {message.map((g) => ( -
-

Message from: {g.name}

- {formatDate(g.created)} -
- {g.website && Website} -
- ))} -
+ + {error ? ( +

{error}

+ ) : !message ? ( +

Loading messages...

+ ) : ( +
+ {message.map((g) => ( +
+

Message from: {g.name}

+ {formatDate(g.created)} +
+ {g.website && Website} +
+ ))} +
+ )}
); } diff --git a/src/components/GuestbookForm.jsx b/src/components/GuestbookForm.jsx index b8fc1c2..841902d 100644 --- a/src/components/GuestbookForm.jsx +++ b/src/components/GuestbookForm.jsx @@ -25,19 +25,18 @@ class GuestbookForm extends Component { } const messageHtml = marked(DOMPurify.sanitize(this.state.message)); - try { - await createMessage({ ...this.state, message: messageHtml }); + await createMessage({ ...this.state, message: messageHtml }); - this.setState({ - name: '', - email: '', - website: '', - message: '', - isMessageSent: true, - errorMessage: '' - }); - } catch (error) { - this.setState({ errorMessage: error.message }); + this.setState({ + name: '', + email: '', + website: '', + message: '', + isMessageSent: true, + }); + + if (this.props.onMessageSent) { + this.props.onMessageSent(); } } @@ -47,7 +46,7 @@ class GuestbookForm extends Component {

Submit Message

- -
diff --git a/src/pages/guestbook.astro b/src/pages/guestbook.astro index 661dff2..9f6ad34 100644 --- a/src/pages/guestbook.astro +++ b/src/pages/guestbook.astro @@ -1,7 +1,6 @@ --- import Page from '../layouts/Page.astro' import "../styles/cards.css"; -import GuestbookForm from '../components/GuestbookForm' import Guestbook from '../components/Guestbook' --- @@ -10,7 +9,6 @@ import Guestbook from '../components/Guestbook'

Welcome to my Guestbook!

Feel free to send a nice message here!

-
diff --git a/src/styles/GuestbookForm.css b/src/styles/GuestbookForm.css index fa31429..e540d42 100644 --- a/src/styles/GuestbookForm.css +++ b/src/styles/GuestbookForm.css @@ -15,6 +15,7 @@ .card form textarea[name="message"] { height: 200px; + resize: none; } .card form button { @@ -31,6 +32,10 @@ transition: ease-in-out 0.2s; } +.card form button:active { + background-color: #243824; +} + .card form label { display: block; } diff --git a/src/styles/cards.css b/src/styles/cards.css index 67a618c..12e5a3f 100644 --- a/src/styles/cards.css +++ b/src/styles/cards.css @@ -27,7 +27,7 @@ /* Mobile view */ @media (max-width: 992px) { - main { + .grid { grid-template-columns: 1fr; } } -- cgit v1.2.3