Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- lock prerelease versions for Spectrum CSS (#5014) (8aa7734)
- add an optional chromatic vrt action (7d2f840)
Note: Version bump only for package @spectrum-web-components/menu
- menu: prevent sp-menu-item text-align cascading (#4868) (6663820)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- menu: allow menu-item to support arbitrary element as the submenu root (#4720) (4c6a0dc)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- breadcrumbs: add Breadcrumbs component (#4578) (acd4b5e)
- menu: should not make a selection on right click (#4642) (d269629)
- upgrade menu and dialog grid css (#4638) (ab9d468)
Note: Version bump only for package @spectrum-web-components/menu
- action-bar: support for action-menus (#3780) (4aff599)
- menu: enable numpad arrow and Enter keys (#4492) (012c411)
Note: Version bump only for package @spectrum-web-components/menu
- action-menu: allow menu groups to handle their own selections (#4397) (5a19051)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- menu: release synthetic "click" promise to unblock keyboard interactions (f8aecf3)
- asset: use core tokens (99e76f4)
- menu: fix css for
disabled
"value" slots in menu items (#4113) (3c5855d)
- menu: correct disabled menu item's chevron to appropriate colour (#4052) (30f5bb5)
- support generating random IDs outside of secure contexts (485a67c)
- menu: process ":active" styles (7917583)
- picker,action-menu,split-button: update interaction model (#3935) (bae7d52)
- overlay: move closed overlays to "display: none" (fc0278b)
- menu: support navigating to and selecting Menu Items in Menu Groups (8469ab2)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- update deps graph, fix imports (f633005)
- menu: conditionally access slots for their assigned content (#3717) (c045822)
- menu: allow
change
events to be direct (#3689) (b2cd3da)
- menu: allow Menu elements to be controlled (74ed7fb)
- menu: manage deeply slotted menu items and initial focus (7f9ad69)
- menu: added support for menu item description (#3559) (ce99528)
- menu: correct types import for .d.ts file creation (a11d264)
- ensure submenus stay open when root it clicked again (83ced1c)
- menu: prepare for Overlay v2 and less connnected/disconnected responsibilities (5dfb71e)
- make lots of things lazy (b8fa3ad)
- make submenus lazier (a2d661c)
- make submenus lazy (93531b9)
- menu: convert to core tokens (#3254) (da43540)
- menu item missing aria labels (#3417) (0d04869)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- menu: #3164 plug memory leak with gobal events (ff589d4)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- abstract "hasVisibleFocusInTree" functionality and return trigger focus after close (4f39f2c)
- add "value" slot to sp-menu-item (e1bd264)
- add icon present and icon-only support to Picker (f6887a3)
- add value/selection checks to the tests and fix up the value logic (933106f)
- address a11y issues raised by updating our dependencies (4f06477)
- correct @element jsDoc listing across library (c97a632)
- correctly delivery visuals and mouse interactions for litAnchor and extensions (0ae889a)
- dropdown: improve accessibility (389d9d9)
- ensure Action Menu Item with [href] close the menu (6b3d87f)
- ensure browser understandable extensions (f4e59f7)
- ensure that an overlay can be released even if it does not complete its fade in animation (4cbb36f)
- ensure that entering an ancestor Menu Item without a submen closes related submenus (efe5fa1)
- include "type" in package.json, generate custom-elements.json (1a8d716)
- include default export in the "exports" fields (f32407d)
- include the "types" entry in package.json files (b432f59)
- match "pointerup" listeners with "pointercancel" for full coverage (7f2ce92)
- menu: add support for submenu interactions (68399af)
- menu: allow for settign "selected" async from above (9d7f622)
- menu: cache item parent element to correct disconnecting event dispatch (f375510)
- menu: clarify menu internal focus management via preventScroll option (9ae092c)
- menu: disabled menu-item should not open submenu (33848bc)
- menu: ensure active descendant is in view when activated (6edc351)
- menu: ensure that Groups in Action Menus are rendered with the correct width (a996a10)
- menu: include all direct dependencies (aa7327f)
- menu: manage tabindex and focus entry correctly (3b1a250)
- menu: only scrollIntoView when keyboard navigating (f4e9278)
- menu: pass current focus visibility to menu items (2d3bf80)
- menu: patch undefined lastFocusedItem (772a7ea)
- menu: prevent infinite loop when focus() (e4e98a3)
- menu: support menu item list change in deep decendents (b2b47f3)
- normalize "event" and "error" argument names (8d382cd)
- picker: allow menu items to be added, updated, and removed (73511ba)
- prepare for querying child items while disconnected (f4152a5)
- prevent infinite loops when all children are [disabled] (2deac3d)
- prevent leaving multiple submenus open at a time (d2bfbb2)
- remove usage where deprecated (387db3b)
- simplify focus application in Menu (6140169)
- split-button: hide "selected" item from menu (322a966)
- stop merging selectors in a way that alters the cascade (369388f)
- style clean up (49e1537)
- update consumption of Spectrum CSS for latest version (ed2305b)
- update latest Spectrum CSS beta releases (d8d3acc)
- update Picker label via MutationObserver instead of "slotchange" (196998e)
- update role application logic to not overwrite menu* roles (94b6aec)
- update side effect listings (8160d3a)
- update to latest spectrum-css packages (a5ca19f)
- use icons without "size" values (3fc7c91)
- use latest @spectrum-css/* versions (c35eb86)
- action-button: add action button pattern (03ac00a)
- action-group: manage "one" and "multiple" selections (6fad59e)
- add screenshot regression testing to CI (8205dfe)
- add selects attribute to menu (bdf2578)
- adopt DNA@7 base Spectrum CSS (e08cafd)
- allow dir management by sp-theme elements (2d10158)
- conditionally load focus-visible polyfill (6b5e5cf)
- delivery dev mode messages in various packages (62370a1)
- icons-workflow: vend fully registered icon components (941f3a4)
- include all Dev Mode files in side effects (f70817c)
- leverage "exports" field in package.json (321abd7)
- menu: update spectrum css input (8c7e18a)
- overlay: manage focus throwing and tab trapping (27a0b53)
- picker: process field-label content for more accurate a11y tree (dc9df54)
- picker: support responsive delivery of menu (20031d1)
- reparentChildren - refactored arguments - breaking change (dea2bc5)
- shared pkg versions, devmode define warning, registry-conflicts docs (6e49565)
- split-button: add split-button pattern (4833a59)
- update lit-* dependencies, wip (377f3c8)
- update Menu Divider for new Spectrum CSS output (aca7e2d)
- update to Spectrum CSS v3.0.0 (e8b3d8f)
- use :focus-visable (via polyfill) instead of :focus (11c6fc7)
- use @adobe/spectrum-css@2.15.1 (3918888)
- use latest exports specification (a7ecf4b)
- reorganize inheritance and composition in Menu Items (d96ccb6)
- use "sideEffects" listing in package.json (7271614)
- use imported TypeScript helpers instead of inlining them (cc2bd0a)
- Revert "chore: release new versions" (a6d655d)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- menu: patch undefined lastFocusedItem (772a7ea)
- prepare for querying child items while disconnected (f4152a5)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- ensure that an overlay can be released even if it does not complete its fade in animation (4cbb36f)
Note: Version bump only for package @spectrum-web-components/menu
- ensure Action Menu Item with [href] close the menu (6b3d87f)
- menu: ensure that Groups in Action Menus are rendered with the correct width (a996a10)
- match "pointerup" listeners with "pointercancel" for full coverage (7f2ce92)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- include all Dev Mode files in side effects (f70817c)
- delivery dev mode messages in various packages (62370a1)
Note: Version bump only for package @spectrum-web-components/menu
- ensure that entering an ancestor Menu Item without a submen closes related submenus (efe5fa1)
- update Picker label via MutationObserver instead of "slotchange" (196998e)
- prevent leaving multiple submenus open at a time (d2bfbb2)
- menu: disabled menu-item should not open submenu (33848bc)
- update consumption of Spectrum CSS for latest version (ed2305b)
- update Menu Divider for new Spectrum CSS output (aca7e2d)
- conditionally load focus-visible polyfill (6b5e5cf)
- reparentChildren - refactored arguments - breaking change (dea2bc5)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- menu: add support for submenu interactions (68399af)
Note: Version bump only for package @spectrum-web-components/menu
- picker: support responsive delivery of menu (20031d1)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- picker: allow menu items to be added, updated, and removed (73511ba)
- update lit-* dependencies, wip (377f3c8)
- abstract "hasVisibleFocusInTree" functionality and return trigger focus after close (4f39f2c)
- adopt DNA@7 base Spectrum CSS (e08cafd)
Note: Version bump only for package @spectrum-web-components/menu
- menu: cache item parent element to correct disconnecting event dispatch (f375510)
Note: Version bump only for package @spectrum-web-components/menu
- simplify focus application in Menu (6140169)
- correct @element jsDoc listing across library (c97a632)
- reorganize inheritance and composition in Menu Items (d96ccb6)
- add value/selection checks to the tests and fix up the value logic (933106f)
- split-button: hide "selected" item from menu (322a966)
- add selects attribute to menu (bdf2578)
- add "value" slot to sp-menu-item (e1bd264)
- add icon present and icon-only support to Picker (f6887a3)
- update role application logic to not overwrite menu* roles (94b6aec)
- menu: clarify menu internal focus management via preventScroll option (9ae092c)
Note: Version bump only for package @spectrum-web-components/menu
- menu: pass current focus visibility to menu items (2d3bf80)
- menu: manage tabindex and focus entry correctly (3b1a250)
- menu: only scrollIntoView when keyboard navigating (f4e9278)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- correctly delivery visuals and mouse interactions for litAnchor and extensions (0ae889a)
- remove usage where deprecated (387db3b)
- picker: process field-label content for more accurate a11y tree (dc9df54)
Note: Version bump only for package @spectrum-web-components/menu
- menu: ensure active descendant is in view when activated (6edc351)
- use latest exports specification (a7ecf4b)
- update to latest spectrum-css packages (a5ca19f)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- address a11y issues raised by updating our dependencies (4f06477)
- include the "types" entry in package.json files (b432f59)
- prevent infinite loops when all children are [disabled] (2deac3d)
- stop merging selectors in a way that alters the cascade (369388f)
- use icons without "size" values (3fc7c91)
- menu: prevent infinite loop when focus() (e4e98a3)
- update latest Spectrum CSS beta releases (d8d3acc)
- use latest @spectrum-css/* versions (c35eb86)
- action-button: add action button pattern (03ac00a)
- action-group: manage "one" and "multiple" selections (6fad59e)
- icons-workflow: vend fully registered icon components (941f3a4)
- menu: update spectrum css input (8c7e18a)
- include the "types" entry in package.json files (b432f59)
- prevent infinite loops when all children are disabled
- stop merging selectors in a way that alters the cascade (369388f)
- use icons without "size" values (3fc7c91)
- menu: prevent infinite loop when focus() (e4e98a3)
- update latest Spectrum CSS beta releases (d8d3acc)
- use latest @spectrum-css/* versions (c35eb86)
- action-button: add action button pattern (03ac00a)
- action-group: manage "one" and "multiple" selections (6fad59e)
- icons-workflow: vend fully registered icon components (941f3a4)
- menu: update spectrum css input (8c7e18a)
Note: Version bump only for package @spectrum-web-components/menu
- include default export in the "exports" fields (f32407d)
- dropdown: improve accessibility (389d9d9)
- update side effect listings (8160d3a)
Note: Version bump only for package @spectrum-web-components/menu
- allow dir management by sp-theme elements (2d10158)
- update to Spectrum CSS v3.0.0 (e8b3d8f)
- split-button: add split-button pattern (4833a59)
Note: Version bump only for package @spectrum-web-components/menu
- menu: include all direct dependencies (aa7327f)
- ensure browser understandable extensions (f4e59f7)
- overlay: manage focus throwing and tab trapping (27a0b53)
- leverage "exports" field in package.json (321abd7)
- menu: support menu item list change in deep decendents (b2b47f3)
- use "sideEffects" listing in package.json (7271614)
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
Note: Version bump only for package @spectrum-web-components/menu
- normalize "event" and "error" argument names (8d382cd)
- include "type" in package.json, generate custom-elements.json (1a8d716)
- menu: allow for settign "selected" async from above (9d7f622)
- add screenshot regression testing to CI (8205dfe)
- use :focus-visable (via polyfill) instead of :focus (11c6fc7)
- use @adobe/spectrum-css@2.15.1 (3918888)
- use imported TypeScript helpers instead of inlining them (cc2bd0a)
Note: Version bump only for package @spectrum-web-components/menu
An <sp-menu>
is used for creating a menu list. The various elements inside a menu are given as <sp-menu-group>
, <sp-menu-item>
, or <sp-menu-divider>
. Often a <sp-menu>
element will appear in a <sp-popover>
element so that it displays as a togglig menu.

yarn add @spectrum-web-components/menu
Import the side effectful registration of <sp-menu>
, <sp-menu-group>
, <sp-menu-item>
, or <sp-menu-divider>
individually as follows:
import '@spectrum-web-components/menu/sp-menu.js';
import '@spectrum-web-components/menu/sp-menu-group.js';
import '@spectrum-web-components/menu/sp-menu-item.js';
import '@spectrum-web-components/menu/sp-menu-divider.js';
When looking to leverage the Menu
, MenuGroup
, MenuItem
, or MenuDivider
base classes as a type and/or for extension purposes, do so via:
import {
Menu,
MenuGroup,
MenuItem,
MenuDivider
} from '@spectrum-web-components/menu';
<sp-menu>
<sp-menu-item>
Deselect
</sp-menu-item>
<sp-menu-item>
Select inverse
</sp-menu-item>
<sp-menu-item>
Feather...
</sp-menu-item>
<sp-menu-item>
Select and mask...
</sp-menu-item>
<sp-menu-item>
Save selection
</sp-menu-item>
<sp-menu-item disabled>
Make work path
</sp-menu-item>
</sp-menu>
Often an <sp-menu>
element will be delivered inside of an <sp-popover>
element when displaying it above other content.
<sp-popover open style="position: relative">
<sp-menu>
<sp-menu-item value="item-1">Deselect</sp-menu-item>
<sp-menu-item value="item-2">Select inverse</sp-menu-item>
<sp-menu-item value="item-3">Feather...</sp-menu-item>
<sp-menu-item value="item-4">Select and mask...</sp-menu-item>
<sp-menu-item value="item-5">Save selection</sp-menu-item>
<sp-menu-item value="item-6" disabled>Make work path</sp-menu-item>
</sp-menu>
</sp-popover>
The <sp-menu>
element can be instructed to maintain a selection via the selects
attribute. Depending on the chosen algorithm, the <sp-menu>
element will hold a value
property and manage the selected
state of its <sp-menu-item>
descendants.
When selects
is set to single
, the <sp-menu>
element will maintain one selected item after an initial selection is made.
<p>
The value of the `<sp-menu>` element is:
<span id="single-value"></span>
</p>
<sp-menu
label="Choose a shape"
selects="single"
onchange="this.previousElementSibling.querySelector('#single-value').textContent=this.value"
>
<sp-menu-item value="item-1">Square</sp-menu-item>
<sp-menu-item value="item-2">Triangle</sp-menu-item>
<sp-menu-item value="item-3">Parallelogram</sp-menu-item>
<sp-menu-item value="item-4">Star</sp-menu-item>
<sp-menu-item value="item-5">Hexagon</sp-menu-item>
<sp-menu-item value="item-6" disabled>Circle</sp-menu-item>
</sp-menu>
When selects
is set to multiple
, the <sp-menu>
element will maintain zero or more selected items.
<p>
The value of the `<sp-menu>` element is:
<span id="multiple-value">item-3,item-4</span>
</p>
<sp-menu
label="Choose some fruit"
selects="multiple"
onchange="this.previousElementSibling.querySelector('#multiple-value').textContent=this.value"
>
<sp-menu-item value="item-1">Apple</sp-menu-item>
<sp-menu-item value="item-2">Banana</sp-menu-item>
<sp-menu-item value="item-3" selected>Goji berry</sp-menu-item>
<sp-menu-item value="item-4" selected>Grapes</sp-menu-item>
<sp-menu-item value="item-5" disabled>Kumquat</sp-menu-item>
<sp-menu-item value="item-6">Orange</sp-menu-item>
</sp-menu>
When selects
is set to inherit
, the <sp-menu>
element will allow its <sp-menu-item>
children to participate in the selection of its nearest <sp-menu>
ancestor.
<p>
The value of the `<sp-menu>` element is:
<span id="inherit-value">item-3 || item-4 || item-8 || item-11</span>
</p>
<sp-menu
label="Choose some groceries"
selects="multiple"
value-separator=" || "
onchange="this.previousElementSibling.querySelector('#inherit-value').textContent=this.value"
>
<sp-menu label="Fruit" selects="inherit">
<sp-menu-item value="item-1">Apple</sp-menu-item>
<sp-menu-item value="item-2">Banana</sp-menu-item>
<sp-menu-item value="item-3" selected>Goji berry</sp-menu-item>
<sp-menu-item value="item-4" selected>Grapes</sp-menu-item>
<sp-menu-item value="item-5" disabled>Kumquat</sp-menu-item>
<sp-menu-item value="item-6">Orange</sp-menu-item>
</sp-menu>
<sp-menu label="Vegetables" selects="inherit">
<sp-menu-item value="item-7">Carrot</sp-menu-item>
<sp-menu-item value="item-8" selected>Garlic</sp-menu-item>
<sp-menu-item value="item-9" disabled>Lettuce</sp-menu-item>
<sp-menu-item value="item-10">Onion</sp-menu-item>
<sp-menu-item value="item-11" selected>Potato</sp-menu-item>
<sp-menu-item value="item-12">Tomato</sp-menu-item>
</sp-menu>
</sp-menu>
Whether <sp-menu>
carries a selection or not, when one of the <sp-menu-item>
children that it manages is activated the <sp-menu>
element will dispatch a change
event. At dispatch time, even when a selection is not held due to the absence of the selects
attribute, the value
of the <sp-menu>
will correspond to the <sp-menu-item>
that was activated. When the selects
attribute is present, this value
will be persisted beyond the lifecycle of the change
event. When selects="multiple"
the values of multiple items will be comma separated unless otherwise set via the value-separator
attribute.
Note: The change
event is only dispatched on a left mouse click or Enter/Space keypress. Right/Middle mouse clicks will not dispatch the change
event.