{
  "mixins": [
    "components/btn/use-btn",
    "composables/private.use-model-toggle/use-model-toggle",
    "composables/private.use-transition/use-transition"
  ],

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

  "props": {
    "model-value": {
      "type": "Boolean",
      "__delete": ["default"]
    },

    "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' prop is 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"
    },

    "hover": {
      "type": "Boolean",
      "desc": "Also opens the dropdown when the pointer hovers the button (in split mode: either one of the two buttons) and closes it when the pointer leaves both the button and the menu; Click/tap and keyboard interactions keep toggling as usual (touch devices fall back to them), so activating the toggle closes a hover-shown dropdown, unless it is still animating into view (which keeps a single move-and-click gesture from closing what it just opened); A hover-opened dropdown does not switch focus on itself",
      "category": "behavior",
      "addedIn": "v2.26"
    },

    "hover-delay": {
      "type": "Number",
      "desc": "Delay (in milliseconds) between the pointer entering the button and the dropdown showing up; Requires the 'hover' prop",
      "default": "0",
      "__runtimeDefault": true,
      "category": "behavior",
      "addedIn": "v2.26"
    },

    "hover-hide-delay": {
      "type": "Number",
      "desc": "Grace period (in milliseconds) in which the pointer can re-enter the button or the menu before the dropdown gets closed; Requires the 'hover' prop",
      "default": "150",
      "__runtimeDefault": true,
      "category": "behavior",
      "addedIn": "v2.26"
    },

    "no-esc-dismiss": {
      "type": "Boolean",
      "desc": "User cannot dismiss the popup by hitting ESC key; No need to set it if 'persistent' prop is also set",
      "category": "behavior",
      "addedIn": "v2.18"
    },

    "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"
    },

    "no-refocus": {
      "type": "Boolean",
      "desc": "(Accessibility) When the dropdown gets hidden, do not refocus on the DOM element that previously had focus",
      "category": "behavior",
      "addedIn": "v2.18"
    },

    "no-focus": {
      "type": "Boolean",
      "desc": "(Accessibility) When the dropdown gets shown, do not switch focus on it",
      "category": "behavior",
      "addedIn": "v2.18"
    },

    "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 (in pixels) which expands the anchor element's bounding box outward horizontally and vertically; the menu is then positioned against the expanded box, so the visible effect depends on the 'anchor'/'self' points in use",
      "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"
    },

    "toggle-aria-haspopup": {
      "type": "String",
      "desc": "aria-haspopup to be used on the dropdown toggle element; Must name the ARIA role of the dropdown content ('menu', 'listbox', 'tree', 'grid' or 'dialog'), so only set it once that content declares a matching role",
      "examples": ["'menu'", "'listbox'"],
      "category": "accessibility",
      "addedIn": "v2.25"
    }
  },

  "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"
    },

    "toggle": {
      "desc": "Additional content rendered inside the dropdown toggle, next to the arrow icon; With the 'split' prop it is the only way to reach the toggle button (e.g. to attach a QTooltip to it); Does not replace the arrow icon - use the 'dropdown-icon' prop for that",
      "addedIn": "v2.25"
    }
  },

  "events": {
    "click": {
      "extends": "click",
      "desc": "Emitted when user clicks/taps on the main button (not the icon one, if using 'split')"
    }
  }
}
