{
  "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\""]
    },

    "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": {
      "type": ["String", "Number"],
      "desc": "Specify a max length of model",
      "category": "model"
    },

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

    "input-class": {
      "type": ["String", "Array", "Object"],
      "tsType": "VueClassProp",
      "desc": "Class definitions to be attributed to the underlying input tag",
      "examples": ["'my-special-class'", "{ 'my-special-class': true }"],
      "category": "style"
    },

    "input-style": {
      "type": ["String", "Array", "Object"],
      "tsType": "VueStyleProp",
      "desc": "Style definitions to be attributed to the underlying input tag",
      "examples": [
        "'background-color: #ff0000'",
        "{ backgroundColor: '#ff0000' }"
      ],
      "category": "style"
    },

    "name": {
      "desc": "Used to specify the name of the control; Useful if dealing with forms; If not specified, it takes the value of 'for' prop, if it exists"
    }
  },

  "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",
      "addedIn": "v2.10.1"
    }
  }
}
