all files / utils/ getValue.js

100% Statements 12/12
100% Branches 11/11
100% Functions 3/3
100% Lines 11/11
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         17×               12×                      
const getSelectedValues = (options = []) => options
    .filter(option => option.selected)
    .map(option => option.value);
 
const isEvent = ev => Boolean(ev && ev.preventDefault && ev.stopPropagation);
 
const getValue = ev => {
  if (!isEvent(ev)) {
    return ev;
  }
 
  const {
    target: { type, value, checked, files, options },
    dataTransfer,
  } = ev;
 
  switch (type) {
    case 'checkbox':
      return checked;
    case 'file':
      return files || (dataTransfer && dataTransfer.files);
    case 'select-multiple':
      return getSelectedValues(options);
    case 'range':
    case 'number':
      return Number(value);
    default:
      return value;
  }
};
 
export default getValue;