{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "vaadin-context-menu.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "src/vaadin-context-menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/vaadin-context-menu-mixin.js",
      "declarations": [
        {
          "kind": "mixin",
          "description": "",
          "name": "ContextMenuMixin",
          "members": [
            {
              "kind": "method",
              "name": "close",
              "description": "Closes the overlay."
            },
            {
              "kind": "field",
              "name": "closeOn",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for closing the context menu.",
              "attribute": "close-on"
            },
            {
              "kind": "field",
              "name": "items",
              "privacy": "public",
              "type": {
                "text": "!Array<!ContextMenuItem> | undefined"
              },
              "description": "Defines a (hierarchical) menu structure for the component.\nIf a menu item has a non-empty `children` set, a sub-menu with the child items is opened\nnext to the parent menu on mouseover, tap or a right arrow keypress.\n\nThe items API can't be used together with a renderer!\n\n#### Example\n\n```javascript\ncontextMenu.items = [\n  { text: 'Menu Item 1', theme: 'primary', className: 'first', children:\n    [\n      { text: 'Menu Item 1-1', checked: true, keepOpen: true },\n      { text: 'Menu Item 1-2' }\n    ]\n  },\n  { component: 'hr' },\n  { text: 'Menu Item 2', children:\n    [\n      { text: 'Menu Item 2-1' },\n      { text: 'Menu Item 2-2', disabled: true }\n    ]\n  },\n  { text: 'Menu Item 3', disabled: true, className: 'last' }\n];\n```",
              "attribute": "items",
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "listenOn",
              "privacy": "public",
              "type": {
                "text": "!HTMLElement"
              },
              "description": "The target element that's listened to for context menu opening events.\nBy default the vaadin-context-menu listens to the target's `vaadin-contextmenu`\nevents.",
              "default": "self",
              "attribute": "listen-on"
            },
            {
              "kind": "method",
              "name": "open",
              "parameters": [
                {
                  "name": "e",
                  "description": "used as the context for the menu. Overlay coordinates are taken from this event.",
                  "type": {
                    "text": "!Event | undefined"
                  }
                }
              ],
              "description": "Opens the overlay."
            },
            {
              "kind": "field",
              "name": "opened",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "True if the overlay is currently displayed.",
              "attribute": "opened",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "openOn",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for opening the context menu.",
              "attribute": "open-on"
            },
            {
              "kind": "field",
              "name": "renderer",
              "privacy": "public",
              "type": {
                "text": "ContextMenuRenderer | undefined"
              },
              "description": "Custom function for rendering the content of the menu overlay.\nReceives three arguments:\n\n- `root` The root container DOM element. Append your content to it.\n- `contextMenu` The reference to the `<vaadin-context-menu>` element.\n- `context` The object with the menu context, contains:\n  - `context.target`  the target of the menu opening event,\n  - `context.detail` the menu opening event detail.",
              "attribute": "renderer"
            },
            {
              "kind": "method",
              "name": "requestContentUpdate",
              "description": "Requests an update for the content of the menu overlay.\nWhile performing the update, it invokes the renderer passed in the `renderer` property.\n\nIt is not guaranteed that the update happens immediately (synchronously) after it is requested."
            },
            {
              "kind": "field",
              "name": "selector",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "CSS selector that can be used to target any child element\nof the context menu to listen for `openOn` events.",
              "attribute": "selector"
            }
          ],
          "events": [
            {
              "name": "close-all-menus",
              "type": {
                "text": "CustomEvent"
              },
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            },
            {
              "name": "closed",
              "type": {
                "text": "CustomEvent"
              }
            },
            {
              "name": "item-selected",
              "type": {
                "text": "CustomEvent"
              },
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "close-on",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for closing the context menu.",
              "fieldName": "closeOn"
            },
            {
              "name": "listen-on",
              "type": {
                "text": "!HTMLElement"
              },
              "description": "The target element that's listened to for context menu opening events.\nBy default the vaadin-context-menu listens to the target's `vaadin-contextmenu`\nevents.",
              "default": "self",
              "fieldName": "listenOn"
            },
            {
              "name": "open-on",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for opening the context menu.",
              "fieldName": "openOn"
            },
            {
              "name": "opened",
              "type": {
                "text": "boolean"
              },
              "description": "True if the overlay is currently displayed.",
              "fieldName": "opened"
            },
            {
              "name": "renderer",
              "type": {
                "text": "ContextMenuRenderer | undefined"
              },
              "description": "Custom function for rendering the content of the menu overlay.\nReceives three arguments:\n\n- `root` The root container DOM element. Append your content to it.\n- `contextMenu` The reference to the `<vaadin-context-menu>` element.\n- `context` The object with the menu context, contains:\n  - `context.target`  the target of the menu opening event,\n  - `context.detail` the menu opening event detail.",
              "fieldName": "renderer"
            },
            {
              "name": "selector",
              "type": {
                "text": "string"
              },
              "description": "CSS selector that can be used to target any child element\nof the context menu to listen for `openOn` events.",
              "fieldName": "selector"
            }
          ],
          "mixins": [
            {
              "name": "ItemsMixin",
              "module": "src/vaadin-contextmenu-items-mixin.js"
            }
          ],
          "parameters": [
            {
              "name": "superClass"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ContextMenuMixin",
          "declaration": {
            "name": "ContextMenuMixin",
            "module": "src/vaadin-context-menu-mixin.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/vaadin-context-menu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "`<vaadin-context-menu>` is a Web Component for creating context menus.\n\n### Items\n\nItems is a higher level convenience API for defining a (hierarchical) menu structure for the component.\nIf a menu item has a non-empty `children` set, a sub-menu with the child items is opened\nnext to the parent menu on mouseover, tap or a right arrow keypress.\n\nWhen an item is selected, `<vaadin-context-menu>` dispatches an \"item-selected\" event\nwith the selected item as `event.detail.value` property.\nIf item does not have `keepOpen` property the menu will be closed.\n\n```javascript\ncontextMenu.items = [\n  { text: 'Menu Item 1', theme: 'primary', className: 'first', children:\n    [\n      { text: 'Menu Item 1-1', checked: true, keepOpen: true },\n      { text: 'Menu Item 1-2' }\n    ]\n  },\n  { component: 'hr' },\n  { text: 'Menu Item 2', children:\n    [\n      { text: 'Menu Item 2-1' },\n      { text: 'Menu Item 2-2', disabled: true }\n    ]\n  },\n  { text: 'Menu Item 3', disabled: true, className: 'last' }\n];\n\ncontextMenu.addEventListener('item-selected', e => {\n  const item = e.detail.value;\n  console.log(`${item.text} selected`);\n});\n```\n\n**NOTE:** when the `items` array is defined, the renderer cannot be used.\n\n### Rendering\n\nThe content of the menu can be populated by using the renderer callback function.\n\nThe renderer function provides `root`, `contextMenu`, `model` arguments when applicable.\nGenerate DOM content by using `model` object properties if needed, append it to the `root`\nelement and control the state of the host element by accessing `contextMenu`. Before generating\nnew content, the renderer function should check if there is already content in `root` for reusing it.\n\n```html\n<vaadin-context-menu id=\"contextMenu\">\n <p>This paragraph has a context menu.</p>\n</vaadin-context-menu>\n```\n```js\nconst contextMenu = document.querySelector('#contextMenu');\ncontextMenu.renderer = (root, contextMenu, context) => {\n  let listBox = root.firstElementChild;\n  if (!listBox) {\n    listBox = document.createElement('vaadin-list-box');\n    root.appendChild(listBox);\n  }\n\n  let item = listBox.querySelector('vaadin-item');\n  if (!item) {\n    item = document.createElement('vaadin-item');\n    listBox.appendChild(item);\n  }\n  item.textContent = 'Content of the selector: ' + context.target.textContent;\n};\n```\n\nYou can access the menu context inside the renderer using\n`context.target` and `context.detail`.\n\nRenderer is called on the opening of the context-menu and each time the related context is updated.\nDOM generated during the renderer call can be reused\nin the next renderer call and will be provided with the `root` argument.\nOn first call it will be empty.\n\n### `vaadin-contextmenu` Gesture Event\n\n`vaadin-contextmenu` is a gesture event (a custom event),\nwhich is dispatched after either `contextmenu` or long touch events.\nThis enables support for both mouse and touch environments in a uniform way.\n\n`<vaadin-context-menu>` opens the menu overlay on the `vaadin-contextmenu`\nevent by default.\n\n### Menu Listener\n\nBy default, the `<vaadin-context-menu>` element listens for the menu opening\nevent on itself. In case if you do not want to wrap the target, you can listen for\nevents on an element outside the `<vaadin-context-menu>` by setting the\n`listenOn` property:\n\n```html\n<vaadin-context-menu id=\"contextMenu\"></vaadin-context-menu>\n\n<div id=\"menuListener\">The element that listens for the contextmenu event.</div>\n```\n```javascript\nconst contextMenu = document.querySelector('#contextMenu');\ncontextMenu.listenOn = document.querySelector('#menuListener');\n```\n\n### Filtering Menu Targets\n\nBy default, the listener element and all its descendants open the context\nmenu. You can filter the menu targets to a smaller set of elements inside\nthe listener element by setting the `selector` property.\n\nIn the following example, only the elements matching `.has-menu` will open the context menu:\n\n```html\n<vaadin-context-menu selector=\".has-menu\">\n  <p class=\"has-menu\">This paragraph opens the context menu</p>\n  <p>This paragraph does not open the context menu</p>\n</vaadin-context-menu>\n```\n\n### Menu Context\n\nThe following properties are available in the `context` argument:\n\n- `target` is the menu opening event target, which is the element that\nthe user has called the context menu for\n- `detail` is the menu opening event detail\n\nIn the following example, the menu item text is composed with the contents\nof the element that opened the menu:\n\n```html\n<vaadin-context-menu selector=\"li\" id=\"contextMenu\">\n  <ul>\n    <li>Foo</li>\n    <li>Bar</li>\n    <li>Baz</li>\n  </ul>\n</vaadin-context-menu>\n```\n```js\nconst contextMenu = document.querySelector('#contextMenu');\ncontextMenu.renderer = (root, contextMenu, context) => {\n  let listBox = root.firstElementChild;\n  if (!listBox) {\n    listBox = document.createElement('vaadin-list-box');\n    root.appendChild(listBox);\n  }\n\n  let item = listBox.querySelector('vaadin-item');\n  if (!item) {\n    item = document.createElement('vaadin-item');\n    listBox.appendChild(item);\n  }\n  item.textContent = 'The menu target: ' + context.target.textContent;\n};\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name        | Description\n-----------------|-------------------------------------------\n`backdrop`       | Backdrop of the overlay\n`overlay`        | The overlay container\n`content`        | The overlay content\n\n### Custom CSS Properties\n\nThe following custom CSS properties are available for styling:\n\nCustom CSS property                   | Description\n--------------------------------------|-------------\n`--vaadin-context-menu-offset-top`    | Used as an offset when using `position` and the context menu is aligned vertically below the target\n`--vaadin-context-menu-offset-bottom` | Used as an offset when using `position` and the context menu is aligned vertically above the target\n`--vaadin-context-menu-offset-start`  | Used as an offset when using `position` and the context menu is aligned horizontally after the target\n`--vaadin-context-menu-offset-end`    | Used as an offset when using `position` and the context menu is aligned horizontally before the target\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.\n\n### Internal components\n\nWhen using `items` API the following internal components are themable:\n\n- `<vaadin-context-menu-item>` - has the same API as [`<vaadin-item>`](#/elements/vaadin-item).\n- `<vaadin-context-menu-list-box>` - has the same API as [`<vaadin-list-box>`](#/elements/vaadin-list-box).\n\nThe `<vaadin-context-menu-item>` sub-menu elements have the following additional state attributes\non top of the built-in `<vaadin-item>` state attributes:\n\nAttribute  | Description\n---------- |-------------\n`expanded` | Expanded parent item.",
          "name": "ContextMenu",
          "members": [
            {
              "kind": "method",
              "name": "close",
              "description": "Closes the overlay.",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "closeOn",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for closing the context menu.",
              "attribute": "close-on",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "items",
              "privacy": "public",
              "type": {
                "text": "!Array<!ContextMenuItem> | undefined"
              },
              "description": "Defines a (hierarchical) menu structure for the component.\nIf a menu item has a non-empty `children` set, a sub-menu with the child items is opened\nnext to the parent menu on mouseover, tap or a right arrow keypress.\n\nThe items API can't be used together with a renderer!\n\n#### Example\n\n```javascript\ncontextMenu.items = [\n  { text: 'Menu Item 1', theme: 'primary', className: 'first', children:\n    [\n      { text: 'Menu Item 1-1', checked: true, keepOpen: true },\n      { text: 'Menu Item 1-2' }\n    ]\n  },\n  { component: 'hr' },\n  { text: 'Menu Item 2', children:\n    [\n      { text: 'Menu Item 2-1' },\n      { text: 'Menu Item 2-2', disabled: true }\n    ]\n  },\n  { text: 'Menu Item 3', disabled: true, className: 'last' }\n];\n```",
              "attribute": "items",
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "listenOn",
              "privacy": "public",
              "type": {
                "text": "!HTMLElement"
              },
              "description": "The target element that's listened to for context menu opening events.\nBy default the vaadin-context-menu listens to the target's `vaadin-contextmenu`\nevents.",
              "default": "self",
              "attribute": "listen-on",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "method",
              "name": "open",
              "parameters": [
                {
                  "name": "e",
                  "description": "used as the context for the menu. Overlay coordinates are taken from this event.",
                  "type": {
                    "text": "!Event | undefined"
                  }
                }
              ],
              "description": "Opens the overlay.",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "opened",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "True if the overlay is currently displayed.",
              "attribute": "opened",
              "readonly": true,
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "openOn",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for opening the context menu.",
              "attribute": "open-on",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "position",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "Position of the overlay with respect to the target.\nSupported values: null, `top-start`, `top`, `top-end`,\n`bottom-start`, `bottom`, `bottom-end`, `start-top`,\n`start`, `start-bottom`, `end-top`, `end`, `end-bottom`.",
              "attribute": "position"
            },
            {
              "kind": "field",
              "name": "renderer",
              "privacy": "public",
              "type": {
                "text": "ContextMenuRenderer | undefined"
              },
              "description": "Custom function for rendering the content of the menu overlay.\nReceives three arguments:\n\n- `root` The root container DOM element. Append your content to it.\n- `contextMenu` The reference to the `<vaadin-context-menu>` element.\n- `context` The object with the menu context, contains:\n  - `context.target`  the target of the menu opening event,\n  - `context.detail` the menu opening event detail.",
              "attribute": "renderer",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "method",
              "name": "requestContentUpdate",
              "description": "Requests an update for the content of the menu overlay.\nWhile performing the update, it invokes the renderer passed in the `renderer` property.\n\nIt is not guaranteed that the update happens immediately (synchronously) after it is requested.",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "selector",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "CSS selector that can be used to target any child element\nof the context menu to listen for `openOn` events.",
              "attribute": "selector",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            }
          ],
          "events": [
            {
              "name": "close-all-menus",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Fired when all menus should close, e.g., after pressing Tab or on submenu close.",
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            },
            {
              "name": "closed",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Fired when the context menu is closed.",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "item-selected",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Fired when an item is selected when the context menu is populated using the `items` API.",
              "inheritedFrom": {
                "name": "ItemsMixin",
                "module": "src/vaadin-contextmenu-items-mixin.js"
              }
            },
            {
              "type": {
                "text": "CustomEvent"
              },
              "description": "Fired when a click happens outside any open sub-menus.",
              "name": "items-outside-click"
            },
            {
              "type": {
                "text": "CustomEvent"
              },
              "description": "Fired when the `opened` property changes.",
              "name": "opened-changed"
            }
          ],
          "attributes": [
            {
              "name": "close-on",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for closing the context menu.",
              "fieldName": "closeOn",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "listen-on",
              "type": {
                "text": "!HTMLElement"
              },
              "description": "The target element that's listened to for context menu opening events.\nBy default the vaadin-context-menu listens to the target's `vaadin-contextmenu`\nevents.",
              "default": "self",
              "fieldName": "listenOn",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "open-on",
              "type": {
                "text": "string"
              },
              "description": "Event name to listen for opening the context menu.",
              "fieldName": "openOn",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "opened",
              "type": {
                "text": "boolean"
              },
              "description": "True if the overlay is currently displayed.",
              "fieldName": "opened",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "position",
              "type": {
                "text": "string"
              },
              "description": "Position of the overlay with respect to the target.\nSupported values: null, `top-start`, `top`, `top-end`,\n`bottom-start`, `bottom`, `bottom-end`, `start-top`,\n`start`, `start-bottom`, `end-top`, `end`, `end-bottom`.",
              "fieldName": "position"
            },
            {
              "name": "renderer",
              "type": {
                "text": "ContextMenuRenderer | undefined"
              },
              "description": "Custom function for rendering the content of the menu overlay.\nReceives three arguments:\n\n- `root` The root container DOM element. Append your content to it.\n- `contextMenu` The reference to the `<vaadin-context-menu>` element.\n- `context` The object with the menu context, contains:\n  - `context.target`  the target of the menu opening event,\n  - `context.detail` the menu opening event detail.",
              "fieldName": "renderer",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            },
            {
              "name": "selector",
              "type": {
                "text": "string"
              },
              "description": "CSS selector that can be used to target any child element\nof the context menu to listen for `openOn` events.",
              "fieldName": "selector",
              "inheritedFrom": {
                "name": "ContextMenuMixin",
                "module": "src/vaadin-context-menu-mixin.js"
              }
            }
          ],
          "mixins": [
            {
              "name": "ContextMenuMixin",
              "module": "src/vaadin-context-menu-mixin.js"
            },
            {
              "name": "ElementMixin",
              "package": "@vaadin/component-base/src/element-mixin.js"
            },
            {
              "name": "ThemePropertyMixin",
              "package": "@vaadin/vaadin-themable-mixin/vaadin-theme-property-mixin.js"
            },
            {
              "name": "PolylitMixin",
              "package": "@vaadin/component-base/src/polylit-mixin.js"
            }
          ],
          "superclass": {
            "name": "LitElement",
            "package": "lit"
          },
          "tagName": "vaadin-context-menu",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ContextMenu",
          "declaration": {
            "name": "ContextMenu",
            "module": "src/vaadin-context-menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/vaadin-contextmenu-items-mixin.js",
      "declarations": [
        {
          "kind": "mixin",
          "description": "",
          "name": "ItemsMixin",
          "members": [
            {
              "kind": "field",
              "name": "items",
              "privacy": "public",
              "type": {
                "text": "!Array<!ContextMenuItem> | undefined"
              },
              "description": "Defines a (hierarchical) menu structure for the component.\nIf a menu item has a non-empty `children` set, a sub-menu with the child items is opened\nnext to the parent menu on mouseover, tap or a right arrow keypress.\n\nThe items API can't be used together with a renderer!\n\n#### Example\n\n```javascript\ncontextMenu.items = [\n  { text: 'Menu Item 1', theme: 'primary', className: 'first', children:\n    [\n      { text: 'Menu Item 1-1', checked: true, keepOpen: true },\n      { text: 'Menu Item 1-2' }\n    ]\n  },\n  { component: 'hr' },\n  { text: 'Menu Item 2', children:\n    [\n      { text: 'Menu Item 2-1' },\n      { text: 'Menu Item 2-2', disabled: true }\n    ]\n  },\n  { text: 'Menu Item 3', disabled: true, className: 'last' }\n];\n```",
              "attribute": "items"
            }
          ],
          "events": [
            {
              "name": "close-all-menus",
              "type": {
                "text": "CustomEvent"
              }
            },
            {
              "name": "item-selected",
              "type": {
                "text": "CustomEvent"
              }
            }
          ],
          "attributes": [],
          "parameters": [
            {
              "name": "superClass"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ItemsMixin",
          "declaration": {
            "name": "ItemsMixin",
            "module": "src/vaadin-contextmenu-items-mixin.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/vaadin-menu-overlay-mixin.js",
      "declarations": [
        {
          "kind": "mixin",
          "description": "",
          "name": "MenuOverlayMixin",
          "members": [
            {
              "kind": "field",
              "name": "focusTrap",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "When true, opening the overlay moves focus to the first focusable child,\nor to the overlay part with tabindex if there are no focusable children.",
              "attribute": "focus-trap",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "kind": "method",
              "name": "getBoundaries",
              "description": "Returns the adjusted boundaries of the overlay.",
              "return": {
                "type": {
                  "text": "object"
                }
              }
            },
            {
              "kind": "field",
              "name": "horizontalAlign",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "When `positionTarget` is set, this property defines whether to align the overlay's\nleft or right side to the target element by default.\nPossible values are `start` and `end`.\nRTL is taken into account when interpreting the value.\nThe overlay is automatically flipped to the opposite side when it doesn't fit into\nthe default side defined by this property.",
              "attribute": "horizontal-align",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "noHorizontalOverlap",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "When `positionTarget` is set, this property defines whether the overlay should overlap\nthe target element in the x-axis, or be positioned right next to it.",
              "attribute": "no-horizontal-overlap",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "noVerticalOverlap",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "When `positionTarget` is set, this property defines whether the overlay should overlap\nthe target element in the y-axis, or be positioned right above/below it.",
              "attribute": "no-vertical-overlap",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "positionTarget",
              "privacy": "public",
              "type": {
                "text": "object"
              },
              "description": "The element next to which this overlay should be aligned.\nThe position of the overlay relative to the positionTarget can be adjusted\nwith properties `horizontalAlign`, `verticalAlign`, `noHorizontalOverlap`\nand `noVerticalOverlap`.",
              "attribute": "position-target",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "requiredVerticalSpace",
              "privacy": "public",
              "type": {
                "text": "number"
              },
              "description": "If the overlay content has no intrinsic height, this property can be used to set\nthe minimum vertical space (in pixels) required by the overlay. Setting a value to\nthe property effectively disables the content measurement in favor of using this\nfixed value for determining the open direction.",
              "attribute": "required-vertical-space",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "restoreFocusNode",
              "privacy": "public",
              "type": {
                "text": "HTMLElement"
              },
              "description": "Set to specify the element which should be focused on overlay close,\nif `restoreFocusOnClose` is set to true.",
              "attribute": "restore-focus-node",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "restoreFocusOnClose",
              "privacy": "public",
              "type": {
                "text": "boolean"
              },
              "description": "Set to true to enable restoring of focus when overlay is closed.",
              "attribute": "restore-focus-on-close",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "kind": "field",
              "name": "verticalAlign",
              "privacy": "public",
              "type": {
                "text": "string"
              },
              "description": "When `positionTarget` is set, this property defines whether to align the overlay's\ntop or bottom side to the target element by default.\nPossible values are `top` and `bottom`.\nThe overlay is automatically flipped to the opposite side when it doesn't fit into\nthe default side defined by this property.",
              "attribute": "vertical-align",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "focus-trap",
              "type": {
                "text": "boolean"
              },
              "description": "When true, opening the overlay moves focus to the first focusable child,\nor to the overlay part with tabindex if there are no focusable children.",
              "fieldName": "focusTrap",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "name": "horizontal-align",
              "type": {
                "text": "string"
              },
              "description": "When `positionTarget` is set, this property defines whether to align the overlay's\nleft or right side to the target element by default.\nPossible values are `start` and `end`.\nRTL is taken into account when interpreting the value.\nThe overlay is automatically flipped to the opposite side when it doesn't fit into\nthe default side defined by this property.",
              "fieldName": "horizontalAlign",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "name": "no-horizontal-overlap",
              "type": {
                "text": "boolean"
              },
              "description": "When `positionTarget` is set, this property defines whether the overlay should overlap\nthe target element in the x-axis, or be positioned right next to it.",
              "fieldName": "noHorizontalOverlap",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "name": "no-vertical-overlap",
              "type": {
                "text": "boolean"
              },
              "description": "When `positionTarget` is set, this property defines whether the overlay should overlap\nthe target element in the y-axis, or be positioned right above/below it.",
              "fieldName": "noVerticalOverlap",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "name": "required-vertical-space",
              "type": {
                "text": "number"
              },
              "description": "If the overlay content has no intrinsic height, this property can be used to set\nthe minimum vertical space (in pixels) required by the overlay. Setting a value to\nthe property effectively disables the content measurement in favor of using this\nfixed value for determining the open direction.",
              "fieldName": "requiredVerticalSpace",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            },
            {
              "name": "restore-focus-node",
              "type": {
                "text": "HTMLElement"
              },
              "description": "Set to specify the element which should be focused on overlay close,\nif `restoreFocusOnClose` is set to true.",
              "fieldName": "restoreFocusNode",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "name": "restore-focus-on-close",
              "type": {
                "text": "boolean"
              },
              "description": "Set to true to enable restoring of focus when overlay is closed.",
              "fieldName": "restoreFocusOnClose",
              "inheritedFrom": {
                "name": "OverlayFocusMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
              }
            },
            {
              "name": "vertical-align",
              "type": {
                "text": "string"
              },
              "description": "When `positionTarget` is set, this property defines whether to align the overlay's\ntop or bottom side to the target element by default.\nPossible values are `top` and `bottom`.\nThe overlay is automatically flipped to the opposite side when it doesn't fit into\nthe default side defined by this property.",
              "fieldName": "verticalAlign",
              "inheritedFrom": {
                "name": "PositionMixin",
                "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
              }
            }
          ],
          "mixins": [
            {
              "name": "OverlayFocusMixin",
              "package": "@vaadin/overlay/src/vaadin-overlay-focus-mixin.js"
            },
            {
              "name": "PositionMixin",
              "package": "@vaadin/overlay/src/vaadin-overlay-position-mixin.js"
            }
          ],
          "parameters": [
            {
              "name": "superClass"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MenuOverlayMixin",
          "declaration": {
            "name": "MenuOverlayMixin",
            "module": "src/vaadin-menu-overlay-mixin.js"
          }
        }
      ]
    }
  ]
}
