import * as React from 'react'; import { useIntl } from 'react-intl'; import { DropdownMenu, TriggerButton } from '@box/blueprint-web'; import { ApprovalTask } from '@box/blueprint-web-assets/icons/Fill'; import { Tasks } from '@box/blueprint-web-assets/icons/MediumFilled'; import messages from './messages'; import { TASK_TYPE_APPROVAL, TASK_TYPE_GENERAL } from '../../constants'; import type { TaskType } from '../../common/types/tasks'; import './AddTaskMenuV2.scss'; export interface AddTaskMenuV2Props { isDisabled: boolean; onMenuItemClick: (taskType: TaskType) => void; setAddTaskButtonRef?: (element: HTMLButtonElement | null) => void; } const AddTaskMenuV2: React.FC = ({ isDisabled, onMenuItemClick, setAddTaskButtonRef }) => { const { formatMessage } = useIntl(); const [isOpen, setIsOpen] = React.useState(false); const handleMenuItemClick = React.useCallback( (taskType: TaskType) => { // Open the modal first onMenuItemClick(taskType); // Then close the dropdown. We rely on onCloseAutoFocus to prevent focus restoration. setIsOpen(false); }, [onMenuItemClick], ); return ( { // Prevent focus from returning to the trigger button when the menu closes. // This allows the Modal (which was just opened) to keep focus on its input field // without having it stolen back, which would trigger a blur validation error. event.preventDefault(); }} > handleMenuItemClick(TASK_TYPE_GENERAL)}>
{formatMessage(messages.taskAddTaskGeneral)}
{formatMessage(messages.taskAddTaskGeneralDescription)}
handleMenuItemClick(TASK_TYPE_APPROVAL)}>
{/* Should be replaced by icons/MediumFilled/ApprovalTask after it will be availabel */}
{formatMessage(messages.taskAddTaskApproval)}
{formatMessage(messages.taskAddTaskApprovalDescription)}
); }; export default AddTaskMenuV2;