All files / src/gadgets/filtered-dropdown view.js

100% Statements 14/14
100% Branches 4/4
100% Functions 2/2
100% Lines 14/14

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                            4x 4x 4x   4x 2x   2x 2x 4x     2x 1x     1x     3x   3x       3x          
/* Copyright © 2016 Kuali, Inc. - All Rights Reserved
 * You may use and modify this code under the terms of the Kuali, Inc.
 * Pre-Release License Agreement. You may not distribute it.
 *
 * You should have received a copy of the Kuali, Inc. Pre-Release License
 * Agreement with this file. If not, please write to license@kuali.co.
 */
 
import defaultTo from 'lodash/defaultTo'
import { get } from 'lodash'
import PropTypes from 'prop-types'
import React from 'react'
 
export default function View ({ details, dependent, value }) {
  const referenceGadget = get(details, 'data.referenceGadget')
  const dependentData = get(dependent, 'data', {})
  const referenceValue = dependentData[referenceGadget]
 
  if (!referenceValue) {
    return <div />
  }
  const possibleValuesMap = get(details, 'data.values', {})
  const matchingOption = defaultTo(possibleValuesMap[referenceValue], []).find(
    option => option.key === value
  )
 
  if (!matchingOption) {
    return <div />
  }
 
  return <div>{matchingOption.lbl}</div>
}
 
View.displayName = 'FilteredDropdownView'
 
View.defaultProps = {
  value: ''
}
 
View.propTypes = {
  dependent: PropTypes.object,
  details: PropTypes.object,
  value: PropTypes.string
}