details-menu-element

A menu opened with <details>.

MIT License

Downloads
150.2K
Stars
581
Committers
10

Bot releases are visible (Hide)

details-menu-element - v1.0.13 Latest Release

Published by jonrohan almost 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/github/details-menu-element/compare/v1.0.12...v1.0.13

details-menu-element -

Published by koddsson about 3 years ago

This release brings us a bugfix for click events in nested elements within a <label> element (See https://github.com/github/details-menu-element/pull/54)

https://github.com/github/details-menu-element/compare/v1.0.11...v1.0.12

details-menu-element -

Published by koddsson about 3 years ago

This release includes a bugfix that will close the menu when a checked input is clicked.

https://github.com/github/details-menu-element/compare/v1.0.10...v1.0.11

details-menu-element -

Published by koddsson about 3 years ago

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.

https://github.com/github/details-menu-element/compare/v1.0.9...v1.0.10

details-menu-element - v1.0.9

Published by muan over 4 years ago

  • Convert to TypeScript/remove Flow type support.
  • Package is now type module. UMD build is removed.
details-menu-element - v1.0.8

Published by muan over 4 years ago

details-menu-element -

Published by koddsson over 4 years ago

  • Add type to HTMLElementTagNameMap in typescript declaration file (#44)

https://github.com/github/details-menu-element/compare/v1.0.6...v1.0.7

details-menu-element - v1.0.5

Published by muan about 5 years ago

https://github.com/github/details-menu-element/pull/36

  • Fix first menu item taking precedence over [autofocus] elements when opening the menu with keydown
  • Fix <details-menu> overriding its existing role attribute
  • Set role=button on <summary> when there isn't a role set, so it's exposed to AT
details-menu-element -

Published by koddsson about 5 years ago

  • Merge pull request #35 from github/publish-to-gpr-as-well 3e5bebf
  • publish to GPR as a postpublish step fc523b6

https://github.com/github/details-menu-element/compare/v1.0.3...v1.0.4

details-menu-element - 1.0.4

Published by koddsson about 5 years ago

<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> with event.detail.relatedTarget being the item to be selected.
  • details-menu-selected - fired on <details-menu> with event.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.

details-menu-element -

Published by koddsson about 5 years ago

  • Merge pull request #34 from github/add-typescript-definition-file d0790bb
  • add typescript definition file 02ed0bc

https://github.com/github/details-menu-element/compare/v1.0.2...v1.0.3

details-menu-element - 1.0.0

Published by dgraham over 5 years ago

First stable release with no changes since 0.10.1.

details-menu-element - v0.10.0

Published by muan over 5 years ago

Event changes:

Before

_ target cancelable bubbles detail
details-menu-select selected item true true null
details-menu-selected selected item false true null

After

_ target cancelable bubbles detail
details-menu-select <details-menu> true false { relatedTarget: selectedItem }
details-menu-selected <details-menu> false false { relatedTarget: selectedItem }
details-menu-element - details-menu-element 0.9.0

Published by mislav over 5 years ago

  • Drop IE 11 compatibility

  • Stop transforming custom element classes

  • @flow strict