All files / elements/forms/utils/PlainText component.js

94.44% Statements 17/18
90% Branches 9/10
100% Functions 4/4
93.75% Lines 15/16

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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45          20x 20x 12x 12x 2x   11x   11x 2x   9x     20x             20x 12x 12x             20x           20x      
import React from 'react';
import PropTypes from 'prop-types';
import { removeSomeProps } from 'src/utils/componentHelpers';
import { control, spaceProps, typography } from 'src/utils/styledHelpers';
 
const isArrayOptionsValue = value => !!value && Array.isArray(value);
const getDisplayValue = props => {
  const { value } = props;
  if (isArrayOptionsValue(value)) {
    return value.map(e => e.label).join(', ');
  }
  Iif (!!value && !!value.label) {
    return value.label;
  } if (typeof value === 'string') {
    return value;
  }
  return '';
};
 
const propsToTrim = [
  'labelText',
  ...Object.keys(control.propTypes),
  ...Object.keys(spaceProps.propTypes),
  ...Object.keys(typography.propTypes),
  'value',
];
export const PlainTextComponent = props => {
  const displayString = getDisplayValue(props);
  return (
    <div {...removeSomeProps(props, propsToTrim)}>
      <div>{displayString}</div>
    </div>
  );
};
 
PlainTextComponent.propTypes = {
  ...control.propTypes,
  ...typography.propTypes,
  value: PropTypes.any,
};
 
PlainTextComponent.defaultProps = {
  value: null,
};