diff --git a/frontend/src/components/common/LongReviewItem/index.tsx b/frontend/src/components/common/LongReviewItem/index.tsx index 18a743606..6ad068289 100644 --- a/frontend/src/components/common/LongReviewItem/index.tsx +++ b/frontend/src/components/common/LongReviewItem/index.tsx @@ -8,22 +8,35 @@ interface LongReviewItemProps extends TextareaHTMLAttributes) => void; } -const LongReviewItem = ({ minLength, maxLength, initialValue = '', style, ...rest }: LongReviewItemProps) => { +const LongReviewItem = ({ + minLength, + maxLength, + initialValue = '', + handleTextareaChange, + style, + ...rest +}: LongReviewItemProps) => { const { value, textLength, isError, errorMessage, handleChange, handleBlur } = useLongReviewItem({ minLength, maxLength, initialValue, }); + const handleWriteTextarea = (e: React.ChangeEvent) => { + handleChange(e); + handleTextareaChange(e); + }; + return ( diff --git a/frontend/src/hooks/useModals.ts b/frontend/src/hooks/useModals.ts new file mode 100644 index 000000000..d10113453 --- /dev/null +++ b/frontend/src/hooks/useModals.ts @@ -0,0 +1,29 @@ +import { useState } from 'react'; + +interface Modals { + [key: string]: boolean; +} + +const useModals = () => { + const [modals, setModals] = useState({}); + + const openModal = (key: string) => { + setModals((prev) => ({ + ...prev, + [key]: true, + })); + }; + + const closeModal = (key: string) => { + setModals((prev) => ({ + ...prev, + [key]: false, + })); + }; + + const isOpen = (key: string) => modals[key]; + + return { isOpen, openModal, closeModal }; +}; + +export default useModals;