diff options
| author | Anjana Vakil <contact@anjana.dev> | 2025-08-27 08:49:51 -0500 |
|---|---|---|
| committer | Anjana Vakil <contact@anjana.dev> | 2025-08-27 08:49:51 -0500 |
| commit | 0a413efa2f7784f176d1ee533d9b404b423713a4 (patch) | |
| tree | 553ef412d606bfbc456374f0b12af3f2311da23e /frontend/src | |
| parent | 1dc4f56425209d4ce1d7bb78ec8b5e7b5a755a82 (diff) | |
exercise
Diffstat (limited to 'frontend/src')
| -rw-r--r-- | frontend/src/components/Events.js | 13 | ||||
| -rw-r--r-- | frontend/src/components/Forms.js | 17 | ||||
| -rw-r--r-- | frontend/src/components/Header.js | 18 | ||||
| -rw-r--r-- | frontend/src/style.css | 1 |
4 files changed, 24 insertions, 25 deletions
diff --git a/frontend/src/components/Events.js b/frontend/src/components/Events.js index bca948a..a84d291 100644 --- a/frontend/src/components/Events.js +++ b/frontend/src/components/Events.js @@ -1,6 +1,6 @@ import { Calendar } from './Icons.js'; -const API_URL = '/api'; +const API_URL = import.meta.env.VITE_API_URL; const loadEventsData = async () => { try { @@ -30,11 +30,11 @@ export const EventModal = (event) => { action="${API_URL}/events/${event.id}/rsvp" method="POST" > - <label for="rsvp-name">Name: - <input type="text" class="rsvp-name" name="name" required /> + <label for="rsvp-name-${event.id}">Name: + <input type="text" id="rsvp-name-${event.id}" class="rsvp-name" name="name" required /> </label> - <label for="rsvp-email">Email: - <input type="email" class="rsvp-email" name="email" required /> + <label for="rsvp-email-${event.id}">Email: + <input type="email" id="rsvp-email-${event.id}" class="rsvp-email" name="email" required /> </label> </form> @@ -69,8 +69,7 @@ export const EventCard = (e) => { </main> <footer> <span> - ${e.rsvps.length} - ${isPast ? 'went' : 'going'} + ${e.rsvps?.length || 0} ${isPast ? 'went' : 'going'} </span> ${!isPast ? ` <button role="button" data-target="modal-event-${e.id}" class="toggle-modal" diff --git a/frontend/src/components/Forms.js b/frontend/src/components/Forms.js index 9a0c087..8e9160f 100644 --- a/frontend/src/components/Forms.js +++ b/frontend/src/components/Forms.js @@ -46,15 +46,14 @@ export const setupForm = (form) => { }); if (btn) { - const inputs = form.querySelectorAll('input.rsvp-email'); - for (let input of inputs) { - input.addEventListener('input', () => { - if (!btn.textContent.startsWith('Submit')) { - btn.removeAttribute('disabled'); - btn.textContent = 'Submit RSVP'; - } - }); - } + const emailInput = form.querySelector('input.rsvp-email'); + emailInput.addEventListener('input', () => { + if (btn.textContent !== 'Submit RSVP') { + btn.removeAttribute('disabled'); + btn.textContent = 'Submit RSVP'; + } + }); + } }; diff --git a/frontend/src/components/Header.js b/frontend/src/components/Header.js index cd50ba6..f28f8e5 100644 --- a/frontend/src/components/Header.js +++ b/frontend/src/components/Header.js @@ -14,16 +14,16 @@ const Header = ` </header> `; -export function setupThemeToggle() { - const toggleDarkMode = () => { - const doc = document.documentElement; - const currentTheme = doc.getAttribute('data-theme'); - if (currentTheme === 'dark') { - doc.setAttribute('data-theme', 'lite'); - } else if (currentTheme === 'light') { - doc.setAttribute('data-theme', 'dark'); - } +const toggleDarkMode = () => { + const doc = document.documentElement; + const currentTheme = doc.getAttribute('data-theme'); + if (currentTheme === 'dark') { + doc.setAttribute('data-theme', 'lite'); + } else if (currentTheme === 'light') { + doc.setAttribute('data-theme', 'dark'); } +} +export function setupThemeToggle() { const themeToggle = document.getElementById(themeToggleId); themeToggle.addEventListener('click', toggleDarkMode); diff --git a/frontend/src/style.css b/frontend/src/style.css index c7ca91e..f13008b 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -69,6 +69,7 @@ article.event main { article.event img { object-fit: cover; width: 100%; + height: 200px; display: block; padding: 0px; margin: 0px; |
