Skip to content

Commit 9d1066b

Browse files
authored
인기게시물에서 isLike여부에 따라서 보여주는 UI를 변경한다. (#896)
* fix: Carousel 의도를 들어낼 수 있는 네이밍으로 수정 * fix: 하트를 누른 경우에만 차보이도록 구현 * feat: aria-label 추가
1 parent 6d18361 commit 9d1066b

File tree

6 files changed

+20
-10
lines changed

6 files changed

+20
-10
lines changed

frontend/src/components/article/PopularArticle/PopularArticle.tsx renamed to frontend/src/components/article/PopularArticleCarousel/PopularArticleCarousel.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import React from 'react';
22
import { useNavigate } from 'react-router-dom';
33

44
import Loading from '@/components/@common/Loading/Loading';
5-
import * as S from '@/components/article/PopularArticle/PopularArticle.styles';
5+
import * as S from '@/components/article/PopularArticleCarousel/PopularArticleCarousel.styles';
66
import PopularArticleItem from '@/components/article/PopularArticleItem/PopularArticleItem';
77
import useGetPopularArticles from '@/hooks/article/useGetPopularArticles';
88
import useCarousel from '@/hooks/common/useCarousel';
99
import { Category } from '@/types/articleResponse';
1010

1111
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
1212

13-
const PopularArticle = () => {
13+
const PopularArticleCarousel = () => {
1414
const { handleCarouselElementRef, handleLeftSlideEvent, handleRightSlideEvent, currentIndex } =
1515
useCarousel();
1616
const { data, isLoading } = useGetPopularArticles();
@@ -59,4 +59,4 @@ const PopularArticle = () => {
5959
) : null;
6060
};
6161

62-
export default PopularArticle;
62+
export default PopularArticleCarousel;

frontend/src/components/article/PopularArticleItem/PopularArticleItem.styles.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AiOutlineEye, AiOutlineMessage, AiFillHeart } from 'react-icons/ai';
1+
import { AiOutlineEye, AiOutlineMessage, AiFillHeart, AiOutlineHeart } from 'react-icons/ai';
22

33
import {
44
UserProfile,
@@ -32,7 +32,13 @@ export const ViewIcon = styled(AiOutlineEye)`
3232
color: ${({ theme }) => theme.colors.BLACK_600};
3333
`;
3434

35-
export const HeartIcon = styled(AiFillHeart)`
35+
export const FillHeartIcon = styled(AiFillHeart)`
36+
font-size: ${({ theme }) => theme.size.SIZE_016};
37+
38+
color: ${({ theme }) => theme.colors.RED_600};
39+
`;
40+
41+
export const EmptyHeartIcon = styled(AiOutlineHeart)`
3642
font-size: ${({ theme }) => theme.size.SIZE_016};
3743
3844
color: ${({ theme }) => theme.colors.RED_600};

frontend/src/components/article/PopularArticleItem/PopularArticleItem.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ const PopularArticleItem = ({
6464
{views.toLocaleString()}
6565
</PopularS.IconContainer>
6666
<PopularS.IconContainer>
67-
<PopularS.HeartIcon aria-label="좋아요수" />
67+
{article.isLike ? (
68+
<PopularS.FillHeartIcon aria-label="좋아요수" />
69+
) : (
70+
<PopularS.EmptyHeartIcon aria-label="좋아요수" />
71+
)}
6872
{likeCount.toLocaleString()}
6973
</PopularS.IconContainer>
7074
</S.ArticleInfoSubBox>

frontend/src/pages/Home/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const ResponsiveInfiniteCardList = React.lazy(
1313
);
1414
const ArticleItem = React.lazy(() => import('@/components/article/ArticleItem/ArticleItem'));
1515
const PopularArticle = React.lazy(
16-
() => import('@/components/article/PopularArticle/PopularArticle'),
16+
() => import('@/components/article/PopularArticleCarousel/PopularArticleCarousel'),
1717
);
1818
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
1919

frontend/src/storybook/Article/PopularArticle.stories.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { rest } from 'msw';
22
import { BrowserRouter } from 'react-router-dom';
33

4-
import PopularArticle from '@/components/article/PopularArticle/PopularArticle';
4+
import PopularArticleCarousel from '@/components/article/PopularArticleCarousel/PopularArticleCarousel';
55
import { HOME_URL } from '@/constants/apiUrl';
66
import { Meta, Story } from '@storybook/react';
77

88
export default {
99
title: 'Article/PopularArticle',
10-
component: PopularArticle,
10+
component: PopularArticleCarousel,
1111
decorators: [
1212
(Story) => (
1313
<BrowserRouter>
@@ -19,7 +19,7 @@ export default {
1919
],
2020
} as Meta;
2121

22-
const Template: Story = (args) => <PopularArticle {...args} />;
22+
const Template: Story = (args) => <PopularArticleCarousel {...args} />;
2323

2424
export const DefaultPopularArticle = Template.bind({});
2525
DefaultPopularArticle.args = {};

0 commit comments

Comments
 (0)