import type { MouseEventHandler, ReactNode } from 'react'; import type { IconButtonProps } from '../IconButton'; import type { MenuItemProps } from '../MenuItem'; import type { TooltipProps } from '../Tooltip'; export type SecondaryActionKind = MenuItemProps & SingleAction & { /** * Причина блокировки */ disabledReason?: TooltipProps['title']; }; export type NestedAction = MenuItemProps & { /** * Обработчик действия */ onClick?: (row: T) => void; /** * Название действия */ name: string; }; export type SingleAction = { /** * Причина блокировки */ disabledReason?: TooltipProps['title']; /** * Иконка действия */ icon?: ReactNode; /** * Обработчик действия */ onClick?: (row: T) => void; /** * Название действия */ name: string; /** * Флаг показа выпадающего списка при клике */ nested?: false; /** * Если true, блокирует взаимодействие с actions */ isBlockingOperation?: boolean; }; export type MultipleAction = MenuItemProps & { /** * Иконка действия */ icon: ReactNode; /** * Список действий для выпадающего списка */ actions: NestedAction[]; /** * Флаг показа выпадающего списка при клике */ nested: true; /** * Название действия */ name: string; }; export type ActionCellHandler = (onClick: SingleAction['onClick'] | NestedAction['onClick']) => MouseEventHandler | undefined; export type MainActionKind = (IconButtonProps & SingleAction) | MultipleAction;