{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "sp-action-menu.js",
      "declarations": [],
      "exports": [
        {
          "kind": "custom-element-definition",
          "name": "sp-action-menu",
          "declaration": {
            "name": "ActionMenu",
            "module": "/src/ActionMenu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "sync/sp-action-menu.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "src/ActionMenu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "An `<sp-action-menu>` is an action button with an attached menu of options.\nUnlike a standard picker, it does not maintain a selection by default and\ndisplays a \"more\" icon instead of a chevron.",
          "name": "ActionMenu",
          "slots": [
            {
              "description": "menu items to be listed in the Action Menu",
              "name": ""
            },
            {
              "description": "The icon to use for the Action Menu",
              "name": "icon"
            },
            {
              "description": "The label to use for the Action Menu",
              "name": "label"
            },
            {
              "description": "The label to use for the Action Menu (no icon space reserved)",
              "name": "label-only"
            },
            {
              "description": "Tooltip to be applied to the Action Button",
              "name": "tooltip"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "selects",
              "type": {
                "text": "undefined | 'single'"
              },
              "privacy": "public",
              "default": "undefined",
              "description": "The selection mode for the action menu.\nUnlike Picker, defaults to `undefined` (no selection management).\nSet to `'single'` to maintain a selected item.",
              "attribute": "selects"
            },
            {
              "kind": "field",
              "name": "labelAlignment",
              "type": {
                "text": "'inline' | undefined"
              },
              "privacy": "public",
              "description": "The alignment of the associated label, set by an external field label component."
            },
            {
              "kind": "field",
              "name": "menuItems",
              "type": {
                "text": "MenuItem[]"
              },
              "privacy": "protected",
              "description": "Returns the list of menu items contained in the picker's options menu.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "appliedLabel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The label applied to the picker, typically from an associated field label."
            },
            {
              "kind": "field",
              "name": "deprecatedMenu",
              "type": {
                "text": "Menu | null"
              },
              "privacy": "private",
              "default": "null",
              "deprecated": "Reference to a legacy `<sp-menu>` child element.\nUsed for backwards compatibility with older usage patterns."
            },
            {
              "kind": "field",
              "name": "icons",
              "type": {
                "text": "'only' | 'none' | undefined"
              },
              "privacy": "public",
              "description": "Controls how icons are displayed in the picker button.\n- `'only'`: Shows only the icon, hiding the label visually.\n- `'none'`: Hides the icon entirely.",
              "attribute": "icons",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "invalid",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Whether the picker is in an invalid state. Displays a validation icon when true.",
              "attribute": "invalid",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pendingLabel",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "'Pending'",
              "description": "Defines a string value that labels the Picker while it is in pending state.",
              "attribute": "pending-label"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "public",
              "description": "The placeholder label displayed when no item is selected.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "staticColor",
              "type": {
                "text": "'white' | 'black' | undefined"
              },
              "privacy": "public",
              "description": "Applies static color styling for use on colored backgrounds.\n- `'white'`: Use on dark backgrounds\n- `'black'`: Use on light backgrounds",
              "attribute": "static-color",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selfManageFocusElement",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "deprecated": "This property always returns true and will be removed in a future version.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "tooltipEl",
              "type": {
                "text": "Tooltip | undefined"
              },
              "privacy": "protected",
              "description": "Reference to the tooltip element, if one is slotted."
            },
            {
              "kind": "field",
              "name": "quiet",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Whether to render the picker in quiet mode with minimal visual styling.",
              "attribute": "quiet",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "The current value of the picker, corresponding to the selected menu item's value.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "listRole",
              "type": {
                "text": "'listbox' | 'menu'"
              },
              "privacy": "protected",
              "default": "'menu'",
              "description": "The ARIA role for the menu list element. Uses 'menu' for action menus."
            },
            {
              "kind": "field",
              "name": "itemRole",
              "type": {
                "text": "string"
              },
              "privacy": "protected",
              "default": "'menuitem'",
              "description": "The ARIA role for individual menu items. Uses 'menuitem' for action menus."
            },
            {
              "kind": "field",
              "name": "selectedItem",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "public",
              "description": "Sets the currently selected menu item and updates the displayed content.",
              "parameters": [
                {
                  "description": "The menu item to select, or undefined to clear selection",
                  "name": "selectedItem"
                }
              ]
            },
            {
              "kind": "method",
              "name": "forceFocusVisible",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Programmatically applies visible focus styling to the picker.\nHas no effect when the picker is disabled."
            },
            {
              "kind": "method",
              "name": "click",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Toggles the picker's open state when called programmatically.\nNote: Pointer events are handled by the interaction controller."
            },
            {
              "kind": "method",
              "name": "handleButtonClick",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Handles click events on the trigger button.\nNote: Pointer events are typically handled by the interaction controller;\nthis method is called when `this.button.click()` is invoked programmatically."
            },
            {
              "kind": "method",
              "name": "handleButtonBlur",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Handles blur events on the trigger button, removing focus styling."
            },
            {
              "kind": "method",
              "name": "handleHelperFocus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "deprecated": "Use `focus()` instead.\nFocuses the picker button and applies focus styling."
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Handles focus events on the picker, applying visible focus styling\nonly when focus is visible in the tree."
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  },
                  "description": "The change event from the menu"
                }
              ],
              "description": "Handles change events from the menu, updating the selected value.\nDispatches a `change` event that can be prevented to cancel the selection."
            },
            {
              "kind": "method",
              "name": "handleButtonFocus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  },
                  "description": "The focus event"
                }
              ],
              "description": "Handles focus events on the trigger button, delegating to the interaction strategy."
            },
            {
              "kind": "field",
              "name": "handleEscape",
              "privacy": "protected",
              "description": "Handles Escape key press to close the picker overlay.",
              "parameters": [
                {
                  "description": "The keyboard event",
                  "name": "event"
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleKeydown",
              "privacy": "protected",
              "description": "Handles keyboard navigation on the picker button.\nOpens the menu on Arrow keys, Enter, or Space.",
              "parameters": [
                {
                  "description": "The keyboard event",
                  "name": "event"
                }
              ]
            },
            {
              "kind": "method",
              "name": "keyboardOpen",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Opens the picker via keyboard interaction and focuses the first selected item.\nIf already open, focuses the first selected item in the menu."
            },
            {
              "kind": "method",
              "name": "setValueFromItem",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The menu item to select"
                },
                {
                  "name": "menuChangeEvent",
                  "optional": true,
                  "type": {
                    "text": "Event"
                  },
                  "description": "The original menu change event, if any"
                }
              ],
              "description": "Sets the picker's value from a menu item selection.\nDispatches a cancelable `change` event and reverts the selection if prevented."
            },
            {
              "kind": "method",
              "name": "setMenuItemSelected",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The menu item to update"
                },
                {
                  "name": "value",
                  "type": {
                    "text": "boolean"
                  },
                  "description": "Whether the item should be selected"
                }
              ],
              "description": "Updates the selected state of a menu item."
            },
            {
              "kind": "field",
              "name": "containerStyles",
              "type": {
                "text": "StyleInfo"
              },
              "privacy": "protected",
              "description": "Returns inline styles for the overlay container.\nOn mobile, sets full width; on desktop, returns empty styles.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectedItemContent",
              "type": {
                "text": "MenuItemChildren"
              },
              "privacy": "protected",
              "description": "The content (icon and text) of the currently selected menu item.\nUsed to render the selected item's display in the picker button."
            },
            {
              "kind": "field",
              "name": "_selectedItemContent",
              "type": {
                "text": "MenuItemChildren | undefined"
              },
              "description": "Private backing field for selectedItemContent getter/setter."
            },
            {
              "kind": "method",
              "name": "handleTooltipSlotchange",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event & { target: HTMLSlotElement }"
                  },
                  "description": "The slotchange event"
                }
              ],
              "description": "Handles slotchange events for the tooltip slot.\nSets up the trigger element for self-managed tooltips."
            },
            {
              "kind": "method",
              "name": "renderLabelContent",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "parameters": [
                {
                  "name": "content",
                  "type": {
                    "text": "Node[]"
                  },
                  "description": "The content nodes from the selected item"
                }
              ],
              "description": "Renders the label content for the picker button.\nShows the selected item's content if available, otherwise renders the placeholder label."
            },
            {
              "kind": "method",
              "name": "renderLoader",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "description": "Renders the loading indicator shown during pending state.\nDynamically imports the progress-circle component."
            },
            {
              "kind": "field",
              "name": "buttonContent",
              "type": {
                "text": "TemplateResult[]"
              },
              "privacy": "protected",
              "description": "Returns the content to render inside the action button.\nIncludes the icon slot (with \"more\" icon default), label slot, and label-only slot.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "applyFocusElementLabel",
              "description": "Callback invoked by an associated field label to apply its label value.\nSets the applied label and determines label alignment based on the field label's configuration.",
              "parameters": [
                {
                  "description": "The label text value",
                  "name": "value"
                },
                {
                  "description": "The field label element providing the label",
                  "name": "labelElement"
                }
              ]
            },
            {
              "kind": "method",
              "name": "hasAccessibleLabel",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "description": "Checks whether the action menu has an accessible label through any supported method:\nExtends base check to include label slot content and label-only slot.\n- `label` attribute\n- `aria-label` attribute\n- `aria-labelledby` attribute\n- Applied label from a field label\n- Slotted label content"
            },
            {
              "kind": "method",
              "name": "warnNoLabel",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Logs a warning in debug mode when the action menu lacks an accessible label.\nProvides guidance specific to action menu labeling options."
            },
            {
              "kind": "method",
              "name": "renderOverlay",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "parameters": [
                {
                  "name": "menu",
                  "type": {
                    "text": "TemplateResult"
                  },
                  "description": "The menu template to render inside the overlay"
                }
              ],
              "description": "Renders the overlay element containing the menu.\nConfigures the overlay with appropriate placement, type, and event handlers."
            },
            {
              "kind": "field",
              "name": "renderDescriptionSlot",
              "type": {
                "text": "TemplateResult"
              },
              "privacy": "protected",
              "description": "Renders the description slot for additional picker context.\nContent is referenced by aria-describedby for accessibility.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "bindButtonKeydownListener",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Binds the keydown event listener to the trigger button.\nCalled during first update to enable keyboard navigation."
            },
            {
              "kind": "field",
              "name": "dismissHelper",
              "type": {
                "text": "TemplateResult"
              },
              "privacy": "protected",
              "description": "Renders a visually hidden dismiss button for accessibility.\nAllows screen reader users to dismiss the overlay.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderContainer",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "parameters": [
                {
                  "name": "menu",
                  "type": {
                    "text": "TemplateResult"
                  },
                  "description": "The menu template to wrap in the container"
                }
              ],
              "description": "Renders the overlay container (popover or tray) based on device type.\nOn mobile, uses a tray; on desktop, uses a popover."
            },
            {
              "kind": "field",
              "name": "hasRenderedOverlay",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "default": "false",
              "description": "Tracks whether the overlay has been rendered at least once."
            },
            {
              "kind": "method",
              "name": "onScroll",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Dispatches a scroll event when the menu is scrolled.\nThe event is intentionally non-composed so it fires on the action menu host\nfor consumers but does not cross the shadow DOM boundary into ancestors."
            },
            {
              "kind": "field",
              "name": "renderMenu",
              "type": {
                "text": "TemplateResult"
              },
              "privacy": "protected",
              "description": "Renders the menu and overlay structure.\nLazily renders the overlay only after the picker has been focused or opened.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "willManageSelection",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Tracks whether a selection change is already scheduled for the next frame."
            },
            {
              "kind": "method",
              "name": "shouldScheduleManageSelection",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "optional": true,
                  "type": {
                    "text": "Event"
                  },
                  "description": "Optional event that triggered the scheduling"
                }
              ],
              "description": "Schedules selection management for the next animation frame.\nCalled when the value changes or menu slot content changes.\nPrevents duplicate scheduling if already pending."
            },
            {
              "kind": "method",
              "name": "shouldManageSelection",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Immediately manages selection when a menu item is added or updated.\nSkips if selection management is already scheduled."
            },
            {
              "kind": "method",
              "name": "manageSelection",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Synchronizes the menu selection state with the picker's current value.\nFinds and selects the menu item matching the current value,\nand deselects all other items."
            },
            {
              "kind": "field",
              "name": "selectionPromise",
              "privacy": "private",
              "description": "Promise that resolves when selection management is complete."
            },
            {
              "kind": "field",
              "name": "selectionResolver",
              "type": {
                "text": "() => void"
              },
              "privacy": "private",
              "description": "Resolver function for the selectionPromise."
            },
            {
              "kind": "method",
              "name": "getUpdateComplete",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<boolean>"
                }
              },
              "description": "Returns a promise that resolves when the component update is complete,\nincluding any pending selection management."
            },
            {
              "kind": "field",
              "name": "recentlyConnected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Tracks whether the component was recently connected to the DOM.\nUsed to handle timing differences in Safari and Firefox."
            },
            {
              "kind": "field",
              "name": "enterKeydownOn",
              "type": {
                "text": "EventTarget | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Tracks the target of an active Enter keydown to prevent double-activation."
            },
            {
              "kind": "field",
              "name": "handleEnterKeydown",
              "privacy": "protected",
              "description": "Handles Enter key events to prevent double-activation of menu items.\nTracks keydown state and clears it on keyup.\nAlso prevents Enter from triggering submenus that aren't open.",
              "parameters": [
                {
                  "description": "The keyboard event",
                  "name": "event"
                }
              ]
            },
            {
              "kind": "field",
              "name": "_selectedItem",
              "type": {
                "text": "MenuItem | undefined"
              },
              "description": "Private backing field for selectedItem getter/setter."
            },
            {
              "kind": "field",
              "name": "hasLabel",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the label slot has content.\nUsed to determine button layout and icon visibility.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "labelOnly",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the label-only slot is being used.\nWhen true, no icon space is reserved.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleSlottableRequest",
              "privacy": "public",
              "description": "Handles slottable request events by re-dispatching them.\nAllows parent components to intercept overlay content requests.",
              "parameters": [
                {
                  "description": "The slottable request event",
                  "name": "event"
                }
              ]
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              }
            },
            {
              "name": "scroll",
              "type": {
                "text": "Event"
              }
            },
            {
              "description": "Announces that the overlay has been opened",
              "name": "sp-opened"
            },
            {
              "description": "Announces that the overlay has been closed",
              "name": "sp-closed"
            }
          ],
          "attributes": [
            {
              "description": "The selection mode for the action menu.\nUnlike Picker, defaults to `undefined` (no selection management).\nSet to `'single'` to maintain a selected item.",
              "name": "selects",
              "type": {
                "text": "undefined | 'single'"
              },
              "default": "undefined",
              "fieldName": "selects"
            },
            {
              "name": "icons",
              "type": {
                "text": "'only' | 'none' | undefined"
              },
              "description": "Controls how icons are displayed in the picker button.\n- `'only'`: Shows only the icon, hiding the label visually.\n- `'none'`: Hides the icon entirely.",
              "fieldName": "icons"
            },
            {
              "name": "invalid",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the picker is in an invalid state. Displays a validation icon when true.",
              "fieldName": "invalid"
            },
            {
              "name": "pending-label",
              "type": {
                "text": "string"
              },
              "default": "'Pending'",
              "description": "Defines a string value that labels the Picker while it is in pending state.",
              "fieldName": "pendingLabel"
            },
            {
              "name": "label",
              "type": {
                "text": "string | undefined"
              },
              "description": "The placeholder label displayed when no item is selected.",
              "fieldName": "label"
            },
            {
              "name": "static-color",
              "type": {
                "text": "'white' | 'black' | undefined"
              },
              "description": "Applies static color styling for use on colored backgrounds.\n- `'white'`: Use on dark backgrounds\n- `'black'`: Use on light backgrounds",
              "fieldName": "staticColor"
            },
            {
              "name": "quiet",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to render the picker in quiet mode with minimal visual styling.",
              "fieldName": "quiet"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the picker, corresponding to the selected menu item's value.",
              "fieldName": "value"
            }
          ],
          "mixins": [
            {
              "name": "ObserveSlotPresence",
              "package": "@spectrum-web-components/shared/src/observe-slot-presence.js"
            },
            {
              "name": "ObserveSlotText",
              "package": "@spectrum-web-components/shared/src/observe-slot-text.js"
            },
            {
              "name": "SizedMixin",
              "package": "@spectrum-web-components/base"
            }
          ],
          "superclass": {
            "name": "ExpandableElement",
            "package": "@spectrum-web-components/picker"
          },
          "tagName": "sp-action-menu",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ActionMenu",
          "declaration": {
            "name": "ActionMenu",
            "module": "src/ActionMenu.js"
          }
        }
      ]
    }
  ]
}
