Files
api/unraid-ui
renovate[bot] 9a9ef54d2d chore(deps): update dependency happy-dom to v17 (#1165)
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) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/12.10.3/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/12.10.3/17.1.1?slim=true)](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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727)
- Changes errors thrown in `CSSStyleSheet` methods, so that they work
according to spec - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;mwdiaz](https://redirect.github.com/mwdiaz)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
\*\*[@&#8203;christiango](https://redirect.github.com/christiango) \*\*
in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;christiango](https://redirect.github.com/christiango)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `HTMLLinkElement.relList.supports()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `Request.mode` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Output failed requests to the console - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Use cache in virtual server requests - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `credentials` and `referrerPolicy` when fetching
styles and scripts - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Disallow invalid attributes from being set in `Element.setAttribute()`
- By **[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in
task
[#&#8203;1706](https://redirect.github.com/capricorn86/happy-dom/issues/1706)

##### 👷‍♂️ Patch fixes

- Call `afterAsyncResponse` fetch interceptor in virtual server requests
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;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
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;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
**[@&#8203;christiango](https://redirect.github.com/christiango)** in
task
[#&#8203;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
**[@&#8203;kleinfreund](https://redirect.github.com/kleinfreund)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693)
- Makes non-mandatory cookie properties optional in
`CookieContainer.addCookies()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;karpiuMG](https://redirect.github.com/karpiuMG)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;chocolateboy](https://redirect.github.com/chocolateboy)** in
task
[#&#8203;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
**[@&#8203;saitonakamura](https://redirect.github.com/saitonakamura)**
in task
[#&#8203;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
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;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
**[@&#8203;kylehalleman](https://redirect.github.com/kylehalleman)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;284](https://redirect.github.com/capricorn86/happy-dom/issues/284)
- Improved performance in `document.write()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
- Fix for handling HTML entities correctly when parsing and serializing
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;1494](https://redirect.github.com/capricorn86/happy-dom/issues/1494)
and
[#&#8203;1498](https://redirect.github.com/capricorn86/happy-dom/issues/1498)
- Fix for handling attribute names containing "\[" or "]" during parsing
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;1638](https://redirect.github.com/capricorn86/happy-dom/issues/1638)
- Fix for handling comments containing HTML tags - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1630](https://redirect.github.com/capricorn86/happy-dom/issues/1630)
- Fix for handling namespaces in `XMLSerializer` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
- Handles rules for parsing table elements - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1126](https://redirect.github.com/capricorn86/happy-dom/issues/1126)
- Loads scripts asynchronously when "defer" is set or "type" is "module"
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;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
**[@&#8203;sohailalam2](https://redirect.github.com/sohailalam2)** in
task
[#&#8203;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
**[@&#8203;iradonov](https://redirect.github.com/iradonov)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;btea](https://redirect.github.com/btea)** in task
[#&#8203;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
**[@&#8203;btea](https://redirect.github.com/btea)** in task
[#&#8203;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
**[@&#8203;silverwind](https://redirect.github.com/silverwind)** in task
[#&#8203;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
**[@&#8203;BenjaminAster](https://redirect.github.com/BenjaminAster)**
in task
[#&#8203;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
**[@&#8203;ewesemann](https://redirect.github.com/ewesemann)** in task
[#&#8203;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 **[@&#8203;aearly](https://redirect.github.com/aearly)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;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
**[@&#8203;yinm](https://redirect.github.com/yinm)** in task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;mikedidomizio](https://redirect.github.com/mikedidomizio)**
in task
[#&#8203;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
**[@&#8203;mattallty](https://redirect.github.com/mattallty)** in task
[#&#8203;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
**[@&#8203;ezzatron](https://redirect.github.com/ezzatron)** in task
[#&#8203;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
**[@&#8203;BenjaminAster](https://redirect.github.com/BenjaminAster)**
in task
[#&#8203;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
**[@&#8203;Cherry](https://redirect.github.com/Cherry)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;syi0808](https://redirect.github.com/syi0808)** in task
[#&#8203;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
**[@&#8203;rexxars](https://redirect.github.com/rexxars)** in task
[#&#8203;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 **[@&#8203;btea](https://redirect.github.com/btea)** in
task
[#&#8203;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 **[@&#8203;malko](https://redirect.github.com/malko)** in
task
[#&#8203;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
**[@&#8203;ezzatron](https://redirect.github.com/ezzatron)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves the way classes can access the Browser context internally -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLInputElement.popoverTargetElement`,
`HTMLInputElement.popoverTargetAction`,
`HTMLButtonElement.popoverTargetElement` and
`HTMLButtonElement.popoverTargetAction` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLElement.popover` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `PerformanceObserver`, `PerformanceEntry` and
`PerformanceObserverEntryList` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds basic support for `HTMLCanvasElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for History API - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds cache to `CSSStyleDeclaration`, `querySelector()`,
`querySelectorAll()`, `getElementById()`, `getElementsByClassName()`,
`getElementsByTagName()`, `getElementsByTagNameNS()`,
`getElementsByClassName()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `HTMLMediaElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds basic support for `IntersectionObserver` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLInputElement.list` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `ShadowRoot` (it now supports `clonable`,
`serializable` and `slotAssignment`) - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `Element.getHTML()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves performance for some pseudo query selectors - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `HTMLSlotElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- CSS rules for gradients where not parsed correctly - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Updates to CSSStyleDeclaration would not trigger listeners for the
"style" attribute - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Attr.cloneNode()` would not clone internal values - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Document.title` included text data inside child elements, which it
shouldn't - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Source attributes containing URLs would not be resolved correctly in
some elements - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Changes name on `TimeRange` to `TimeRanges` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Window.parent` and `Window.top` would not be set correctly in some
scenarios - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
[#&#8203;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
**[@&#8203;matcic](https://redirect.github.com/matcic)** in task
[#&#8203;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
**[@&#8203;amitdahan](https://redirect.github.com/amitdahan)** in task
[#&#8203;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
**[@&#8203;r-thomson](https://redirect.github.com/r-thomson)** in task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;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
**[@&#8203;TreyVigus](https://redirect.github.com/TreyVigus)** in task
[#&#8203;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>
2025-02-24 14:09:46 -05:00
..
2025-02-20 19:29:50 -05:00

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 server
  • build: Build for production
  • preview: Preview production build
  • test: Run tests
  • test:ui: Run tests with UI
  • coverage: Generate test coverage
  • clean: Remove build artifacts
  • typecheck: Run type checking
  • storybook: Start Storybook development server
  • build-storybook: Build Storybook for production

License

Component Development

Installing Shadcn Components

  1. Install a new component using the Shadcn CLI:
npx shadcn-vue@latest add [component-name]
  1. 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/
  2. 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:

  1. 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',
  },
});
  1. 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:

  1. Place story files in the stories directory
  2. Name your story files as ComponentName.stories.ts
  3. Include examples of all variants and states
  4. 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',
  },
};