Skip to content

Commit 3135abf

Browse files
authored
Substitui onClick e useNavigate por <Link> para melhorar acessibilidade (#128)
* replaced navigate in favour of html link and added card hover * fixed lint warnings
1 parent 7079f13 commit 3135abf

File tree

3 files changed

+47
-55
lines changed

3 files changed

+47
-55
lines changed

src/pages/Home/Home.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useCallback, useContext, useMemo, useState } from 'react';
2-
import { useNavigate, useSearchParams } from 'react-router-dom';
2+
import { useSearchParams } from 'react-router-dom';
33
import { RotateCw, LogOutIcon, PlusIcon } from 'lucide-react';
44
import qs from 'qs';
55

@@ -48,7 +48,6 @@ const Home = () => {
4848
},
4949
[]
5050
);
51-
const navigate = useNavigate();
5251

5352
const clearSearch = useCallback(() => {
5453
setSearch('');
@@ -161,7 +160,6 @@ const Home = () => {
161160
setFilterData((prev) => ({ ...prev, search: v }));
162161
setSearch(v);
163162
}}
164-
onSelectShelter={(s) => navigate(`/abrigo/${s.id}`)}
165163
hasMoreItems={hasMore}
166164
onOpenModal={() => setOpenModal(true)}
167165
onClearSearch={clearSearch}

src/pages/Home/components/ShelterListItem/ShelterListItem.tsx

Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useCallback, useMemo } from 'react';
22
import { format } from 'date-fns';
3-
import { useNavigate } from 'react-router-dom';
3+
import { Link } from 'react-router-dom';
44
import { ChevronRight } from 'lucide-react';
55

66
import {
@@ -20,9 +20,8 @@ import { IUseSheltersDataSupplyData } from '@/hooks/useShelters/types';
2020
import { ShelterSupplyCategoryRow } from '../ShelterSupplyCategoryRow';
2121

2222
const ShelterListItem = (props: IShelterListItemProps) => {
23-
const { data, onClick } = props;
23+
const { data } = props;
2424
const { capacity, shelteredPeople } = data;
25-
const navigate = useNavigate();
2625
const { availability, className: availabilityClassName } =
2726
useMemo<IShelterAvailabilityProps>(
2827
() => getAvailabilityProps(capacity, shelteredPeople),
@@ -42,53 +41,52 @@ const ShelterListItem = (props: IShelterListItemProps) => {
4241
}, []);
4342

4443
return (
45-
<div className="flex flex-col p-4 w-full border-2 border-border rounded-md gap-1 relative">
46-
<Button size="sm" variant="ghost" className="absolute top-4 right-4">
47-
<ChevronRight
48-
className="h-5 w-5"
49-
onClick={() => navigate(`/abrigo/${data.id}`)}
50-
/>
51-
</Button>
52-
<div
53-
className="flex items-center gap-1"
54-
onClick={() => navigate(`/abrigo/${data.id}`)}
55-
>
56-
<h3
57-
className="font-semibold text-lg hover:cursor-pointer hover:text-slate-500"
58-
onClick={onClick}
44+
<Link to={`/abrigo/${data.id}`} target="_blank">
45+
<div className="flex flex-col p-4 w-full border-2 border-border rounded-md gap-1 relative hover:bg-accent">
46+
<Button size="sm" variant="ghost" className="absolute top-4 right-4">
47+
<ChevronRight
48+
className="h-5 w-5"
49+
/>
50+
</Button>
51+
<div
52+
className="flex items-center gap-1"
5953
>
60-
{data.name}
61-
</h3>
62-
{data.verified && <VerifiedBadge />}
54+
<h3
55+
className="font-semibold text-lg hover:cursor-pointer hover:text-slate-500"
56+
>
57+
{data.name}
58+
</h3>
59+
{data.verified && <VerifiedBadge />}
60+
</div>
61+
<h6 className={cn('font-semibold text-md', availabilityClassName)}>
62+
{availability}
63+
</h6>
64+
<h6 className="text-muted-foreground text-sm md:text-lg font-medium">
65+
{data.address}
66+
</h6>
67+
{data.shelterSupplies.length > 0 && (
68+
<>
69+
<ShelterSupplyCategoryRow
70+
title="Necessita voluntários:"
71+
tags={tags.NeedVolunteers.map(getChipProps)}
72+
/>
73+
<ShelterSupplyCategoryRow
74+
title="Necessita urgente doações de:"
75+
tags={tags.NeedDonations.map(getChipProps)}
76+
/>
77+
<ShelterSupplyCategoryRow
78+
title="Sobrando para doações:"
79+
tags={tags.RemainingSupplies.map(getChipProps)}
80+
/>
81+
</>
82+
)}
83+
{data.updatedAt && (
84+
<small className="text-sm md:text-md font-light text-muted-foreground mt-2">
85+
Atualizado em {format(data.updatedAt, 'dd/MM/yyyy HH:mm')}
86+
</small>
87+
)}
6388
</div>
64-
<h6 className={cn('font-semibold text-md', availabilityClassName)}>
65-
{availability}
66-
</h6>
67-
<h6 className="text-muted-foreground text-sm md:text-lg font-medium">
68-
{data.address}
69-
</h6>
70-
{data.shelterSupplies.length > 0 && (
71-
<>
72-
<ShelterSupplyCategoryRow
73-
title="Necessita voluntários:"
74-
tags={tags.NeedVolunteers.map(getChipProps)}
75-
/>
76-
<ShelterSupplyCategoryRow
77-
title="Necessita urgente doações de:"
78-
tags={tags.NeedDonations.map(getChipProps)}
79-
/>
80-
<ShelterSupplyCategoryRow
81-
title="Sobrando para doações:"
82-
tags={tags.RemainingSupplies.map(getChipProps)}
83-
/>
84-
</>
85-
)}
86-
{data.updatedAt && (
87-
<small className="text-sm md:text-md font-light text-muted-foreground mt-2">
88-
Atualizado em {format(data.updatedAt, 'dd/MM/yyyy HH:mm')}
89-
</small>
90-
)}
91-
</div>
89+
</Link>
9290
);
9391
};
9492

src/pages/Home/components/ShelterListView/ShelterListView.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ const ShelterListView = React.forwardRef<HTMLDivElement, IShelterListViewProps>(
2222
hasMoreItems = false,
2323
onSearchValueChange,
2424
onFetchMoreData,
25-
onSelectShelter,
2625
className = '',
2726
onOpenModal,
2827
onClearSearch,
@@ -83,9 +82,6 @@ const ShelterListView = React.forwardRef<HTMLDivElement, IShelterListViewProps>(
8382
<ShelterListItem
8483
key={idx}
8584
data={s}
86-
onClick={() =>
87-
onSelectShelter ? onSelectShelter(s) : undefined
88-
}
8985
/>
9086
))}
9187
{hasMoreItems ? (

0 commit comments

Comments
 (0)