{
  "mixins": [
    "composables/private.use-field/use-field",
    "components/input/use-mask",
    "composables/use-form/private.use-form"
  ],

  "meta": {
    "docsUrl": "https://v2.quasar.dev/vue-components/input"
  },

  "props": {
    "model-value": {
      "extends": "model-value",
      "type": ["String", "Number", "FileList", "null", "undefined"],
      "desc": "Model of the component; Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
      "examples": ["# v-model=\"myText\""]
    },

    "model-modifiers": {
      "type": "Object",
      "desc": "Modifiers supplied by Vue for the component's v-model binding; 'lazy' defers the model update until the change event/blur, while 'trim' and 'number' are applied by Vue itself",
      "examples": ["{ trim: true }", "{ lazy: true }"],
      "internal": true
    },

    "shadow-text": {
      "type": "String",
      "desc": "Text to be displayed as shadow at the end of the text in the control; Does NOT applies to type=file",
      "examples": ["'rest of the fill value'"],
      "category": "content"
    },

    "type": {
      "type": "String",
      "desc": "Input type",
      "default": "'text'",
      "values": [
        "'text'",
        "'password'",
        "'textarea'",
        "'email'",
        "'search'",
        "'tel'",
        "'file'",
        "'number'",
        "'url'",
        "'time'",
        "'date'",
        "'datetime-local'"
      ],
      "category": "general"
    },

    "debounce": {
      "type": ["String", "Number"],
      "desc": "Debounce amount (in milliseconds) when updating model",
      "category": "model"
    },

    "maxlength": {
      "extends": "maxlength"
    },

    "autogrow": {
      "type": "Boolean",
      "desc": "Make field autogrow along with its content (uses a textarea)",
      "category": "content"
    },

    "input-class": {
      "extends": "input-class"
    },

    "input-style": {
      "extends": "input-style"
    },

    "name": {
      "extends": "field-name"
    }
  },

  "events": {
    "update:model-value": {
      "params": {
        "value": {
          "type": ["String", "Number", "null"]
        }
      }
    },

    "click": { "internal": true },
    "paste": { "internal": true },
    "animationend": { "internal": true },
    "change": { "internal": true },
    "keydown": { "internal": true }
  },

  "methods": {
    "focus": {
      "desc": "Focus underlying input tag"
    },

    "blur": {
      "desc": "Lose focus on underlying input tag"
    },

    "select": {
      "desc": "Select input text",
      "params": null,
      "returns": null
    },

    "getNativeElement": {
      "desc": "DEPRECATED; Access 'nativeEl' directly instead; Get the native input/textarea DOM Element",
      "params": null,
      "returns": {
        "type": "Element",
        "tsType": "QInputNativeElement",
        "desc": "The underlying native input/textarea DOM Element"
      }
    }
  },

  "computedProps": {
    "nativeEl": {
      "type": "Element",
      "tsType": "QInputNativeElement",
      "desc": "The native input/textarea DOM Element"
    }
  }
}
