UNPKG

box-ui-elements-mlh

Version:
100 lines (93 loc) 3.67 kB
// @flow import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import Tooltip from '../tooltip'; import Button from '../button'; import messages from './messages'; import './GuideTooltip.scss'; type TooltipProps = $Diff< React.ElementConfig<typeof Tooltip>, {| text: any, theme: any, |}, >; type Props = {| ...$Exact<TooltipProps>, body: React.Node, icon?: React.Node, primaryButtonProps?: React.ElementConfig<typeof Button>, secondaryButtonProps?: React.ElementConfig<typeof Button>, steps?: [number, number], title?: React.Node, |}; function GuideTooltip({ body, children, className = '', icon, isShown = true, primaryButtonProps, steps, secondaryButtonProps, showCloseButton = true, title, ...rest }: Props) { return ( <Tooltip {...rest} className={`bdl-GuideTooltip ${className}`} isShown={isShown} showCloseButton={showCloseButton} text={ <> {icon && <div className="bdl-GuideTooltip-icon">{icon}</div>} <div className="bdl-GuideTooltip-right"> {title && <div className="bdl-GuideTooltip-title">{title}</div>} <div className="bdl-GuideTooltip-body">{body}</div> {(secondaryButtonProps || primaryButtonProps || steps) && ( <div className="bdl-GuideTooltip-bottom"> {(secondaryButtonProps || primaryButtonProps) && ( <div className="bdl-GuideTooltip-navigation"> {secondaryButtonProps && ( <Button {...secondaryButtonProps} className={classNames( 'bdl-GuideTooltip-previousButton', secondaryButtonProps.className, )} /> )} {primaryButtonProps && ( <Button {...primaryButtonProps} className={classNames( 'bdl-GuideTooltip-nextButton', primaryButtonProps.className, )} /> )} </div> )} {steps && ( <div className="bdl-GuideTooltip-steps"> <FormattedMessage {...messages.navigation} values={{ currentStepIndex: steps[0], totalNumSteps: steps[1] }} /> </div> )} </div> )} </div> </> } theme="callout" > {children} </Tooltip> ); } export default GuideTooltip;