happy-dom 7.6.1 → 7.6.3

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.

@@ -53,7 +53,18 @@ class HTMLOptionElement extends HTMLElement_1.default {
53
53
  * @returns Selected.
54
54
  */
55
55
  get selected() {
56
- return this.getAttributeNS(null, 'selected') !== null;
56
+ const parentNode = this.parentNode;
57
+ if (parentNode?.tagName === 'SELECT') {
58
+ let index = -1;
59
+ for (let i = 0; i < parentNode.options.length; i++) {
60
+ if (parentNode.options[i] === this) {
61
+ index = i;
62
+ break;
63
+ }
64
+ }
65
+ return index !== -1 && parentNode.options.selectedIndex === index;
66
+ }
67
+ return false;
57
68
  }
58
69
  /**
59
70
  * Sets selected.
@@ -61,11 +72,26 @@ class HTMLOptionElement extends HTMLElement_1.default {
61
72
  * @param selected Selected.
62
73
  */
63
74
  set selected(selected) {
64
- if (!selected) {
65
- this.removeAttributeNS(null, 'selected');
66
- }
67
- else {
68
- this.setAttributeNS(null, 'selected', '');
75
+ const parentNode = this.parentNode;
76
+ if (parentNode?.tagName === 'SELECT') {
77
+ if (selected) {
78
+ let index = -1;
79
+ for (let i = 0; i < parentNode.options.length; i++) {
80
+ if (parentNode.options[i] === this) {
81
+ index = i;
82
+ break;
83
+ }
84
+ }
85
+ if (index !== -1) {
86
+ parentNode.options.selectedIndex = index;
87
+ }
88
+ }
89
+ else if (parentNode.options.length) {
90
+ parentNode.options.selectedIndex = 0;
91
+ }
92
+ else {
93
+ parentNode.options.selectedIndex = -1;
94
+ }
69
95
  }
70
96
  }
71
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLOptionElement.js","sourceRoot":"","sources":["../../../src/nodes/html-option-element/HTMLOptionElement.ts"],"names":[],"mappings":";;;;;AAAA,8EAAsD;AAKtD;;;;;GAKG;AACH,MAAqB,iBAAkB,SAAQ,qBAAW;IAGzD;;;;OAIG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAY;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,IAAW,IAAI;QACd,IAAI,MAAM,GAAiB,IAAI,CAAC,UAAU,CAAC;QAC3C,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE;YAC3C,MAAM,GAAiB,MAAM,CAAC,UAAU,CAAC;SACzC;QACD,OAAyB,MAAM,CAAC;IACjC,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,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,KAAK;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;CACD;AAxGD,oCAwGC"}
1
+ {"version":3,"file":"HTMLOptionElement.js","sourceRoot":"","sources":["../../../src/nodes/html-option-element/HTMLOptionElement.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import IHTMLOptionsCollection from './IHTMLOptionsCollection';
11
11
  */
12
12
  export default class HTMLOptionsCollection extends HTMLCollection implements IHTMLOptionsCollection {
13
13
  private _selectElement;
14
+ private _selectedIndex;
14
15
  /**
15
16
  *
16
17
  * @param selectElement
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const DOMException_1 = __importDefault(require("../../exception/DOMException"));
7
7
  const HTMLCollection_1 = __importDefault(require("../element/HTMLCollection"));
8
- const HTMLOptionElement_1 = __importDefault(require("./HTMLOptionElement"));
9
8
  /**
10
9
  * HTML Options Collection.
11
10
  *
@@ -19,6 +18,7 @@ class HTMLOptionsCollection extends HTMLCollection_1.default {
19
18
  */
20
19
  constructor(selectElement) {
21
20
  super();
21
+ this._selectedIndex = -1;
22
22
  this._selectElement = selectElement;
23
23
  }
24
24
  /**
@@ -27,13 +27,7 @@ class HTMLOptionsCollection extends HTMLCollection_1.default {
27
27
  * @returns SelectedIndex.
28
28
  */
29
29
  get selectedIndex() {
30
- for (let i = 0; i < this.length; i++) {
31
- const item = this[i];
32
- if (item instanceof HTMLOptionElement_1.default && item.selected) {
33
- return i;
34
- }
35
- }
36
- return -1;
30
+ return this._selectedIndex;
37
31
  }
38
32
  /**
39
33
  * Sets selectedIndex.
@@ -41,10 +35,12 @@ class HTMLOptionsCollection extends HTMLCollection_1.default {
41
35
  * @param selectedIndex SelectedIndex.
42
36
  */
43
37
  set selectedIndex(selectedIndex) {
44
- for (let i = 0; i < this.length; i++) {
45
- const item = this[i];
46
- if (item instanceof HTMLOptionElement_1.default) {
47
- this[i].selected = i === selectedIndex;
38
+ if (typeof selectedIndex === 'number' && !isNaN(selectedIndex)) {
39
+ if (selectedIndex >= 0 && selectedIndex < this.length) {
40
+ this._selectedIndex = selectedIndex;
41
+ }
42
+ else {
43
+ this._selectedIndex = -1;
48
44
  }
49
45
  }
50
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLOptionsCollection.js","sourceRoot":"","sources":["../../../src/nodes/html-option-element/HTMLOptionsCollection.ts"],"names":[],"mappings":";;;;;AAAA,gFAAwD;AACxD,+EAAuD;AAGvD,4EAAoD;AAIpD;;;;;GAKG;AACH,MAAqB,qBACpB,SAAQ,wBAAc;IAKtB;;;OAGG;IACH,YAAY,aAAiC;QAC5C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,YAAY,2BAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACvD,OAAO,CAAC,CAAC;aACT;SACD;QAED,OAAO,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa,CAAC,aAAqB;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,YAAY,2BAAiB,EAAE;gBACtC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,aAAa,CAAC;aACvC;SACD;IACF,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,GAAG,CACT,OAAkD,EAClD,MAA2D;QAE3D,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;SACP;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YAClC,IAAI,MAAM,GAAG,CAAC,EAAE;gBACf,OAAO;aACP;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAS,MAAM,CAAC,CAAC,CAAC;YAChE,OAAO;SACP;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,MAAM,IAAI,sBAAY,CACrB,8HAA8H,CAC9H,CAAC;SACF;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjE;IACF,CAAC;CACD;AAnGD,wCAmGC"}
1
+ {"version":3,"file":"HTMLOptionsCollection.js","sourceRoot":"","sources":["../../../src/nodes/html-option-element/HTMLOptionsCollection.ts"],"names":[],"mappings":";;;;;AAAA,gFAAwD;AACxD,+EAAuD;AAMvD;;;;;GAKG;AACH,MAAqB,qBACpB,SAAQ,wBAAc;IAMtB;;;OAGG;IACH,YAAY,aAAiC;QAC5C,KAAK,EAAE,CAAC;QAPD,mBAAc,GAAG,CAAC,CAAC,CAAC;QAS3B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa,CAAC,aAAqB;QAC7C,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAC/D,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;gBACtD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;aACpC;iBAAM;gBACN,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;aACzB;SACD;IACF,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,GAAG,CACT,OAAkD,EAClD,MAA2D;QAE3D,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;SACP;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YAClC,IAAI,MAAM,GAAG,CAAC,EAAE;gBACf,OAAO;aACP;YAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAS,MAAM,CAAC,CAAC,CAAC;YAChE,OAAO;SACP;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,MAAM,IAAI,sBAAY,CACrB,8HAA8H,CAC9H,CAAC;SACF;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjE;IACF,CAAC;CACD;AA9FD,wCA8FC"}
@@ -3,8 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const DOMException_1 = __importDefault(require("../../exception/DOMException"));
7
- const DOMExceptionNameEnum_1 = __importDefault(require("../../exception/DOMExceptionNameEnum"));
8
6
  const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
9
7
  const ValidityState_1 = __importDefault(require("../validity-state/ValidityState"));
10
8
  const HTMLOptionElement_1 = __importDefault(require("../html-option-element/HTMLOptionElement"));
@@ -182,9 +180,6 @@ class HTMLSelectElement extends HTMLElement_1.default {
182
180
  * @param value Value.
183
181
  */
184
182
  set selectedIndex(value) {
185
- if (value > this.options.length - 1 || value < -1) {
186
- throw new DOMException_1.default('Select elements selected index must be valid', DOMExceptionNameEnum_1.default.indexSizeError);
187
- }
188
183
  this.options.selectedIndex = value;
189
184
  }
190
185
  /**
@@ -258,6 +253,9 @@ class HTMLSelectElement extends HTMLElement_1.default {
258
253
  const previousLength = this.options.length;
259
254
  if (element.tagName === 'OPTION' || element.tagName === 'OPTGROUP') {
260
255
  this.options.push(element);
256
+ if (this.options.length === 1) {
257
+ this.options.selectedIndex = 0;
258
+ }
261
259
  }
262
260
  this._updateIndexProperties(previousLength, this.options.length);
263
261
  }
@@ -284,6 +282,9 @@ class HTMLSelectElement extends HTMLElement_1.default {
284
282
  else {
285
283
  this.options.push(newElement);
286
284
  }
285
+ if (this.options.length === 1) {
286
+ this.options.selectedIndex = 0;
287
+ }
287
288
  }
288
289
  this._updateIndexProperties(previousLength, this.options.length);
289
290
  }
@@ -301,6 +302,12 @@ class HTMLSelectElement extends HTMLElement_1.default {
301
302
  if (index !== -1) {
302
303
  this.options.splice(index, 1);
303
304
  }
305
+ if (this.options.selectedIndex >= this.options.length) {
306
+ this.options.selectedIndex = this.options.length - 1;
307
+ }
308
+ if (!this.options.length) {
309
+ this.options.selectedIndex = -1;
310
+ }
304
311
  }
305
312
  this._updateIndexProperties(previousLength, this.options.length);
306
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLSelectElement.js","sourceRoot":"","sources":["../../../src/nodes/html-select-element/HTMLSelectElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HTMLSelectElement.js","sourceRoot":"","sources":["../../../src/nodes/html-select-element/HTMLSelectElement.ts"],"names":[],"mappings":"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"}
@@ -81,8 +81,9 @@ class ParentNodeUtility {
81
81
  static getElementsByTagName(parentNode, tagName) {
82
82
  const upperTagName = tagName.toUpperCase();
83
83
  const matches = HTMLCollectionFactory_1.default.create();
84
+ const includeAll = tagName === '*';
84
85
  for (const child of parentNode.children) {
85
- if (child.tagName === upperTagName) {
86
+ if (includeAll || child.tagName === upperTagName) {
86
87
  matches.push(child);
87
88
  }
88
89
  for (const match of this.getElementsByTagName(child, tagName)) {
@@ -102,8 +103,9 @@ class ParentNodeUtility {
102
103
  static getElementsByTagNameNS(parentNode, namespaceURI, tagName) {
103
104
  const upperTagName = tagName.toUpperCase();
104
105
  const matches = HTMLCollectionFactory_1.default.create();
106
+ const includeAll = tagName === '*';
105
107
  for (const child of parentNode.children) {
106
- if (child.tagName === upperTagName && child.namespaceURI === namespaceURI) {
108
+ if ((includeAll || child.tagName === upperTagName) && child.namespaceURI === namespaceURI) {
107
109
  matches.push(child);
108
110
  }
109
111
  for (const match of this.getElementsByTagNameNS(child, namespaceURI, tagName)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ParentNodeUtility.js","sourceRoot":"","sources":["../../../src/nodes/parent-node/ParentNodeUtility.ts"],"names":[],"mappings":";;;;;AAAA,uFAA+D;AAC/D,2EAAmD;AAMnD,6FAAqE;AAErE;;GAEG;AACH,MAAqB,iBAAiB;IACrC;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAC,UAAiB,EAAE,GAAG,KAAyB;QACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC7B,MAAM,aAAa,GAAG,mBAAS,CAAC,KAAK,CACzB,UAAU,CAAC,aAAa,EACnC,IAAI,CACJ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;oBACzC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;iBACrC;aACD;iBAAM;gBACN,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC7B;SACD;IACF,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,OAAO,CAAC,UAAiB,EAAE,GAAG,KAAyB;QACpE,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC7B,MAAM,aAAa,GAAG,mBAAS,CAAC,KAAK,CACzB,UAAU,CAAC,aAAa,EACnC,IAAI,CACJ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;oBACzC,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;iBAClD;aACD;iBAAM;gBACN,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC1C;SACD;IACF,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,eAAe,CAAC,UAAiB,EAAE,GAAG,KAAyB;QAC5E,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE;YACjD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;IACnC,CAAC;IACD;;;;;;OAMG;IACI,MAAM,CAAC,sBAAsB,CACnC,UAAiB,EACjB,SAAiB;QAEjB,OAAO,uBAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,oBAAoB,CACjC,UAAoD,EACpD,OAAe;QAEf,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,+BAAqB,CAAC,MAAM,EAAE,CAAC;QAE/C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;gBACnC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAW,KAAK,EAAE,OAAO,CAAC,EAAE;gBACxE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;SACD;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,sBAAsB,CACnC,UAAoD,EACpD,YAAoB,EACpB,OAAe;QAEf,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,+BAAqB,CAAC,MAAM,EAAE,CAAC;QAE/C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE;gBAC1E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAW,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;gBACxF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;SACD;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,mBAAmB,CAChC,UAAoD,EACpD,OAAe;QAEf,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;gBACnC,OAAiB,KAAK,CAAC;aACvB;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAW,KAAK,EAAE,OAAO,CAAC,CAAC;YACjE,IAAI,KAAK,EAAE;gBACV,OAAO,KAAK,CAAC;aACb;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAC3B,UAAoD,EACpD,EAAU;QAEV,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE;YACxC,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;gBACpB,OAAiB,KAAK,CAAC;aACvB;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAW,KAAK,EAAE,EAAE,CAAC,CAAC;YAEvD,IAAI,KAAK,EAAE;gBACV,OAAO,KAAK,CAAC;aACb;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AApLD,oCAoLC"}
1
+ {"version":3,"file":"ParentNodeUtility.js","sourceRoot":"","sources":["../../../src/nodes/parent-node/ParentNodeUtility.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "7.6.1",
3
+ "version": "7.6.3",
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": "5f769d3295e3cd25da05f94dc4bf3cf248649f9a"
78
+ "gitHead": "32468a913ea021351a6489ce51d710ee70f53ce7"
79
79
  }
@@ -1,6 +1,7 @@
1
1
  import HTMLElement from '../html-element/HTMLElement';
2
2
  import IHTMLElement from '../html-element/IHTMLElement';
3
3
  import IHTMLFormElement from '../html-form-element/IHTMLFormElement';
4
+ import IHTMLSelectElement from '../html-select-element/IHTMLSelectElement';
4
5
  import IHTMLOptionElement from './IHTMLOptionElement';
5
6
 
6
7
  /**
@@ -58,7 +59,20 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
58
59
  * @returns Selected.
59
60
  */
60
61
  public get selected(): boolean {
61
- return this.getAttributeNS(null, 'selected') !== null;
62
+ const parentNode = <IHTMLSelectElement>this.parentNode;
63
+
64
+ if (parentNode?.tagName === 'SELECT') {
65
+ let index = -1;
66
+ for (let i = 0; i < parentNode.options.length; i++) {
67
+ if (parentNode.options[i] === this) {
68
+ index = i;
69
+ break;
70
+ }
71
+ }
72
+ return index !== -1 && parentNode.options.selectedIndex === index;
73
+ }
74
+
75
+ return false;
62
76
  }
63
77
 
64
78
  /**
@@ -67,10 +81,26 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
67
81
  * @param selected Selected.
68
82
  */
69
83
  public set selected(selected: boolean) {
70
- if (!selected) {
71
- this.removeAttributeNS(null, 'selected');
72
- } else {
73
- this.setAttributeNS(null, 'selected', '');
84
+ const parentNode = <IHTMLSelectElement>this.parentNode;
85
+ if (parentNode?.tagName === 'SELECT') {
86
+ if (selected) {
87
+ let index = -1;
88
+
89
+ for (let i = 0; i < parentNode.options.length; i++) {
90
+ if (parentNode.options[i] === this) {
91
+ index = i;
92
+ break;
93
+ }
94
+ }
95
+
96
+ if (index !== -1) {
97
+ parentNode.options.selectedIndex = index;
98
+ }
99
+ } else if (parentNode.options.length) {
100
+ parentNode.options.selectedIndex = 0;
101
+ } else {
102
+ parentNode.options.selectedIndex = -1;
103
+ }
74
104
  }
75
105
  }
76
106
 
@@ -2,7 +2,6 @@ import DOMException from '../../exception/DOMException';
2
2
  import HTMLCollection from '../element/HTMLCollection';
3
3
  import IHTMLOptGroupElement from '../html-opt-group-element/IHTMLOptGroupElement';
4
4
  import IHTMLSelectElement from '../html-select-element/IHTMLSelectElement';
5
- import HTMLOptionElement from './HTMLOptionElement';
6
5
  import IHTMLOptionElement from './IHTMLOptionElement';
7
6
  import IHTMLOptionsCollection from './IHTMLOptionsCollection';
8
7
 
@@ -17,6 +16,7 @@ export default class HTMLOptionsCollection
17
16
  implements IHTMLOptionsCollection
18
17
  {
19
18
  private _selectElement: IHTMLSelectElement;
19
+ private _selectedIndex = -1;
20
20
 
21
21
  /**
22
22
  *
@@ -34,14 +34,7 @@ export default class HTMLOptionsCollection
34
34
  * @returns SelectedIndex.
35
35
  */
36
36
  public get selectedIndex(): number {
37
- for (let i = 0; i < this.length; i++) {
38
- const item = this[i];
39
- if (item instanceof HTMLOptionElement && item.selected) {
40
- return i;
41
- }
42
- }
43
-
44
- return -1;
37
+ return this._selectedIndex;
45
38
  }
46
39
 
47
40
  /**
@@ -50,10 +43,11 @@ export default class HTMLOptionsCollection
50
43
  * @param selectedIndex SelectedIndex.
51
44
  */
52
45
  public set selectedIndex(selectedIndex: number) {
53
- for (let i = 0; i < this.length; i++) {
54
- const item = this[i];
55
- if (item instanceof HTMLOptionElement) {
56
- this[i].selected = i === selectedIndex;
46
+ if (typeof selectedIndex === 'number' && !isNaN(selectedIndex)) {
47
+ if (selectedIndex >= 0 && selectedIndex < this.length) {
48
+ this._selectedIndex = selectedIndex;
49
+ } else {
50
+ this._selectedIndex = -1;
57
51
  }
58
52
  }
59
53
  }
@@ -1,5 +1,3 @@
1
- import DOMException from '../../exception/DOMException';
2
- import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum';
3
1
  import HTMLElement from '../html-element/HTMLElement';
4
2
  import IHTMLElement from '../html-element/IHTMLElement';
5
3
  import IHTMLFormElement from '../html-form-element/IHTMLFormElement';
@@ -204,13 +202,6 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
204
202
  * @param value Value.
205
203
  */
206
204
  public set selectedIndex(value: number) {
207
- if (value > this.options.length - 1 || value < -1) {
208
- throw new DOMException(
209
- 'Select elements selected index must be valid',
210
- DOMExceptionNameEnum.indexSizeError
211
- );
212
- }
213
-
214
205
  this.options.selectedIndex = value;
215
206
  }
216
207
 
@@ -296,6 +287,10 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
296
287
 
297
288
  if (element.tagName === 'OPTION' || element.tagName === 'OPTGROUP') {
298
289
  this.options.push(<IHTMLOptionElement | IHTMLOptGroupElement>element);
290
+
291
+ if (this.options.length === 1) {
292
+ this.options.selectedIndex = 0;
293
+ }
299
294
  }
300
295
 
301
296
  this._updateIndexProperties(previousLength, this.options.length);
@@ -337,6 +332,10 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
337
332
  } else {
338
333
  this.options.push(<IHTMLOptionElement | IHTMLOptGroupElement>newElement);
339
334
  }
335
+
336
+ if (this.options.length === 1) {
337
+ this.options.selectedIndex = 0;
338
+ }
340
339
  }
341
340
 
342
341
  this._updateIndexProperties(previousLength, this.options.length);
@@ -355,9 +354,18 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
355
354
 
356
355
  if (element.tagName === 'OPTION' || element.tagName === 'OPTION') {
357
356
  const index = this.options.indexOf(<IHTMLOptionElement | IHTMLOptGroupElement>node);
357
+
358
358
  if (index !== -1) {
359
359
  this.options.splice(index, 1);
360
360
  }
361
+
362
+ if (this.options.selectedIndex >= this.options.length) {
363
+ this.options.selectedIndex = this.options.length - 1;
364
+ }
365
+
366
+ if (!this.options.length) {
367
+ this.options.selectedIndex = -1;
368
+ }
361
369
  }
362
370
 
363
371
  this._updateIndexProperties(previousLength, this.options.length);
@@ -97,9 +97,10 @@ export default class ParentNodeUtility {
97
97
  ): IHTMLCollection<IElement> {
98
98
  const upperTagName = tagName.toUpperCase();
99
99
  const matches = HTMLCollectionFactory.create();
100
+ const includeAll = tagName === '*';
100
101
 
101
102
  for (const child of parentNode.children) {
102
- if (child.tagName === upperTagName) {
103
+ if (includeAll || child.tagName === upperTagName) {
103
104
  matches.push(child);
104
105
  }
105
106
  for (const match of this.getElementsByTagName(<IElement>child, tagName)) {
@@ -125,9 +126,10 @@ export default class ParentNodeUtility {
125
126
  ): IHTMLCollection<IElement> {
126
127
  const upperTagName = tagName.toUpperCase();
127
128
  const matches = HTMLCollectionFactory.create();
129
+ const includeAll = tagName === '*';
128
130
 
129
131
  for (const child of parentNode.children) {
130
- if (child.tagName === upperTagName && child.namespaceURI === namespaceURI) {
132
+ if ((includeAll || child.tagName === upperTagName) && child.namespaceURI === namespaceURI) {
131
133
  matches.push(child);
132
134
  }
133
135
  for (const match of this.getElementsByTagNameNS(<IElement>child, namespaceURI, tagName)) {