Socket
Socket
Sign inDemoInstall

details-polyfill

Package Overview
Dependencies
0
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    details-polyfill

Polyfill for the HTML5 `<details>` element


Version published
Weekly downloads
13K
decreased by-0.15%
Maintainers
1
Install size
8.91 kB
Created
Weekly downloads
 

Readme

Source

details-polyill

Polyfill for the HTML5 <details> element, no dependencies


Usage

details-polyfill is available via npm.

npm install --save details-polyfill

Requiring it will immediately inject the needed behaviors.

require('details-polyfill')

The file index.js is also usable as a standalone script.


How it works

Just include the script on any page that uses <details>.

In case the browser doesn't support <details>, it adds the following behaviors:

  • When clicking details > summary, it toggles the open attribute in details.

It also adds these CSS styles:

  • summary:before is styled with a disclosure triangle.
  • details:not([open]) > :not(summary) elements are hidden. (that is: all children of closed details, except summary)
  • The <html> element gets the no-details class.

Limitations

Keep these guidelines in mind.
No loose text

The <details> element must not have loose text inside it. Everything inside it should be in elements.

<!-- ✗ This will NOT work -->
<details>
  <summary>More info...</summary>
  No info available.
</details>
<!-- ✓ But this will -->
<details>
  <summary>More info...</summary>
  <span>No info available.</span>
</details>
Don't style summary::before

...unless it's for a disclosure triangle. This library uses summary::before to create a default triangle.

Summary as first child

The summary element must also be the first child of the details element. Browsers supporting the details element natively will hoist summary elements up, but details-polyfill.js won't.

JavaScript el.open = true

...will not work like how you think it does. You also need to do .setAttribute('open', 'open') or .removeAttribute('open').

Alternatives

Here are a few other polyfills for <details>.

I wrote this because everything else out there either depend on big libraries, or are too complicated. In contrast, details-polyfill has <100 lines of code, and only comes with a .js file.

Thanks

details-polyfill © 2016+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors (list).

ricostacruz.com  ·  GitHub @rstacruz  ·  Twitter @rstacruz

Keywords

FAQs

Last updated on 16 Mar 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc