import * as React from 'react'; import classnames from 'classnames'; import { injectIntl, IntlShape } from 'react-intl'; import BoxSign28 from '../../icon/logo/BoxSign28'; import Sign16 from '../../icon/fill/Sign16'; import PlainButton, { PlainButtonProps } from '../../components/plain-button'; // @ts-ignore Module is written in Flow import TargetedClickThroughGuideTooltip from '../../features/targeting/TargetedClickThroughGuideTooltip'; import Tooltip, { TooltipPosition } from '../../components/tooltip'; // @ts-ignore Module is written in Flow import messages from './messages'; import './SidebarNavSignButton.scss'; export type Props = PlainButtonProps & { blockedReason?: string; intl: IntlShape; targetingApi?: { canShow: boolean; onClose: () => void; onComplete: () => void; onShow: () => void; }; }; export const PlaceholderTooltip = ({ children }: { children: React.ReactNode }) => children; export function SidebarNavSignButton({ blockedReason, intl, targetingApi, ...rest }: Props) { const isSignDisabled = !!blockedReason; const isTargeted = targetingApi?.canShow; const FtuxTooltip = !isSignDisabled && isTargeted ? TargetedClickThroughGuideTooltip : PlaceholderTooltip; const label = intl.formatMessage(messages.boxSignRequest); const buttonClassName = classnames('bcs-SidebarNavSignButton', { 'bdl-is-disabled': isSignDisabled }); let tooltipMessage = label; switch (blockedReason) { case 'shield-download': case 'shared-link': case 'shield-sign': tooltipMessage = intl.formatMessage(messages.boxSignSecurityBlockedTooltip); break; case 'watermark': tooltipMessage = intl.formatMessage(messages.boxSignWatermarkBlockedTooltip); break; default: } return ( targetingApi} > ); } export default injectIntl(SidebarNavSignButton);