@sparkpost/matchbox
Version: 
A React UI component library
50 lines (43 loc) • 1.17 kB
JavaScript
import React from 'react';
import { Transition } from 'react-transition-group';
import classnames from 'classnames';
import styles from './Popover.module.scss';
const Content = ({
  children,
  popoverRef,
  open,
  activatorWidth,
  top, left, bottom, right, fixed,
  sectioned,
  className = '',
  trigger,
  ...rest
}) => {
  const popoverClasses = classnames(
    styles.Popover,
    sectioned && styles.sectioned,
    className
  );
  const wrapperClasses = classnames(
    styles.Wrapper,
    top && styles.top,
    left && styles.left
  );
  const tipStyle = { [left ? 'right' : 'left']: activatorWidth / 2 };
  return (
    <Transition mountOnEnter unmountOnExit in={open} timeout={{ enter: 0, exit: 100 }}>
      {(state) => (
        <div className={wrapperClasses} ref={popoverRef}>
          <div className={classnames(popoverClasses, state && styles[state])} {...rest}>
            <span className={styles.Tip} style={tipStyle} />
            <div className={styles.Content}>
              {children}
            </div>
          </div>
        </div>
      )}
    </Transition>
  );
};
Content.displayName = 'Popover.Content';
export default Content;