selectAttribute = (attribute, values, optionData, isHidden = false) => {
    const selectOptions = optionData.map((option, i) => {
      let optionAttrs = Object.assign(
        {
          label: `${i18n.option} ${i}`,
          value: undefined,
        },
        option,
      )
      if (option.value === values[attribute]) {
        optionAttrs.selected = true
      }
      optionAttrs = trimObj(optionAttrs)
      return m('option', optionAttrs.label, optionAttrs)
    })
    const selectAttrs = {
      id: attribute + '-' + data.lastID,
      name: attribute,
      className: `fld-${attribute} form-control`,
    }
    const labelText = mi18n.get(attribute) || capitalize(attribute) || ''
    const label = m('label', labelText, { for: selectAttrs.id })
    const select = m('select', selectOptions, selectAttrs)
    const inputWrap = m('div', select, { className: 'input-wrap' })
    const visibility = isHidden ? 'none' : 'block'
    const attrWrap = m('div', [label, inputWrap], {
      className: `form-group ${selectAttrs.name}-wrap`,
      style: `display: ${visibility}`,
    })

    return attrWrap.outerHTML
  }
selectAttribute
@param  {string} attribute  attribute name
@param  {Object} values     aka attrs
@param  {Array} optionData  select field option data
@param  {boolean} [isHidden=false] field should be hidden on the stage
@return {string}            select input makrup