Releases: github/details-menu-element
v1.0.13
What's Changed
- Use chromium for karma tests by @theinterned in #55
- Add a .devcontainer by @koddsson in #56
- Add a release action by @koddsson in #57
- move AOR to primer by @keithamus in #60
- Allow arrow key navigation on aria-disabled elements by @khiga8 in #61
New Contributors
- @theinterned made their first contribution in #55
- @khiga8 made their first contribution in #61
Full Changelog: v1.0.12...v1.0.13
v1.0.12
v1.0.11
This release includes a bugfix that will close the menu when a checked input is clicked.
v1.0.10
This release brings you updated dependencies as well as a bugfix for <summary autofocus>
. The element should now focus on any autofocused element within the details menu when the summary has an autofocus
attribute.
Thanks to @pablonete for their contributions to this realease.
v1.0.9
v1.0.8
v1.0.7
v1.0.5
v1.0.4
1.0.4
<details-menu> element
A menu that's opened with a <details> button.
Installation
$ npm install @github/details-menu-element
Usage
import '@github/details-menu-element'
<details>
<summary>Robots</summary>
<details-menu role="menu">
<button type="button" role="menuitem">Hubot</button>
<button type="button" role="menuitem">Bender</button>
<button type="button" role="menuitem">BB-8</button>
</details-menu>
</details>
Use data-menu-button
and data-menu-button-text
to have button text updated on menu item activation.
<details>
<summary>Preferred robot: <span data-menu-button>None</span></summary>
<details-menu role="menu">
<button type="button" role="menuitem" data-menu-button-text>Hubot</button>
<button type="button" role="menuitem" data-menu-button-text>Bender</button>
<button type="button" role="menuitem" data-menu-button-text>BB-8</button>
</details-menu>
</details>
Use label[tabindex="0"][role=menuitemradio/menuitemcheckbox]
when dealing with radio and checkbox inputs menu items. Check states of the input element and the label will be synchronized.
<details>
<summary>Preferred robot</summary>
<details-menu role="menu">
<label tabindex="0" role="menuitemradio">
<input type="radio" name="robot" value="Hubot"> Hubot
</label>
<label tabindex="0" role="menuitemradio">
<input type="radio" name="robot" value="Bender"> Bender
</label>
<label tabindex="0" role="menuitemradio">
<input type="radio" name="robot" value="BB-8"> BB-8
</label>
</details-menu>
</details>
Events
details-menu-select
(cancelable) - fired on<details-menu>
withevent.detail.relatedTarget
being the item to be selected.details-menu-selected
- fired on<details-menu>
withevent.detail.relatedTarget
being the item selected, after label is updated and menu is closed.
Deferred loading
Menu content can be loaded from a server by embedding an
<include-fragment>
element.
<details>
<summary>Robots</summary>
<details-menu src="/robots" preload>
<include-fragment>Loading…</include-fragment>
</details-menu>
</details>
The src
attribute value is copied to the <include-fragment>
the first
time the <details>
button is toggled open, which starts the server fetch.
If the preload
attribute is present, the server fetch will begin on mouse
hover over the <details>
button, so the content may be loaded by the time
the menu is opened.
Browser support
Browsers without native custom element support require a polyfill.
- Chrome
- Firefox
- Safari
- Microsoft Edge
Development
npm install
npm test
License
Distributed under the MIT license. See LICENSE for details.