@kiwicom/smart-faq
Version:
85 lines (77 loc) • 1.76 kB
JavaScript
// @flow
import * as React from 'react';
import classNames from 'classnames';
import Tooltip from './Tooltip';
export type Props = {|
content: React.Node,
placement: 'top' | 'right' | 'bottom' | 'left',
mobilePlacement:
| 'sm-top'
| 'sm-right'
| 'sm-bottom'
| 'sm-left'
| 'sm-left-top'
| 'sm-right-top',
children?: React.Node,
className?: string,
open?: boolean,
|};
const HelpTooltip = ({
content,
children,
placement,
mobilePlacement,
className,
open,
}: Props) => {
const tooltipClassNames = classNames('HelpTooltip', placement, className, {
_visible: open,
});
return (
<div
className={tooltipClassNames}
style={{ display: 'flex', alignItems: 'content' }}
>
<div className="HelpTooltip-content">{children}</div>
<Tooltip
open={open}
placement={placement}
placementMobile={mobilePlacement}
mobileArrow={false}
>
{content}
</Tooltip>
<style jsx>
{`
.HelpTooltip {
position relative;
display inline-block;
vertical-align middle;
}
.HelpTooltip .HelpTooltip-content {
display inline-block;
}
.HelpTooltip .HelpTooltip-content:after {
overflow hidden;
}
.HelpTooltip .Tooltip {
z-index 7000;
animation fadein .2s;
}
// fix not to overlay other elements
.HelpTooltip .Tooltip.out {
pointer-events none;
}
.HelpTooltip .Tooltip.bottom {
top 100%;
}
`}
</style>
</div>
);
};
HelpTooltip.defaultProps = {
placement: 'bottom',
mobilePlacement: 'sm-left',
};
export default HelpTooltip;