Skip to content

Commit e61f13d

Browse files
committed
♻️ refactor: 메세지 내용 부분 빈 값 에러 추가
1 parent 79aff72 commit e61f13d

File tree

3 files changed

+39
-11
lines changed

3 files changed

+39
-11
lines changed

src/components/Editor/Editor.jsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useMemo, useEffect, useRef } from 'react';
22
import ReactQuill from 'react-quill';
33
import 'react-quill/dist/quill.snow.css';
4-
import styled from './Editor.module.scss';
4+
import styles from './Editor.module.scss';
55

66
const formats = [
77
'bold',
@@ -21,7 +21,7 @@ const fontFamilyMap = {
2121
'Noto Sans': '"Noto Sans", sans-serif',
2222
};
2323

24-
export default function Editor({ value, onChange, font }) {
24+
export default function Editor({ value, onChange, font, onBlur, isError }) {
2525
const quillRef = useRef();
2626

2727
const modules = useMemo(() => {
@@ -45,19 +45,25 @@ export default function Editor({ value, onChange, font }) {
4545
}, [font]);
4646

4747
return (
48-
<div className={styled['editor']}>
49-
<h2 className={styled['editor__title']}>내용을 입력해 주세요</h2>
48+
<div className={styles['editor']}>
49+
<h2 className={styles['editor__title']}>내용을 입력해 주세요</h2>
5050

51-
<div className={styled['editor__box']}>
51+
<div
52+
className={`${styles['editor__box']} ${isError ? styles['editor__box--error'] : ''}`}
53+
>
5254
<ReactQuill
5355
ref={quillRef}
5456
theme="snow"
5557
modules={modules}
5658
formats={formats}
5759
value={value}
5860
onChange={onChange}
61+
onBlur={onBlur}
5962
placeholder="전하고 싶은 메시지를 적어보세요."
6063
/>
64+
{isError && (
65+
<p className={styles['editor__error-message']}>값을 입력해 주세요.</p>
66+
)}
6167
</div>
6268
</div>
6369
);

src/components/Editor/Editor.module.scss

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@
1010

1111
&__box {
1212
height: 260px;
13+
margin-bottom: 4px;
1314
border: 1px solid $gray-300;
1415
border-radius: 8px;
16+
17+
&--error {
18+
border: 1px solid $error;
19+
color: $gray-900;
20+
}
1521
}
1622

1723
:global(.ql-toolbar) {
@@ -39,6 +45,11 @@
3945
color: $gray-900;
4046
}
4147

48+
&__error-message {
49+
@include font-12-regular;
50+
color: $error;
51+
}
52+
4253
@media (max-width: 767px) {
4354
& {
4455
max-width: 320px;

src/pages/MessageForm/MessageForm.jsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import styles from './MessageForm.module.scss';
1313
export default function MessageForm() {
1414
const { id } = useParams();
1515
const [sender, setSender] = useState('');
16-
const [isError, setIsError] = useState(false);
16+
const [senderError, setSenderIsError] = useState(false);
17+
const [messageError, setMessageIsError] = useState(false);
1718
const [profileImage, setProfileImage] = useState(DEFAULT_PROFILE_IMAGE);
1819
const [relationship, setRelationship] = useState('지인');
1920
const [message, setMessage] = useState('');
@@ -29,8 +30,12 @@ export default function MessageForm() {
2930
setSender(e.target.value);
3031
}
3132

32-
function handleBlur() {
33-
setIsError(sender.trim() === '');
33+
function handleSenderBlur() {
34+
setSenderIsError(sender.trim() === '');
35+
}
36+
37+
function handleMessageBlur() {
38+
setMessageIsError(stripHtml(message) === '');
3439
}
3540

3641
function resetForm() {
@@ -123,8 +128,8 @@ export default function MessageForm() {
123128
placeholder="이름을 입력해 주세요 (10자 이내)"
124129
value={sender}
125130
onChange={handleInputChange}
126-
onBlur={handleBlur}
127-
isError={isError}
131+
onBlur={handleSenderBlur}
132+
isError={senderError}
128133
/>
129134
</div>
130135
<div className={styles['message-form__profile-selector']}>
@@ -137,7 +142,13 @@ export default function MessageForm() {
137142
<RelationshipSelect value={relationship} onChange={setRelationship} />
138143
</div>
139144
<div className={styles['message-form__editor']}>
140-
<Editor value={message} onChange={setMessage} font={font} />
145+
<Editor
146+
value={message}
147+
onChange={setMessage}
148+
font={font}
149+
onBlur={handleMessageBlur}
150+
isError={messageError}
151+
/>
141152
</div>
142153
<div className={styles['message-form__font-select']}>
143154
<FontSelect value={font} onChange={setFont} />

0 commit comments

Comments
 (0)