diff --git a/client/src/pages/ExternalDogs.jsx b/client/src/pages/ExternalDogs.jsx index 383ffc6..9baa308 100644 --- a/client/src/pages/ExternalDogs.jsx +++ b/client/src/pages/ExternalDogs.jsx @@ -1,20 +1,24 @@ import { useState, useEffect } from 'react'; -import { useNavigate } from 'react-router-dom'; import { Users, Plus, Search, ExternalLink, Award, Filter } from 'lucide-react'; +import DogForm from '../components/DogForm'; export default function ExternalDogs() { - const [dogs, setDogs] = useState([]); - const [loading, setLoading] = useState(true); - const [search, setSearch] = useState(''); + const [dogs, setDogs] = useState([]); + const [loading, setLoading] = useState(true); + const [search, setSearch] = useState(''); const [sexFilter, setSexFilter] = useState('all'); - const navigate = useNavigate(); + const [showAddModal, setShowAddModal] = useState(false); useEffect(() => { + fetchDogs(); + }, []); + + const fetchDogs = () => { fetch('/api/dogs/external') .then(r => r.json()) .then(data => { setDogs(data); setLoading(false); }) .catch(() => setLoading(false)); - }, []); + }; const filtered = dogs.filter(d => { const matchSearch = d.name.toLowerCase().includes(search.toLowerCase()) || @@ -41,7 +45,7 @@ export default function ExternalDogs() { @@ -75,7 +79,7 @@ export default function ExternalDogs() {

No external dogs yet

Add sires, dams, or ancestors that aren't part of your kennel roster.

- @@ -85,7 +89,7 @@ export default function ExternalDogs() {

♂ Sires ({sires.length})

- {sires.map(dog => )} + {sires.map(dog => )}
)} @@ -93,25 +97,34 @@ export default function ExternalDogs() {

♀ Dams ({dams.length})

- {dams.map(dog => )} + {dams.map(dog => )}
)} )} + + {/* Add External Dog Modal */} + {showAddModal && ( + setShowAddModal(false)} + onSave={() => { fetchDogs(); setShowAddModal(false); }} + /> + )} ); } -function DogCard({ dog, navigate }) { +function DogCard({ dog }) { const photo = dog.photo_urls?.[0]; return (
navigate(`/dogs/${dog.id}`)} + onClick={() => window.location.href = `/dogs/${dog.id}`} role="button" tabIndex={0} - onKeyDown={e => e.key === 'Enter' && navigate(`/dogs/${dog.id}`)} + onKeyDown={e => e.key === 'Enter' && (window.location.href = `/dogs/${dog.id}`)} >
{photo @@ -129,7 +142,7 @@ function DogCard({ dog, navigate }) {
{dog.breed}
{dog.sex === 'male' ? '\u2642 Sire' : '\u2640 Dam'} - {dog.birth_date && <> · {dog.birth_date}} + {dog.birth_date && <>· {dog.birth_date}}
{(dog.sire || dog.dam) && (