This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [happy-dom](https://redirect.github.com/capricorn86/happy-dom) | [`^12.0.0` -> `^17.0.0`](https://renovatebot.com/diffs/npm/happy-dom/12.10.3/17.1.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>capricorn86/happy-dom (happy-dom)</summary> ### [`v17.1.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.1.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.1.0...v17.1.1) ##### 🎨 Features - Adds support for the `@media` selector "forced-colors" - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727) - Read more about how to set the value in the [Wiki for IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings) under "device.forcedColors" ##### 👷♂️ Patch fixes - Fixes issue where it was not possible to nest `@media`, `@supports` and `@container` rules - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727) - Fixes issue where `CSSStyleSheet` was instantiated internally without a Window context, causing errors to not be thrown correctly in `CSSStyleSheet` methods - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727) - Changes errors thrown in `CSSStyleSheet` methods, so that they work according to spec - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727) ### [`v17.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.1.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.4...v17.1.0) ##### 🎨 Features - Add support for CSS media query rule "prefers-reduced-motion" - By **[@​mwdiaz](https://redirect.github.com/mwdiaz)** in task [#​1724](https://redirect.github.com/capricorn86/happy-dom/issues/1724) - Read more about how to set this value under [IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings) in the Wiki. ### [`v17.0.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.3...v17.0.4) ##### 👷♂️ Patch fixes - The "slotchange" event should be fired after the element has been connected to the DOM - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1722](https://redirect.github.com/capricorn86/happy-dom/issues/1722) ### [`v17.0.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.2...v17.0.3) ##### 👷♂️ Patch fixes - Fix bug where nested query selector is not returning the correct result when there are multiple matching selectorGroups - By \*\*[@​christiango](https://redirect.github.com/christiango) \*\* in task [#​1720](https://redirect.github.com/capricorn86/happy-dom/issues/1720) ### [`v17.0.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.1...v17.0.2) ##### 👷♂️ Patch fixes - The property "tabIndex" should return "0" by default in `HTMLAnchorElement`, `HTMLAreaElement`, `HTMLButtonElement`, `HTMLIFrameElement`, `HTMLInputElement`, `HTMLMediaElement`, `HTMLObjectElement`, `HTMLSelectElement` and `HTMLTextAreaElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1714](https://redirect.github.com/capricorn86/happy-dom/issues/1714) ### [`v17.0.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.0...v17.0.1) ##### 👷♂️ Patch fixes - Ensure `querySelector()` returns the first item that appears in the DOM for grouped selectors - By **[@​christiango](https://redirect.github.com/christiango)** in task [#​1710](https://redirect.github.com/capricorn86/happy-dom/issues/1710) ### [`v17.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.8.1...v17.0.0) ##### 💣 Breaking Changes - Adds support for ECMAScript modules - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - This change allows the use of `import` and `export` statements in JavaScript files ##### 🎨 Features - Adds support for tracing never ending tasks when using `waitUntilComplete()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1567](https://redirect.github.com/capricorn86/happy-dom/issues/1567) - Read more about how to enable this feature under `debug.traceWaitUntilComplete` in the Wiki for [IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings) - Adds support for preloading fetch, stylesheet, script and modules in `HTMLLinkElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Adds support for `HTMLLinkElement.relList.supports()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Adds support for `Request.mode` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Output failed requests to the console - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Adds support for `HTMLScriptElement.blocking`, `HTMLScriptElement.crossOrigin`, `HTMLScriptElement.fetchPriority`, `HTMLScriptElement.noModule`, `HTMLScriptElement.integrity`, `HTMLScriptElement.referrerPolicy` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Use cache in virtual server requests - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Adds support for `credentials` and `referrerPolicy` when fetching styles and scripts - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Disallow invalid attributes from being set in `Element.setAttribute()` - By **[@​OlaviSau](https://redirect.github.com/OlaviSau)** in task [#​1706](https://redirect.github.com/capricorn86/happy-dom/issues/1706) ##### 👷♂️ Patch fixes - Call `afterAsyncResponse` fetch interceptor in virtual server requests - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) - Fixes bug where children in a `ShadowRoot` of a custom element that was upgraded from a `HTMLElement` wasn't considered connected to the DOM - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​320](https://redirect.github.com/capricorn86/happy-dom/issues/320) ### [`v16.8.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.8.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.8.0...v16.8.1) ##### 👷♂️ Patch fixes - Handle non-string values gracefully when removing an attribute - By **[@​OlaviSau](https://redirect.github.com/OlaviSau)** in task [#​1706](https://redirect.github.com/capricorn86/happy-dom/issues/1706) ### [`v16.8.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.8.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.3...v16.8.0) ##### 🎨 Features - Add support for `insertRow()` and `deleteRow()` to `HTMLTableSectionElement` - By **[@​christiango](https://redirect.github.com/christiango)** in task [#​1708](https://redirect.github.com/capricorn86/happy-dom/issues/1708) ### [`v16.7.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.2...v16.7.3) ##### 👷♂️ Patch fixes - Removes space from directory name that prevents the repo to be cloned on MS Windows - By **[@​kleinfreund](https://redirect.github.com/kleinfreund)** in task [#​1703](https://redirect.github.com/capricorn86/happy-dom/issues/1703) ### [`v16.7.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.1...v16.7.2) ##### 👷♂️ Patch fixes - Ignore invalid cookies in CookieContainer - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693) ### [`v16.7.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.0...v16.7.1) ##### 👷♂️ Patch fixes - Adds `ICookie`, `IOptionalCookie`, `CookieSameSiteEnum` and `IVirtualServer` as exports to the index file - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693) - Makes non-mandatory cookie properties optional in `CookieContainer.addCookies()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693) ### [`v16.7.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.6.0...v16.7.0) ##### 🎨 Features - Adds support for simulating local HTTP servers that serves files from the local file system - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1688](https://redirect.github.com/capricorn86/happy-dom/issues/1688) - Read more about virtual servers in the [Wiki](https://redirect.github.com/capricorn86/happy-dom/wiki/IVirtualServer) ### [`v16.6.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.6.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.3...v16.6.0) ##### 🎨 Features - Adds support for subsequent sibling combinator to `querySelector()`, `querySelectorAll()` and `matches()` (e.g. ".a ~ .b") - By **[@​karpiuMG](https://redirect.github.com/karpiuMG)** in task [#​1683](https://redirect.github.com/capricorn86/happy-dom/issues/1683) ### [`v16.5.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.2...v16.5.3) ##### 👷♂️ Patch fixes - Fixes problem with encoding and decoding attribute values in HTML - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1678](https://redirect.github.com/capricorn86/happy-dom/issues/1678) - Fixes issue where it was not possible to query selector by class when the attribute value had line breaks in it - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1678](https://redirect.github.com/capricorn86/happy-dom/issues/1678) ### [`v16.5.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.1...v16.5.2) ##### 👷♂️ Patch fixes - `Event.target` should be the target element after an event has been dispatched - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1529](https://redirect.github.com/capricorn86/happy-dom/issues/1529) ### [`v16.5.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.0...v16.5.1) ##### 👷♂️ Patch fixes - Fixes issue where `Comment`, `Text` and `DocumentFragment` are not instances of their corresponding property on `Window` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1577](https://redirect.github.com/capricorn86/happy-dom/issues/1577) ### [`v16.5.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.3...v16.5.0) ##### 🎨 Features - Adds property `GlobalRegistrator.isRegistered` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1670](https://redirect.github.com/capricorn86/happy-dom/issues/1670) ### [`v16.4.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.2...v16.4.3) ##### 👷♂️ Patch fixes - Adds null check for if browser frame is available in `Response` during tear down of the `Window` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1669](https://redirect.github.com/capricorn86/happy-dom/issues/1669) ### [`v16.4.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.1...v16.4.2) ##### 👷♂️ Patch fixes - Support using URL as an object for URL:s when using the Browser API - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1664](https://redirect.github.com/capricorn86/happy-dom/issues/1664) ### [`v16.4.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.0...v16.4.1) ##### 👷♂️ Patch fixes - Fixes issue where HTML assigned to `document.documentElement.innerHTML` isnt parsed correctly since v16 - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1663](https://redirect.github.com/capricorn86/happy-dom/issues/1663) ### [`v16.4.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.3.0...v16.4.0) ##### 🎨 Features - Allow fetch to be intercepted and modified by sending in an interceptor as a setting - By **[@​OlaviSau](https://redirect.github.com/OlaviSau)** in task [#​1502](https://redirect.github.com/capricorn86/happy-dom/issues/1502) - Read more about this in the Wiki at [IFetchInterceptor](https://redirect.github.com/capricorn86/happy-dom/wiki/IFetchInterceptor) ### [`v16.3.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.3.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.9...v16.3.0) ##### 🎨 Features - Adds support for child combinator to ":has()" pseudo selector (e.g. "span:has(> video)") - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1642](https://redirect.github.com/capricorn86/happy-dom/issues/1642) ### [`v16.2.9`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.9) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.8...v16.2.9) ##### 👷♂️ Patch fixes - Fixes the `HTMLInputElement.defaultChecked` property - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1587](https://redirect.github.com/capricorn86/happy-dom/issues/1587) - This issue caused React not to serialize the "checked" attribute correctly ### [`v16.2.8`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.8) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.7...v16.2.8) ##### 👷♂️ Patch fixes - Fixes issue where the wrong event target was used when dispatching events on `HTMLFormElement` or `HTMLSelectElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1628](https://redirect.github.com/capricorn86/happy-dom/issues/1628) ### [`v16.2.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.7) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.6...v16.2.7) ##### 👷♂️ Patch fixes - Fixes issue where text in `<script>` and `<style>` elements should not be decoded or encoded - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1564](https://redirect.github.com/capricorn86/happy-dom/issues/1564) ### [`v16.2.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.6) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.5...v16.2.6) ##### 👷♂️ Patch fixes - Fixes problem where snapshots did not result in HTML for `<form>` and `<select>` elements - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1608](https://redirect.github.com/capricorn86/happy-dom/issues/1608) ### [`v16.2.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.5) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.4...v16.2.5) ##### 👷♂️ Patch fixes - Fixes bug where the reference to a parent `HTMLFormElement` and `HTMLSelectElement` was wrong which affected the methods `remove()`, `replaceWith()`, `before()`, `after()`, `append()`, `prepend()`, `replaceChildren()` and `insertAdjacentElement()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1637](https://redirect.github.com/capricorn86/happy-dom/issues/1637) ### [`v16.2.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.3...v16.2.4) ##### 👷♂️ Patch fixes - Fixes bug where the incorrect location is set after a redirect in `BrowserFrame.goto()` and `DetachedBrowserFrame.goto()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1627](https://redirect.github.com/capricorn86/happy-dom/issues/1627) ### [`v16.2.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.2...v16.2.3) ##### 👷♂️ Patch fixes - Fixes the implementation for the `HTMLTableCellElement.headers` property - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1634](https://redirect.github.com/capricorn86/happy-dom/issues/1634) ### [`v16.2.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.1...v16.2.2) ##### 👷♂️ Patch fixes - Improves error when a Symbol object is being sent to `querySelector()` or `querySelectorAll()` as selector - By **[@​chocolateboy](https://redirect.github.com/chocolateboy)** in task [#​1640](https://redirect.github.com/capricorn86/happy-dom/issues/1640) ### [`v16.2.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.0...v16.2.1) ##### 👷♂️ Patch fixes - Set request credentials to "same-origin" in `XMLHttpRequest` when "withCredentials" is false - By **[@​saitonakamura](https://redirect.github.com/saitonakamura)** in task [#​1631](https://redirect.github.com/capricorn86/happy-dom/issues/1631) ### [`v16.2.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.1.0...v16.2.0) ##### 🎨 Features - Adds support for `Window.scrollBy()` and `Element.scrollBy()` - By **[@​OlaviSau](https://redirect.github.com/OlaviSau)** in task [#​1623](https://redirect.github.com/capricorn86/happy-dom/issues/1623) ### [`v16.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.1.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.0.1...v16.1.0) ##### 🎨 Features - Add support for using whitespace-separated list to `getElementsByClassName()` - By **[@​kylehalleman](https://redirect.github.com/kylehalleman)** in task [#​1551](https://redirect.github.com/capricorn86/happy-dom/issues/1551) ### [`v16.0.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.0.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.0.0...v16.0.1) ##### 👷♂️ Patch fixes - Fixes problem with children of created documents (e.g. `document.implementation.createHTMLDocument()`) not being considered as connected to a DOM that was introduced in v16 - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1647](https://redirect.github.com/capricorn86/happy-dom/issues/1647) ### [`v16.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.0.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.7...v16.0.0) ##### 💣 Breaking Changes - Refactors XML and HTML parsing and serialization - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615) - This change may break your tests as the serialized output may differ from v15 ##### 🎨 Features - Adds support for parsing XML in `DOMParser` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​284](https://redirect.github.com/capricorn86/happy-dom/issues/284) - Improved performance in `document.write()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615) - Elements are now added directly to the document during parsing ##### 👷♂️ Patch fixes - Fix for handling `<html>`, `<head>` and `<body>` during parsing - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615) - Fix for handling HTML entities correctly when parsing and serializing - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1494](https://redirect.github.com/capricorn86/happy-dom/issues/1494) and [#​1498](https://redirect.github.com/capricorn86/happy-dom/issues/1498) - Fix for handling attribute names containing "\[" or "]" during parsing - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1638](https://redirect.github.com/capricorn86/happy-dom/issues/1638) - Fix for handling comments containing HTML tags - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1630](https://redirect.github.com/capricorn86/happy-dom/issues/1630) - Fix for handling namespaces in `XMLSerializer` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615) - Handles rules for parsing table elements - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1126](https://redirect.github.com/capricorn86/happy-dom/issues/1126) - Loads scripts asynchronously when "defer" is set or "type" is "module" - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615) ### [`v15.11.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.7) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.6...v15.11.7) ##### 👷♂️ Patch fixes - Allow for an URL to be a string or an URL object in `History.pushState()` and `History.replaceState()` - By **[@​sohailalam2](https://redirect.github.com/sohailalam2)** in task [#​1621](https://redirect.github.com/capricorn86/happy-dom/issues/1621) ### [`v15.11.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.6) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.5...v15.11.6) ##### 👷♂️ Patch fixes - Adds support for `window.TextEncoder` and `window.TextDecoder` - By **[@​iradonov](https://redirect.github.com/iradonov)** in task [#​1611](https://redirect.github.com/capricorn86/happy-dom/issues/1611) ### [`v15.11.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.5) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.4...v15.11.5) ##### 👷♂️ Patch fixes - `HTMLSelectElement` should not dispatch "change" event when changing value or index - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1603](https://redirect.github.com/capricorn86/happy-dom/issues/1603) ### [`v15.11.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.3...v15.11.4) ##### 👷♂️ Patch fixes - Strings should be converted into numbers in setters for `HTMLMeterElement` and `HTMLProgressElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1601](https://redirect.github.com/capricorn86/happy-dom/issues/1601) ### [`v15.11.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.2...v15.11.3) ##### 👷♂️ Patch fixes - Consider null as empty string in the setter for `HTMLInputElement.value` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1604](https://redirect.github.com/capricorn86/happy-dom/issues/1604) ### [`v15.11.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.1...v15.11.2) ##### 👷♂️ Patch fixes - Fixes bug where pseudo selectors without an ending parentheses threw an in invalid selector error - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1558](https://redirect.github.com/capricorn86/happy-dom/issues/1558) - Fixes bug where it was not possible to use the characters ":" and "\\" in attribute selectors - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1561](https://redirect.github.com/capricorn86/happy-dom/issues/1561) ### [`v15.11.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.0...v15.11.1) ##### 👷♂️ Patch fixes - Fixes bug where `Document.activeElement` is set to the wrong target when triggering `HTMLSelectElement.focus()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1592](https://redirect.github.com/capricorn86/happy-dom/issues/1592) - `HTMLSelectElement` is a `Proxy` since v15 and `focus()` was setting the target of the `Proxy` as the active element, but should set the `Proxy` ### [`v15.11.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.8...v15.11.0) ##### 🎨 Features - Adds support for the `:disabled` pseudo-class in CSS and query selectors - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1159](https://redirect.github.com/capricorn86/happy-dom/issues/1159) ### [`v15.10.8`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.8) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.7...v15.10.8) ##### 👷♂️ Patch fixes - Validate that object is of type `Blob` in `FileReader.readAsArrayBuffer()`, `FileReader.readAsBinaryString()`, `FileReader.readAsDataURL()` and `FileReader.readAsText()` - By **[@​btea](https://redirect.github.com/btea)** in task [#​1565](https://redirect.github.com/capricorn86/happy-dom/issues/1565) ### [`v15.10.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.7) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.6...v15.10.7) ##### 👷♂️ Patch fixes - Cookies with values that contains "=" should be supported - By **[@​btea](https://redirect.github.com/btea)** in task [#​1570](https://redirect.github.com/capricorn86/happy-dom/issues/1570) ### [`v15.10.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.6) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.5...v15.10.6) ##### 👷♂️ Patch fixes - Accept objects with a stringifier (such as a `URL` object) in `Location.assign()` and `Location.replace()` - By **[@​silverwind](https://redirect.github.com/silverwind)** in task [#​1568](https://redirect.github.com/capricorn86/happy-dom/issues/1568) ### [`v15.10.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.5) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.4...v15.10.5) ##### 👷♂️ Patch fixes - Fixes incorrect serialization of special characters in raw text elements such as `<script>` and `<style>` - By **[@​BenjaminAster](https://redirect.github.com/BenjaminAster)** in task [#​1566](https://redirect.github.com/capricorn86/happy-dom/issues/1566) ### [`v15.10.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.3...v15.10.4) ##### 👷♂️ Patch fixes - Adds missing setter for the `HTMLMediaElement.srcObject` property - By **[@​ewesemann](https://redirect.github.com/ewesemann)** in task [#​1557](https://redirect.github.com/capricorn86/happy-dom/issues/1557) ### [`v15.10.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.2...v15.10.3) ##### 👷♂️ Patch fixes - Allow to set custom export conditions in `@happy-dom/jest-environment` - By **[@​aearly](https://redirect.github.com/aearly)** in task [#​1555](https://redirect.github.com/capricorn86/happy-dom/issues/1555) ### [`v15.10.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.1...v15.10.2) ##### 👷♂️ Patch fixes - Fixes a security vulnerability that allowed for server side code to be executed by a `<script>` tag - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1585](https://redirect.github.com/capricorn86/happy-dom/issues/1585) - There was a case that was missed with the first patch ### [`v15.10.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.0...v15.10.1) ##### 👷♂️ Patch fixes - Fixes a security vulnerability that allowed for server side code to be executed by a `<script>` tag - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1585](https://redirect.github.com/capricorn86/happy-dom/issues/1585) ### [`v15.10.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.9.0...v15.10.0) ##### 🎨 Features - Adds a new setting called `disableSameOriginPolicy` that makes it possible to bypass the same-origin policy in fetch requests - By **[@​OlaviSau](https://redirect.github.com/OlaviSau)** in task [#​1553](https://redirect.github.com/capricorn86/happy-dom/issues/1553) ### [`v15.9.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.9.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.5...v15.9.0) ##### 🎨 Features - Adds support for "aspect-ratio" to `CSSStyleDeclaration` - By **[@​yinm](https://redirect.github.com/yinm)** in task [#​1147](https://redirect.github.com/capricorn86/happy-dom/issues/1147) ### [`v15.8.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.5) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.4...v15.8.5) ##### 👷♂️ Patch fixes - Fixes bug where `Node.getRootNode()` returned null when it was within a `ShadowRoot` that previously been disconnected from the `Document` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1581](https://redirect.github.com/capricorn86/happy-dom/issues/1581) ### [`v15.8.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.3...v15.8.4) ##### 👷♂️ Patch fixes - Fixes bug where child nodes of `HTMLSelectElement` and `HTMLFormElement` had the wrong reference to the parent - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1578](https://redirect.github.com/capricorn86/happy-dom/issues/1578) ### [`v15.8.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.2...v15.8.3) ##### 👷♂️ Patch fixes - Toggle "open" attribute on `HTMLDetailsElement` when dispatching a click event on a summary element which is a child of the details element - By **[@​mikedidomizio](https://redirect.github.com/mikedidomizio)** in task [#​1534](https://redirect.github.com/capricorn86/happy-dom/issues/1534) ### [`v15.8.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.1...v15.8.2) ##### 👷♂️ Patch fixes - Use `globalThis` instead of `global` to make Happy DOM work in other runtimes such as Cloudflare workers - By **[@​mattallty](https://redirect.github.com/mattallty)** in task [#​1546](https://redirect.github.com/capricorn86/happy-dom/issues/1546) ### [`v15.8.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.0...v15.8.1) ##### 👷♂️ Patch fixes - Always return `Promise<Blob>` from `ClipboardItem.getType()` - By **[@​ezzatron](https://redirect.github.com/ezzatron)** in task [#​1538](https://redirect.github.com/capricorn86/happy-dom/issues/1538) ### [`v15.8.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.4...33a72ca38277d2aab5341b4b66b0ca6380285c0b) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.4...v15.8.0) ### [`v15.7.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.3...v15.7.4) ##### 👷♂️ Patch fixes - Fixes incorrect handling of non-node items inserted using `replaceWith()`, `before()` and `after()` - By **[@​BenjaminAster](https://redirect.github.com/BenjaminAster)** in task [#​1533](https://redirect.github.com/capricorn86/happy-dom/issues/1533) ### [`v15.7.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.2...v15.7.3) ##### 👷♂️ Patch fixes - Fixes bug that occurs when checking if a symbol property exists on `HTMLSelectElement` - By **[@​Cherry](https://redirect.github.com/Cherry)** in task [#​1526](https://redirect.github.com/capricorn86/happy-dom/issues/1526) ### [`v15.7.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.1...v15.7.2) ##### 👷♂️ Patch fixes - Fixes problem where it is not possible to observe again after disconnecting in `MutationObserver` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1524](https://redirect.github.com/capricorn86/happy-dom/issues/1524) ### [`v15.7.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.0...v15.7.1) ##### 👷♂️ Patch fixes - Fixes selector validation and converts selectors to string (e.g. `querySelector(['.class'])`) - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1507](https://redirect.github.com/capricorn86/happy-dom/issues/1507) ### [`v15.7.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.1...9bde659a1f05519c3986ec1a0bba9d12526525f7) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.1...v15.7.0) ### [`v15.6.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.0...86748dba632a1716247785851c0009d2256f23ef) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.0...v15.6.1) ### [`v15.6.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.5.0...71d243a6a3583cbc376dc90513d5739e96064691) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.5.0...v15.6.0) ### [`v15.5.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.3...fec1c0165753112715e1295cc57bb0c16b679b39) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.3...v15.5.0) ### [`v15.4.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.2...v15.4.3) ##### 👷♂️ Patch fixes - Adds support for supporting new lines and tabs as white-space character in CSS selectors - By **[@​syi0808](https://redirect.github.com/syi0808)** in task [#​1414](https://redirect.github.com/capricorn86/happy-dom/issues/1414) ### [`v15.4.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.1...v15.4.2) ##### 👷♂️ Patch fixes - Typo in CORS rejection error message - By **[@​rexxars](https://redirect.github.com/rexxars)** in task [#​1485](https://redirect.github.com/capricorn86/happy-dom/issues/1485) ### [`v15.4.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.0...v15.4.1) ##### 👷♂️ Patch fixes - Throw error in `FormData.append()` when value parameter type is incorrect - By **[@​btea](https://redirect.github.com/btea)** in task [#​1484](https://redirect.github.com/capricorn86/happy-dom/issues/1484) ### [`v15.4.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.2...5b23cc1cf711b8b3c0132d5f3241de6425bc2dc2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.2...v15.4.0) ### [`v15.3.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.3.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.1...v15.3.2) ##### 👷♂️ Patch fixes - Fixes the `HTMLInputElement.indeterminate`, so that it behaves correctly - By **[@​malko](https://redirect.github.com/malko)** in task [#​1439](https://redirect.github.com/capricorn86/happy-dom/issues/1439) ### [`v15.3.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.0...530f535c01f72de9190d9e67d0c3540d3c44a5fa) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.0...v15.3.1) ### [`v15.3.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.2.0...a99364fa80f968da81dbb6ceb899ae15a8e5b902) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.2.0...v15.3.0) ### [`v15.2.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.2.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.1.0...v15.2.0) ##### 🎨 Features - Adds support for the static method `AbortSignal.any()` - By **[@​ezzatron](https://redirect.github.com/ezzatron)** in task [#​1468](https://redirect.github.com/capricorn86/happy-dom/issues/1468) ### [`v15.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.1.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.0.0...v15.1.0) ##### 🎨 Features - Refactor internal logic related to injecting the Window context for classes that can be constructed using the "new" operator - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Improves the way classes can access the Browser context internally - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Refactor of the logic for `EventTarget.dispatchEvent()` to better handle the event phases "none", "capture", "atTarget" and "bubbling" - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for `HTMLInputElement.popoverTargetElement`, `HTMLInputElement.popoverTargetAction`, `HTMLButtonElement.popoverTargetElement` and `HTMLButtonElement.popoverTargetAction` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for `HTMLElement.popover` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for `PerformanceObserver`, `PerformanceEntry` and `PerformanceObserverEntryList` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) ##### 👷♂️ Patch fixes - Makes it possible for a polyfill to replace `NodeList[Symbol.iterator]()` with `Array.prototype.values()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds logic for canceling any request to start new async tasks while the `Window` is closing (e.g. using `setTimeout()` or `fetch()`) - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Fixes issues with errors exiting the browser when using the setting "errorCapture" set to "processLevel" - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Refactor internal logic, so that thrown errors are instances of unique error classes assigned to the `Window`, which makes it possible for `BrowserExceptionObserver` to know which `Window` the error originated from - Changes `Event.composedPath()` to not return the `Window` object if the event type is "load", which is the same behaviour as the browser - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - This means that "load" events will not bubble up to the `Window` object ### [`v15.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.0.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.3...v15.0.0) ##### 💣 Breaking Changes - Drops offical support for Node.js 16.x and 17.x - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - A lot of internal logic has been refactored, so if you rely on internal APIs, this release may break your code - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) ##### 🎨 Features - Adds support for `HTMLAreaElement`, `HTMLBodyElement`, `HTMLQuoteElement`, `HTMLBRElement`, `HTMLTableCaptionElement`, `HTMLTableColElement`, `HTMLTableColElement`, `HTMLDataElement`, `HTMLDataListElement`, `HTMLModElement`, `HTMLDetailsElement`, `HTMLDivElement`, `HTMLDListElement`, `HTMLEmbedElement`, `HTMLFieldSetElement`, `HTMLHeadingElement`, `HTMLHeadElement`, `HTMLHRElement`, `HTMLHtmlElement`, `HTMLModElement`, `HTMLLegendElement`, `HTMLLIElement`, `HTMLMapElement`, `HTMLMenuElement`, `HTMLMeterElement`, `HTMLObjectElement`, `HTMLOListElement`, `HTMLOutputElement`, `HTMLParagraphElement`, `HTMLParamElement`, `HTMLPictureElement`, `HTMLPreElement`, `HTMLProgressElement`, `HTMLQuoteElement`, `HTMLSourceElement`, `HTMLSpanElement`, `HTMLTableElement`, `HTMLTableSectionElement`, `HTMLTableSectionElement`, `HTMLTitleElement`, `HTMLTableRowElement`, `HTMLTrackElement`, `HTMLUListElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds basic support for `HTMLCanvasElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for History API - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds cache to `CSSStyleDeclaration`, `querySelector()`, `querySelectorAll()`, `getElementById()`, `getElementsByClassName()`, `getElementsByTagName()`, `getElementsByTagNameNS()`, `getElementsByClassName()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Uses proxy for `NodeList`, `HTMLCollection`, `DOMTokenList`, `TextTrackList`, `HTMLFormElement`, `HTMLSelectElement` - Makes `HTMLCollection` objects returned by `getElementsByClassName()`, `getElementsByTagName()`, `getElementsByTagNameNS()` and `getElementsByClassName()` live - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Improves support for `HTMLMediaElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - It now supports all methods and properties of the `HTMLMediaElement` interface - Adds support for `MediaStream`, `MediaStreamTrack`, `RemotePlayback`, `TextTrack`, `TextTrackCue`, `TextTrackCueList`, `TextTrackList`, `VTTCue`, `VTTRegion`, `CanvasCaptureMediaStream`, `ImageBitmap`, `OffscreenCanvas` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds basic support for `IntersectionObserver` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Uses Array for nodes and elements in the DOM-tree to leverage the JiT compiler better - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for `HTMLInputElement.list` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Improves support for `ShadowRoot` (it now supports `clonable`, `serializable` and `slotAssignment`) - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Adds support for `Element.getHTML()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Improves performance for some pseudo query selectors - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Improves support for `HTMLSlotElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - It now supports `assign()`, `assignedNodes()`, `assignedElements()` and the `slotchange` event ##### 👷♂️ Patch fixes - Attributes and text data wasn't escaped correctly in `XMLSerializer` (used by features such as `innerHTML`) - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1265](https://redirect.github.com/capricorn86/happy-dom/issues/1265) - `waitForNavigation()` would not resolve when navigating to some URLs (e.g. "javascript" or "about:blank") - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - CSS rules for gradients where not parsed correctly - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Updates to CSSStyleDeclaration would not trigger listeners for the "style" attribute - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Attributes where added to elements after they were added to the DOM during parsing, causing problems for elements loading resources - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - `Attr.cloneNode()` would not clone internal values - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - `Document.title` included text data inside child elements, which it shouldn't - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - `Event.preventDefault()` shouldn't cancel the default behaviour if cancelable is not sent as an option in `EventTarget.dispatchEvent()` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Source attributes containing URLs would not be resolved correctly in some elements - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - Changes name on `TimeRange` to `TimeRanges` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) - `Window.parent` and `Window.top` would not be set correctly in some scenarios - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332) ### [`v14.12.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.2...v14.12.3) ##### 👷♂️ Patch fixes - Element.insertBefore works when the node is already inserted - In task [#​1429](https://redirect.github.com/capricorn86/happy-dom/issues/1429) ### [`v14.12.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.1...v14.12.2) ##### 👷♂️ Patch fixes - Fixes problem related to the cookie container using the wrong path when caching cookies - By **[@​matcic](https://redirect.github.com/matcic)** in task [#​1455](https://redirect.github.com/capricorn86/happy-dom/issues/1455) ### [`v14.12.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.0...v14.12.1) ##### 👷♂️ Patch fixes - Fixes problem related to React click handler with `preventDefault` not preventing navigation - By **[@​amitdahan](https://redirect.github.com/amitdahan)** in task [#​1464](https://redirect.github.com/capricorn86/happy-dom/issues/1464) ### [`v14.12.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.4...ef2dfeafc7673d53776f8db1a313fecaed5074f4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.4...v14.12.0) ### [`v14.11.4`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.3...v14.11.4) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.3...v14.11.4) ### [`v14.11.3`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.2...f021a3305a20d0f0613d50c30ee694be831faa95) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.2...v14.11.3) ### [`v14.11.2`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.1...db97904b3a11e575269a15bbb70031399729ff45) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.1...v14.11.2) ### [`v14.11.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.0...6ada81698021c35f074e575ec232d1bb7bafb4bc) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.0...v14.11.1) ### [`v14.11.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.11.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.3...v14.11.0) ##### 🎨 Features - Adds support for `HTMLTimeElement` - By **[@​r-thomson](https://redirect.github.com/r-thomson)** in task [#​1431](https://redirect.github.com/capricorn86/happy-dom/issues/1431) ### [`v14.10.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.3) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.2...v14.10.3) ##### 👷♂️ Patch fixes - Adds check for if Window and MutationObserver has been destroyed when triggering listeners - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1436](https://redirect.github.com/capricorn86/happy-dom/issues/1436) ### [`v14.10.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.2) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.1...v14.10.2) ##### 👷♂️ Patch fixes - `HTMLAnchorElement`, `HTMLButtonElement`, `HTMLInputElement` and `HTMLLabelElement` checked that click events triggering native behavior was of type `PointerEvent`, but should check that they are of type `MouseEvent` - By **[@​capricorn86](https://redirect.github.com/capricorn86)** in task [#​1397](https://redirect.github.com/capricorn86/happy-dom/issues/1397) ### [`v14.10.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.0...v14.10.1) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.0...v14.10.1) ### [`v14.10.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.0) [Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.9.0...v14.10.0) ##### 🎨 Features - Adds support for `Document.elementFromPoint()` - By **[@​TreyVigus](https://redirect.github.com/TreyVigus)** in task [#​1400](https://redirect.github.com/capricorn86/happy-dom/issues/1400) - The method will always return `null` as Happy DOM doesn't support rendering and can't calculate an element's position based on where it is r </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/unraid/api). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Unraid UI
A Vue 3 component library providing a set of reusable, accessible UI components for Unraid development.
Features
- ⚡️ Built with Vue 3 and TypeScript
- 🎭 Storybook documentation
- ✅ Tested components
- 🎪 Built on top of TailwindCSS and Shadcn/UI
Installation
Make sure you have the peer dependencies installed:
npm install vue@^3.3.0 tailwindcss@^3.0.0
Setup
1. Add CSS
Import the component library styles in your main entry file:
import '@unraid/ui/style.css';
2. Configure TailwindCSS
Create a tailwind.config.ts file with the following configuration:
import tailwindConfig from '@unraid/ui/tailwind.config.ts';
import type { Config } from 'tailwindcss';
export default {
presets: [tailwindConfig],
content: [
// ... your content paths
'./components/**/*.{js,vue,ts}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
],
theme: {
extend: {
// your theme extensions
},
},
} satisfies Partial<Config>;
This configuration:
- Uses the Unraid UI library's Tailwind config as a preset
- Properly types your configuration with TypeScript
- Allows you to extend the base theme while maintaining all Unraid UI defaults
Usage
<script setup lang="ts">
import { Button } from '@unraid/ui';
</script>
<template>
<Button variant="primary"> Click me </Button>
</template>
Development
Local Development
Install dependencies:
npm install
Start Storybook development server:
npm run storybook
This will start Storybook at http://localhost:6006
Building
npm run build
Testing
Run tests:
npm run test
Run tests with UI:
npm run test:ui
Generate coverage report:
npm run coverage
Type Checking
npm run typecheck
Scripts
dev: Start development serverbuild: Build for productionpreview: Preview production buildtest: Run teststest:ui: Run tests with UIcoverage: Generate test coverageclean: Remove build artifactstypecheck: Run type checkingstorybook: Start Storybook development serverbuild-storybook: Build Storybook for production
License
Component Development
Installing Shadcn Components
- Install a new component using the Shadcn CLI:
npx shadcn-vue@latest add [component-name]
-
The component will be installed in the root components folder. Move it to the appropriate subfolder based on its type:
- Form components →
src/components/form/ - Layout components →
src/components/layout/ - Common components →
src/components/common/ - Brand components →
src/components/brand/
- Form components →
-
Update any imports in your codebase to reflect the new component location.
Component Variants Pattern
We use the class-variance-authority (CVA) package to manage component variants. Each component that supports variants should follow this pattern:
- Create a variants file (e.g.,
button.variants.ts):
import { cva } from 'class-variance-authority';
export const buttonVariants = cva('base-classes-here', {
variants: {
variant: {
primary: 'variant-specific-classes',
secondary: 'variant-specific-classes',
// ... other variants
},
size: {
sm: 'size-specific-classes',
md: 'size-specific-classes',
lg: 'size-specific-classes',
},
},
defaultVariants: {
variant: 'primary',
size: 'md',
},
});
- Use the variants in your component (e.g.,
Button.vue):
<script setup lang="ts">
import { computed } from "vue";
import { buttonVariants } from "./button.variants";
import { cn } from "@/lib/utils";
export interface ButtonProps {
variant?: "primary" | "secondary" | /* other variants */;
size?: "sm" | "md" | "lg";
class?: string;
}
const props = withDefaults(defineProps<ButtonProps>(), {
variant: "primary",
size: "md",
});
const buttonClass = computed(() => {
return cn(
buttonVariants({ variant: props.variant, size: props.size }),
props.class
);
});
</script>
<template>
<button :class="buttonClass">
<slot />
</button>
</template>
Storybook Development
We use Storybook for component development and documentation. To start the Storybook development server:
npm run storybook
This will start Storybook at http://localhost:6006
When creating stories for your components:
- Place story files in the
storiesdirectory - Name your story files as
ComponentName.stories.ts - Include examples of all variants and states
- Add documentation using JSDoc comments
Example story file:
import type { Meta, StoryObj } from '@storybook/vue3';
import { Button } from '../src/components/common/button';
const meta = {
title: 'Components/Button',
component: Button,
tags: ['autodocs'],
argTypes: {
variant: {
control: 'select',
options: ['primary', 'secondary', 'outline'],
},
size: {
control: 'select',
options: ['sm', 'md', 'lg'],
},
},
} satisfies Meta<typeof Button>;
export default meta;
type Story = StoryObj<typeof meta>;
export const Primary: Story = {
args: {
variant: 'primary',
size: 'md',
},
};
export const Secondary: Story = {
args: {
variant: 'secondary',
size: 'md',
},
};