All files / molecule/autosuggestField/src index.js

72.72% Statements 8/11
0% Branches 0/2
50% Functions 1/2
80% Lines 8/10

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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103                        1x                           3x   3x         3x 3x   3x                                                     1x   1x                                                                          
import {useRef} from 'react'
 
import PropTypes from 'prop-types'
 
import MoleculeAutosuggest, {
  MoleculeAutosuggestDropdownListSizes,
  MoleculeAutosuggestStates
} from '@s-ui/react-molecule-autosuggest'
import MoleculeField from '@s-ui/react-molecule-field'
 
import {getErrorState, getState} from './settings.js'
 
const MoleculeAutosuggestField = ({
  alertText,
  children,
  errorText,
  helpText,
  id,
  inline,
  label,
  nodeLabel,
  onChange,
  successText,
  useContrastLabel,
  ...restProps
}) => {
  const refAutosuggest = useRef()
 
  const handleClick = () => {
    const {current: domAutosuggest} = refAutosuggest
    if (domAutosuggest) domAutosuggest.focus()
  }
 
  const errorState = getErrorState({successText, errorText})
  const autosuggestState = getState({successText, errorState, alertText})
 
  return (
    <MoleculeField
      name={id}
      label={label}
      nodeLabel={nodeLabel}
      successText={successText}
      errorText={errorText}
      alertText={alertText}
      helpText={helpText}
      inline={inline}
      onClickLabel={handleClick}
      onChange={onChange}
      useContrastLabel={useContrastLabel}
    >
      <MoleculeAutosuggest
        id={id}
        refMoleculeAutosuggest={refAutosuggest}
        errorState={errorState}
        state={autosuggestState}
        {...restProps}
      >
        {children}
      </MoleculeAutosuggest>
    </MoleculeField>
  )
}
 
MoleculeAutosuggestField.displayName = 'MoleculeAutosuggestField'
 
MoleculeAutosuggestField.propTypes = {
  /** Text to be displayed as label */
  label: PropTypes.string.isRequired,
 
  /** React node to be displayed as label if there is not a label */
  nodeLabel: PropTypes.element,
 
  /** used as label for attribute and Autosuggest element id */
  id: PropTypes.string,
 
  /** Success message to display when success state  */
  successText: PropTypes.string,
 
  /* onChange callback */
  onChange: PropTypes.func,
 
  /** Error message to display when error state  */
  errorText: PropTypes.string,
 
  /** Alert message to display when alert state  */
  alertText: PropTypes.string,
 
  /** Help Text to display */
  helpText: PropTypes.string,
 
  /** Boolean to decide if elements should be set inline */
  inline: PropTypes.bool,
 
  /** Boolean, if true it will use contrast label */
  useContrastLabel: PropTypes.string,
 
  /** A React element */
  children: PropTypes.element
}
 
export default MoleculeAutosuggestField
export {MoleculeAutosuggestStates, MoleculeAutosuggestDropdownListSizes}