-
신고자 : {nickname}
-
{parseDate(date)}
+
+
+
+
+
+ {isComplete ? '승인' : '미승인'}
-
신고 받은 사람 : {reportedNickname}
-
{content}
-
-
-
-
-
{isComplete ? "승인" : "미승인"}
-
{nickname}
-
{reportedNickname}
-
{parseDate(date)}
-
-
+
{nickname}
+
{reportedNickname}
+
{parseDate(date)}
+
>
- )
-}
+ );
+};
-export default Report;
\ No newline at end of file
+export default Report;
diff --git a/frontend/sweet-red-beans/src/components/SignUp/SignUp.js b/frontend/sweet-red-beans/src/components/SignUp/SignUp.js
index 26d5132..745f334 100644
--- a/frontend/sweet-red-beans/src/components/SignUp/SignUp.js
+++ b/frontend/sweet-red-beans/src/components/SignUp/SignUp.js
@@ -1,20 +1,19 @@
-import React, {useState, useCallback} from "react";
-import axios from "axios";
-import {useNavigate} from "react-router-dom";
-import style from "../../css/SignUp/SignUp.module.css";
+import React, { useState, useCallback } from 'react';
+import axios from 'axios';
+import { useNavigate } from 'react-router-dom';
+import style from '../../css/SignUp/SignUp.module.css';
const SignUp = () => {
-
const navigation = useNavigate();
//const dispatch = useDispatch();
- const [email, setEmail] = useState("");
- const [password, setPassword] = useState("");
- const [passwordCheck, setPasswordCheck] = useState("");
- const [nickname, setNickname] = useState("");
+ const [email, setEmail] = useState('');
+ const [password, setPassword] = useState('');
+ const [passwordCheck, setPasswordCheck] = useState('');
+ const [nickname, setNickname] = useState('');
//패스워드 안 맞을 때 false
- const [passwordError,setPasswordError] = useState(false);
+ const [passwordError, setPasswordError] = useState(false);
//이메일 중복 확인이 성공적으로 됐을 때 true
const [emailCheck, setEmailCheck] = useState(false);
//닉네임 중복 확인이 성공적으로 됐을 때 true
@@ -24,38 +23,38 @@ const SignUp = () => {
//비밀번호가 형식에 안 맞으면 true
const [passwordFormError, setPasswordFormError] = useState(false);
//이메일 중복 확인 안 됐을 때 false
- const [emailError ,setEmailError] = useState(false);
+ const [emailError, setEmailError] = useState(false);
//닉네임 중복 확인 안 됐을 때 false
const [nicknameError, setNicknameError] = useState(false);
//이메일 형식에 맞지 않을 때 false
const [emailForm, setEmailForm] = useState(false);
- const onChangePasswordChk = useCallback((e) => {
- //비밀번호를 입력할때마다 password 를 검증하는 함수
- setPasswordError(e.target.value !== password);
- setPasswordCheck(e.target.value);
- //password state를 사용하기때문에 password를 넣어준다
- },[password, passwordCheck]);
+ const onChangePasswordChk = useCallback(
+ (e) => {
+ //비밀번호를 입력할때마다 password 를 검증하는 함수
+ setPasswordError(e.target.value !== password);
+ setPasswordCheck(e.target.value);
+ //password state를 사용하기때문에 password를 넣어준다
+ },
+ [password, passwordCheck]
+ );
-
//닉네임 변경됐을 때
const onChange = (e) => {
- if (e.target.id === "nickname"){
+ if (e.target.id === 'nickname') {
setNickname(e.target.value);
}
- }
+ };
const onEmailChange = (e) => {
setEmail(e.target.value);
- if (e.target.value !== "" && e.target.value.search('@') !== -1){
+ if (e.target.value !== '' && e.target.value.search('@') !== -1) {
console.log(emailForm);
setEmailForm(true);
- }
- else {
+ } else {
setEmailForm(false);
}
-
- }
+ };
const onPasswordChange = (e) => {
setPassword(e.target.value);
@@ -64,169 +63,247 @@ const SignUp = () => {
let num = /[0-9]/;
let al = /[a-zA-Z]/;
let char = /[~!@#$%^&*()_+|<>?:{}]/;
- if (e.target.value.length>=8 && num.test(e.target.value) && al.test(e.target.value) && char.test(e.target.value)){
+ if (
+ e.target.value.length >= 8 &&
+ num.test(e.target.value) &&
+ al.test(e.target.value) &&
+ char.test(e.target.value)
+ ) {
setPasswordForm(true);
setPasswordFormError(false);
- console.log("올바른 비밀번호");
- }
- else {
+ console.log('올바른 비밀번호');
+ } else {
setPasswordForm(false);
}
- }
+ };
//가입하기 버튼
const onClick = (e) => {
e.preventDefault();
//비밀번호, 비밀번호 확인이 안 같으면 회원가입 안 됨
- if(password !== passwordCheck){
+ if (password !== passwordCheck) {
return setPasswordError(true);
}
//이메일 중복 확인 안 하면 회원가입 안 됨
- if(!emailCheck){
+ if (!emailCheck) {
return setEmailError(true);
}
//닉네임 중복 체크 안 하면 회원가입 안 됨
- if(!nicknameCheck){
+ if (!nicknameCheck) {
return setNicknameError(true);
}
//비밀번호를 입력하지 않으면 회원가입 안 됨
- if(!passwordForm){
+ if (!passwordForm) {
return setPasswordFormError(true);
}
let body = {
- email : email,
- password : password,
- nickname : nickname,
- }
-
+ email: email,
+ password: password,
+ nickname: nickname,
+ };
+
// if(emailDup === false || nicknameDup === false){
// console.log("로그인 안 됨");
// }
- axios.post('http://localhost:8080/signup', body)
- .then(response => {
- if (response.data.result){
- alert("회원가입되었습니다!");
- navigation('/')}
- else {
- alert("회원가입할 수 없습니다.");
- }
- })
- .catch(error => console.log(error));
-
- }
+ axios
+ .post('http://localhost:8080/signup', body)
+ .then((response) => {
+ if (response.data.result) {
+ alert('회원가입되었습니다!');
+ navigation('/');
+ } else {
+ alert('회원가입할 수 없습니다.');
+ }
+ })
+ .catch((error) => console.log(error));
+ };
//이메일 중복확인 버튼 눌렀을 때
const clickEmailCheck = (e) => {
e.preventDefault();
//이메일 형식에 맞아야 체크했다고 봄
- if (emailForm){
-
- console.log("성공적");
- const userEmail = {email : email}
- axios.post('http://localhost:8080/signup/duplicate-check', userEmail)
- .then(response => {
+ if (emailForm) {
+ console.log('성공적');
+ const userEmail = { email: email };
+ axios
+ .post('http://localhost:8080/signup/duplicate-check', userEmail)
+ .then((response) => {
console.log(response.data);
- const data = response.data
- if(data.result === false){
+ const data = response.data;
+ if (data.result === false) {
setEmailCheck(true);
setEmailError(false);
- alert("사용할 수 있는 이메일입니다.");
- }
- else {
- alert("사용할 수 없습니다.");
+ alert('사용할 수 있는 이메일입니다.');
+ } else {
+ alert('사용할 수 없습니다.');
}
})
- .catch(error => {
+ .catch((error) => {
console.log(error);
- })
+ });
}
//이메일 형식에 안 맞을 때
else {
- console.log("실패");
+ console.log('실패');
}
-
- }
+ };
const clickNicknameCheck = (e) => {
e.preventDefault();
//닉네임이 있어야 체크했다고 봄
- if (nickname !== ""){
-
- const userNickname = {nickname: nickname};
- axios.post('http://localhost:8080/signup/duplicate-check', userNickname)
- .then(response => {
- const data = response.data
- if(data.result === false){
- alert("사용할 수 있는 닉네임입니다.");
- setNicknameCheck(true);
- setNicknameError(false);
- }
- else{
- alert("사용할 수 없는 닉네임입니다.");
- }
- })
- }
- else {
- console.log("안됨");
+ if (nickname !== '') {
+ const userNickname = { nickname: nickname };
+ axios
+ .post(
+ 'http://localhost:8080/signup/duplicate-check',
+ userNickname
+ )
+ .then((response) => {
+ const data = response.data;
+ if (data.result === false) {
+ alert('사용할 수 있는 닉네임입니다.');
+ setNicknameCheck(true);
+ setNicknameError(false);
+ } else {
+ alert('사용할 수 없는 닉네임입니다.');
+ }
+ });
+ } else {
+ console.log('안됨');
}
-
- }
+ };
return (
<>
-
+
>
-
- )
-}
+ );
+};
-export default SignUp;
\ No newline at end of file
+export default SignUp;
diff --git a/frontend/sweet-red-beans/src/components/TopBar/GoogleLogin.js b/frontend/sweet-red-beans/src/components/TopBar/GoogleLogin.js
index 64c01e3..3f4b09c 100644
--- a/frontend/sweet-red-beans/src/components/TopBar/GoogleLogin.js
+++ b/frontend/sweet-red-beans/src/components/TopBar/GoogleLogin.js
@@ -1,38 +1,41 @@
-import React, { useEffect } from "react";
-import { useNavigate } from "react-router";
-import axios from "axios"
-import { Cookies } from "react-cookie";
-import { Link } from "react-router-dom";
+import React, { useEffect } from 'react';
+import { useNavigate } from 'react-router';
+import axios from 'axios';
+import { Cookies } from 'react-cookie';
+import { Link } from 'react-router-dom';
const GoogleLogin = () => {
let navigation = useNavigate();
- let code = new URL(window.location.href).searchParams.get("code");
+ let code = new URL(window.location.href).searchParams.get('code');
const cookies = new Cookies();
- useEffect(
- async () => {
- const data = await axios.get('http://localhost:8080/signin/auth/google/callback', {
- withCredentials : true,
+ useEffect(async () => {
+ const data = await axios.get(
+ 'http://localhost:8080/signin/auth/google/callback',
+ {
+ withCredentials: true,
params: {
- code:code,
- }
- });
+ code: code,
+ },
+ }
+ );
- const data2 = await axios.post('http://localhost:8080/signin', data.data, { withCredentials: true})
+ const data2 = await axios.post(
+ 'http://localhost:8080/signin',
+ data.data,
+ { withCredentials: true }
+ );
- if(data2.data.result) {
- const date = new Date();
- date.setMinutes(date.getMinutes() + 30);
- cookies.set("login", true);
- navigation(0)
- }
- navigation('/')
- })
+ if (data2.data.result) {
+ const date = new Date();
+ date.setMinutes(date.getMinutes() + 30);
+ cookies.set('login', true);
+ navigation(0);
+ }
+ navigation('/');
+ });
- return (
- <>
- >
- )
-}
+ return <>>;
+};
-export default GoogleLogin;
\ No newline at end of file
+export default GoogleLogin;
diff --git a/frontend/sweet-red-beans/src/components/TopBar/KakaoLogin.js b/frontend/sweet-red-beans/src/components/TopBar/KakaoLogin.js
index be5571f..dcf4c84 100644
--- a/frontend/sweet-red-beans/src/components/TopBar/KakaoLogin.js
+++ b/frontend/sweet-red-beans/src/components/TopBar/KakaoLogin.js
@@ -1,40 +1,40 @@
-import React, { useEffect } from "react";
-import { useNavigate } from "react-router";
-import axios from "axios"
-import { Cookies } from "react-cookie";
+import React, { useEffect } from 'react';
+import { useNavigate } from 'react-router';
+import axios from 'axios';
+import { Cookies } from 'react-cookie';
const KakaoLogin = () => {
let navigation = useNavigate();
- let code = new URL(window.location.href).searchParams.get("code");
+ let code = new URL(window.location.href).searchParams.get('code');
const cookies = new Cookies();
-
- useEffect(
- async () => {
- const data = await axios.get('http://localhost:8080/signin/oauth2/code/kakao', {
- withCredentials : true,
+ useEffect(async () => {
+ const data = await axios.get(
+ 'http://localhost:8080/signin/oauth2/code/kakao',
+ {
+ withCredentials: true,
params: {
- code:code,
- }
- });
+ code: code,
+ },
+ }
+ );
- const data2 = await axios.post('http://localhost:8080/signin', data.data, { withCredentials: true})
+ const data2 = await axios.post(
+ 'http://localhost:8080/signin',
+ data.data,
+ { withCredentials: true }
+ );
- if(data2.data.result) {
- const date = new Date();
- date.setMinutes(date.getMinutes() + 30);
- cookies.set("login", true);
- navigation(0)
-
- }
- navigation('/')
-
- }, [])
+ if (data2.data.result) {
+ const date = new Date();
+ date.setMinutes(date.getMinutes() + 30);
+ cookies.set('login', true);
+ navigation(0);
+ }
+ navigation('/');
+ }, []);
- return (
- <>
- >
- )
-}
+ return <>>;
+};
-export default KakaoLogin;
\ No newline at end of file
+export default KakaoLogin;
diff --git a/frontend/sweet-red-beans/src/components/TopBar/LogIn.js b/frontend/sweet-red-beans/src/components/TopBar/LogIn.js
index f3f7b34..371afac 100644
--- a/frontend/sweet-red-beans/src/components/TopBar/LogIn.js
+++ b/frontend/sweet-red-beans/src/components/TopBar/LogIn.js
@@ -1,150 +1,205 @@
-import React, {useEffect, useState} from "react";
+import React, { useEffect, useState } from 'react';
import Modal from '../Modals/Modal';
-import { useNavigate } from "react-router";
-import axios from "axios";
-import { useDispatch, useSelector } from "react-redux";
-import login from "../../actions/user_action";
-import { LOGIN_USER } from "../../actions/types";
-import style from "../../css/TopBar/LogIn.module.css";
-import { getCookie, setCookie } from "../../Cookie";
-import { Cookies } from "react-cookie";
-import { Link } from "react-router-dom";
-import { KAKAO_AUTH_URL, GOOGLE_AUTH_URL } from "../../url/url";
-
-const LogIn = () =>{
- const navigation = useNavigate();
- const dispatch = useDispatch();
-
- const [modalOpen, setModalOpen] = useState(false);
- const [email, setEmail] = useState("");
- const [password, setPassword] = useState("");
- const [loginError, setLoginError] = useState(false);
-
- const cookies = new Cookies();
-
- const openModal = () => {
- setModalOpen(true);
- };
- const closeModal = () => {
- setModalOpen(false);
- };
-
- const SignupClick = () => {
- navigation('/signup');
- setModalOpen(false);
- }
-
- const emailChange = (e) => {
- setEmail(e.target.value);
- }
-
- const passwordChange = (e) => {
- setPassword(e.target.value)
- }
-
- const LoginClick = (e) => {
- e.preventDefault();
- if (email === "" || password === ""){
- return setLoginError(true);
- }
- else{
- setLoginError(false);
- }
-
- const body = {
- email: email,
- password: password,
- method: "일반",
+import { useNavigate } from 'react-router';
+import axios from 'axios';
+import { useDispatch, useSelector } from 'react-redux';
+import login from '../../actions/user_action';
+import { LOGIN_USER } from '../../actions/types';
+import style from '../../css/TopBar/LogIn.module.css';
+import { getCookie, setCookie } from '../../Cookie';
+import { Cookies } from 'react-cookie';
+import { Link } from 'react-router-dom';
+import { KAKAO_AUTH_URL, GOOGLE_AUTH_URL } from '../../url/url';
+
+const LogIn = () => {
+ const navigation = useNavigate();
+ const dispatch = useDispatch();
+
+ const [modalOpen, setModalOpen] = useState(false);
+ const [email, setEmail] = useState('');
+ const [password, setPassword] = useState('');
+ const [loginError, setLoginError] = useState(false);
+
+ const cookies = new Cookies();
+
+ const openModal = () => {
+ setModalOpen(true);
};
-
- axios.post('http://localhost:8080/signin', body, { withCredentials: true })
- .then(response => {
- if(!response.data.status) {
- alert("정지된 상태입니다. 관리자에게 문의해주세요.");
+ const closeModal = () => {
setModalOpen(false);
- }
- else if(response.data.result){
- // dispatch({
- // type: LOGIN_USER,
- // user: response.data,
- // })
-
- const date = new Date();
- date.setMinutes(date.getMinutes() + 30);
- cookies.set("login", true, {expires: date});
- cookies.set("user", {
- authority:response.data.authority,
- porfileImage:response.data.image_url,
- nickname:response.data.nickname,
- }, {expires:date});
+ };
+ const SignupClick = () => {
+ navigation('/signup');
setModalOpen(false);
- navigation(0)
-
-
- } else {
- alert("이메일과 비밀번호를 확인해주세요.");
- }
- })
- .catch(error => console.log(error));
-
- }
-
- const KakaoLoginClick = (e) => {
- window.open(KAKAO_AUTH_URL, "_self");
- }
-
- const logoutClick = () => {
- axios.post('http://localhost:8080/users/logout', {}, { withCredentials: true })
- .then(response => {
- if(response.data.result){
- cookies.remove("login")
- cookies.remove("user")
- navigation(0)
- } else {
- alert("로그아웃에 실패했습니다.");
- }
- })
- .catch(error => console.log(error));
- }
-
- const googleLoginClick = () => {
- window.open(GOOGLE_AUTH_URL, "_self");
- }
-
- return (
- <>
-
- {cookies.get('login') ?
- : }
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-}
-
-export default LogIn;
\ No newline at end of file
+ };
+
+ const emailChange = (e) => {
+ setEmail(e.target.value);
+ };
+
+ const passwordChange = (e) => {
+ setPassword(e.target.value);
+ };
+
+ const LoginClick = (e) => {
+ e.preventDefault();
+ if (email === '' || password === '') {
+ return setLoginError(true);
+ } else {
+ setLoginError(false);
+ }
+
+ const body = {
+ email: email,
+ password: password,
+ method: '일반',
+ };
+
+ axios
+ .post('http://localhost:8080/signin', body, {
+ withCredentials: true,
+ })
+ .then((response) => {
+ if (!response.data.status) {
+ alert('정지된 상태입니다. 관리자에게 문의해주세요.');
+ setModalOpen(false);
+ } else if (response.data.result) {
+ // dispatch({
+ // type: LOGIN_USER,
+ // user: response.data,
+ // })
+
+ const date = new Date();
+ date.setMinutes(date.getMinutes() + 30);
+ cookies.set('login', true, { expires: date });
+ cookies.set(
+ 'user',
+ {
+ authority: response.data.authority,
+ porfileImage: response.data.image_url,
+ nickname: response.data.nickname,
+ },
+ { expires: date }
+ );
+
+ setModalOpen(false);
+ navigation(0);
+ } else {
+ alert('이메일과 비밀번호를 확인해주세요.');
+ }
+ })
+ .catch((error) => console.log(error));
+ };
+
+ const KakaoLoginClick = (e) => {
+ window.open(KAKAO_AUTH_URL, '_self');
+ };
+
+ const logoutClick = () => {
+ axios
+ .post(
+ 'http://localhost:8080/users/logout',
+ {},
+ { withCredentials: true }
+ )
+ .then((response) => {
+ if (response.data.result) {
+ cookies.remove('login');
+ cookies.remove('user');
+ navigation(0);
+ } else {
+ alert('로그아웃에 실패했습니다.');
+ }
+ })
+ .catch((error) => console.log(error));
+ };
+
+ const googleLoginClick = () => {
+ window.open(GOOGLE_AUTH_URL, '_self');
+ };
+
+ return (
+ <>
+
+ {cookies.get('login') ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default LogIn;
diff --git a/frontend/sweet-red-beans/src/components/TopBar/NavigationBar.js b/frontend/sweet-red-beans/src/components/TopBar/NavigationBar.js
index cf03c07..0bbbd4a 100644
--- a/frontend/sweet-red-beans/src/components/TopBar/NavigationBar.js
+++ b/frontend/sweet-red-beans/src/components/TopBar/NavigationBar.js
@@ -1,9 +1,9 @@
-import React, { useEffect, useReducer, useState } from "react";
-import { useDispatch, useSelector } from "react-redux";
-import { Link } from "react-router-dom";
-import style from "../../css/TopBar/NavigationBar.module.css";
-import { useNavigate } from "react-router";
-import { Cookies } from "react-cookie";
+import React, { useEffect, useReducer, useState } from 'react';
+import { useDispatch, useSelector } from 'react-redux';
+import { Link } from 'react-router-dom';
+import style from '../../css/TopBar/NavigationBar.module.css';
+import { useNavigate } from 'react-router';
+import { Cookies } from 'react-cookie';
const NavigationBar = () => {
const cookies = new Cookies();
@@ -13,68 +13,75 @@ const NavigationBar = () => {
const onMouseEnter = () => {
setHide(false);
- }
+ };
const onMouseLeave = () => {
setHide(true);
- }
+ };
const eventClick = () => {
navigation('/event');
- }
+ };
const transactionClick = () => {
navigation('/transaction');
- }
+ };
const imformationShareClick = () => {
navigation('/informationShare');
- }
+ };
const DMClick = () => {
- if(cookies.get("login")) {
+ if (cookies.get('login')) {
navigation('/DM');
+ } else {
+ alert('로그인을 먼저 해주세요');
}
- else {
- alert("로그인을 먼저 해주세요");
- }
- }
+ };
const mypageClick = () => {
- if(cookies.get("login")) {
- const authority = cookies.get("user").authority
- if(authority === "일반") {
+ if (cookies.get('login')) {
+ const authority = cookies.get('user').authority;
+ if (authority === '일반') {
navigation('/mypage/myevents');
- }
- else if(authority === "관리자") {
+ } else if (authority === '관리자') {
navigation('/adminpage');
}
-
+ } else {
+ alert('로그인을 먼저 해주세요');
}
- else {
- alert("로그인을 먼저 해주세요");
- }
-
- }
-
+ };
return (
<>
-
+
>
);
-}
+};
-export default NavigationBar;
\ No newline at end of file
+export default NavigationBar;
diff --git a/frontend/sweet-red-beans/src/components/TopBar/TopBar.js b/frontend/sweet-red-beans/src/components/TopBar/TopBar.js
index fcc4b81..653caa8 100644
--- a/frontend/sweet-red-beans/src/components/TopBar/TopBar.js
+++ b/frontend/sweet-red-beans/src/components/TopBar/TopBar.js
@@ -1,35 +1,33 @@
-import React, {Fragment} from "react";
-import LogIn from "./LogIn";
-import NavigationBar from "./NavigationBar";
-import {useNavigate} from "react-router-dom";
-import style from "../../css/TopBar/TopBar.module.css"
-import { getCookie } from "../../Cookie";
-import { useSelector } from "react-redux";
+import React, { Fragment } from 'react';
+import LogIn from './LogIn';
+import NavigationBar from './NavigationBar';
+import { useNavigate } from 'react-router-dom';
+import style from '../../css/TopBar/TopBar.module.css';
+import { getCookie } from '../../Cookie';
+import { useSelector } from 'react-redux';
const TopBar = () => {
-
let navigation = useNavigate();
const titleClick = () => {
navigation('/');
- }
+ };
return (
<>
-
-
-
-
-
-
-
-
>
);
-
-}
+};
-export default TopBar;
\ No newline at end of file
+export default TopBar;
diff --git a/frontend/sweet-red-beans/src/components/TransactionPage/TransactionDetail.js b/frontend/sweet-red-beans/src/components/TransactionPage/TransactionDetail.js
index 149affe..b6597f9 100644
--- a/frontend/sweet-red-beans/src/components/TransactionPage/TransactionDetail.js
+++ b/frontend/sweet-red-beans/src/components/TransactionPage/TransactionDetail.js
@@ -1,22 +1,22 @@
-import React, { useEffect, useMemo, useState } from "react";
-import axios from "axios";
-import { useNavigate } from "react-router";
-import { useDispatch } from "react-redux";
-import { DM_CREATE } from "../../actions/types";
-import style from "../../css/TransactionPage/TransactionDetail.module.css";
-import Modal from "../Modals/TransactionModal";
-import Switch from "react-switch";
-import { parseDate } from "../../parseDate/parseDate";
-import user from "../../img/user.png";
+import React, { useEffect, useMemo, useState } from 'react';
+import axios from 'axios';
+import { useNavigate } from 'react-router';
+import { useDispatch } from 'react-redux';
+import { DM_CREATE } from '../../actions/types';
+import style from '../../css/TransactionPage/TransactionDetail.module.css';
+import Modal from '../Modals/TransactionModal';
+import Switch from 'react-switch';
+import { parseDate } from '../../parseDate/parseDate';
+import user from '../../img/user.png';
-const TransactionDetail = ({transaction}) => {
+const TransactionDetail = ({ transaction }) => {
const dispatch = useDispatch();
const navigation = useNavigate();
- const [status, setStatus] = useState("");
+ const [status, setStatus] = useState('');
const [likeStatus, setLikeStatus] = useState(false);
const [loading, setLoading] = useState(false);
const [modalOpen, setModalOpen] = useState(false);
- const [reportContent, setReportContent] = useState("");
+ const [reportContent, setReportContent] = useState('');
const [profileImage, setProfileImage] = useState(null);
const [nickname, setNickname] = useState();
@@ -24,135 +24,140 @@ const TransactionDetail = ({transaction}) => {
const body = {
transaction_id: transaction.transaction_id,
status: status,
- }
- axios.post('http://localhost:8080/transactions/change-status', body , { withCredentials: true })
- .then(response => {
- console.log(response.data);
- if(response.data.result){
- if(status==="진행중"){
- setStatus("마감");
- }
- else {
- setStatus("진행중");
+ };
+ axios
+ .post('http://localhost:8080/transactions/change-status', body, {
+ withCredentials: true,
+ })
+ .then((response) => {
+ console.log(response.data);
+ if (response.data.result) {
+ if (status === '진행중') {
+ setStatus('마감');
+ } else {
+ setStatus('진행중');
+ }
}
- }
- })
- .catch(error => console.log(error))
- }
+ })
+ .catch((error) => console.log(error));
+ };
const useConfirm = (message = null, onConfirm, onCancel) => {
- if (!onConfirm || typeof onConfirm !== "function") {
+ if (!onConfirm || typeof onConfirm !== 'function') {
return;
}
- if (onCancel && typeof onCancel !== "function") {
+ if (onCancel && typeof onCancel !== 'function') {
return;
}
-
+
const confirmAction = () => {
if (window.confirm(message)) {
- onConfirm();
+ onConfirm();
} else {
- onCancel();
+ onCancel();
}
};
-
+
return confirmAction;
};
//삭제버튼 삭제 눌렀을 때
const deleteConfirm = () => {
- axios.delete('http://localhost:8080/transactions',{
- data: {
- user_id: "1",
- transaction_id:transaction.transaction_id,
- },
- withCredentials: true
- })
- .then(response => {
- if(response.data.result){
- navigation(0);
- alert("삭제되었습니다.")
- }
- else {
- alert("삭제에 실패했습니다.")
- }
- })
- .catch(error => console.log(error));
- }
+ axios
+ .delete('http://localhost:8080/transactions', {
+ data: {
+ user_id: '1',
+ transaction_id: transaction.transaction_id,
+ },
+ withCredentials: true,
+ })
+ .then((response) => {
+ if (response.data.result) {
+ navigation(0);
+ alert('삭제되었습니다.');
+ } else {
+ alert('삭제에 실패했습니다.');
+ }
+ })
+ .catch((error) => console.log(error));
+ };
//삭제 취소 버튼 눌렀을 때
- const cancelConfirm = () => console.log("취소")
+ const cancelConfirm = () => console.log('취소');
//삭제 버튼 클릭했을 때
const deleteClick = useConfirm(
- "삭제하시겠습니까?",
+ '삭제하시겠습니까?',
deleteConfirm,
cancelConfirm
);
const DMClick = () => {
-
const body = {
- user_id : "1",
- transaction_id : transaction.transaction_id,
- }
- axios.post('http://localhost:8080/direct-message', body, { withCredentials: true })
- .then(response => {
- dispatch({
- type:DM_CREATE,
- DMCreate: response.data,
+ user_id: '1',
+ transaction_id: transaction.transaction_id,
+ };
+ axios
+ .post('http://localhost:8080/direct-message', body, {
+ withCredentials: true,
})
- navigation('/DM')
- return
- })
- .catch(error => {
- if(error.response.status === 401){
- alert("로그인을 먼저 해주세요");
- }
- })
-
- }
+ .then((response) => {
+ dispatch({
+ type: DM_CREATE,
+ DMCreate: response.data,
+ });
+ navigation('/DM');
+ return;
+ })
+ .catch((error) => {
+ if (error.response.status === 401) {
+ alert('로그인을 먼저 해주세요');
+ }
+ });
+ };
//좋아요 눌렀을 때
const likeClick = () => {
const body = {
transaction_id: transaction.transaction_id,
- }
- axios.post('http://localhost:8080/transactions/like', body, { withCredentials: true })
- .then(response => {
- console.log(response.data);
- if(response.data.result){
- if(status){
- setLikeStatus(false);
+ };
+ axios
+ .post('http://localhost:8080/transactions/like', body, {
+ withCredentials: true,
+ })
+ .then((response) => {
+ console.log(response.data);
+ if (response.data.result) {
+ if (status) {
+ setLikeStatus(false);
+ } else {
+ setLikeStatus(true);
+ }
+ } else {
+ alert('좋아요 변경에 실패했습니다.');
}
- else {
- setLikeStatus(true);
+ })
+ .catch((error) => {
+ if (error.response.status === 401) {
+ alert('로그인을 먼저 해주세요');
}
- }
- else {
- alert("좋아요 변경에 실패했습니다.")
- }
- })
- .catch(error => {
- if(error.response.status === 401){
- alert("로그인을 먼저 해주세요");
- }
- });
- }
+ });
+ };
useEffect(() => {
- setStatus(transaction.status)
+ setStatus(transaction.status);
setLikeStatus(transaction.is_like);
- if(transaction.user_status === "정지" || transaction.user_status === "탈퇴") {
- setNickname("(알수없음)");
+ if (
+ transaction.user_status === '정지' ||
+ transaction.user_status === '탈퇴'
+ ) {
+ setNickname('(알수없음)');
setProfileImage(user);
- }
- else {
+ } else {
setNickname(transaction.nickname);
setProfileImage(transaction.profile_url);
}
-
- },[transaction])
+ }, [transaction]);
const openModal = () => {
setModalOpen(true);
@@ -163,140 +168,159 @@ const TransactionDetail = ({transaction}) => {
const reportContentChange = (e) => {
setReportContent(e.target.value);
- }
+ };
//신고 확인 버튼 눌렀을 때
const reportConfirm = () => {
const body = {
- user_id : "1",
- transaction_id : transaction.transaction_id,
- report_content : reportContent,
- }
- axios.post('http://localhost:8080/transactions/report', body)
- .then(response => {
- if(response.data.result){
- alert("신고되었습니다.")
- setReportContent("");
- setModalOpen(false);
- }
- else {
- alert("신고에 실패했습니다.")
- }
- })
- .catch(error => {
- if(error.response.status === 401){
- alert("로그인을 먼저 해주세요");
- }
- });
- }
+ user_id: '1',
+ transaction_id: transaction.transaction_id,
+ report_content: reportContent,
+ };
+ axios
+ .post('http://localhost:8080/transactions/report', body)
+ .then((response) => {
+ if (response.data.result) {
+ alert('신고되었습니다.');
+ setReportContent('');
+ setModalOpen(false);
+ } else {
+ alert('신고에 실패했습니다.');
+ }
+ })
+ .catch((error) => {
+ if (error.response.status === 401) {
+ alert('로그인을 먼저 해주세요');
+ }
+ });
+ };
//모달창에서 신고하기 버튼 눌렀을 때
const reportClick = (e) => {
e.preventDefault();
- if(reportContent === ""){
- alert("신고 내용을 입력해주세요");
- }
- else {
- if (window.confirm("정말 신고하시겠습니까?")) {
+ if (reportContent === '') {
+ alert('신고 내용을 입력해주세요');
+ } else {
+ if (window.confirm('정말 신고하시겠습니까?')) {
reportConfirm();
} else {
cancelConfirm();
}
}
- }
+ };
- const statusClick = (checked) =>{
+ const statusClick = (checked) => {
console.log(checked);
- if(!checked){
- serverReqStatus()
- setStatus("마감");
- }
- else{
- serverReqStatus()
- setStatus("진행중");
+ if (!checked) {
+ serverReqStatus();
+ setStatus('마감');
+ } else {
+ serverReqStatus();
+ setStatus('진행중');
}
- }
+ };
- return(
+ return (
<>
-
-
-
-
-
-
-
-
-
{nickname}
-
{transaction.reliability}
-
+
+
+
-
- {
- transaction.is_mine
- ?
- //
- //
{status==='진행중'? "진행중" : "마감"}
- //
-
- }
- checkedIcon={
-
진행중
- }
- />
-
- :
-
- {status === '진행중' ?
진행중
:
마감
}
+
+
+
+
{nickname}
+
+ {transaction.reliability}
+
- }
-
-
-
- {transaction.content}
-
-
-
- {transaction.is_mine ?
-
-
+
+ {transaction.is_mine ? (
+ //
+ //
{status==='진행중'? "진행중" : "마감"}
+ //
+
+ }
+ checkedIcon={
+
+ 진행중
+
+ }
+ />
+
+ ) : (
+
+ {status === '진행중' ? (
+
진행중
+ ) : (
+
마감
+ )}
- :
-
-
- {status === '진행중' ? :
- }
- {likeStatus? : }
-
}
+ )}
-
- {parseDate(transaction.written_date)}
-
-
+
{transaction.content}
-
+
+
+ {transaction.is_mine ? (
+
+
+
+ ) : (
+
+
+ {status === '진행중' ? (
+
+ ) : (
+
+ )}
+ {likeStatus ? (
+
+ ) : (
+
+ )}
+
+ )}
+
-
+
+ {parseDate(transaction.written_date)}
+
+
+
>
);
-}
+};
-export default TransactionDetail;
\ No newline at end of file
+export default TransactionDetail;
diff --git a/frontend/sweet-red-beans/src/components/TransactionPage/TransactionPage.js b/frontend/sweet-red-beans/src/components/TransactionPage/TransactionPage.js
index b351416..34bf8a2 100644
--- a/frontend/sweet-red-beans/src/components/TransactionPage/TransactionPage.js
+++ b/frontend/sweet-red-beans/src/components/TransactionPage/TransactionPage.js
@@ -1,13 +1,13 @@
-import React, { useState, useEffect, useMemo, useRef } from "react";
-import Transactions from "./Transactions";
-import style from "../../css/TransactionPage/TransactionPage.module.css";
-import axios from "axios";
-import TransactionWriteModal from "../Modals/TransactionModal";
-import { getCookie } from "../../Cookie";
-import { useNavigate } from "react-router";
-import { useSelector } from "react-redux";
-import userImage from "../../img/user.png";
-import { Cookies } from "react-cookie";
+import React, { useState, useEffect, useMemo, useRef } from 'react';
+import Transactions from './Transactions';
+import style from '../../css/TransactionPage/TransactionPage.module.css';
+import axios from 'axios';
+import TransactionWriteModal from '../Modals/TransactionModal';
+import { getCookie } from '../../Cookie';
+import { useNavigate } from 'react-router';
+import { useSelector } from 'react-redux';
+import userImage from '../../img/user.png';
+import { Cookies } from 'react-cookie';
const TransactionPage = () => {
const cookies = new Cookies();
@@ -16,310 +16,358 @@ const TransactionPage = () => {
const [modalOpen, setModalOpen] = useState(false);
const [transactions, setTransactions] = useState([]);
const [transactionIsHere, setTransactionIsHere] = useState(false);
- const [search, setSearch] = useState("");
+ const [search, setSearch] = useState('');
const [searchWords, setSearchWords] = useState([]);
//처음엔 전체로 보여줌, true이면 진행 중만 보여줌
const [isProceed, setIsProceed] = useState(false);
//검색 필터
- const [searchSort, setSearchSort] = useState("글내용");
+ const [searchSort, setSearchSort] = useState('글내용');
// 스크롤값을 저장하기 위한 상태
const [ScrollY, setScrollY] = useState(0);
const [BtnStatus, setBtnStatus] = useState(false);
//내용
- const [content, setContent] = useState("");
+ const [content, setContent] = useState('');
const [start, setStart] = useState(0);
const [end, setEnd] = useState(30);
//내 프로필
- const [nickname, setNickname] = useState("");
- const [profileImage, setProfileImage] = useState("");
+ const [nickname, setNickname] = useState('');
+ const [profileImage, setProfileImage] = useState('');
const [fetching, setFetching] = useState(false);
const serverReq = () => {
- axios.get('http://localhost:8080/transactions/search',{
- withCredentials: true,
- params: {
- user_id: "1",
+ axios
+ .get('http://localhost:8080/transactions/search', {
+ withCredentials: true,
+ params: {
+ user_id: '1',
is_proceed: isProceed,
search_word: search,
- sort_criteria : "최신순",
- search_criteria : searchSort,
+ sort_criteria: '최신순',
+ search_criteria: searchSort,
start: 0,
end: 29,
- }
- }
- )
- .then(response => {
- setTransactions(response.data)
- setStart(0);
- setEnd(29);
- })
- .catch(error => console.log(error));
- }
+ },
+ })
+ .then((response) => {
+ setTransactions(response.data);
+ setStart(0);
+ setEnd(29);
+ })
+ .catch((error) => console.log(error));
+ };
const searchChange = (e) => {
setSearch(e.target.value);
- }
+ };
//검색버튼 눌렀을 때
const searchClick = () => {
setSearchWords([...searchWords, search]);
- }
+ };
//전체보기 눌렀을 때
const allClick = () => {
setIsProceed(false);
- console.log("전체 보기");
- }
+ console.log('전체 보기');
+ };
//진행중만 보기 눌렀을 때
const proceedClick = () => {
setIsProceed(true);
- console.log("진행 중만 보기");
- }
+ console.log('진행 중만 보기');
+ };
//글내용 or 작성자 변경했을 때
const searchSortChange = (e) => {
setSearchSort(e.target.value);
- }
+ };
//내용 변경됐을 때
const contentChange = (e) => {
setContent(e.target.value);
- }
+ };
//글쓰기 버튼 클릭했을 때
const writeClick = () => {
- if(content === "") {
- return
- }
- else {
- const body = {
- content: content,
- }
-
- axios.post('http://localhost:8080/transactions/write', body, { withCredentials: true })
- .then(response => {
- if(response.data){
- axios.get('http://localhost:8080/transactions/search',{
- withCredentials: true,
- params: {
- is_proceed: isProceed,
- search_word: search,
- sort_criteria : "최신순",
- search_criteria : searchSort,
- start: 0,
- end: 30,
+ if (content === '') {
+ return;
+ } else {
+ const body = {
+ content: content,
+ };
+
+ axios
+ .post('http://localhost:8080/transactions/write', body, {
+ withCredentials: true,
+ })
+ .then((response) => {
+ if (response.data) {
+ axios
+ .get('http://localhost:8080/transactions/search', {
+ withCredentials: true,
+ params: {
+ is_proceed: isProceed,
+ search_word: search,
+ sort_criteria: '최신순',
+ search_criteria: searchSort,
+ start: 0,
+ end: 30,
+ },
+ })
+ .then((response) => {
+ setTransactions(response.data);
+ })
+ .catch((error) => {});
+ } else {
+ alert('글 작성에 실패했습니다.');
}
- })
- .then(response => {
- setTransactions(response.data);
- })
- .catch(error => {
-
- });
- }
-
- else {
- alert("글 작성에 실패했습니다.");
- }
- })
- .catch(error => {
- if(error.response.status === 401){
- alert("로그인을 먼저 해주세요");
- }
- });
-
- setContent("");
- setModalOpen(false)
- }
- }
+ })
+ .catch((error) => {
+ if (error.response.status === 401) {
+ alert('로그인을 먼저 해주세요');
+ }
+ });
+
+ setContent('');
+ setModalOpen(false);
+ }
+ };
const openModal = () => {
- setModalOpen(true);
+ setModalOpen(true);
};
const closeModal = () => {
- setModalOpen(false);
+ setModalOpen(false);
};
const handleFollow = () => {
- setScrollY(window.pageYOffset);
- if(ScrollY > 100) {
- // 100 이상이면 버튼이 보이게
- setBtnStatus(true);
- } else {
- // 100 이하면 버튼이 사라지게
- setBtnStatus(false);
- }
- }
-
- const handleTop = () => { // 클릭하면 스크롤이 위로 올라가는 함수
- window.scrollTo({
- top: 0,
- behavior: "smooth"
- });
- setScrollY(0); // ScrollY 의 값을 초기화
- setBtnStatus(false); // BtnStatus의 값을 false로 바꿈 => 버튼 숨김
- }
+ setScrollY(window.pageYOffset);
+ if (ScrollY > 100) {
+ // 100 이상이면 버튼이 보이게
+ setBtnStatus(true);
+ } else {
+ // 100 이하면 버튼이 사라지게
+ setBtnStatus(false);
+ }
+ };
+
+ const handleTop = () => {
+ // 클릭하면 스크롤이 위로 올라가는 함수
+ window.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ setScrollY(0); // ScrollY 의 값을 초기화
+ setBtnStatus(false); // BtnStatus의 값을 false로 바꿈 => 버튼 숨김
+ };
const fetchMoreTransactions = () => {
- if(transactions.length !== 0) {
- axios.get('http://localhost:8080/transactions/search',{
- withCredentials: true,
- params: {
- user_id: "1",
- is_proceed: isProceed,
- search_word: search,
- sort_criteria : "최신순",
- search_criteria : searchSort,
- start: start+30,
- end: end+30,
- }
- })
- .then(response => {
- const more = response.data;
- const mergeData = transactions.concat(...more);
- setTransactions(mergeData);
- setStart(start+30);
- setEnd(end+30);
- })
- .catch(error => console.log(error));
- }
-
-
- console.log("더 붙이기");
- }
+ if (transactions.length !== 0) {
+ axios
+ .get('http://localhost:8080/transactions/search', {
+ withCredentials: true,
+ params: {
+ user_id: '1',
+ is_proceed: isProceed,
+ search_word: search,
+ sort_criteria: '최신순',
+ search_criteria: searchSort,
+ start: start + 30,
+ end: end + 30,
+ },
+ })
+ .then((response) => {
+ const more = response.data;
+ const mergeData = transactions.concat(...more);
+ setTransactions(mergeData);
+ setStart(start + 30);
+ setEnd(end + 30);
+ })
+ .catch((error) => console.log(error));
+ }
- useEffect(() => {
- //console.log("ScrollY is ", ScrollY); // ScrollY가 변화할때마다 값을 콘솔에 출력
+ console.log('더 붙이기');
+ };
- //ScrollY === document.documentElement.scrollTop
- if (ScrollY + document.documentElement.clientHeight >= document.documentElement.scrollHeight){
- if(transactions.length >= 29){
- fetchMoreTransactions();
+ useEffect(() => {
+ //console.log("ScrollY is ", ScrollY); // ScrollY가 변화할때마다 값을 콘솔에 출력
+
+ //ScrollY === document.documentElement.scrollTop
+ if (
+ ScrollY + document.documentElement.clientHeight >=
+ document.documentElement.scrollHeight
+ ) {
+ if (transactions.length >= 29) {
+ fetchMoreTransactions();
+ }
}
- }
- }, [ScrollY])
-
+ }, [ScrollY]);
+
useEffect(() => {
- const watch = () => {
- window.addEventListener('scroll', handleFollow);
- }
- watch(); // addEventListener 함수를 실행
- return () => {
- window.removeEventListener('scroll', handleFollow); // addEventListener 함수를 삭제
- }
- })
+ const watch = () => {
+ window.addEventListener('scroll', handleFollow);
+ };
+ watch(); // addEventListener 함수를 실행
+ return () => {
+ window.removeEventListener('scroll', handleFollow); // addEventListener 함수를 삭제
+ };
+ });
//한 번만 실행
- useEffect(()=>{
- axios.get('http://localhost:8080/transactions/search',{
- withCredentials: true,
- params: {
- is_proceed: isProceed,
- search_word: search,
- sort_criteria : "최신순",
- search_criteria : searchSort,
- start:start,
- end:end,
- }
- })
- .then(response => {
- setTransactions(response.data);
- })
- .catch(error => console.log(error));
-
+ useEffect(() => {
+ axios
+ .get('http://localhost:8080/transactions/search', {
+ withCredentials: true,
+ params: {
+ is_proceed: isProceed,
+ search_word: search,
+ sort_criteria: '최신순',
+ search_criteria: searchSort,
+ start: start,
+ end: end,
+ },
+ })
+ .then((response) => {
+ setTransactions(response.data);
+ })
+ .catch((error) => console.log(error));
+
//내 프로필 조회
- if(cookies.get("user")){
- setNickname(cookies.get("user").nickname);
- setProfileImage(cookies.get("user").porfileImage);
- }
- else {
- setNickname("익명");
- setProfileImage(userImage);
+ if (cookies.get('user')) {
+ setNickname(cookies.get('user').nickname);
+ setProfileImage(cookies.get('user').porfileImage);
+ } else {
+ setNickname('익명');
+ setProfileImage(userImage);
}
+ }, []);
- }, [])
-
- useEffect(()=>{
- setTransactionIsHere(true);
- }, [transactions])
+ useEffect(() => {
+ setTransactionIsHere(true);
+ }, [transactions]);
useEffect(() => {
- serverReq();
- console.log(isProceed);
+ serverReq();
+ console.log(isProceed);
}, [isProceed]);
useEffect(() => {
- serverReq();
- console.log(searchWords, searchSort);
- }, [searchWords])
+ serverReq();
+ console.log(searchWords, searchSort);
+ }, [searchWords]);
return (
<>
-
-
-
-
-
{nickname}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
{nickname}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
>
);
-}
+};
-export default TransactionPage;
\ No newline at end of file
+export default TransactionPage;
diff --git a/frontend/sweet-red-beans/src/components/TransactionPage/Transactions.js b/frontend/sweet-red-beans/src/components/TransactionPage/Transactions.js
index 6ac2633..55fe65c 100644
--- a/frontend/sweet-red-beans/src/components/TransactionPage/Transactions.js
+++ b/frontend/sweet-red-beans/src/components/TransactionPage/Transactions.js
@@ -1,22 +1,22 @@
-import React, { useEffect, useRef, useCallback, useState } from "react";
-import { useNavigate } from "react-router";
-import TransactionDetail from "./TransactionDetail";
+import React, { useEffect, useRef, useCallback, useState } from 'react';
+import { useNavigate } from 'react-router';
+import TransactionDetail from './TransactionDetail';
-const Transactions = ({transactions}) => {
+const Transactions = ({ transactions }) => {
const navigation = useNavigate();
- useEffect(()=>{
+ useEffect(() => {
console.log(transactions);
+ }, [transactions]);
- }, [transactions])
-
- return(
+ return (
<>
-
- {
- transactions.map((item, index) =>
)
- }
+ {transactions.map((item, index) => (
+
+
+
+ ))}
>
);
-}
+};
-export default Transactions;
\ No newline at end of file
+export default Transactions;
diff --git a/frontend/sweet-red-beans/src/css/App/App.module.css b/frontend/sweet-red-beans/src/css/App/App.module.css
index 9745ae9..70b8689 100644
--- a/frontend/sweet-red-beans/src/css/App/App.module.css
+++ b/frontend/sweet-red-beans/src/css/App/App.module.css
@@ -1,61 +1,65 @@
.App {
- text-align: center;
- padding: 0px;
- min-width: 1080px;
- min-height: 1300px;
- background-color: #F9F2EC;
- position: relative;
- padding-bottom: 250px;
+ text-align: center;
+ padding: 0px;
+ min-width: 1080px;
+ min-height: 1300px;
+ background-color: #f9f2ec;
+ position: relative;
+ padding-bottom: 250px;
}
.App button {
- font-family: 'ROKAFSansBold';
+ font-family: 'ROKAFSansBold';
}
-.App .search, .App select, .App option, .App textarea{
- font-family: 'Pretendard-Regular';
+.App .search input,
+.App select,
+.App option,
+.App textarea {
+ font-family: 'Pretendard-Regular';
}
-.App::-webkit-scrollbar{
- width: 15px;
+.App::-webkit-scrollbar {
+ width: 15px;
}
-.App::-webkit-scrollbar-thumb{
- width: 15px;
- background-color: #C4C4C4;
- border-radius: 20px;
- background-clip: padding-box;
- border: 4px solid transparent;
-
+.App::-webkit-scrollbar-thumb {
+ width: 15px;
+ background-color: #c4c4c4;
+ border-radius: 20px;
+ background-clip: padding-box;
+ border: 4px solid transparent;
}
.App-header {
- background-color: #282c34;
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- font-size: calc(10px + 2vmin);
- color: white;
+ background-color: #282c34;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ font-size: calc(10px + 2vmin);
+ color: white;
}
.footer {
- position: absolute;
- bottom: 0px;
- width: 100%;
+ position: absolute;
+ bottom: 0px;
+ width: 100%;
}
@font-face {
- font-family: 'ROKAFSansBold';
- src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts2201-3@1.0/ROKAFSansBold.woff') format('woff');
- font-weight: normal;
- font-style: normal;
+ font-family: 'ROKAFSansBold';
+ src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts2201-3@1.0/ROKAFSansBold.woff')
+ format('woff');
+ font-weight: normal;
+ font-style: normal;
}
@font-face {
- font-family: 'Pretendard-Regular';
- src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff') format('woff');
- font-weight: 400;
- font-style: normal;
-}
\ No newline at end of file
+ font-family: 'Pretendard-Regular';
+ src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff')
+ format('woff');
+ font-weight: 400;
+ font-style: normal;
+}
diff --git a/frontend/sweet-red-beans/src/css/EventPage/EventPage.module.css b/frontend/sweet-red-beans/src/css/EventPage/EventPage.module.css
index 007d8dd..f283bb1 100644
--- a/frontend/sweet-red-beans/src/css/EventPage/EventPage.module.css
+++ b/frontend/sweet-red-beans/src/css/EventPage/EventPage.module.css
@@ -3,107 +3,108 @@
background-color: white;
width: 1000px;
min-height: 1400px;
- margin : 0 auto;
+ margin: 0 auto;
border-radius: 20px;
- border: 1px solid #C4C4C4;
+ border: 1px solid #c4c4c4;
box-sizing: border-box;
padding: 30px;
margin-top: 50px;
}
.topBar {
- text-align: right;
- margin-right: 20px;
- margin-bottom: 30px;
+ text-align: right;
+ margin-right: 20px;
+ margin-bottom: 30px;
}
.datefilter {
- display: inline-block;
- vertical-align: bottom;
+ display: inline-block;
+ vertical-align: bottom;
}
.filter {
- display: inline-block;
- vertical-align: bottom;
- margin-left: 20px;
+ display: inline-block;
+ vertical-align: bottom;
+ margin-left: 20px;
}
-.selected, .notSelected {
- cursor: pointer;
- background-color: transparent;
- border: none;
- font-size: 14px;
- margin-left: 5px;
- transition: transform 200ms ease;
+.selected,
+.notSelected {
+ cursor: pointer;
+ background-color: transparent;
+ border: none;
+ font-size: 14px;
+ margin-left: 5px;
+ transition: transform 200ms ease;
}
.notSelected:hover {
- transform: scale(1.2);
+ transform: scale(1.2);
}
-.selected{
- cursor:default;
- font-size: 18px;
- color: #f23333;
+.selected {
+ cursor: default;
+ font-size: 18px;
+ color: #f23333;
}
.selected::before {
- display: inline-block;
- margin-right: 5px;
- content: "";
- width: 15px;
- height: 15px;
- background: url("../../img/check.png");
- background-repeat: no-repeat;
- background-size: 100%;
+ display: inline-block;
+ margin-right: 5px;
+ content: '';
+ width: 15px;
+ height: 15px;
+ background: url('../../img/check.png');
+ background-repeat: no-repeat;
+ background-size: 100%;
}
-.cinemafilter{
- display: inline-block;
- position: relative;
- width: 100px;
- height: 35px;
- border-bottom: 3px solid #C4C4C4;
- margin-left: 30px;
+.cinemafilter {
+ display: inline-block;
+ position: relative;
+ width: 100px;
+ height: 35px;
+ border-bottom: 3px solid #c4c4c4;
+ margin-left: 30px;
}
.cinemafilter > select {
- font-size: 14px;
- cursor: pointer;
- width: inherit;
- height: inherit;
- background: transparent;
- border: 0 none;
- outline: 0 none;
- padding: 0 8px;
- position: relative;
- z-index: 3;
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
+ font-size: 14px;
+ cursor: pointer;
+ width: inherit;
+ height: inherit;
+ background: transparent;
+ border: 0 none;
+ outline: 0 none;
+ padding: 0 8px;
+ position: relative;
+ z-index: 3;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
}
.cinemafilter > select > option {
- color: #5a5a5a;
- padding: 10px 0px 10px 0px;
- font-size: 14px;
+ color: #5a5a5a;
+ padding: 10px 0px 10px 0px;
+ font-size: 14px;
}
.filterArrow {
- position: absolute;
- bottom: 7px;
- right: 0;
- z-index: 1;
- width: 20px;
- height: 20px;
- transition: transform 300ms ease-in-out;
- background: url("../../img/down-arrow.png");
- background-repeat: no-repeat;
- background-size: 70%;
- background-position: 50% 50%;
+ position: absolute;
+ bottom: 7px;
+ right: 0;
+ z-index: 1;
+ width: 20px;
+ height: 20px;
+ transition: transform 300ms ease-in-out;
+ background: url('../../img/down-arrow.png');
+ background-repeat: no-repeat;
+ background-size: 70%;
+ background-position: 50% 50%;
}
-.cinemafilter > select:focus + .filterArrow{
- transform: rotate(180deg);
+.cinemafilter > select:focus + .filterArrow {
+ transform: rotate(180deg);
}
.search {
@@ -113,54 +114,54 @@
width: 200px;
height: 45px;
margin-left: 30px;
- border-bottom: 3px solid #C4C4C4;
+ border-bottom: 3px solid #c4c4c4;
vertical-align: bottom;
right: 0px;
bottom: 0px;
- }
-
- .search input {
+}
+
+.search input {
position: absolute;
bottom: 0px;
- left:0px;
+ left: 0px;
width: 170px;
height: 35px;
box-sizing: border-box;
border: none;
padding: 10px;
font-size: 14px;
-
+ font-family: 'Pretendard-Regular';
transition: border-bottom 200ms ease;
- }
-
- .search input::placeholder {
- color: #C4C4C4;
- }
-
- .search input:focus {
+}
+
+.search input::placeholder {
+ color: #c4c4c4;
+}
+
+.search input:focus {
outline: none;
- }
-
- .underline {
+}
+
+.underline {
position: absolute;
width: 0px;
height: 3px;
background-color: #f23333;
bottom: -3px;
transition: width 300ms ease;
- }
- .search input:focus + .underline {
+}
+.search input:focus + .underline {
width: 200px;
- }
-
- .search button {
+}
+
+.search button {
cursor: pointer;
position: absolute;
- top: 0;
+ top: 0;
right: 0;
transform: translate(-0%, 50%);
z-index: 3;
- width: 25px;
+ width: 25px;
height: 25px;
display: flex;
background: url('../../img/search.png');
@@ -168,4 +169,4 @@
border: 0 none;
outline: 0 none;
background-color: white;
- }
\ No newline at end of file
+}
diff --git a/frontend/sweet-red-beans/src/css/InformationSharePage/InformationSharePage.module.css b/frontend/sweet-red-beans/src/css/InformationSharePage/InformationSharePage.module.css
index f95d0d0..dec688d 100644
--- a/frontend/sweet-red-beans/src/css/InformationSharePage/InformationSharePage.module.css
+++ b/frontend/sweet-red-beans/src/css/InformationSharePage/InformationSharePage.module.css
@@ -2,9 +2,9 @@
position: relative;
background-color: white;
width: 1000px;
- margin : 0 auto;
+ margin: 0 auto;
border-radius: 20px;
- border: 1px solid #C4C4C4;
+ border: 1px solid #c4c4c4;
box-sizing: border-box;
padding: 30px;
margin-top: 50px;
@@ -16,15 +16,15 @@
margin-bottom: 45px;
}
-.filter{
+.filter {
display: inline-block;
position: relative;
width: 100px;
height: 35px;
- border-bottom: 3px solid #C4C4C4;
+ border-bottom: 3px solid #c4c4c4;
margin-left: 30px;
text-align: left;
- }
+}
.filter > select {
font-size: 14px;
@@ -40,33 +40,32 @@
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
- overflow:hidden;
- text-overflow: ellipsis;
- white-space:nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
-
.filter > select > option {
color: #5a5a5a;
padding: 10px 0px 10px 0px;
font-size: 14px;
}
-
+
.filterArrow {
- position: absolute;
- bottom: 7px;
- right: 0;
- z-index: 1;
- width: 20px;
+ position: absolute;
+ bottom: 7px;
+ right: 0;
+ z-index: 1;
+ width: 20px;
height: 20px;
transition: transform 300ms ease-in-out;
- background: url("../../img/down-arrow.png");
+ background: url('../../img/down-arrow.png');
background-repeat: no-repeat;
background-size: 70%;
background-position: 50% 50%;
}
-
-.filter > select:focus + .filterArrow{
+
+.filter > select:focus + .filterArrow {
transform: rotate(180deg);
}
@@ -82,7 +81,6 @@
width: 140px;
}
-
.search {
display: inline-block;
position: relative;
@@ -90,7 +88,7 @@
width: 200px;
height: 45px;
margin-left: 20px;
- border-bottom: 3px solid #C4C4C4;
+ border-bottom: 3px solid #c4c4c4;
vertical-align: bottom;
}
@@ -98,18 +96,18 @@
font-size: 14px;
position: absolute;
bottom: 0px;
- left:0px;
+ left: 0px;
width: 170px;
height: 35px;
box-sizing: border-box;
border: none;
+ font-family: 'Pretendard-Regular';
padding: 10px;
-
transition: border-bottom 200ms ease;
}
.search input::placeholder {
- color: #C4C4C4;
+ color: #c4c4c4;
}
.search input:focus {
@@ -131,11 +129,11 @@
.search button {
cursor: pointer;
position: absolute;
- top: 0;
+ top: 0;
right: 0;
transform: translate(-0%, 50%);
z-index: 3;
- width: 25px;
+ width: 25px;
height: 25px;
display: flex;
background: url('../../img/search.png');
@@ -166,4 +164,4 @@
height: 30px;
background-color: #5a5a5a;
background-size: 30px 30px;
-} */
\ No newline at end of file
+} */
diff --git a/frontend/sweet-red-beans/src/css/TopBar/NavigationBar.module.css b/frontend/sweet-red-beans/src/css/TopBar/NavigationBar.module.css
index 3297f62..f43addc 100644
--- a/frontend/sweet-red-beans/src/css/TopBar/NavigationBar.module.css
+++ b/frontend/sweet-red-beans/src/css/TopBar/NavigationBar.module.css
@@ -1,45 +1,3 @@
-/* .topBar{
- position: relative;
- margin-top:10px;
- margin-bottom: 10px;
-}
-
-.topBarButton {
- font-size: 15px;
- color:cornflowerblue;
- margin-right: 90px;
- border-style: none;
- width: 94px;
- height: 66px;
- font-family: '어그로';
-}
-
-.topBarButton:hover {
- font-size: 15px;
- color:#FFA0AC;
- margin-right: 90px;
- border-style: none;
- font-family: '어그로';
- width: 94px;
- height: 66px;
-}
-
-.bottomCategory {
- display: none;
-}
-
-.bottomCategory:hover {
- color: white;
- }
-
- .topBar:hover .bottomCategory {
- display: block;
- }
-
-@font-face {
- font-family: '어그로';
- src: url('../fonts/SB\ 어그로\ B.ttf');
-} */
nav {
width: 100%;
display: flex;
@@ -48,7 +6,8 @@ nav {
font-family: 'ROKAFSansBold';
}
-ul, li {
+ul,
+li {
margin: 0;
padding: 0;
list-style: none;
@@ -67,11 +26,11 @@ ul, li {
text-decoration: none;
letter-spacing: 0.05em;
display: inline-block;
- padding: 10px 20px;
+ padding: 5px 20px;
}
.mainMenu > li > div:hover {
- color: #F23333;
+ color: #f23333;
}
.mainMenu > li > div::after {
@@ -79,16 +38,16 @@ ul, li {
left: 50%;
transform: translate(-50%, 0);
bottom: 0px;
- content: "";
+ content: '';
width: 0px;
height: 4px;
- background-color: #F23333;
+ background-color: #f23333;
}
.mainMenu > li > div:hover::after {
- content: "";
+ content: '';
width: 100%;
- transition: width 300ms ease
+ transition: width 300ms ease;
}
.subMenu {
@@ -103,7 +62,7 @@ ul, li {
padding: 10px 10px;
}
-.subMenu > li > div {
+.subMenu > li > div {
font-size: 14px;
color: black;
text-decoration: none;
@@ -116,22 +75,21 @@ ul, li {
}
.mainMenu > li:hover .subMenu > li > div {
-
animation: slide linear 0.3s;
}
@keyframes slide {
- 0%{
+ 0% {
color: transparent;
height: 0;
}
- 100%{
+ 100% {
color: black;
height: 100%;
}
}
-.subMenu > li > div:hover {
+.subMenu > li > div:hover {
cursor: pointer;
- color: #F23333;
-}
\ No newline at end of file
+ color: #f23333;
+}
diff --git a/frontend/sweet-red-beans/src/css/TopBar/TopBar.module.css b/frontend/sweet-red-beans/src/css/TopBar/TopBar.module.css
index eb0662b..50bacd5 100644
--- a/frontend/sweet-red-beans/src/css/TopBar/TopBar.module.css
+++ b/frontend/sweet-red-beans/src/css/TopBar/TopBar.module.css
@@ -1,7 +1,7 @@
.container {
position: relative;
height: 50px;
- border-bottom: #5A5A5A 1px solid;
+ border-bottom: #5a5a5a 1px solid;
}
.loginArea {
@@ -11,10 +11,10 @@
bottom: 10px;
}
-.title{
+.title {
position: absolute;
- left:0px;
- bottom: 5px;
+ left: 0px;
+ bottom: 0px;
display: inline-block;
margin-left: 10px;
}
@@ -22,15 +22,15 @@
.title > button {
cursor: pointer;
border-style: none;
- background-color:rgba(205, 92, 92, 0);
+ background-color: rgba(205, 92, 92, 0);
font-size: 30px;
}
-.navigationBar{
+.navigationBar {
position: absolute;
display: inline-block;
- left:150px;
+ left: 150px;
bottom: 0px;
text-align: center;
vertical-align: middle;
-}
\ No newline at end of file
+}
diff --git a/frontend/sweet-red-beans/src/css/TransactionPage/TransactionPage.module.css b/frontend/sweet-red-beans/src/css/TransactionPage/TransactionPage.module.css
index e677488..a299275 100644
--- a/frontend/sweet-red-beans/src/css/TransactionPage/TransactionPage.module.css
+++ b/frontend/sweet-red-beans/src/css/TransactionPage/TransactionPage.module.css
@@ -1,74 +1,73 @@
.wrap {
- position: relative;
- font-size: 18px;
- line-height: 1.6;
- position: relative;
- background-color: white;
- border: #C4C4C4 1px solid;
- width: 1000px;
- margin : 0 auto;
- border-radius: 20px;
- box-sizing: border-box;
- margin-bottom: 100px;
- margin-top: 50px;
- font-family: 'ROKAFSansBold';
+ position: relative;
+ font-size: 18px;
+ line-height: 1.6;
+ position: relative;
+ background-color: white;
+ border: #c4c4c4 1px solid;
+ width: 1000px;
+ margin: 0 auto;
+ border-radius: 20px;
+ box-sizing: border-box;
+ margin-bottom: 100px;
+ margin-top: 50px;
+ font-family: 'ROKAFSansBold';
}
.writeBox {
- margin-top: 30px;
- margin-bottom: 50px;
+ margin-top: 30px;
+ margin-bottom: 50px;
}
.writeBox::after {
- display: block;
- content: "";
- width: 100%;
- height: 1px;
- background-color: #C4C4C4;
- margin-top: 50px;
+ display: block;
+ content: '';
+ width: 100%;
+ height: 1px;
+ background-color: #c4c4c4;
+ margin-top: 50px;
}
.profileArea {
- position: absolute;
- display: inline-block;
- text-align: left;
- top:30px;
+ position: absolute;
+ display: inline-block;
+ text-align: left;
+ top: 30px;
}
.profileImage {
- display: inline-block;
- vertical-align: middle;
- width: 50px;
- height: 50px;
- border-radius: 50px;
- object-fit: cover;
+ display: inline-block;
+ vertical-align: middle;
+ width: 50px;
+ height: 50px;
+ border-radius: 50px;
+ object-fit: cover;
}
.nickname {
- cursor: default;
- margin-left: 20px;
- display: inline-block;
- vertical-align: middle;
- font-size: 16px;
-
+ cursor: default;
+ margin-left: 20px;
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 16px;
}
.writeButtonArea {
- position: absolute;
- display: inline-block;
- top: 30px;
- right: 150px;
+ position: absolute;
+ display: inline-block;
+ top: 30px;
+ right: 150px;
}
.writeButtonArea > button {
- cursor: pointer;
- border: none;
- width: 190px;
- height: 50px;
- background-color: #F23333;
- border-radius: 10px;
- color: white;
- font-size: 16px;
+ cursor: pointer;
+ border: none;
+ width: 190px;
+ height: 50px;
+ background-color: #f23333;
+ border-radius: 10px;
+ color: white;
+ font-size: 16px;
}
/* .writeButtonArea > button:hover{
@@ -83,282 +82,282 @@
} */
.writeBox > textarea {
- font-size: 14px;
- width: 700px;
- height: 200px;
- border-radius: 10px;
- border: #C4C4C4 1px solid;
- box-shadow: 0px 0px 7px rgba(90, 90, 90, 0.25);
- box-sizing: border-box;
- padding: 20px;
- resize: none;
- margin-top: 80px;
- outline: none;
+ font-size: 14px;
+ width: 700px;
+ height: 200px;
+ border-radius: 10px;
+ border: #c4c4c4 1px solid;
+ box-shadow: 0px 0px 7px rgba(90, 90, 90, 0.25);
+ box-sizing: border-box;
+ padding: 20px;
+ resize: none;
+ margin-top: 80px;
+ outline: none;
}
-.writeBox > textarea:focus{
- border: 2px solid #5a5a5a;
- box-shadow:none;
+.writeBox > textarea:focus {
+ border: 2px solid #5a5a5a;
+ box-shadow: none;
}
-.writeBox > textarea::-webkit-scrollbar{
- width: 15px;
+.writeBox > textarea::-webkit-scrollbar {
+ width: 15px;
}
-.writeBox > textarea::-webkit-scrollbar-thumb{
- width: 15px;
- background-color: #C4C4C4;
- border-radius: 20px;
- margin: 5px;
- background-clip: padding-box;
- border: 4px solid transparent;
-
+.writeBox > textarea::-webkit-scrollbar-thumb {
+ width: 15px;
+ background-color: #c4c4c4;
+ border-radius: 20px;
+ margin: 5px;
+ background-clip: padding-box;
+ border: 4px solid transparent;
}
-.writeBox > textarea::-webkit-scrollbar-track{
- background-color: rgba(0,0,0,0);
-
+.writeBox > textarea::-webkit-scrollbar-track {
+ background-color: rgba(0, 0, 0, 0);
}
.transactionsBox {
}
-.topBox{
- text-align: right;
- margin-right: 150px;
- margin-bottom: 30px;
+.topBox {
+ text-align: right;
+ margin-right: 150px;
+ margin-bottom: 30px;
}
-.proceedfilter{
- display: inline-block;
- vertical-align: bottom;
+.proceedfilter {
+ display: inline-block;
+ vertical-align: bottom;
}
-.selected, .notSelected {
- cursor: pointer;
- background-color: transparent;
- border: none;
- font-size: 14px;
- margin-left: 20px;
- transition: transform 200ms ease;
+.selected,
+.notSelected {
+ cursor: pointer;
+ background-color: transparent;
+ border: none;
+ font-size: 14px;
+ margin-left: 20px;
+ transition: transform 200ms ease;
}
.notSelected:hover {
- transform: scale(1.2);
+ transform: scale(1.2);
}
-.selected{
- cursor:default;
- font-size: 18px;
- color: #f23333;
+.selected {
+ cursor: default;
+ font-size: 18px;
+ color: #f23333;
}
.selected::before {
- display: inline-block;
- margin-right: 5px;
- content: "";
- width: 15px;
- height: 15px;
- background: url("../../img/check.png");
- background-repeat: no-repeat;
- background-size: 100%;
+ display: inline-block;
+ margin-right: 5px;
+ content: '';
+ width: 15px;
+ height: 15px;
+ background: url('../../img/check.png');
+ background-repeat: no-repeat;
+ background-size: 100%;
}
-.filter{
- display: inline-block;
- position: relative;
- width: 100px;
- height: 35px;
- border-bottom: 3px solid #C4C4C4;
- margin-left: 30px;
+.filter {
+ display: inline-block;
+ position: relative;
+ width: 100px;
+ height: 35px;
+ border-bottom: 3px solid #c4c4c4;
+ margin-left: 30px;
}
.filter > select {
- font-size: 14px;
- cursor: pointer;
- width: inherit;
- height: inherit;
- background: transparent;
- border: 0 none;
- outline: 0 none;
- padding: 0 8px;
- position: relative;
- z-index: 3;
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
+ font-size: 14px;
+ cursor: pointer;
+ width: inherit;
+ height: inherit;
+ background: transparent;
+ border: 0 none;
+ outline: 0 none;
+ padding: 0 8px;
+ position: relative;
+ z-index: 3;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
}
.filter > select > option {
- color: #5a5a5a;
- padding: 10px 0px 10px 0px;
- font-size: 14px;
+ color: #5a5a5a;
+ padding: 10px 0px 10px 0px;
+ font-size: 14px;
}
.filterArrow {
- position: absolute;
- bottom: 7px;
- right: 0;
- z-index: 1;
- width: 20px;
- height: 20px;
- transition: transform 300ms ease-in-out;
- background: url("../../img/down-arrow.png");
- background-repeat: no-repeat;
- background-size: 70%;
- background-position: 50% 50%;
+ position: absolute;
+ bottom: 7px;
+ right: 0;
+ z-index: 1;
+ width: 20px;
+ height: 20px;
+ transition: transform 300ms ease-in-out;
+ background: url('../../img/down-arrow.png');
+ background-repeat: no-repeat;
+ background-size: 70%;
+ background-position: 50% 50%;
}
-.filter > select:focus + .filterArrow{
- transform: rotate(180deg);
+.filter > select:focus + .filterArrow {
+ transform: rotate(180deg);
}
.search {
- display: inline-block;
- position: relative;
- text-align: right;
- width: 200px;
- height: 45px;
- margin-left: 30px;
- border-bottom: 3px solid #C4C4C4;
- vertical-align: bottom;
+ display: inline-block;
+ position: relative;
+ text-align: right;
+ width: 200px;
+ height: 45px;
+ margin-left: 30px;
+ border-bottom: 3px solid #c4c4c4;
+ vertical-align: bottom;
}
.search input {
- position: absolute;
- bottom: 0px;
- left:0px;
- width: 170px;
- height: 35px;
- box-sizing: border-box;
- border: none;
- padding: 10px;
- font-size: 14px;
- transition: border-bottom 200ms ease;
+ position: absolute;
+ bottom: 0px;
+ left: 0px;
+ width: 170px;
+ height: 35px;
+ box-sizing: border-box;
+ border: none;
+ padding: 10px;
+ font-size: 14px;
+ font-family: 'Pretendard-Regular';
+ transition: border-bottom 200ms ease;
}
.search input::placeholder {
- color: #C4C4C4;
+ color: #c4c4c4;
}
.search input:focus {
- outline: none;
+ outline: none;
}
.underline {
- position: absolute;
- width: 0px;
- height: 3px;
- background-color: #f23333;
- bottom: -3px;
- transition: width 300ms ease;
+ position: absolute;
+ width: 0px;
+ height: 3px;
+ background-color: #f23333;
+ bottom: -3px;
+ transition: width 300ms ease;
}
.search input:focus + .underline {
- width: 200px;
+ width: 200px;
}
.search button {
- cursor: pointer;
- position: absolute;
- top: 0;
- right: 0;
- transform: translate(-0%, 50%);
- z-index: 3;
- width: 25px;
- height: 25px;
- display: flex;
- background: url('../../img/search.png');
- background-size: cover;
- border: 0 none;
- outline: 0 none;
- background-color: white;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(-0%, 50%);
+ z-index: 3;
+ width: 25px;
+ height: 25px;
+ display: flex;
+ background: url('../../img/search.png');
+ background-size: cover;
+ border: 0 none;
+ outline: 0 none;
+ background-color: white;
}
.topBtn {
- position: fixed;
- opacity: 0;
- bottom: 30px;
- right: 30px;
- z-index: -10;
- width: 60px;
- height: 60px;
- border-radius: 50px;
- border: none;
- cursor: pointer;
- transition: opacity 0.5s ease-in-out;
- background-color: #F23333;
- color: white;
+ position: fixed;
+ opacity: 0;
+ bottom: 30px;
+ right: 30px;
+ z-index: -10;
+ width: 60px;
+ height: 60px;
+ border-radius: 50px;
+ border: none;
+ cursor: pointer;
+ transition: opacity 0.5s ease-in-out;
+ background-color: #f23333;
+ color: white;
}
.topBtn.active {
- z-index: 10;
- opacity: 1;
+ z-index: 10;
+ opacity: 1;
}
.topBtn:hover,
.topBtn:focus,
-.topBtn:active {
- outline: 0 none;
+.topBtn:active {
+ outline: 0 none;
}
.writeBtn {
- position: fixed;
- opacity: 0;
- bottom: 120px;
- right: 30px;
- z-index: -10;
- width: 60px;
- height: 60px;
- border-radius: 50px;
- border: none;
- cursor: pointer;
- transition: opacity 0.5s ease-in-out;
- background: url("../../img/quill.png");
- background-size: 50%;
- background-repeat: no-repeat;
- background-position: 50% 50%;
- background-color: #F23333;
- color: white;
+ position: fixed;
+ opacity: 0;
+ bottom: 120px;
+ right: 30px;
+ z-index: -10;
+ width: 60px;
+ height: 60px;
+ border-radius: 50px;
+ border: none;
+ cursor: pointer;
+ transition: opacity 0.5s ease-in-out;
+ background: url('../../img/quill.png');
+ background-size: 50%;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ background-color: #f23333;
+ color: white;
}
.writeBtn.active {
- z-index: 10;
- opacity: 1;
+ z-index: 10;
+ opacity: 1;
}
.modal {
- text-align: center;
+ text-align: center;
}
.modal > div:nth-child(1) {
- text-align: left;
- padding: 10px 0px 10px 30px;
+ text-align: left;
+ padding: 10px 0px 10px 30px;
}
-.modal > div > textarea{
- width: 520px;
- height: 200px;
- resize: none;
- outline: none;
- padding:20px;
- box-sizing: border-box;
- border-radius: 10px;
- border: #C4C4C4 1px solid;
- font-size: 14px;
+.modal > div > textarea {
+ width: 520px;
+ height: 200px;
+ resize: none;
+ outline: none;
+ padding: 20px;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: #c4c4c4 1px solid;
+ font-size: 14px;
}
-.modal > div > textarea:focus{
- border: #5a5a5a 2px solid;
+.modal > div > textarea:focus {
+ border: #5a5a5a 2px solid;
}
.modal > button {
- margin-top: 30px;
- cursor: pointer;
- border: none;
- background-color: #F23333;
- color: white;
- font-size: 16px;
- border-radius: 10px;
- height: 50px;
- width: 110px;
-}
\ No newline at end of file
+ margin-top: 30px;
+ cursor: pointer;
+ border: none;
+ background-color: #f23333;
+ color: white;
+ font-size: 16px;
+ border-radius: 10px;
+ height: 50px;
+ width: 110px;
+}