happy-dom 12.3.0 → 12.5.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.
- package/cjs/nodes/document/Document.cjs +10 -0
- package/cjs/nodes/document/Document.cjs.map +1 -1
- package/cjs/nodes/document/Document.d.ts +8 -0
- package/cjs/nodes/document/Document.d.ts.map +1 -1
- package/cjs/nodes/document/IDocument.d.ts +1 -0
- package/cjs/nodes/document/IDocument.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +7 -1
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElementUtility.cjs +10 -0
- package/cjs/nodes/html-element/HTMLElementUtility.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElementUtility.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +2 -0
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs +4 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
- package/cjs/version.cjs +1 -1
- package/lib/nodes/document/Document.d.ts +8 -0
- package/lib/nodes/document/Document.d.ts.map +1 -1
- package/lib/nodes/document/Document.js +10 -0
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +1 -0
- package/lib/nodes/document/IDocument.d.ts.map +1 -1
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +7 -1
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/html-element/HTMLElementUtility.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElementUtility.js +10 -0
- package/lib/nodes/html-element/HTMLElementUtility.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +2 -0
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.js +4 -0
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/src/nodes/document/Document.ts +11 -0
- package/src/nodes/document/IDocument.ts +1 -0
- package/src/nodes/element/Element.ts +8 -1
- package/src/nodes/html-element/HTMLElementUtility.ts +14 -0
- package/src/nodes/html-script-element/HTMLScriptElement.ts +4 -0
- package/src/nodes/html-script-element/HTMLScriptElementUtility.ts +4 -0
@@ -16,16 +16,20 @@ export default class HTMLElementUtility {
|
|
16
16
|
return;
|
17
17
|
}
|
18
18
|
|
19
|
+
const relatedTarget = element.ownerDocument['_nextActiveElement'] ?? null;
|
20
|
+
|
19
21
|
element.ownerDocument['_activeElement'] = null;
|
20
22
|
|
21
23
|
element.dispatchEvent(
|
22
24
|
new FocusEvent('blur', {
|
25
|
+
relatedTarget,
|
23
26
|
bubbles: false,
|
24
27
|
composed: true
|
25
28
|
})
|
26
29
|
);
|
27
30
|
element.dispatchEvent(
|
28
31
|
new FocusEvent('focusout', {
|
32
|
+
relatedTarget,
|
29
33
|
bubbles: true,
|
30
34
|
composed: true
|
31
35
|
})
|
@@ -42,20 +46,30 @@ export default class HTMLElementUtility {
|
|
42
46
|
return;
|
43
47
|
}
|
44
48
|
|
49
|
+
// Set the next active element so `blur` can use it for `relatedTarget`.
|
50
|
+
element.ownerDocument['_nextActiveElement'] = element;
|
51
|
+
|
52
|
+
const relatedTarget = element.ownerDocument['_activeElement'];
|
53
|
+
|
45
54
|
if (element.ownerDocument['_activeElement'] !== null) {
|
46
55
|
element.ownerDocument['_activeElement'].blur();
|
47
56
|
}
|
48
57
|
|
58
|
+
// Clean up after blur, so it does not affect next blur call.
|
59
|
+
element.ownerDocument['_nextActiveElement'] = null;
|
60
|
+
|
49
61
|
element.ownerDocument['_activeElement'] = element;
|
50
62
|
|
51
63
|
element.dispatchEvent(
|
52
64
|
new FocusEvent('focus', {
|
65
|
+
relatedTarget,
|
53
66
|
bubbles: false,
|
54
67
|
composed: true
|
55
68
|
})
|
56
69
|
);
|
57
70
|
element.dispatchEvent(
|
58
71
|
new FocusEvent('focusin', {
|
72
|
+
relatedTarget,
|
59
73
|
bubbles: true,
|
60
74
|
composed: true
|
61
75
|
})
|
@@ -189,6 +189,8 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
189
189
|
type === 'application/x-javascript' ||
|
190
190
|
type.startsWith('text/javascript'))
|
191
191
|
) {
|
192
|
+
this.ownerDocument['_currentScript'] = this;
|
193
|
+
|
192
194
|
if (this.ownerDocument.defaultView.happyDOM.settings.disableErrorCapturing) {
|
193
195
|
this.ownerDocument.defaultView.eval(textContent);
|
194
196
|
} else {
|
@@ -196,6 +198,8 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
196
198
|
this.ownerDocument.defaultView.eval(textContent)
|
197
199
|
);
|
198
200
|
}
|
201
|
+
|
202
|
+
this.ownerDocument['_currentScript'] = null;
|
199
203
|
}
|
200
204
|
}
|
201
205
|
}
|
@@ -56,6 +56,7 @@ export default class HTMLScriptElementUtility {
|
|
56
56
|
throw error;
|
57
57
|
}
|
58
58
|
} else {
|
59
|
+
element.ownerDocument['_currentScript'] = element;
|
59
60
|
if (element.ownerDocument.defaultView.happyDOM.settings.disableErrorCapturing) {
|
60
61
|
element.ownerDocument.defaultView.eval(code);
|
61
62
|
} else {
|
@@ -63,6 +64,7 @@ export default class HTMLScriptElementUtility {
|
|
63
64
|
element.ownerDocument.defaultView.eval(code)
|
64
65
|
);
|
65
66
|
}
|
67
|
+
element.ownerDocument['_currentScript'] = null;
|
66
68
|
element.dispatchEvent(new Event('load'));
|
67
69
|
}
|
68
70
|
} else {
|
@@ -81,6 +83,7 @@ export default class HTMLScriptElementUtility {
|
|
81
83
|
throw error;
|
82
84
|
}
|
83
85
|
} else {
|
86
|
+
element.ownerDocument['_currentScript'] = element;
|
84
87
|
if (element.ownerDocument.defaultView.happyDOM.settings.disableErrorCapturing) {
|
85
88
|
element.ownerDocument.defaultView.eval(code);
|
86
89
|
} else {
|
@@ -88,6 +91,7 @@ export default class HTMLScriptElementUtility {
|
|
88
91
|
element.ownerDocument.defaultView.eval(code)
|
89
92
|
);
|
90
93
|
}
|
94
|
+
element.ownerDocument['_currentScript'] = null;
|
91
95
|
element.dispatchEvent(new Event('load'));
|
92
96
|
}
|
93
97
|
}
|