From a5730025c39ba07743d3441538d85effe73780ef Mon Sep 17 00:00:00 2001 From: anyl92 Date: Sun, 20 Aug 2023 10:00:29 +0900 Subject: [PATCH 1/2] fix(modal): set previewState, button click event --- src/features/shared/modal/Container.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/features/shared/modal/Container.tsx b/src/features/shared/modal/Container.tsx index 30af919..4fc7b99 100644 --- a/src/features/shared/modal/Container.tsx +++ b/src/features/shared/modal/Container.tsx @@ -4,6 +4,8 @@ import { useResetAtom } from 'jotai/utils'; import win from '/svg/win.svg'; import next from '/svg/next.svg'; import idCard from '/svg/idcard_basic.svg'; +import moodBad from '/png/mood_BAD.png'; +import moodGood from '/png/mood_GOOD.png'; import { previewMoodAtom } from '../layout/atom'; @@ -12,10 +14,9 @@ import './modal.scss'; const ModalContainer = () => { const [modal] = useAtom(modalAtom); - const [previewMood] = useAtom(previewMoodAtom); + const [previewMood, setPreviewMood] = useAtom(previewMoodAtom); const resetModal = useResetAtom(modalAtom); - console.log(previewMood); if (!modal.open) return null; const { imageType, onClose, title, description, footer, onConfirm } = modal as Modal; @@ -33,25 +34,30 @@ const ModalContainer = () => { const handleCloseClick = () => { onClose?.(); resetModal(); + setPreviewMood({ open: false }); }; const handleConfirmClick = () => { onConfirm?.(); resetModal(); }; - console.log(previewMood); return (
× - {previewMood.open || modal.open ? ( + {previewMood.open && modal.open ? ( <>
Preview
preview
- preview + {previewMood.value === 'GOOD' && ( + preview + )} + {previewMood.value === 'BAD' && ( + preview + )}
From d4e6fcfe6ee5d45a62c5261e48f66e4dcd22d10f Mon Sep 17 00:00:00 2001 From: anyl92 Date: Sun, 20 Aug 2023 10:16:58 +0900 Subject: [PATCH 2/2] feat(active): change word, save active data in user --- src/features/login/type.ts | 2 ++ src/features/preview/Container.tsx | 2 +- src/features/setting/hooks/useSetting.ts | 19 +++++++++++++++++-- .../shared/layout/components/BottomBtn.tsx | 14 +++++++++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/features/login/type.ts b/src/features/login/type.ts index a39225b..9cab342 100644 --- a/src/features/login/type.ts +++ b/src/features/login/type.ts @@ -4,6 +4,8 @@ export type User = { companyNo?: string; department?: string; position?: string; + comment?: string; + mood?: string; }; export type DummyUser = User & { password?: string }; diff --git a/src/features/preview/Container.tsx b/src/features/preview/Container.tsx index ae4caf1..02bba16 100644 --- a/src/features/preview/Container.tsx +++ b/src/features/preview/Container.tsx @@ -18,7 +18,7 @@ const Container = () => { useLayoutEffect(() => { setTitle({ title: 'CardMe Preview', back: true }); - setBottomBtn({ text: 'Modification', disable: curNum !== 1 }); + setBottomBtn({ text: 'Edit', disable: curNum !== 1 }); return () => { setTitle({}); diff --git a/src/features/setting/hooks/useSetting.ts b/src/features/setting/hooks/useSetting.ts index e5172b8..3ed5a2d 100644 --- a/src/features/setting/hooks/useSetting.ts +++ b/src/features/setting/hooks/useSetting.ts @@ -11,14 +11,26 @@ import badMood from '/png/badge_bad.png'; import { dummyEsl, labelsImagePushPath, token } from '../constants'; import { modalAtom } from '../../shared/modal/atom'; +import { userAtom } from '../../login/atom'; const useSetting = () => { const [, setModal] = useAtom(modalAtom); const [, setPreviewMood] = useAtom(previewMoodAtom); + const [{ mood, comment }, setUser] = useAtom(userAtom); + const { register, handleSubmit, control, formState } = useForm({ + defaultValues: { + mood: mood, + comment: comment, + }, + }); - const { register, handleSubmit, control, formState } = useForm(); const onSubmit: SubmitHandler = async (data) => { const imgEl = document.createElement('img'); + setUser((prev) => ({ + ...prev, + mood: data.mood, + comment: data.comment, + })); imgEl.src = data.mood === 'mood_GOOD' ? goodMood : badMood; //TODO 이래도 될까 fetch(imgEl.src) @@ -39,7 +51,10 @@ const useSetting = () => { }; const handlePreviewClick = () => { - setPreviewMood((prev) => ({ ...prev, open: true })); + setPreviewMood((prev) => ({ + value: mood ? mood.slice(5) : prev.value, + open: true, + })); setModal({ open: true }); }; diff --git a/src/features/shared/layout/components/BottomBtn.tsx b/src/features/shared/layout/components/BottomBtn.tsx index daa24d3..6b82313 100644 --- a/src/features/shared/layout/components/BottomBtn.tsx +++ b/src/features/shared/layout/components/BottomBtn.tsx @@ -1,13 +1,25 @@ import { useAtom } from 'jotai'; import { FunctionComponent } from 'react'; +import { useNavigate } from 'react-router-dom'; import { activeSaveAtom, bottomBtnAtom } from '../atom'; import addLogo from '/svg/add.svg'; +import { URL } from '../../constants/url'; + const LayoutBottomBtn: FunctionComponent = () => { const [{ text, add, disable }] = useAtom(bottomBtnAtom); const [, setActiveSave] = useAtom(activeSaveAtom); + const navigate = useNavigate(); + + const handleBtnClick = () => { + if (text === 'Edit') { + navigate(URL.setting); + } else if (text === 'Save') { + setActiveSave(true); + } + }; if (!text) return null; @@ -15,7 +27,7 @@ const LayoutBottomBtn: FunctionComponent = () => {