import { Button, ButtonProps, Size, VIEW } from '@cloud-ru/ds-button'; import { Tooltip } from '@cloud-ru/ds-tooltip'; import { ButtonDropdown, ButtonDropdownProps } from '@cloud-ru/ds-uikit-product-button-predefined'; import { ReactNode } from 'react'; import { ButtonDroplist, ButtonDroplistProps } from './buttons/ButtonDroplist'; import { ButtonKebab, ButtonKebabProps } from './buttons/ButtonKebab'; import { ButtonQuota, ButtonQuotaProps } from './buttons/ButtonQuota'; import { BUTTON_TYPE } from './constants'; import { Action } from './types'; type CommonProps = { className?: string; size?: Size; fullWidth?: boolean }; /** * Рендерит один action. Составные варианты (`dropdown`/`kebab`/`droplist`) монтируют адаптивные * `@ds`-примитивы, которые берут раскладку из `AdaptiveProvider`. Раскладку фиксируют обёртки * `DesktopActions` / `MobileActions` (`withLayoutType`), поэтому отдельный проп `layoutType` не нужен. */ export function ActionView({ variant, tooltip, hidden = false, commonProps, ...buttonProps }: Action & { commonProps: CommonProps }) { if (hidden) { return null; } // disableSpanWrapper — кнопка остаётся ПРЯМЫМ flex-потомком контейнера действий: без него Tooltip // добавляет span-обёртку (`flex:0 1 auto`), и `fullWidth`-кнопка (`flex:1 1 0`) не растягивается на // всю ширину (mobile: 2 действия должны делить строку). Как в MobilePageForm ButtonGroup. const addTooltip = (component: ReactNode) => tooltip ? ( {component} ) : ( component ); switch (variant) { case BUTTON_TYPE.Outline: return addTooltip(