happy-dom 7.0.6 → 7.1.1
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/lib/config/ElementTag.d.ts +2 -1
- package/lib/config/ElementTag.js +2 -1
- package/lib/config/ElementTag.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +53 -0
- package/lib/nodes/html-button-element/HTMLButtonElement.js +83 -0
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -0
- package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +12 -0
- package/lib/nodes/html-button-element/IHTMLButtonElement.js +3 -0
- package/lib/nodes/html-button-element/IHTMLButtonElement.js.map +1 -0
- package/package.json +2 -2
- package/src/config/ElementTag.ts +2 -1
- package/src/nodes/html-button-element/HTMLButtonElement.ts +86 -0
- package/src/nodes/html-button-element/IHTMLButtonElement.ts +13 -0
@@ -17,6 +17,7 @@ import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement';
|
|
17
17
|
import HTMLOptionElement from '../nodes/html-option-element/HTMLOptionElement';
|
18
18
|
import HTMLOptGroupElement from '../nodes/html-opt-group-element/HTMLOptGroupElement';
|
19
19
|
import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
|
20
|
+
import HTMLButtonElement from '../nodes/html-button-element/HTMLButtonElement';
|
20
21
|
declare const _default: {
|
21
22
|
A: typeof HTMLElement;
|
22
23
|
ABBR: typeof HTMLElement;
|
@@ -54,7 +55,7 @@ declare const _default: {
|
|
54
55
|
META: typeof HTMLMetaElement;
|
55
56
|
BLOCKQUOTE: typeof HTMLElement;
|
56
57
|
BR: typeof HTMLElement;
|
57
|
-
BUTTON: typeof
|
58
|
+
BUTTON: typeof HTMLButtonElement;
|
58
59
|
CANVAS: typeof HTMLElement;
|
59
60
|
CAPTION: typeof HTMLElement;
|
60
61
|
CITE: typeof HTMLElement;
|
package/lib/config/ElementTag.js
CHANGED
@@ -22,6 +22,7 @@ const HTMLSelectElement_1 = __importDefault(require("../nodes/html-select-elemen
|
|
22
22
|
const HTMLOptionElement_1 = __importDefault(require("../nodes/html-option-element/HTMLOptionElement"));
|
23
23
|
const HTMLOptGroupElement_1 = __importDefault(require("../nodes/html-opt-group-element/HTMLOptGroupElement"));
|
24
24
|
const HTMLDialogElement_1 = __importDefault(require("../nodes/html-dialog-element/HTMLDialogElement"));
|
25
|
+
const HTMLButtonElement_1 = __importDefault(require("../nodes/html-button-element/HTMLButtonElement"));
|
25
26
|
exports.default = {
|
26
27
|
A: HTMLElement_1.default,
|
27
28
|
ABBR: HTMLElement_1.default,
|
@@ -59,7 +60,7 @@ exports.default = {
|
|
59
60
|
META: HTMLMetaElement_1.default,
|
60
61
|
BLOCKQUOTE: HTMLElement_1.default,
|
61
62
|
BR: HTMLElement_1.default,
|
62
|
-
BUTTON:
|
63
|
+
BUTTON: HTMLButtonElement_1.default,
|
63
64
|
CANVAS: HTMLElement_1.default,
|
64
65
|
CAPTION: HTMLElement_1.default,
|
65
66
|
CITE: HTMLElement_1.default,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementTag.js","sourceRoot":"","sources":["../../src/config/ElementTag.ts"],"names":[],"mappings":";;;;;AAAA,oFAA4D;AAC5D,6GAAqF;AACrF,iGAAyE;AACzE,oGAA4E;AAC5E,8GAAsF;AACtF,uFAA+D;AAC/D,iFAAyD;AACzD,uGAA+E;AAC/E,oGAA4E;AAC5E,iGAAyE;AACzE,oGAA4E;AAC5E,oGAA4E;AAC5E,iGAAyE;AACzE,iGAAyE;AACzE,iGAAyE;AACzE,uGAA+E;AAC/E,uGAA+E;AAC/E,8GAAsF;AACtF,uGAA+E;AAE/E,kBAAe;IACd,CAAC,EAAE,qBAAW;IACd,IAAI,EAAE,qBAAW;IACjB,OAAO,EAAE,qBAAW;IACpB,IAAI,EAAE,qBAAW;IACjB,OAAO,EAAE,qBAAW;IACpB,KAAK,EAAE,qBAAW;IAClB,KAAK,EAAE,qBAAW;IAClB,CAAC,EAAE,qBAAW;IACd,IAAI,EAAE,yBAAe;IACrB,GAAG,EAAE,qBAAW;IAChB,GAAG,EAAE,qBAAW;IAChB,WAAW,EAAE,qBAAW;IACxB,IAAI,EAAE,qBAAW;IACjB,QAAQ,EAAE,6BAAmB;IAC7B,IAAI,EAAE,yBAAe;IACrB,KAAK,EAAE,0BAAgB;IACvB,QAAQ,EAAE,6BAAmB;IAC7B,MAAM,EAAE,2BAAiB;IACzB,GAAG,EAAE,0BAAgB;IACrB,IAAI,EAAE,yBAAe;IACrB,KAAK,EAAE,0BAAgB;IACvB,KAAK,EAAE,0BAAgB;IACvB,IAAI,EAAE,yBAAe;IACrB,GAAG,EAAE,uBAAa;IAClB,MAAM,EAAE,oBAAU;IAClB,OAAO,EAAE,oBAAU;IACnB,IAAI,EAAE,oBAAU;IAChB,IAAI,EAAE,oBAAU;IAChB,OAAO,EAAE,oBAAU;IACnB,QAAQ,EAAE,oBAAU;IACpB,IAAI,EAAE,oBAAU;IAChB,IAAI,EAAE,oBAAU;IAChB,GAAG,EAAE,oBAAU;IACf,IAAI,EAAE,yBAAe;IACrB,UAAU,EAAE,qBAAW;IACvB,EAAE,EAAE,qBAAW;IACf,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"ElementTag.js","sourceRoot":"","sources":["../../src/config/ElementTag.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import HTMLElement from '../html-element/HTMLElement';
|
2
|
+
import IHTMLButtonElement from './IHTMLButtonElement';
|
3
|
+
/**
|
4
|
+
|
5
|
+
We can improve performance a bit if we make the types as a constant.
|
6
|
+
* HTML Button Element.
|
7
|
+
*
|
8
|
+
* Reference:
|
9
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
10
|
+
*/
|
11
|
+
export default class HTMLButtonElement extends HTMLElement implements IHTMLButtonElement {
|
12
|
+
/**
|
13
|
+
* Returns value.
|
14
|
+
*
|
15
|
+
* @returns Value.
|
16
|
+
*/
|
17
|
+
get value(): string;
|
18
|
+
/**
|
19
|
+
* Sets value.
|
20
|
+
*
|
21
|
+
* @param value Value.
|
22
|
+
*/
|
23
|
+
set value(value: string);
|
24
|
+
/**
|
25
|
+
* Returns disabled.
|
26
|
+
*
|
27
|
+
* @returns Disabled.
|
28
|
+
*/
|
29
|
+
get disabled(): boolean;
|
30
|
+
/**
|
31
|
+
* Sets disabled.
|
32
|
+
*
|
33
|
+
* @param disabled Disabled.
|
34
|
+
*/
|
35
|
+
set disabled(disabled: boolean);
|
36
|
+
/**
|
37
|
+
* Returns type
|
38
|
+
*
|
39
|
+
* @returns Type
|
40
|
+
*/
|
41
|
+
get type(): string;
|
42
|
+
/**
|
43
|
+
* Sets type
|
44
|
+
*
|
45
|
+
* @param v Type
|
46
|
+
*/
|
47
|
+
set type(v: string);
|
48
|
+
/**
|
49
|
+
*
|
50
|
+
* @param type
|
51
|
+
*/
|
52
|
+
protected _sanitizeType(type: string): string;
|
53
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
|
7
|
+
const BUTTON_TYPES = ['submit', 'reset', 'button', 'menu'];
|
8
|
+
/**
|
9
|
+
|
10
|
+
We can improve performance a bit if we make the types as a constant.
|
11
|
+
* HTML Button Element.
|
12
|
+
*
|
13
|
+
* Reference:
|
14
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
15
|
+
*/
|
16
|
+
class HTMLButtonElement extends HTMLElement_1.default {
|
17
|
+
/**
|
18
|
+
* Returns value.
|
19
|
+
*
|
20
|
+
* @returns Value.
|
21
|
+
*/
|
22
|
+
get value() {
|
23
|
+
return this.getAttributeNS(null, 'value');
|
24
|
+
}
|
25
|
+
/**
|
26
|
+
* Sets value.
|
27
|
+
*
|
28
|
+
* @param value Value.
|
29
|
+
*/
|
30
|
+
set value(value) {
|
31
|
+
this.setAttributeNS(null, 'value', value);
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Returns disabled.
|
35
|
+
*
|
36
|
+
* @returns Disabled.
|
37
|
+
*/
|
38
|
+
get disabled() {
|
39
|
+
return this.getAttributeNS(null, 'disabled') !== null;
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Sets disabled.
|
43
|
+
*
|
44
|
+
* @param disabled Disabled.
|
45
|
+
*/
|
46
|
+
set disabled(disabled) {
|
47
|
+
if (!disabled) {
|
48
|
+
this.removeAttributeNS(null, 'disabled');
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
this.setAttributeNS(null, 'disabled', '');
|
52
|
+
}
|
53
|
+
}
|
54
|
+
/**
|
55
|
+
* Returns type
|
56
|
+
*
|
57
|
+
* @returns Type
|
58
|
+
*/
|
59
|
+
get type() {
|
60
|
+
return this._sanitizeType(this.getAttributeNS(null, 'type'));
|
61
|
+
}
|
62
|
+
/**
|
63
|
+
* Sets type
|
64
|
+
*
|
65
|
+
* @param v Type
|
66
|
+
*/
|
67
|
+
set type(v) {
|
68
|
+
this.setAttributeNS(null, 'type', this._sanitizeType(v));
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
*
|
72
|
+
* @param type
|
73
|
+
*/
|
74
|
+
_sanitizeType(type) {
|
75
|
+
type = (type && type.toLowerCase()) || 'submit';
|
76
|
+
if (!BUTTON_TYPES.includes(type)) {
|
77
|
+
type = 'submit';
|
78
|
+
}
|
79
|
+
return type;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
exports.default = HTMLButtonElement;
|
83
|
+
//# sourceMappingURL=HTMLButtonElement.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HTMLButtonElement.js","sourceRoot":"","sources":["../../../src/nodes/html-button-element/HTMLButtonElement.ts"],"names":[],"mappings":";;;;;AAAA,8EAAsD;AAGtD,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAqB,iBAAkB,SAAQ,qBAAW;IACzD;;;;OAIG;IACH,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAiB;QACpC,IAAI,CAAC,QAAQ,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACzC;aAAM;YACN,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;SAC1C;IACF,CAAC;IAED;;;;OAIG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,CAAS;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACO,aAAa,CAAC,IAAY;QACnC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC;QAEhD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjC,IAAI,GAAG,QAAQ,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAxED,oCAwEC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import IHTMLElement from '../html-element/IHTMLElement';
|
2
|
+
/**
|
3
|
+
* HTML Button Element.
|
4
|
+
*
|
5
|
+
* Reference:
|
6
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
7
|
+
*/
|
8
|
+
export default interface IHTMLButtonElement extends IHTMLElement {
|
9
|
+
type: string;
|
10
|
+
disabled: boolean;
|
11
|
+
value: string;
|
12
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"IHTMLButtonElement.js","sourceRoot":"","sources":["../../../src/nodes/html-button-element/IHTMLButtonElement.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "happy-dom",
|
3
|
-
"version": "7.
|
3
|
+
"version": "7.1.1",
|
4
4
|
"license": "MIT",
|
5
5
|
"homepage": "https://github.com/capricorn86/happy-dom",
|
6
6
|
"repository": "https://github.com/capricorn86/happy-dom",
|
@@ -75,5 +75,5 @@
|
|
75
75
|
"ts-jest": "^27.1.3",
|
76
76
|
"typescript": "^4.6.2"
|
77
77
|
},
|
78
|
-
"gitHead": "
|
78
|
+
"gitHead": "aceea50591ed13d89c8dcceee2ba716a4595a0f2"
|
79
79
|
}
|
package/src/config/ElementTag.ts
CHANGED
@@ -17,6 +17,7 @@ import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement';
|
|
17
17
|
import HTMLOptionElement from '../nodes/html-option-element/HTMLOptionElement';
|
18
18
|
import HTMLOptGroupElement from '../nodes/html-opt-group-element/HTMLOptGroupElement';
|
19
19
|
import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
|
20
|
+
import HTMLButtonElement from '../nodes/html-button-element/HTMLButtonElement';
|
20
21
|
|
21
22
|
export default {
|
22
23
|
A: HTMLElement,
|
@@ -55,7 +56,7 @@ export default {
|
|
55
56
|
META: HTMLMetaElement,
|
56
57
|
BLOCKQUOTE: HTMLElement,
|
57
58
|
BR: HTMLElement,
|
58
|
-
BUTTON:
|
59
|
+
BUTTON: HTMLButtonElement,
|
59
60
|
CANVAS: HTMLElement,
|
60
61
|
CAPTION: HTMLElement,
|
61
62
|
CITE: HTMLElement,
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import HTMLElement from '../html-element/HTMLElement';
|
2
|
+
import IHTMLButtonElement from './IHTMLButtonElement';
|
3
|
+
|
4
|
+
const BUTTON_TYPES = ['submit', 'reset', 'button', 'menu'];
|
5
|
+
|
6
|
+
/**
|
7
|
+
|
8
|
+
We can improve performance a bit if we make the types as a constant.
|
9
|
+
* HTML Button Element.
|
10
|
+
*
|
11
|
+
* Reference:
|
12
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
13
|
+
*/
|
14
|
+
export default class HTMLButtonElement extends HTMLElement implements IHTMLButtonElement {
|
15
|
+
/**
|
16
|
+
* Returns value.
|
17
|
+
*
|
18
|
+
* @returns Value.
|
19
|
+
*/
|
20
|
+
public get value(): string {
|
21
|
+
return this.getAttributeNS(null, 'value');
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Sets value.
|
26
|
+
*
|
27
|
+
* @param value Value.
|
28
|
+
*/
|
29
|
+
public set value(value: string) {
|
30
|
+
this.setAttributeNS(null, 'value', value);
|
31
|
+
}
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Returns disabled.
|
35
|
+
*
|
36
|
+
* @returns Disabled.
|
37
|
+
*/
|
38
|
+
public get disabled(): boolean {
|
39
|
+
return this.getAttributeNS(null, 'disabled') !== null;
|
40
|
+
}
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Sets disabled.
|
44
|
+
*
|
45
|
+
* @param disabled Disabled.
|
46
|
+
*/
|
47
|
+
public set disabled(disabled: boolean) {
|
48
|
+
if (!disabled) {
|
49
|
+
this.removeAttributeNS(null, 'disabled');
|
50
|
+
} else {
|
51
|
+
this.setAttributeNS(null, 'disabled', '');
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Returns type
|
57
|
+
*
|
58
|
+
* @returns Type
|
59
|
+
*/
|
60
|
+
public get type(): string {
|
61
|
+
return this._sanitizeType(this.getAttributeNS(null, 'type'));
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Sets type
|
66
|
+
*
|
67
|
+
* @param v Type
|
68
|
+
*/
|
69
|
+
public set type(v: string) {
|
70
|
+
this.setAttributeNS(null, 'type', this._sanitizeType(v));
|
71
|
+
}
|
72
|
+
|
73
|
+
/**
|
74
|
+
*
|
75
|
+
* @param type
|
76
|
+
*/
|
77
|
+
protected _sanitizeType(type: string): string {
|
78
|
+
type = (type && type.toLowerCase()) || 'submit';
|
79
|
+
|
80
|
+
if (!BUTTON_TYPES.includes(type)) {
|
81
|
+
type = 'submit';
|
82
|
+
}
|
83
|
+
|
84
|
+
return type;
|
85
|
+
}
|
86
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import IHTMLElement from '../html-element/IHTMLElement';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* HTML Button Element.
|
5
|
+
*
|
6
|
+
* Reference:
|
7
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
8
|
+
*/
|
9
|
+
export default interface IHTMLButtonElement extends IHTMLElement {
|
10
|
+
type: string;
|
11
|
+
disabled: boolean;
|
12
|
+
value: string;
|
13
|
+
}
|