All files / src item.js

100% Statements 30/30
100% Branches 24/24
100% Functions 8/8
100% Lines 30/30

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 6117x 182x 907x   907x   907x 907x   907x 907x 717x 60x   657x     190x 190x 190x       907x 6167x 1015x 1594x   1015x 955x     5152x       907x 2463x     907x 919x     907x 4350x               907x 92x     907x      
module.exports = function (list) {
  return function (initValues, element, notCreate) {
    var item = this
 
    this._values = {}
 
    this.found = false // Show if list.searched == true and this.found == true
    this.filtered = false // Show if list.filtered == true and this.filtered == true
 
    var init = function (initValues, element, notCreate) {
      if (element === undefined) {
        if (notCreate) {
          item.values(initValues, notCreate)
        } else {
          item.values(initValues)
        }
      } else {
        item.elm = element
        var values = list.templater.get(item, initValues)
        item.values(values)
      }
    }
 
    this.values = function (newValues, notCreate) {
      if (newValues !== undefined) {
        for (var name in newValues) {
          item._values[name] = newValues[name]
        }
        if (notCreate !== true) {
          list.templater.set(item, item.values())
        }
      } else {
        return item._values
      }
    }
 
    this.show = function () {
      list.templater.show(item)
    }
 
    this.hide = function () {
      list.templater.hide(item)
    }
 
    this.matching = function () {
      return (
        (list.filtered && list.searched && item.found && item.filtered) ||
        (list.filtered && !list.searched && item.filtered) ||
        (!list.filtered && list.searched && item.found) ||
        (!list.filtered && !list.searched)
      )
    }
 
    this.visible = function () {
      return item.elm && item.elm.parentNode == list.list ? true : false
    }
 
    init(initValues, element, notCreate)
  }
}