CustomElement.new()

January 29, 2020 ยท View on GitHub

An utility to simplify Custom Elements instantiation for every browser, specially those incapable of extending built-ins.

Please note that while this module by its own works out of the box in WebKit/Safari, as in every other browser, you still need to polyfill Custom Elements built-in extends for these, and before using this helper.

class MyButton extends HTMLButtonElement {}
customElements.define('my-button', MyButton, {extends: 'button'});

// Safari would fail at using `new MyButton()`
// Safari would indeed need `document.createElement('button', {is: 'my-button'})`
// With this utility/helper though, you can simply write instead:
const mybtn = MyButton.new(); // ๐ŸŽ‰