happy-dom 17.0.3 → 17.1.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.
- package/cjs/browser/DefaultBrowserSettings.cjs +1 -0
- package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
- package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/types/IBrowserSettings.d.ts +1 -0
- package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/types/IOptionalBrowserSettings.d.ts +1 -0
- package/cjs/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
- package/cjs/custom-element/CustomElementReactionStack.cjs.map +1 -1
- package/cjs/custom-element/CustomElementReactionStack.d.ts +2 -2
- package/cjs/custom-element/CustomElementReactionStack.d.ts.map +1 -1
- package/cjs/match-media/MediaQueryItem.cjs +9 -2
- package/cjs/match-media/MediaQueryItem.cjs.map +1 -1
- package/cjs/match-media/MediaQueryItem.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +8 -1
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts +16 -0
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.cjs +0 -14
- package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts +0 -24
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/lib/browser/DefaultBrowserSettings.js +1 -0
- package/lib/browser/DefaultBrowserSettings.js.map +1 -1
- package/lib/browser/types/IBrowserSettings.d.ts +1 -0
- package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/lib/browser/types/IOptionalBrowserSettings.d.ts +1 -0
- package/lib/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
- package/lib/custom-element/CustomElementReactionStack.d.ts +2 -2
- package/lib/custom-element/CustomElementReactionStack.d.ts.map +1 -1
- package/lib/custom-element/CustomElementReactionStack.js.map +1 -1
- package/lib/match-media/MediaQueryItem.d.ts.map +1 -1
- package/lib/match-media/MediaQueryItem.js +9 -2
- package/lib/match-media/MediaQueryItem.js.map +1 -1
- package/lib/nodes/element/Element.d.ts +16 -0
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +8 -1
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.d.ts +0 -24
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +0 -14
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/package.json +1 -1
- package/src/browser/DefaultBrowserSettings.ts +1 -0
- package/src/browser/types/IBrowserSettings.ts +1 -0
- package/src/browser/types/IOptionalBrowserSettings.ts +1 -0
- package/src/custom-element/CustomElementReactionStack.ts +2 -2
- package/src/match-media/MediaQueryItem.ts +11 -4
- package/src/nodes/element/Element.ts +36 -1
- package/src/nodes/html-element/HTMLElement.ts +0 -43
@@ -1,7 +1,7 @@
|
|
1
|
-
import HTMLElement from '../nodes/html-element/HTMLElement.js';
|
2
1
|
import BrowserWindow from '../window/BrowserWindow.js';
|
3
2
|
import * as PropertySymbol from '../PropertySymbol.js';
|
4
3
|
import WindowBrowserContext from '../window/WindowBrowserContext.js';
|
4
|
+
import Element from '../nodes/element/Element.js';
|
5
5
|
|
6
6
|
/**
|
7
7
|
* Custom element reaction stack.
|
@@ -29,7 +29,7 @@ export default class CustomElementReactionStack {
|
|
29
29
|
* @param callbackName Callback name.
|
30
30
|
* @param [args] Arguments.
|
31
31
|
*/
|
32
|
-
public enqueueReaction(element:
|
32
|
+
public enqueueReaction(element: Element, callbackName: string, args?: any[]): void {
|
33
33
|
// If a polyfill is used, [PropertySymbol.registry] may be undefined
|
34
34
|
const definition = this.window.customElements[PropertySymbol.registry]?.get(element.localName);
|
35
35
|
|
@@ -199,6 +199,12 @@ export default class MediaQueryItem {
|
|
199
199
|
* @returns "true" if the rule matches.
|
200
200
|
*/
|
201
201
|
private matchesRule(rule: IMediaQueryRule): boolean {
|
202
|
+
const settings = new WindowBrowserContext(this.window).getSettings();
|
203
|
+
|
204
|
+
if (!settings) {
|
205
|
+
return false;
|
206
|
+
}
|
207
|
+
|
202
208
|
if (!rule.value) {
|
203
209
|
switch (rule.name) {
|
204
210
|
case 'min-width':
|
@@ -218,6 +224,8 @@ export default class MediaQueryItem {
|
|
218
224
|
case 'max-aspect-ratio':
|
219
225
|
case 'aspect-ratio':
|
220
226
|
return true;
|
227
|
+
case 'prefers-reduced-motion':
|
228
|
+
return settings.device.prefersReducedMotion === 'reduce';
|
221
229
|
}
|
222
230
|
return false;
|
223
231
|
}
|
@@ -246,10 +254,9 @@ export default class MediaQueryItem {
|
|
246
254
|
? this.window.innerWidth > this.window.innerHeight
|
247
255
|
: this.window.innerWidth < this.window.innerHeight;
|
248
256
|
case 'prefers-color-scheme':
|
249
|
-
return
|
250
|
-
|
251
|
-
|
252
|
-
);
|
257
|
+
return rule.value === settings.device.prefersColorScheme;
|
258
|
+
case 'prefers-reduced-motion':
|
259
|
+
return rule.value === settings.device.prefersReducedMotion;
|
253
260
|
case 'any-hover':
|
254
261
|
case 'hover':
|
255
262
|
if (rule.value === 'none') {
|
@@ -953,6 +953,25 @@ export default class Element
|
|
953
953
|
return null;
|
954
954
|
}
|
955
955
|
|
956
|
+
/**
|
957
|
+
* Connected callback.
|
958
|
+
*/
|
959
|
+
public connectedCallback?(): void;
|
960
|
+
|
961
|
+
/**
|
962
|
+
* Disconnected callback.
|
963
|
+
*/
|
964
|
+
public disconnectedCallback?(): void;
|
965
|
+
|
966
|
+
/**
|
967
|
+
* Attribute changed callback.
|
968
|
+
*
|
969
|
+
* @param name Name.
|
970
|
+
* @param oldValue Old value.
|
971
|
+
* @param newValue New value.
|
972
|
+
*/
|
973
|
+
public attributeChangedCallback?(name: string, oldValue: string, newValue: string): void;
|
974
|
+
|
956
975
|
/**
|
957
976
|
* Query CSS selector to find matching nodes.
|
958
977
|
*
|
@@ -1449,6 +1468,17 @@ export default class Element
|
|
1449
1468
|
}
|
1450
1469
|
|
1451
1470
|
super[PropertySymbol.connectedToDocument]();
|
1471
|
+
|
1472
|
+
this[PropertySymbol.window][PropertySymbol.customElementReactionStack].enqueueReaction(
|
1473
|
+
this,
|
1474
|
+
'connectedCallback'
|
1475
|
+
);
|
1476
|
+
|
1477
|
+
if (this[PropertySymbol.shadowRoot]) {
|
1478
|
+
for (const childNode of this[PropertySymbol.nodeArray]) {
|
1479
|
+
this.#onSlotChange(childNode);
|
1480
|
+
}
|
1481
|
+
}
|
1452
1482
|
}
|
1453
1483
|
|
1454
1484
|
/**
|
@@ -1461,6 +1491,11 @@ export default class Element
|
|
1461
1491
|
if (id) {
|
1462
1492
|
this.#removeIdentifierFromWindow(id);
|
1463
1493
|
}
|
1494
|
+
|
1495
|
+
this[PropertySymbol.window][PropertySymbol.customElementReactionStack].enqueueReaction(
|
1496
|
+
this,
|
1497
|
+
'disconnectedCallback'
|
1498
|
+
);
|
1464
1499
|
}
|
1465
1500
|
|
1466
1501
|
/**
|
@@ -1563,7 +1598,7 @@ export default class Element
|
|
1563
1598
|
#onSlotChange(addedOrRemovedNode: Node): void {
|
1564
1599
|
const shadowRoot = this[PropertySymbol.shadowRoot];
|
1565
1600
|
|
1566
|
-
if (!shadowRoot) {
|
1601
|
+
if (!shadowRoot || !this[PropertySymbol.isConnected]) {
|
1567
1602
|
return;
|
1568
1603
|
}
|
1569
1604
|
|
@@ -498,25 +498,6 @@ export default class HTMLElement extends Element {
|
|
498
498
|
this.setAttribute('popover', value);
|
499
499
|
}
|
500
500
|
|
501
|
-
/**
|
502
|
-
* Connected callback.
|
503
|
-
*/
|
504
|
-
public connectedCallback?(): void;
|
505
|
-
|
506
|
-
/**
|
507
|
-
* Disconnected callback.
|
508
|
-
*/
|
509
|
-
public disconnectedCallback?(): void;
|
510
|
-
|
511
|
-
/**
|
512
|
-
* Attribute changed callback.
|
513
|
-
*
|
514
|
-
* @param name Name.
|
515
|
-
* @param oldValue Old value.
|
516
|
-
* @param newValue New value.
|
517
|
-
*/
|
518
|
-
public attributeChangedCallback?(name: string, oldValue: string, newValue: string): void;
|
519
|
-
|
520
501
|
/**
|
521
502
|
* Triggers a click event.
|
522
503
|
*/
|
@@ -612,30 +593,6 @@ export default class HTMLElement extends Element {
|
|
612
593
|
super[PropertySymbol.disconnectedFromNode]();
|
613
594
|
}
|
614
595
|
|
615
|
-
/**
|
616
|
-
* @override
|
617
|
-
*/
|
618
|
-
public override [PropertySymbol.connectedToDocument](): void {
|
619
|
-
super[PropertySymbol.connectedToDocument]();
|
620
|
-
|
621
|
-
this[PropertySymbol.window][PropertySymbol.customElementReactionStack].enqueueReaction(
|
622
|
-
this,
|
623
|
-
'connectedCallback'
|
624
|
-
);
|
625
|
-
}
|
626
|
-
|
627
|
-
/**
|
628
|
-
* @override
|
629
|
-
*/
|
630
|
-
public override [PropertySymbol.disconnectedFromDocument](): void {
|
631
|
-
super[PropertySymbol.disconnectedFromDocument]();
|
632
|
-
|
633
|
-
this[PropertySymbol.window][PropertySymbol.customElementReactionStack].enqueueReaction(
|
634
|
-
this,
|
635
|
-
'disconnectedCallback'
|
636
|
-
);
|
637
|
-
}
|
638
|
-
|
639
596
|
/**
|
640
597
|
* @override
|
641
598
|
*/
|