-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into feat/#315/priorityDropdownCancleBtn
- Loading branch information
Showing
27 changed files
with
614 additions
and
152 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import { HTMLAttributes, PropsWithChildren, ReactNode } from 'react'; | ||
|
||
import styled from 'styled-components'; | ||
|
||
interface BottomSheetProps extends PropsWithChildren<HTMLAttributes<HTMLDivElement>> { | ||
children?: ReactNode; | ||
isOpen: boolean; | ||
onClose?: () => void; | ||
} | ||
|
||
function BottomSheet({ children, isOpen }: BottomSheetProps) { | ||
return ( | ||
<> | ||
<BottomSheetModal $isModalOpen={isOpen}>{children}</BottomSheetModal> | ||
<ModalOverlay $isModalOpen={isOpen} /> | ||
</> | ||
); | ||
} | ||
|
||
export default BottomSheet; | ||
|
||
const BottomSheetModal = styled.div<{ $isModalOpen: boolean }>` | ||
display: flex; | ||
position: fixed; | ||
bottom: 0; | ||
transform: translateY(${({ $isModalOpen }) => ($isModalOpen ? 0 : '100%')}); | ||
flex-direction: column; | ||
gap: 0.8rem; | ||
transition: transform 600ms cubic-bezier(0.86, 0, 0.07, 1); | ||
z-index: 1; | ||
border-top-left-radius: 1.2rem; | ||
border-top-right-radius: 1.2rem; | ||
background-color: ${({ theme }) => theme.colors.grey8}; | ||
padding: 4.4rem 2rem 4rem; | ||
width: 37.5rem; | ||
& button { | ||
width: 100%; | ||
} | ||
`; | ||
|
||
const ModalOverlay = styled.div<{ $isModalOpen: boolean }>` | ||
display: ${({ $isModalOpen }) => ($isModalOpen ? 'block' : 'none')}; | ||
position: fixed; | ||
top: 0; | ||
background-color: ${({ theme }) => theme.colors.black60}; | ||
width: 100%; | ||
height: 100%; | ||
`; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
import styled from 'styled-components'; | ||
import { theme } from 'styles/theme'; | ||
|
||
import Text from '../atomComponents/Text'; | ||
/** | ||
* 이미지, 메인텍스트, 서브텍스트로 이루어진 재사용 컴포넌트 | ||
* @returns asap 페이지에 기본이 되는 컴포넌트 | ||
* @param {imgURL} : image | ||
* @param {mainText} | ||
* @param {subText} | ||
*/ | ||
interface CheckPointProps { | ||
imgURL: string; | ||
mainText: string; | ||
subText: string; | ||
} | ||
|
||
const CheckPoint = ({ imgURL, mainText, subText }: CheckPointProps) => { | ||
return ( | ||
<> | ||
<ImageSection src={imgURL} /> | ||
<TextWrapper> | ||
<Text font={'head1'} color={`${theme.colors.white}`}> | ||
{mainText} | ||
</Text> | ||
<Text font={'body1'} color={`${theme.colors.grey4}`}> | ||
{subText} | ||
</Text> | ||
</TextWrapper> | ||
</> | ||
); | ||
}; | ||
|
||
export default CheckPoint; | ||
|
||
const ImageSection = styled.img` | ||
margin-top: 10.7rem; | ||
width: 21.3rem; | ||
height: 19.9rem; | ||
`; | ||
|
||
const TextWrapper = styled.div` | ||
display: flex; | ||
flex-direction: column; | ||
gap: 2.5rem; | ||
align-items: center; | ||
justify-content: center; | ||
margin-top: 2.5rem; | ||
`; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
import stepingCheck from 'assets/images/steppingCheck.png'; | ||
import Button from 'components/common/atomComponents/Button'; | ||
import Text from 'components/common/atomComponents/Text'; | ||
import CheckPoint from 'components/common/moleculesComponents/CheckPoint'; | ||
import Header from 'components/common/moleculesComponents/Header'; | ||
import { useNavigate, useParams } from 'react-router-dom'; | ||
import styled from 'styled-components'; | ||
|
||
import CreateMeetingBottomSheet from './components/CreateMeetingBottomSheet'; | ||
|
||
const CompleteCreateMeeting = () => { | ||
const { meetingId } = useParams(); | ||
|
||
const navigate = useNavigate(); | ||
const navigateSelectSchedule = () => { | ||
navigate(`/host/select/${meetingId}`); | ||
}; | ||
|
||
return ( | ||
<CompleteCreateMeetingWrapper> | ||
<Header position="completeCreateMeeting" /> | ||
<CheckPoint | ||
imgURL={stepingCheck} | ||
mainText={'회의 생성 완료!'} | ||
subText={'이제 나의 가능 시간을 입력하러 가볼까요?'} | ||
/> | ||
<BtnWrapper> | ||
<Button typeState={'primaryActive'} onClick={navigateSelectSchedule}> | ||
<Text font={'button2'}>나의 가능 시간 입력</Text> | ||
</Button> | ||
</BtnWrapper> | ||
<CreateMeetingBottomSheet /> | ||
</CompleteCreateMeetingWrapper> | ||
); | ||
}; | ||
|
||
export default CompleteCreateMeeting; | ||
|
||
const BtnWrapper = styled.div` | ||
position: absolute; | ||
bottom: 1.2rem; | ||
`; | ||
const CompleteCreateMeetingWrapper = styled.div` | ||
display: flex; | ||
flex-direction: column; | ||
align-items: center; | ||
justify-content: center; | ||
width: 100%; | ||
height: 100%; | ||
`; |
49 changes: 49 additions & 0 deletions
49
src/pages/completeCreateMeeting/components/CreateMeetingBottomSheet.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { useEffect } from 'react'; | ||
|
||
import Button from 'components/common/atomComponents/Button'; | ||
import Text from 'components/common/atomComponents/Text'; | ||
import BottomSheet from 'components/common/BottomSheet/BottomSheet'; | ||
import useModalState from 'components/common/Modal/hooks/useModalState'; | ||
import CopyToClipboard from 'react-copy-to-clipboard'; | ||
import { useParams } from 'react-router-dom'; | ||
import styled from 'styled-components'; | ||
import { theme } from 'styles/theme'; | ||
|
||
function CreateMeetingBottomSheet() { | ||
const { meetingId } = useParams(); | ||
|
||
const {isOpen, onOpen, onClose}= useModalState(false); | ||
|
||
useEffect(()=>{ | ||
onOpen(); | ||
},[]) | ||
|
||
return ( | ||
<> | ||
<BottomSheet isOpen={isOpen}> | ||
<BottomSheetDescription> | ||
<Text font={'head2'} color={'white'}>회의방 링크가 생성되었어요!</Text> | ||
<Text font={'title2'} color={`${theme.colors.grey4}`}>링크를 복사하여 팀원에게 공유해주세요</Text> | ||
</BottomSheetDescription> | ||
<CopyToClipboard text={`${import.meta.env.VITE_WEB_IP}/meet/${meetingId}`}> | ||
<Button typeState={'primaryActive'} onClick={onClose}> | ||
<Text font={'button2'}>링크 복사하기</Text> | ||
</Button> | ||
</CopyToClipboard> | ||
<Button typeState={'quaternaryDisabled'} onClick={onClose}> | ||
<Text font={'button2'}>나중에 공유하기</Text> | ||
</Button> | ||
</BottomSheet> | ||
</> | ||
) | ||
} | ||
|
||
export default CreateMeetingBottomSheet; | ||
|
||
const BottomSheetDescription = styled.div` | ||
display: flex; | ||
flex-direction: column; | ||
gap: 0.8rem; | ||
margin-bottom: 2.4rem; | ||
padding-left: 0.9rem; | ||
`; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
import { TooltipArrowIc } from 'components/Icon/icon'; | ||
import styled from 'styled-components'; | ||
import { theme } from 'styles/theme'; | ||
|
||
import Text from '../../../components/common/atomComponents/Text'; | ||
|
||
interface TooltipPropTypes { | ||
tooltipText: string; | ||
} | ||
const Tooltip = ({ tooltipText }: TooltipPropTypes) => { | ||
return ( | ||
<TooltipWrapper> | ||
<TooltioArrowIcon /> | ||
<ToolTipTextWrapper> | ||
<Text color={theme.colors.grey5} font={'body4'}> | ||
{tooltipText} | ||
</Text> | ||
</ToolTipTextWrapper> | ||
</TooltipWrapper> | ||
); | ||
}; | ||
|
||
const TooltipWrapper = styled.div` | ||
cursor: default; | ||
position: absolute; | ||
top: 6rem; | ||
width: 8.1rem; | ||
height: 2.8rem; | ||
left: 50%; | ||
transform: translate(-50%, -50%); | ||
`; | ||
const TooltioArrowIcon = styled(TooltipArrowIc)` | ||
position: absolute; | ||
left: 50%; | ||
transform: translate(-50%, -50%); | ||
`; | ||
|
||
const ToolTipTextWrapper = styled.div` | ||
position: absolute; | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
width: 8.1rem; | ||
height: 2.8rem; | ||
border-radius: 6px; | ||
background-color: ${({ theme }) => theme.colors.grey9}; | ||
`; | ||
export default Tooltip; |
Oops, something went wrong.