{
  "mixins": [
    "composables/private.use-size/use-size"
  ],
  "meta": {
    "docsUrl": "https://v2.quasar.dev/vue-components/button-dropdown"
  },
  "props": {
    "transition-show": {
      "extends": "transition",
      "default": "'fade'"
    },
    "transition-hide": {
      "extends": "transition",
      "default": "'fade'"
    },
    "transition-duration": {
      "type": [
        "String",
        "Number"
      ],
      "desc": "Transition duration (in milliseconds, without unit)",
      "default": "300",
      "category": "transition"
    },
    "model-value": {
      "type": "Boolean",
      "desc": "Model of the component defining shown/hidden state; Either use this property (along with a listener for 'update:model-value' event) OR use v-model directive",
      "default": "null",
      "category": "model",
      "examples": [
        "# v-model=\"state\""
      ],
      "__delete": [
        "default"
      ]
    },
    "type": {
      "type": "String",
      "desc": "1) Define the button native type attribute (submit, reset, button) or 2) render component with <a> tag so you can access events even if disable or 3) Use 'href' prop and specify 'type' as a media tag",
      "default": "'button'",
      "examples": [
        "'a'",
        "'submit'",
        "'button'",
        "'reset'",
        "'image/png'",
        "# href=\"https://quasar.dev\" target=\"_blank\""
      ],
      "category": "general"
    },
    "to": {
      "type": [
        "String",
        "Object"
      ],
      "desc": "Equivalent to Vue Router <router-link> 'to' property; Superseded by 'href' prop if used",
      "examples": [
        "'/home/dashboard'",
        "{ name: 'my-route-name' }"
      ],
      "category": "navigation"
    },
    "replace": {
      "type": "Boolean",
      "desc": "Equivalent to Vue Router <router-link> 'replace' property; Superseded by 'href' prop if used",
      "category": "navigation"
    },
    "href": {
      "type": "String",
      "desc": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props",
      "examples": [
        "'https://quasar.dev'",
        "# href=\"https://quasar.dev\" target=\"_blank\""
      ],
      "category": "navigation",
      "addedIn": "v2.4"
    },
    "target": {
      "type": "String",
      "desc": "Native <a> link target attribute; Use it only with 'to' or 'href' props",
      "examples": [
        "'_blank'",
        "'_self'",
        "'_parent'",
        "'_top'"
      ],
      "category": "navigation",
      "addedIn": "v2.4"
    },
    "label": {
      "type": [
        "String",
        "Number"
      ],
      "desc": "The text that will be shown on the button",
      "examples": [
        "'Button Label'"
      ],
      "category": "content"
    },
    "icon": {
      "extends": "icon"
    },
    "icon-right": {
      "extends": "icon"
    },
    "outline": {
      "type": "Boolean",
      "desc": "Use 'outline' design",
      "category": "style"
    },
    "flat": {
      "type": "Boolean",
      "desc": "Use 'flat' design",
      "category": "style"
    },
    "unelevated": {
      "type": "Boolean",
      "desc": "Remove shadow",
      "category": "style"
    },
    "rounded": {
      "type": "Boolean",
      "desc": "Applies a more prominent border-radius for a squared shape button",
      "category": "style"
    },
    "push": {
      "type": "Boolean",
      "desc": "Use 'push' design",
      "category": "style"
    },
    "square": {
      "extends": "square",
      "addedIn": "v2.7.6"
    },
    "glossy": {
      "type": "Boolean",
      "desc": "Applies a glossy effect",
      "category": "style"
    },
    "fab": {
      "type": "Boolean",
      "desc": "Makes button size and shape to fit a Floating Action Button",
      "category": "style"
    },
    "fab-mini": {
      "type": "Boolean",
      "desc": "Makes button size and shape to fit a small Floating Action Button",
      "category": "style"
    },
    "padding": {
      "type": "String",
      "desc": "Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set",
      "examples": [
        "'16px'",
        "'10px 5px'",
        "'2rem'",
        "'xs'",
        "'md lg'",
        "'2px 2px 5px 7px'"
      ],
      "category": "style"
    },
    "color": {
      "extends": "color"
    },
    "text-color": {
      "extends": "text-color"
    },
    "no-caps": {
      "type": "Boolean",
      "desc": "Avoid turning label text into caps (which happens by default)",
      "category": "content"
    },
    "no-wrap": {
      "type": "Boolean",
      "desc": "Avoid label text wrapping",
      "category": "content"
    },
    "dense": {
      "extends": "dense"
    },
    "ripple": {
      "extends": "ripple"
    },
    "tabindex": {
      "extends": "tabindex"
    },
    "align": {
      "type": "String",
      "desc": "Label or content alignment",
      "default": "'center'",
      "values": [
        "'left'",
        "'right'",
        "'center'",
        "'around'",
        "'between'",
        "'evenly'"
      ],
      "category": "content"
    },
    "stack": {
      "type": "Boolean",
      "desc": "Stack icon and label vertically instead of on same line (like it is by default)",
      "category": "content"
    },
    "stretch": {
      "type": "Boolean",
      "desc": "When used on flexbox parent, button will stretch to parent's height",
      "category": "content"
    },
    "loading": {
      "type": [
        "Boolean",
        "null"
      ],
      "default": "null",
      "desc": "Put button into loading state (displays a QSpinner -- can be overridden by using a 'loading' slot)",
      "category": "behavior|state"
    },
    "disable": {
      "extends": "disable"
    },
    "split": {
      "type": "Boolean",
      "desc": "Split dropdown icon into its own button",
      "category": "content|behavior"
    },
    "dropdown-icon": {
      "extends": "icon"
    },
    "disable-main-btn": {
      "type": "Boolean",
      "desc": "Disable main button (useful along with 'split' prop)",
      "category": "behavior"
    },
    "disable-dropdown": {
      "type": "Boolean",
      "desc": "Disables dropdown (dropdown button if using along 'split' prop)",
      "category": "behavior"
    },
    "no-icon-animation": {
      "type": "Boolean",
      "desc": "Disables the rotation of the dropdown icon when state is toggled",
      "category": "style"
    },
    "content-style": {
      "type": [
        "String",
        "Array",
        "Object"
      ],
      "tsType": "VueStyleProp",
      "desc": "Style definitions to be attributed to the menu",
      "examples": [
        "'background-color: #ff0000'",
        "{ backgroundColor: '#ff0000' }"
      ],
      "category": "style"
    },
    "content-class": {
      "type": [
        "String",
        "Array",
        "Object"
      ],
      "tsType": "VueClassProp",
      "desc": "Class definitions to be attributed to the menu",
      "examples": [
        "'my-special-class'",
        "{ 'my-special-class': true }"
      ],
      "category": "style"
    },
    "cover": {
      "type": "Boolean",
      "desc": "Allows the menu to cover the button. When used, the 'menu-self' and 'menu-fit' props are no longer effective",
      "category": "position"
    },
    "persistent": {
      "type": "Boolean",
      "desc": "Allows the menu to not be dismissed by a click/tap outside of the menu or by hitting the ESC key; Also, an app route change won't dismiss it",
      "category": "behavior"
    },
    "no-route-dismiss": {
      "type": "Boolean",
      "desc": "Changing route app won't dismiss the popup; No need to set it if 'persistent' prop is also set",
      "category": "behavior"
    },
    "auto-close": {
      "type": "Boolean",
      "desc": "Allows any click/tap in the menu to close it; Useful instead of attaching events to each menu item that should close the menu on click/tap",
      "category": "behavior"
    },
    "menu-anchor": {
      "type": "String",
      "desc": "Two values setting the starting position or anchor point of the menu relative to its target",
      "values": [
        "'top left'",
        "'top middle'",
        "'top right'",
        "'top start'",
        "'top end'",
        "'center left'",
        "'center middle'",
        "'center right'",
        "'center start'",
        "'center end'",
        "'bottom left'",
        "'bottom middle'",
        "'bottom right'",
        "'bottom start'",
        "'bottom end'"
      ],
      "default": "'bottom end'",
      "category": "position"
    },
    "menu-self": {
      "type": "String",
      "desc": "Two values setting the menu's own position relative to its target",
      "values": [
        "'top left'",
        "'top middle'",
        "'top right'",
        "'top start'",
        "'top end'",
        "'center left'",
        "'center middle'",
        "'center right'",
        "'center start'",
        "'center end'",
        "'bottom left'",
        "'bottom middle'",
        "'bottom right'",
        "'bottom start'",
        "'bottom end'"
      ],
      "default": "'top end'",
      "category": "position"
    },
    "menu-offset": {
      "type": "Array",
      "desc": "An array of two numbers to offset the menu horizontally and vertically in pixels",
      "examples": [
        "[ 8, 8 ]",
        "[ 5, 10 ]"
      ],
      "category": "position"
    },
    "toggle-aria-label": {
      "type": "String",
      "desc": "aria-label to be used on the dropdown toggle element",
      "examples": [
        "'Open menu'"
      ],
      "category": "accessibility",
      "addedIn": "v2.8.4"
    }
  },
  "slots": {
    "default": {
      "extends": "default"
    },
    "label": {
      "desc": "Customize main button's content through this slot, unless you're using the 'icon' and 'label' props"
    },
    "loading": {
      "desc": "Override the default QSpinner when in 'loading' state",
      "addedIn": "v2.8"
    }
  },
  "events": {
    "update:model-value": {
      "desc": "Emitted when showing/hidden state changes; Is also used by v-model",
      "params": {
        "value": {
          "type": "Boolean",
          "desc": "New state (showing/hidden)"
        }
      }
    },
    "show": {
      "extends": "show"
    },
    "before-show": {
      "extends": "before-show"
    },
    "hide": {
      "extends": "hide"
    },
    "before-hide": {
      "extends": "before-hide"
    },
    "click": {
      "extends": "click",
      "desc": "Emitted when user clicks/taps on the main button (not the icon one, if using 'split')"
    }
  },
  "methods": {
    "show": {
      "extends": "show"
    },
    "hide": {
      "extends": "hide"
    },
    "toggle": {
      "extends": "toggle"
    }
  }
}