script#templated-input-template(type="text/x-template")
  .pure-control-group(class="tmpl-input-{{name}}", :title="title")
    label(:for="name") {{name}}

    select(v-if="template.type == 'enum' || template.values", v-model="view",
      :name="name", @change="change")
      option(v-for="opt in template.values", track-by="$index", :value="opt" :disabled="opt === '-----' ? true : false") {{opt}}

    input(v-if="template.type == 'bool'", type="checkbox", v-model="view",
      :name="name", @change="change")

    input(v-if="template.type == 'float'", v-model.number="view", number,
      :min="template.min", :max="template.max", :step="template.step || 'any'",
      type="number", :name="name", @keyup="change")

    input(v-if="template.type == 'int' && !template.values", number,
      v-model.number="view", :min="template.min", :max="template.max",
      type="number", :name="name", @keyup="change")

    input(v-if="template.type == 'string'", v-model="view", type="text",
      :name="name", @keyup="change")

    textarea(v-if="template.type == 'text'", v-model="view", :name="name",
      @keyup="change")

    label.units {{units}}

    slot(name="extra")
