wix-style-react
Version:
wix-style-react
77 lines (66 loc) • 1.73 kB
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import Tooltip from '../Tooltip';
import InputHelpSuffix from './InputHelpSuffix';
import InfoCircle from '../new-icons/InfoCircle';
import styles from './Input.scss';
const placementToMoveBy = {
right: { x: 10, y: -10 },
left: { x: -10, y: -10 },
top: { x: 0, y: -5 },
bottom: { x: 0, y: -15 },
};
const AmaterialHelpSuffix = ({ help, helpMessage, placement, onShow }) => (
<Tooltip
dataHook="input-tooltip"
disabled={!help || helpMessage.length === 0}
maxWidth="230px"
placement={placement}
moveBy={placementToMoveBy[placement]}
alignment="center"
hideDelay={100}
content={helpMessage}
textAlign="left"
overlay=""
onShow={onShow}
>
<div className={styles.amaterialHelp}>
<InfoCircle height="30" width="30" />
</div>
</Tooltip>
);
AmaterialHelpSuffix.propTypes = {
help: PropTypes.bool,
helpMessage: PropTypes.node,
placement: PropTypes.oneOf(['left', 'right', 'top', 'bottom']),
onShow: PropTypes.func,
};
AmaterialHelpSuffix.defaultProps = {
placement: 'right',
};
class ThemedInputHelpSuffix extends InputHelpSuffix {
render() {
const {
theme,
help,
helpMessage,
tooltipPlacement,
onTooltipShow,
} = this.props;
return theme === 'amaterial' ? (
<AmaterialHelpSuffix
help={help}
helpMessage={helpMessage}
placement={tooltipPlacement}
onShow={onTooltipShow}
/>
) : (
super.render()
);
}
}
ThemedInputHelpSuffix.propTypes = {
tooltipPlacement: PropTypes.oneOf(['left', 'right', 'top', 'bottom']),
onTooltipShow: PropTypes.func,
};
export default ThemedInputHelpSuffix;