happy-dom 13.7.7 → 13.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (45) hide show
  1. package/cjs/custom-element/CustomElementRegistry.cjs +48 -3
  2. package/cjs/custom-element/CustomElementRegistry.cjs.map +1 -1
  3. package/cjs/custom-element/CustomElementRegistry.d.ts +11 -0
  4. package/cjs/custom-element/CustomElementRegistry.d.ts.map +1 -1
  5. package/cjs/nodes/document/Document.cjs +1 -1
  6. package/cjs/nodes/document/Document.cjs.map +1 -1
  7. package/cjs/nodes/element/Element.cjs +8 -0
  8. package/cjs/nodes/element/Element.cjs.map +1 -1
  9. package/cjs/nodes/element/Element.d.ts +10 -0
  10. package/cjs/nodes/element/Element.d.ts.map +1 -1
  11. package/cjs/nodes/element/IElement.d.ts +10 -0
  12. package/cjs/nodes/element/IElement.d.ts.map +1 -1
  13. package/cjs/nodes/node/Node.cjs.map +1 -1
  14. package/cjs/nodes/node/Node.d.ts +1 -1
  15. package/cjs/nodes/node/Node.d.ts.map +1 -1
  16. package/cjs/version.cjs +1 -1
  17. package/cjs/window/BrowserWindow.cjs +4 -1
  18. package/cjs/window/BrowserWindow.cjs.map +1 -1
  19. package/cjs/window/BrowserWindow.d.ts.map +1 -1
  20. package/lib/custom-element/CustomElementRegistry.d.ts +11 -0
  21. package/lib/custom-element/CustomElementRegistry.d.ts.map +1 -1
  22. package/lib/custom-element/CustomElementRegistry.js +48 -3
  23. package/lib/custom-element/CustomElementRegistry.js.map +1 -1
  24. package/lib/nodes/document/Document.js +1 -1
  25. package/lib/nodes/document/Document.js.map +1 -1
  26. package/lib/nodes/element/Element.d.ts +10 -0
  27. package/lib/nodes/element/Element.d.ts.map +1 -1
  28. package/lib/nodes/element/Element.js +8 -0
  29. package/lib/nodes/element/Element.js.map +1 -1
  30. package/lib/nodes/element/IElement.d.ts +10 -0
  31. package/lib/nodes/element/IElement.d.ts.map +1 -1
  32. package/lib/nodes/node/Node.d.ts +1 -1
  33. package/lib/nodes/node/Node.d.ts.map +1 -1
  34. package/lib/nodes/node/Node.js.map +1 -1
  35. package/lib/version.js +1 -1
  36. package/lib/window/BrowserWindow.d.ts.map +1 -1
  37. package/lib/window/BrowserWindow.js +4 -1
  38. package/lib/window/BrowserWindow.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/custom-element/CustomElementRegistry.ts +49 -0
  41. package/src/nodes/document/Document.ts +1 -1
  42. package/src/nodes/element/Element.ts +17 -0
  43. package/src/nodes/element/IElement.ts +15 -0
  44. package/src/nodes/node/Node.ts +1 -1
  45. package/src/window/BrowserWindow.ts +5 -1
@@ -203,6 +203,21 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
203
203
  */
204
204
  scrollTo(x: { top?: number; left?: number; behavior?: string } | number, y: number): void;
205
205
 
206
+ /**
207
+ * Scrolls the element's ancestor containers such that the element on which scrollIntoView() is called is visible to the user.
208
+ *
209
+ * @param [options] Options.
210
+ */
211
+ scrollIntoView(
212
+ options?:
213
+ | boolean
214
+ | {
215
+ behavior?: 'smooth' | 'instant' | 'auto';
216
+ block?: 'start' | 'center' | 'end' | 'nearest';
217
+ inline?: 'start' | 'center' | 'end' | 'nearest';
218
+ }
219
+ ): void;
220
+
206
221
  /**
207
222
  * Returns the size of an element and its position relative to the viewport.
208
223
  *
@@ -297,7 +297,7 @@ export default class Node extends EventTarget implements INode {
297
297
  * @param otherNode Node to test with.
298
298
  * @returns "true" if this node contains the other node.
299
299
  */
300
- public contains(otherNode: INode | undefined): boolean {
300
+ public contains(otherNode: INode): boolean {
301
301
  if (otherNode === undefined) {
302
302
  return false;
303
303
  }
@@ -520,7 +520,7 @@ export default class BrowserWindow extends EventTarget implements IBrowserWindow
520
520
 
521
521
  this.#browserFrame = browserFrame;
522
522
 
523
- this.customElements = new CustomElementRegistry();
523
+ this.customElements = new CustomElementRegistry(this);
524
524
  this.navigator = new Navigator(this);
525
525
  this.history = new History();
526
526
  this.screen = new Screen();
@@ -1274,6 +1274,10 @@ export default class BrowserWindow extends EventTarget implements IBrowserWindow
1274
1274
  this.document.removeChild(node);
1275
1275
  }
1276
1276
 
1277
+ if (this.customElements[PropertySymbol.destroy]) {
1278
+ this.customElements[PropertySymbol.destroy]();
1279
+ }
1280
+
1277
1281
  this.document[PropertySymbol.activeElement] = null;
1278
1282
  this.document[PropertySymbol.nextActiveElement] = null;
1279
1283
  this.document[PropertySymbol.currentScript] = null;