Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] - touroot v1.2.0 #486

Merged
merged 116 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
9567c54
[Feature] - 프로젝트 환경 세팅 (#4)
jinyoung234 Jul 11, 2024
f61f3a0
docs: pull request 템플릿 추가
jinyoung234 Jul 12, 2024
74b2c26
Merge branch 'main' of https://github.com/woowacourse-teams/2024-tour…
jinyoung234 Jul 12, 2024
88b5338
chore: package.json 내 broswerslist 변경
jinyoung234 Jul 12, 2024
eae8ec9
[Feature] - stylelint 설정 (#51)
jinyoung234 Jul 18, 2024
3f2bcac
[Feature] - 여행기 상세 기능 구현 (#42)
jinyoung234 Jul 18, 2024
0dbb436
[Feature] - codeowner 및 자동 할당 설정 (#59)
jinyoung234 Jul 18, 2024
fed47b2
[Feature] - 테스트 환경 설정 추가 (#58)
jinyoung234 Jul 18, 2024
5a5ec69
[Feature] Storybook 배포 설정 (#61)
jinyoung234 Jul 19, 2024
5a43f26
[Feature] - react-router-dom 설정 (#71)
simorimi Jul 20, 2024
e3cfe6f
[Feature] - 서비스 Foundation 설정 (#76)
jinyoung234 Jul 21, 2024
8a362a8
[Feature] - msw 설정 (#73)
jinyoung234 Jul 21, 2024
acffcbd
[Feature] - 여행기 등록 페이지에 필요한 공통 컴포넌트 구현(지니) (#91)
jinyoung234 Jul 23, 2024
64a8dd3
[Feature] - 여행기 등록 페이지에 필요한 공통 컴포넌트 구현(시모) (#90)
simorimi Jul 23, 2024
51f1960
[Feature] - 여행기 등록 페이지에 필요한 공통 컴포넌트 구현(리버) (#89)
0jenn0 Jul 23, 2024
75347fd
[Feature] - 여행기 등록 기능 구현 (#115)
jinyoung234 Jul 24, 2024
e0111a4
[Feature] - 로그인 페이지 구현 (#80)
simorimi Jul 25, 2024
74b3847
[Feature] - 여행 계획 등록 페이지 구현 (#125)
jinyoung234 Jul 25, 2024
db8593b
[Feature] - 메인 페이지 구현 (#78)
0jenn0 Jul 25, 2024
85269c7
[Feature] - 여행 계획 상세조회 페이지 구현 (#127)
simorimi Jul 25, 2024
c6fab4d
refactor: 네이밍 변경에 따른 수정 및 불 필요한 코드 삭제
jinyoung234 Jul 25, 2024
95beeb7
refactor: 스타일링 조정 및 stylelint에 맞게 순서 수정
jinyoung234 Jul 25, 2024
9d6d932
refactor(storybook): decorator 수정
jinyoung234 Jul 25, 2024
19b2343
chore(createPathElement): 설정
jinyoung234 Jul 25, 2024
97c834b
Merge branch 'develop/fe' of https://github.com/woowacourse-teams/202…
jinyoung234 Jul 25, 2024
a6298db
[Feature] - 2차 스프린트 QA 진행 (#141)
jinyoung234 Jul 29, 2024
246056e
Merge branch 'develop/fe' of https://github.com/woowacourse-teams/202…
jinyoung234 Jul 29, 2024
5b6067b
chore: chromatic 배포 yml 파일 추가 (#117)
jinyoung234 Jul 29, 2024
8940c34
[Feature] - CI 설정 (#66)
jinyoung234 Jul 29, 2024
41385c7
[Feature] - 3주차 스프린트 리팩토링 (#145)
0jenn0 Jul 30, 2024
9266413
fix: ci 에러 해결 (#150)
jinyoung234 Jul 30, 2024
ff4d4fa
[Feature] - sentry 세팅하기 (#168)
0jenn0 Jul 31, 2024
9c9bc7d
[Feature] - 2차 스프린트 리팩토링 (#164)
simorimi Jul 31, 2024
b687dc1
[Feature] - 전환 기능 구현 (#146)
jinyoung234 Aug 1, 2024
94ab563
[Feature] - 인가 처리 추가 (#176)
jinyoung234 Aug 1, 2024
e3c65c7
[Feature] - 상수화 작업 진행 (#188)
jinyoung234 Aug 2, 2024
95db77a
[Feature] - 타입 구조 변경 (#191)
jinyoung234 Aug 3, 2024
0c072c4
[Feature] - 여행기 무한 스크롤 관련 테스트 추가 (#166)
jinyoung234 Aug 3, 2024
342a052
[Feature] - 모달 컴포넌트 구현 (#200)
jinyoung234 Aug 3, 2024
23e8051
fix: 여행 전환 후 다른 페이지에서 다시 등록 페이지로 접근 시 데이터가 남아있는 문제 해결 (#207)
jinyoung234 Aug 5, 2024
db5c393
[Fix] - 등록 페이지에서 제목과 여행 장소 설명란 한글 입력시 제한 길이보다 1자 더 입력되는 문제 해결 (#210)
simorimi Aug 5, 2024
1cb90cf
[Feature] - Login 명세 변경 (#181)
jinyoung234 Aug 6, 2024
0e67f83
[Feature] - 메인페이지 skeleton 작업 (#221)
0jenn0 Aug 7, 2024
ac2e4f9
[Feature] - Drawer가 열려져있는 경우 화면 스크롤 안되도록 수정 (#222)
0jenn0 Aug 7, 2024
5c7eba9
[Feature] - user 컨텍스트에 access token만 담도록 수정 & 로그인/로그아웃 버튼 수정 (#224)
0jenn0 Aug 7, 2024
68144ab
[Feature] - 여행 계획 등록 기능 변경 & 테스트 추가 (#225)
jinyoung234 Aug 7, 2024
7c5363f
[Feature] - 여행 공유하기 기능 구현 (#226)
jinyoung234 Aug 7, 2024
0cc61e9
[Feature] - 여행 계획 & 여행기 삭제 기능 구현 (#229)
simorimi Aug 7, 2024
2eb318a
[Feature] - 마이 페이지 구현 (#236)
0jenn0 Aug 7, 2024
3405bb4
[Fix] - 3차 스프린트 QA 반영(리버) (#255)
0jenn0 Aug 8, 2024
0a3c6f8
[Fix] - 3차 스프린트 QA 반영(지니) (#256)
jinyoung234 Aug 8, 2024
ddc1cb0
[Feature] - sentry 초기 설정 변경 & 소스맵 설정 추가 (#261)
jinyoung234 Aug 8, 2024
2a66bba
[Fix] - 3차 스프린트 QA 반영(시모) (#262)
simorimi Aug 8, 2024
1d182e0
[Feature] - 배포한 서비스를 모니터링 하는 도구 GA 세팅 (#263)
simorimi Aug 8, 2024
053a1c4
[Fix] - 한 Day 내 중복된 장소 이름이 존재할 경우 게시물이 지속적으로 생기는 문제 해결 (#266)
jinyoung234 Aug 8, 2024
b87a781
[Fix] - 3차 스프린트 QA 반영 2차 (리버) (#276)
0jenn0 Aug 9, 2024
f3ee6ae
[Fix] - 3차 스프린트 QA 반영 2차 (시모) (#275)
simorimi Aug 9, 2024
f8d9065
[Fix] - 3차 스프린트 QA 반영 2차 (지니) (#280)
jinyoung234 Aug 9, 2024
fbb0581
refactor: 마커 색상 변경 & 여행기 상세 페이지 title & subtitle 순서 변경 (#283)
jinyoung234 Aug 9, 2024
1d96bd4
[Fix] - 만료된 access token 핸들링 (#292)
jinyoung234 Aug 13, 2024
8871599
[Fix] - 삭제 및 등록 시 여러번 요청하지 못하게 수정 (#295)
simorimi Aug 13, 2024
2dffa25
[Feature] - refresh token 클라이언트 내 적용 (#307)
jinyoung234 Aug 14, 2024
56f7c70
[Feature] - TravelogueCard 컴포넌트 리팩터링 (#314)
jinyoung234 Aug 14, 2024
871c5ce
[Feature] - Input 컴포넌트 리팩토링 (#310)
0jenn0 Aug 14, 2024
6639505
Fix - image error 처리 누락, 여행기 삭제시 마이페이지로 넘어갈 때 tab 초기값 수정 , 여행기 썸네일 (#…
0jenn0 Aug 14, 2024
9005dc5
[Fix] - Icon, Icon Button storybook에서 iconType option 적용되도록 수정 (#327)
0jenn0 Aug 17, 2024
b7ed482
[Feature] - 여행 계획 TO DO 기능 구현 (#333)
jinyoung234 Aug 18, 2024
33680b8
[Feature] - tag 기능 구현 (#335)
simorimi Aug 18, 2024
339281f
[Feature] - 여행기 장소 이미지 업로드 중일 경우, spinner를 보여주도록 리팩터링 (#332)
jinyoung234 Aug 19, 2024
264c01b
[Feature] - 사용자 닉네임 수정 (#317)
0jenn0 Aug 19, 2024
32d759d
[Feature] - 검색 구현 (#328)
0jenn0 Aug 19, 2024
9b6c78e
[Feature] - 여행기 상세보기 페이지에서 지도 상세보기 구현 (#334)
0jenn0 Aug 19, 2024
d71225d
[Feature] - 여행기 좋아요 기능 구현 (#342)
jinyoung234 Aug 20, 2024
f9834b1
[Feature] - 썸네일 에러 발생 시 예외 처리 추가 (#356)
jinyoung234 Aug 20, 2024
d02f4fa
[Feature] - 여행기 및 여행 계획 수정 페이지 구현 (#348)
simorimi Aug 20, 2024
ef2ab4f
[Feature] - 플로팅 버튼에 여행 계획 작성 추가 (#368)
simorimi Aug 21, 2024
68e7d15
[Feature] - required 구현 (#361)
0jenn0 Aug 21, 2024
d36d916
[Fix] - 4차 스프린트 QA 반영 1차 (시모) (#374)
simorimi Aug 22, 2024
7552cbb
[Fix] - 4차 스프린트 QA 반영 1차 (지니) (#375)
jinyoung234 Aug 22, 2024
5fbbf11
[Feature] - 프론트엔드 dev, prod 분리 작업 (#378)
jinyoung234 Aug 22, 2024
7190acd
[Fix] - 4차 스프린트 QA 반영 1차 (리버) (#376)
0jenn0 Aug 22, 2024
92920ef
[Feature] - 404 NotFound 페이지 구현 (#380)
0jenn0 Aug 22, 2024
8790e29
[Fix] - 로딩, 에러 처리 및 메인페이지, 로그인 콜백 페이지 오류 수정 (#391)
simorimi Aug 22, 2024
cd346aa
[Fix] - 여행 계획 수정, 마이페이지, 검색 페이지 에러 핸들링 (#393)
0jenn0 Aug 22, 2024
02915f5
[Fix] - 여행기 등록 & 수정, 여행 계획 등록, 여행 계획 상세 페이지 예외 및 로딩 처리 (#394)
jinyoung234 Aug 22, 2024
5729b7b
[Fix] - 4차 스프린트 QA 반영 2차 (시모) (#400)
simorimi Aug 22, 2024
c4129da
[Fix] - 4차 스프린트 QA 반영 2차 (리버) (#401)
0jenn0 Aug 22, 2024
399e11b
[Fix] - 4차 스프린트 QA 반영 2차 (지니) (#402)
jinyoung234 Aug 22, 2024
5f5a098
fix: 여행 계획 상세 페이지 내 작성자 아닌 게시물 접근 시 alert가 2번 뜨는 현상 개선 (#404)
jinyoung234 Aug 22, 2024
d594224
[Fix] - line height,shareModal 수정 (#407)
0jenn0 Aug 23, 2024
bd1fe8c
v1.0.1
simorimi Aug 23, 2024
75b3da2
Merge branch 'production/fe' into develop/fe
jinyoung234 Aug 23, 2024
834063a
[Feature] - e2e 테스트 초기 설정 및 여행 계획 등록, 로그인, 메인 페이지 e2e 테스트 구현 (#412)
jinyoung234 Sep 15, 2024
4d66c7b
[Feature] - 여행 계획 등록 페이지 리팩터링 (#414)
jinyoung234 Sep 15, 2024
6e537c0
fix: 폰트 import path 수정 (#429)
jinyoung234 Sep 23, 2024
d39bcd1
[Feature] - kakao bundle lazy loading 적용 (#430)
jinyoung234 Sep 23, 2024
f226563
[Feature] - 데모데이 피드백 반영(지니) (#418)
jinyoung234 Sep 25, 2024
dedf12d
[Feature] - webpack 캐시 버스팅 설정 (#447)
jinyoung234 Sep 26, 2024
8b5c1c3
[Feature] - 코드 스플리팅 설정 (#450)
jinyoung234 Sep 26, 2024
946d03e
[Feature] - 여행 계획 상세 페이지 성능 최적화 (#453)
jinyoung234 Sep 26, 2024
923fdc8
[Feature] - Layout Shift 개선 (#454)
simorimi Sep 26, 2024
e4eb2fb
[Feature] - 이미지 최적화 (#455)
0jenn0 Sep 26, 2024
3c83966
v1.1.0
jinyoung234 Sep 26, 2024
b26edb2
Merge branch 'production/fe' into develop/fe
jinyoung234 Sep 26, 2024
cf7943c
[Feature] - 데모데이 피드백 반영(시모) (#434)
simorimi Sep 26, 2024
a78cad1
[Feature] - 데모데이 피드백 반영(리버) (#444)
0jenn0 Sep 26, 2024
5547064
fix(MainPage): 테그 필터링 스크롤 되지 않는 문제 해결 (#460)
simorimi Sep 26, 2024
77101e6
[Fix] - 검색 페이지 탭바 width 수정, 여행기 수정페이지에서 이미지 최적화 안됨 (#462)
0jenn0 Sep 26, 2024
3392b4a
fix: 검색 페이지는 코드 스플리팅을 하지 않는 것으로 변경 (#465)
jinyoung234 Sep 26, 2024
61d02fe
fix(NotFound): NotFound 버튼 텍스트 수정 (#473)
jinyoung234 Sep 26, 2024
0088feb
[Fix] - tag filter 및 sort localStorage key 값이 공유되는 현상 해결 및 태그 변경시 최상단…
simorimi Sep 26, 2024
54f4694
[Fix] - 상세보기에서 좋아요 누를 때마다 지도 움직이는 문제 & 사용자가 지도를 확대하지 못하는 문제 해결 (#478)
jinyoung234 Sep 27, 2024
9383d7a
[Fix] - 5차 스프린트 QA 반영 1차 (리버) (#479)
0jenn0 Sep 27, 2024
eed5d15
[Fix] - 5차 스프린트 QA 반영 1차 (시모) (#485)
simorimi Sep 27, 2024
60957ce
v1.2.0
jinyoung234 Sep 27, 2024
08c0a1d
Merge branch 'production/fe' into develop/fe
jinyoung234 Sep 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions frontend/__tests__/utils/createInfiniteTravelogueHook.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ export const wrapper = ({ children }: React.PropsWithChildren) => (
);

export const createInfiniteTravelogueHook = () =>
renderHook(() => useInfiniteTravelogues([]), {
wrapper,
});
renderHook(
() =>
useInfiniteTravelogues({
selectedTagIDs: [],
selectedSortingOption: "likeCount",
selectedTravelPeriodOption: "",
}),
{
wrapper,
},
);
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "2024-touroot",
"version": "1.1.0",
"version": "1.2.0",
"description": "to your route, 투룻!",
"repository": "https://github.com/woowacourse-teams/2024-touroot",
"scripts": {
Expand Down
6 changes: 4 additions & 2 deletions frontend/src/apis/interceptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,17 @@ import { HTTP_STATUS_CODE_MAP } from "@constants/httpStatusCode";
import { ROUTE_PATHS_MAP } from "@constants/route";
import { STORAGE_KEYS_MAP } from "@constants/storage";

let isRedirecting = false;

export const checkAccessToken = (
config: InternalAxiosRequestConfig,
accessToken: string | null,
) => {
if (!accessToken) {
if (!accessToken && !isRedirecting) {
isRedirecting = true;
alert(ERROR_MESSAGE_MAP.api.login);
window.location.href = ROUTE_PATHS_MAP.login;
}

return config;
};

Expand Down
44 changes: 27 additions & 17 deletions frontend/src/components/common/Chip/Chip.styled.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
import { css } from "@emotion/react";
import { css, keyframes } from "@emotion/react";
import styled from "@emotion/styled";

import theme from "@styles/theme";
import { PRIMITIVE_COLORS } from "@styles/tokens";

const getButtonColorStyling = (isSelected: boolean) => {
if (isSelected) {
return css`
border: 0.1rem solid ${PRIMITIVE_COLORS.blue[200]};
return css`
border: 0.1rem solid ${isSelected ? PRIMITIVE_COLORS.blue[200] : theme.colors.border};

background-color: ${PRIMITIVE_COLORS.blue[50]};
background-color: ${isSelected ? PRIMITIVE_COLORS.blue[50] : PRIMITIVE_COLORS.white};

color: ${theme.colors.primary};
`;
} else {
return css`
border: 0.1rem solid ${theme.colors.border};
color: ${isSelected ? theme.colors.primary : theme.colors.text.secondary};
`;
};

background-color: ${PRIMITIVE_COLORS.white};
const fadeInMove = keyframes`
from {
opacity: 0;
transform: translateY(1rem);
}

color: ${theme.colors.text.secondary};
`;
to {
opacity: 1;
transform: translateY(0);
}
};
`;

export const Layout = styled.li<{ $isSelected: boolean; $index?: number }>`
display: flex;
justify-content: center;
align-items: center;
gap: ${({ theme }) => theme.spacing.xs};

export const Chip = styled.li<{ $isSelected: boolean }>`
padding: 0.8rem 1.6rem;
padding: ${({ theme }) => theme.spacing.s} ${({ theme }) => theme.spacing.m};
border-radius: 1rem;

line-height: 1;

${({ $isSelected }) => getButtonColorStyling($isSelected)};
${({ $isSelected }) => getButtonColorStyling($isSelected)}

animation: ${fadeInMove} 0.3s ease-out both;
animation-delay: ${({ $index }) => `${($index ?? 0) * 50}ms`};
`;
17 changes: 8 additions & 9 deletions frontend/src/components/common/Chip/Chip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,22 @@ import Text from "../Text/Text";
import * as S from "./Chip.styled";

interface ChipProps extends ComponentPropsWithoutRef<"li"> {
isSelected?: boolean;
label: string;
isSelected?: boolean;
index?: number;
}

const Chip = ({ isSelected = false, label, ...props }: ChipProps) => {
const Chip = ({ label, isSelected = false, index, children, ...props }: ChipProps) => {
return (
<S.Chip
<S.Layout
$isSelected={isSelected}
$index={index}
data-cy={isSelected ? `selected-${CYPRESS_DATA_MAP.chip}` : CYPRESS_DATA_MAP.chip}
{...props}
>
{isSelected ? (
<Text textType="detailBold">{label}</Text>
) : (
<Text textType="detail">{label}</Text>
)}
</S.Chip>
<Text textType={isSelected ? "detailBold" : "detail"}>{label}</Text>
{children}
</S.Layout>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,38 @@ export const FloatingButtonContainer = styled.div`
position: fixed;
right: max(0vw + 2rem, calc(50vw - 22rem));
bottom: 2rem;
z-index: ${({ theme }) => theme.zIndex.floatingButton};
z-index: ${({ theme }) => theme.zIndex.floating};
`;

export const BackdropLayout = styled.div`
position: fixed;
width: 100%;
height: 100%;
inset: 0;

gap: ${({ theme }) => theme.spacing.s};
background-color: ${({ theme }) => theme.colors.dimmed};
cursor: pointer;
`;

export const SubButtonContainer = styled.div<{ $isOpen: boolean }>`
display: flex;
flex-direction: column;
position: absolute;
bottom: 100%;
gap: ${({ theme }) => theme.spacing.l};

width: 16rem;
padding: ${({ theme }) => theme.spacing.l} ${({ theme }) => theme.spacing.m};
border-radius: ${({ theme }) => theme.spacing.s};

background-color: ${PRIMITIVE_COLORS.gray[700]};
gap: ${({ theme }) => theme.spacing.l};

transition: all 0.3s ease-out;

${({ $isOpen }) => css`
opacity: ${$isOpen ? 1 : 0};
transform: translateY(${$isOpen ? 0 : 2}rem);
pointer-events: ${$isOpen ? "auto" : "none"};
visibility: ${$isOpen ? "visible" : "hidden"};
transform: translateY(${$isOpen ? -0.8 : 2}rem);
`}
`;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { useState } from "react";
import { useNavigate } from "react-router-dom";

import useModalControl from "@hooks/useModalControl";

import { ROUTE_PATHS_MAP } from "@constants/route";

import { PRIMITIVE_COLORS } from "@styles/tokens";

import IconButton from "../IconButton/IconButton";
import Modal from "../Modal/Modal";
import Text from "../Text/Text";
import * as S from "./FloatingButton.styled";

Expand All @@ -26,9 +27,11 @@ const FloatingButton = () => {
navigate(ROUTE_PATHS_MAP.travelPlanRegister);
};

useModalControl(isOpen, handleToggleButton);

return (
<S.FloatingButtonContainer>
{isOpen && <Modal isOpen={isOpen} onCloseModal={handleToggleButton} />}
{isOpen && <S.BackdropLayout onClick={handleToggleButton} />}
<S.SubButtonContainer $isOpen={isOpen}>
<S.SubButton onClick={handleClickTravelPlanRegister}>
<Text textType="body" css={S.subButtonTextStyle}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ interface GoogleMapViewProps {
const GoogleMapView = ({ places }: GoogleMapViewProps) => {
const center = calculateCenter(places);

const { onLoad, onUnmount, onBoundsChanged } = useGoogleMap(places);
const { onLoad, onUnmount } = useGoogleMap(places);

/**
* 컴포넌트 내부에 위치시키지 않으면 "Uncaught TypeError: Cannot read properties of undefined (reading 'maps')"
Expand All @@ -46,7 +46,6 @@ const GoogleMapView = ({ places }: GoogleMapViewProps) => {
center={center}
onLoad={onLoad}
onUnmount={onUnmount}
onBoundsChanged={onBoundsChanged}
>
{places.map((position, index) => (
<MarkerF
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/common/Header/Header.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const rightContentOptions = {
<S.FormWrapper>
<Input
autoFocus
placeholder="검색해주세요"
placeholder="제목 또는 작성자명으로 검색해 주세요."
style={{ height: "4rem", marginBottom: "-1rem" }}
/>
<S.ButtonContainer>
Expand Down
8 changes: 3 additions & 5 deletions frontend/src/components/common/Header/Header.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { useLocation, useNavigate } from "react-router-dom";

import usePreviousPage from "@hooks/usePreviousPage";
import useUser from "@hooks/useUser";

import { ROUTE_PATHS_MAP } from "@constants/route";
Expand Down Expand Up @@ -44,6 +45,7 @@ const Header = ({
};

const handleClickMyPage = () => navigate(ROUTE_PATHS_MAP.my);
const goBack = usePreviousPage();

return (
<Drawer>
Expand All @@ -52,11 +54,7 @@ const Header = ({
<IconButton
color={isLogoUsed ? theme.colors.primary : PRIMITIVE_COLORS.black}
iconType={isLogoUsed ? "korean-logo" : "back-icon"}
onClick={
isLogoUsed
? () => navigate(ROUTE_PATHS_MAP.root)
: () => navigate(ROUTE_PATHS_MAP.back)
}
onClick={isLogoUsed ? () => navigate(ROUTE_PATHS_MAP.root) : () => goBack()}
/>
</S.LeftWrapper>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const SearchHeader = () => {
const handleClickSearchButton = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
if (keyword.trim().length < MIN_KEYWORD_LENGTH) {
alert(`${MIN_KEYWORD_LENGTH}글자 이상 검색해주세요.`);
alert(`${MIN_KEYWORD_LENGTH}글자 이상 검색해 주세요.`);
setKeyword(keyword.trim());
} else {
navigate(ROUTE_PATHS_MAP.search(keyword));
Expand Down Expand Up @@ -72,7 +72,7 @@ const SearchHeader = () => {
}
autoFocus
maxLength={20}
placeholder="검색해주세요"
placeholder="제목 또는 작성자명으로 검색해 주세요."
css={css`
height: 4rem;
padding-right: 7.8rem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export const TextContainer = styled.div`

export const modalBodyStyle = css`
gap: ${theme.spacing.m};
padding: "2.6rem 0";
`;

export const subTextStyle = css`
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { Button, IconButton, Modal, Spinner, Text } from "@components/common";

import { Tturi } from "@assets/svg";

import * as S from "./DeleteModal.styled";

type TravelContent = "travelogue" | "travelPlan";

interface DeleteModalProps {
isOpen: boolean;
isPending: boolean;
travelContent: TravelContent;
onCloseModal: () => void;
onClickDeleteButton: () => void;
}

const DeleteModal = ({
isOpen,
isPending,
travelContent,
onCloseModal,
onClickDeleteButton,
}: DeleteModalProps) => {
const travelContentLabel = travelContent === "travelogue" ? "여행기를" : "여행 계획을";

const MAIN_TEXT = `${travelContentLabel} 삭제할까요?`;
const SUB_TEXT = `삭제한 후에는 ${travelContentLabel} 다시 복구할 수 없어요.`;

return (
<Modal isOpen={isOpen} onCloseModal={onCloseModal} boxLayoutGap="l">
<Modal.Header>
<IconButton onClick={onCloseModal} size="12" iconType="x-icon" />
</Modal.Header>
<Modal.Body direction="column" css={S.modalBodyStyle}>
<Tturi />
<S.TextContainer>
<Text textType="bodyBold">{MAIN_TEXT}</Text>
<Text textType="detail" css={S.subTextStyle}>
{SUB_TEXT}
</Text>
</S.TextContainer>
</Modal.Body>
<Modal.Footer>
<Button variants="primary" onClick={onClickDeleteButton} disabled={isPending}>
{isPending ? <Spinner variants="circle" size={20} /> : "삭제"}
</Button>
</Modal.Footer>
</Modal>
);
};

export default DeleteModal;
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,18 @@ export const TextContainer = styled.div`
align-items: center;
`;

export const HandleBar = styled.div`
width: 5.4rem;
height: 0.3rem;
border-radius: 4px;

background-color: ${({ theme }) => theme.colors.border};

cursor: pointer;
`;

export const modalBodyStyle = css`
gap: ${theme.spacing.m};
padding: 2.6rem 0;
`;

export const subTextStyle = css`
Expand Down
Loading
Loading