Skip to content

Commit

Permalink
Merge pull request #25 from TUK-MoreView/feat/slide-page
Browse files Browse the repository at this point in the history
Feat/slide page
  • Loading branch information
play3step authored Mar 6, 2024
2 parents 4eb1d40 + ac42f4e commit 702e4f9
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 9 deletions.
9 changes: 6 additions & 3 deletions src/components/ProjectPage/ProjectSlide.jsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
import styled from 'styled-components';
import { useRecoilValue, useSetRecoilState } from 'recoil';
import { useRecoilState, useRecoilValue } from 'recoil';
import SlideClose from './SlideComponents/SlideClose';
import SlideList from './SlideComponents/atom/SlideList';
import { pageData, pageState } from '../../store/recoil';
import AddSlide from './SlideComponents/atom/AddSlide';

function ProjectSlide({ slideOpen, addSlide }) {
const setPage = useSetRecoilState(pageState);
const [pageRendering, setPageRendering] = useRecoilState(pageState);
const pageValue = useRecoilValue(pageData);

return (
<SlideListContainer>
<SlideClose slideOpen={slideOpen} />
<SlideBoxContainer>
{pageValue.map((page, index) => (
<SlideList
onClick={() => {
setPage(index);
setPageRendering(index);
}}
select={index === pageRendering}
/>
))}
<AddSlide onClick={addSlide} />
Expand All @@ -37,5 +39,6 @@ const SlideBoxContainer = styled.div`
display: flex;
padding: 2.8vh 2.7vw;
align-items: center;
overflow-x: auto;
gap: 30px;
`;
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ const AddSlideBox = styled.button`
border: 1px dashed;
border-radius: 25px;
background-color: #d9d9d9;
flex-shrink: 0;
`;
7 changes: 4 additions & 3 deletions src/components/ProjectPage/SlideComponents/atom/SlideList.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import styled from 'styled-components';

function SlideList({ onClick }) {
return <SlideListBox onClick={onClick} />;
function SlideList({ onClick, select }) {
return <SlideListBox onClick={onClick} select={select} />;
}

export default SlideList;

const SlideListBox = styled.button`
width: 18.958vw;
height: 16.11vh;
border: 1px solid;
border: 2px solid ${({ select }) => (select ? 'red' : 'black')};
border-radius: 25px;
background-color: #d9d9d9;
flex-shrink: 0; // ํฌ๊ธฐ ์กฐ์ ˆ ๋น„ํ™œ์„ฑํ™”
`;
24 changes: 21 additions & 3 deletions src/pages/ProjectPage.jsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import styled from 'styled-components';
import { useState } from 'react';
import { useEffect, useState } from 'react';
import { motion } from 'framer-motion';
import { Canvas } from '@react-three/fiber';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useRecoilState } from 'recoil';
import { FullScreen, useFullScreenHandle } from 'react-full-screen';
import {
interactiveState,
Expand All @@ -24,7 +24,7 @@ import Prjoect2d from '../components/ProjectPage/PageData/Project2d';
function ProjectPage() {
const [selectedId, selectShape] = useState(null);
const [isOpen, setIsOpen] = useState(false);
const pageRendering = useRecoilValue(pageState);
const [pageRendering, setPageRendering] = useRecoilState(pageState);
const [shapeValue, setShapeValue] = useRecoilState(shapeList);
const [textValue, setTextValue] = useRecoilState(textList);
const [menu, setMenu] = useRecoilState(interactiveState);
Expand Down Expand Up @@ -85,6 +85,24 @@ function ProjectPage() {
});
};

useEffect(() => {
const handleKeyEvent = (e) => {
if (e.key === 'ArrowLeft' && pageRendering > 0) {
setPageRendering(pageRendering - 1);
} else if (
e.key === 'ArrowRight' &&
pageValue.length - 1 > pageRendering
) {
setPageRendering(pageRendering + 1);
}
};

window.addEventListener('keydown', handleKeyEvent);
return () => {
window.removeEventListener('keydown', handleKeyEvent);
};
}, [pageRendering]);

return (
<ProjectContainer>
<ProjectHeaer fullScreen={toggleFullScreen} />
Expand Down

0 comments on commit 702e4f9

Please sign in to comment.