all files / src/events/ getValue.js

100% Statements 37/37
95.45% Branches 42/44
100% Functions 5/5
100% Lines 22/22
1 statement, 1 function, 7 branches Ignored     
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              24× 51× 27×   26×     23×   19×   15×   13×                  
import isEvent from './isEvent'
 
const getSelectedValues = options => {
  const result = []
  Eif (options) {
    for (let index = 0; index < options.length; index++) {
      const option = options[index]
      if (option.selected) {
        result.push(option.value)
      }
    }
  }
  return result
}
 
const getValue = (event, isReactNative) => {
  if (isEvent(event)) {
    if (!isReactNative && event.nativeEvent && event.nativeEvent.text !== undefined) {
      return event.nativeEvent.text
    }
    if (isReactNative && event.nativeEvent !== undefined) {
      return event.nativeEvent.text
    }
    const {target: {type, value, checked, files}, dataTransfer} = event
    if (type === 'checkbox') {
      return checked
    }
    if (type === 'file') {
      return files || dataTransfer && dataTransfer.files
    }
    if (type === 'select-multiple') {
      return getSelectedValues(event.target.options)
    }
    return value
  }
  // not an event, so must be either our value or an object containing our value in the 'value' key
  return event && typeof event === 'object' && event.value !== undefined ?
    event.value : // extract value from { value: value } structure. https://github.com/nikgraf/belle/issues/58
    event
}
 
export default getValue