2020-06-18 19:53:02 +00:00
|
|
|
import React from 'react';
|
2020-06-17 21:36:19 +00:00
|
|
|
import PropTypes from 'prop-types';
|
2020-06-18 19:53:02 +00:00
|
|
|
import { Trans } from 'react-i18next';
|
|
|
|
import classNames from 'classnames';
|
2020-07-13 12:23:13 +00:00
|
|
|
import { processContent } from '../../../helpers/helpers';
|
2020-07-17 12:24:39 +00:00
|
|
|
import Tooltip from '../../ui/Tooltip';
|
|
|
|
import 'react-popper-tooltip/dist/styles.css';
|
|
|
|
import './IconTooltip.css';
|
2020-06-17 21:36:19 +00:00
|
|
|
|
2020-07-17 12:24:39 +00:00
|
|
|
const getIconTooltip = ({
|
2020-06-17 21:36:19 +00:00
|
|
|
className,
|
|
|
|
contentItemClass,
|
|
|
|
columnClass,
|
2020-06-18 19:53:02 +00:00
|
|
|
canShowTooltip = true,
|
2020-06-17 21:36:19 +00:00
|
|
|
xlinkHref,
|
|
|
|
title,
|
2020-06-18 19:53:02 +00:00
|
|
|
placement,
|
2020-06-17 21:36:19 +00:00
|
|
|
tooltipClass,
|
2020-06-18 19:53:02 +00:00
|
|
|
content,
|
2020-07-13 12:23:13 +00:00
|
|
|
renderContent = content ? React.Children.map(
|
|
|
|
processContent(content),
|
2020-06-18 19:53:02 +00:00
|
|
|
(item, idx) => <div key={idx} className={contentItemClass}>
|
|
|
|
<Trans>{item || '—'}</Trans>
|
|
|
|
</div>,
|
2020-07-13 12:23:13 +00:00
|
|
|
) : null,
|
2020-07-17 12:24:39 +00:00
|
|
|
}) => {
|
|
|
|
const tooltipContent = <>
|
|
|
|
{title
|
|
|
|
&& <div className="pb-4 h-25 grid-content font-weight-bold"><Trans>{title}</Trans></div>}
|
2020-07-13 12:23:13 +00:00
|
|
|
<div className={classNames(columnClass)}>{renderContent}</div>
|
2020-07-17 12:24:39 +00:00
|
|
|
</>;
|
|
|
|
|
|
|
|
const tooltipClassName = classNames('tooltip-custom__container', tooltipClass, { 'd-none': !canShowTooltip });
|
|
|
|
|
|
|
|
return <Tooltip
|
|
|
|
className={tooltipClassName}
|
|
|
|
content={tooltipContent}
|
|
|
|
placement={placement}
|
|
|
|
>
|
|
|
|
{xlinkHref && <svg className={className}>
|
|
|
|
<use xlinkHref={`#${xlinkHref}`} />
|
|
|
|
</svg>}
|
|
|
|
</Tooltip>;
|
|
|
|
};
|
2020-06-17 21:36:19 +00:00
|
|
|
|
2020-07-17 12:24:39 +00:00
|
|
|
getIconTooltip.propTypes = {
|
2020-06-17 21:36:19 +00:00
|
|
|
className: PropTypes.string,
|
|
|
|
contentItemClass: PropTypes.string,
|
|
|
|
columnClass: PropTypes.string,
|
|
|
|
tooltipClass: PropTypes.string,
|
|
|
|
title: PropTypes.string,
|
2020-06-18 19:53:02 +00:00
|
|
|
placement: PropTypes.string,
|
|
|
|
canShowTooltip: PropTypes.string,
|
2020-06-17 21:36:19 +00:00
|
|
|
xlinkHref: PropTypes.string,
|
|
|
|
content: PropTypes.oneOfType([
|
|
|
|
PropTypes.string,
|
|
|
|
PropTypes.array,
|
|
|
|
]),
|
|
|
|
renderContent: PropTypes.arrayOf(PropTypes.element),
|
|
|
|
};
|
|
|
|
|
2020-07-17 12:24:39 +00:00
|
|
|
export default getIconTooltip;
|