All files / molecule/dropdownList/src config.js

100% Statements 17/17
100% Branches 15/15
100% Functions 6/6
100% Lines 17/17

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 511x 1x 1x   1x         1x           1x         1x     2x 2x                 4x 4x 4x 2x     4x 2x 4x 4x                
export const BASE_CLASS = `sui-MoleculeDropdownList`
export const CLASS_HIDDEN = `is-hidden`
export const DEBOUNCE_TIME = 500
 
export const DESIGNS = {
  FLAT: 'flat',
  SOLID: 'solid'
}
 
export const SIZES = {
  SMALL: 'small',
  MEDIUM: 'medium',
  LARGE: 'large'
}
 
export const POSITIONS = {
  TOP: 'top',
  BOTTOM: 'bottom'
}
 
export const moleculeDropdownListSelectHandler = {
  single:
    ({value, onSelect}) =>
    (event, {value: valueHandled, selected: selectedHandled, ...args}) => {
      typeof onSelect === 'function' &&
        onSelect(event, {
          value: selectedHandled || value !== valueHandled ? valueHandled : undefined,
          selected: selectedHandled,
          ...args
        })
    },
  multiple:
    ({value: valueState = [], onSelect}) =>
    (event, {value: valueHandled, selected: selectedHandled, ...args}) => {
      let selected = !valueState.includes(valueHandled)
      if (selectedHandled === undefined) {
        selected = selectedHandled
      }
      const value =
        selected === true || !valueState.includes(valueHandled)
          ? [...valueState.filter(val => val !== valueHandled), valueHandled]
          : valueState.filter(val => val !== valueHandled)
      typeof onSelect === 'function' &&
        onSelect(event, {
          value,
          selected,
          ...args
        })
    }
}