diff --git a/frontend/src/component/common/FloatingButton/FloatingButton.tsx b/frontend/src/component/common/FloatingButton/FloatingButton.tsx index a4fb5916..127cbd9f 100644 --- a/frontend/src/component/common/FloatingButton/FloatingButton.tsx +++ b/frontend/src/component/common/FloatingButton/FloatingButton.tsx @@ -1,8 +1,19 @@ import classNames from 'classnames'; -import React, { useState } from 'react'; +import React from 'react'; import { ButtonState } from '../enums'; import { IconType, ToolCategory } from '../types'; +interface IFloatingButtonProps { + /** 메뉴가 열려있는지 여부를 나타냅니다. */ + isMenuOpen?: boolean; + /** 메뉴를 토글할 수 있는 함수입니다. */ + toggleMenu?: () => void; + /** 선택된 도구의 버튼 상태를 의미합니다. */ + toolType: ButtonState; + /** 도구를 선택할 수 있는 함수입니다. */ + handleMenuClick?: (type: ButtonState) => void; +} + /** * FloatingButton 컴포넌트는 도구 선택 및 메뉴 토글 기능을 제공하는 플로팅 버튼을 렌더링합니다. * @remarks @@ -12,40 +23,14 @@ import { IconType, ToolCategory } from '../types'; * * ) */ -export const FloatingButton = () => { - const [toolType, setToolType] = useState(ButtonState.CLOSE); - const [isMenuOpen, setIsMenuOpen] = useState(false); - - /** - * @remarks - * - 메뉴를 토글하는 함수입니다. - */ - const toggleMenu = () => { - setIsMenuOpen(prev => !prev); - if (!isMenuOpen) { - setToolType(ButtonState.OPEN); - } else { - setToolType(ButtonState.CLOSE); - } - }; - - /** - * @remarks - * 툴을 선택하고 메뉴를 닫는 함수입니다. - * @param {ButtonState} type - 선택된 툴 타입 - */ - const handleMenuClick = (type: ButtonState) => { - setToolType(type); - setIsMenuOpen(!isMenuOpen); - }; - +export const FloatingButton = (props: IFloatingButtonProps) => { return (
{ToolCategory.map(({ type, description, icon }, index) => (