All files / molecule/avatar/src/AvatarFallback index.js

100% Statements 7/7
100% Branches 3/3
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28                  1x 9x   9x   8x   9x     1x 1x              
import cx from 'classnames'
import PropTypes from 'prop-types'
 
import Injector from '@s-ui/react-primitive-injector'
 
import AvatarFallbackIcon from '../AvatarFallbackIcon/index.js'
import {BASE_CLASS_NAME as FALLBACK_ICON_CLASS_NAME} from '../AvatarFallbackIcon/settings.js'
import AvatarFallbackName from '../AvatarFallbackName/index.js'
 
const MoleculeAvatarFallback = ({name, icon = <AvatarFallbackIcon />, className: classNameProp, ...others}) => {
  const className = cx(classNameProp, FALLBACK_ICON_CLASS_NAME)
 
  const [Component, providedProps] = name
    ? [AvatarFallbackName, {name, ...others}]
    : [props => <Injector {...props}>{icon}</Injector>, {...others, className, role: 'img'}]
 
  return <Component {...providedProps} />
}
 
MoleculeAvatarFallback.displayName = 'MoleculeAvatarFallback'
MoleculeAvatarFallback.propTypes = {
  className: PropTypes.string,
  name: PropTypes.string,
  icon: PropTypes.element
}
 
export default MoleculeAvatarFallback