happy-dom 7.6.3 → 7.6.5

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 (32) hide show
  1. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +7 -12
  2. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  3. package/lib/nodes/element/Element.d.ts +4 -2
  4. package/lib/nodes/element/Element.js +8 -1
  5. package/lib/nodes/element/Element.js.map +1 -1
  6. package/lib/nodes/element/IElement.d.ts +4 -2
  7. package/lib/nodes/html-element/HTMLElement.d.ts +8 -12
  8. package/lib/nodes/html-element/HTMLElement.js +10 -11
  9. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  10. package/lib/nodes/html-element/IHTMLElement.d.ts +2 -1
  11. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +17 -0
  12. package/lib/nodes/html-option-element/HTMLOptionElement.js +55 -32
  13. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  14. package/lib/nodes/html-option-element/HTMLOptionsCollection.d.ts +0 -1
  15. package/lib/nodes/html-option-element/HTMLOptionsCollection.js +2 -10
  16. package/lib/nodes/html-option-element/HTMLOptionsCollection.js.map +1 -1
  17. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +18 -2
  18. package/lib/nodes/html-select-element/HTMLSelectElement.js +99 -22
  19. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  20. package/lib/nodes/svg-element/SVGElement.d.ts +1 -8
  21. package/lib/nodes/svg-element/SVGElement.js +1 -7
  22. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  23. package/package.json +2 -2
  24. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +9 -13
  25. package/src/nodes/element/Element.ts +15 -3
  26. package/src/nodes/element/IElement.ts +4 -2
  27. package/src/nodes/html-element/HTMLElement.ts +13 -12
  28. package/src/nodes/html-element/IHTMLElement.ts +3 -1
  29. package/src/nodes/html-option-element/HTMLOptionElement.ts +69 -35
  30. package/src/nodes/html-option-element/HTMLOptionsCollection.ts +2 -9
  31. package/src/nodes/html-select-element/HTMLSelectElement.ts +109 -27
  32. package/src/nodes/svg-element/SVGElement.ts +3 -8
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
7
7
  const ValidityState_1 = __importDefault(require("../validity-state/ValidityState"));
8
- const HTMLOptionElement_1 = __importDefault(require("../html-option-element/HTMLOptionElement"));
9
8
  const HTMLOptionsCollection_1 = __importDefault(require("../html-option-element/HTMLOptionsCollection"));
10
9
  const NodeTypeEnum_1 = __importDefault(require("../node/NodeTypeEnum"));
11
10
  /**
@@ -152,11 +151,13 @@ class HTMLSelectElement extends HTMLElement_1.default {
152
151
  * @returns Value.
153
152
  */
154
153
  get value() {
155
- if (this.options.selectedIndex === -1) {
156
- return '';
154
+ for (let i = 0, max = this.options.length; i < max; i++) {
155
+ const option = this.options[i];
156
+ if (option._selectedness) {
157
+ return option.value;
158
+ }
157
159
  }
158
- const option = this.options[this.options.selectedIndex];
159
- return option instanceof HTMLOptionElement_1.default ? option.value : '';
160
+ return '';
160
161
  }
161
162
  /**
162
163
  * Sets value.
@@ -164,7 +165,16 @@ class HTMLSelectElement extends HTMLElement_1.default {
164
165
  * @param value Value.
165
166
  */
166
167
  set value(value) {
167
- this.options.selectedIndex = this.options.findIndex((o) => o instanceof HTMLOptionElement_1.default && o.value === value);
168
+ for (let i = 0, max = this.options.length; i < max; i++) {
169
+ const option = this.options[i];
170
+ if (option.value === value) {
171
+ option._selectedness = true;
172
+ option._dirtyness = true;
173
+ }
174
+ else {
175
+ option._selectedness = false;
176
+ }
177
+ }
168
178
  }
169
179
  /**
170
180
  * Returns value.
@@ -172,15 +182,29 @@ class HTMLSelectElement extends HTMLElement_1.default {
172
182
  * @returns Value.
173
183
  */
174
184
  get selectedIndex() {
175
- return this.options.selectedIndex;
185
+ for (let i = 0, max = this.options.length; i < max; i++) {
186
+ if (this.options[i]._selectedness) {
187
+ return i;
188
+ }
189
+ }
190
+ return -1;
176
191
  }
177
192
  /**
178
193
  * Sets value.
179
194
  *
180
- * @param value Value.
195
+ * @param selectedIndex Selected index.
181
196
  */
182
- set selectedIndex(value) {
183
- this.options.selectedIndex = value;
197
+ set selectedIndex(selectedIndex) {
198
+ if (typeof selectedIndex === 'number' && !isNaN(selectedIndex)) {
199
+ for (let i = 0, max = this.options.length; i < max; i++) {
200
+ this.options[i]._selectedness = false;
201
+ }
202
+ const selectedOption = this.options[selectedIndex];
203
+ if (selectedOption) {
204
+ selectedOption._selectedness = true;
205
+ selectedOption._dirtyness = true;
206
+ }
207
+ }
184
208
  }
185
209
  /**
186
210
  * Returns the parent form element.
@@ -253,11 +277,9 @@ class HTMLSelectElement extends HTMLElement_1.default {
253
277
  const previousLength = this.options.length;
254
278
  if (element.tagName === 'OPTION' || element.tagName === 'OPTGROUP') {
255
279
  this.options.push(element);
256
- if (this.options.length === 1) {
257
- this.options.selectedIndex = 0;
258
- }
259
280
  }
260
281
  this._updateIndexProperties(previousLength, this.options.length);
282
+ this._resetOptionSelectednes();
261
283
  }
262
284
  return super.appendChild(node);
263
285
  }
@@ -282,12 +304,12 @@ class HTMLSelectElement extends HTMLElement_1.default {
282
304
  else {
283
305
  this.options.push(newElement);
284
306
  }
285
- if (this.options.length === 1) {
286
- this.options.selectedIndex = 0;
287
- }
288
307
  }
289
308
  this._updateIndexProperties(previousLength, this.options.length);
290
309
  }
310
+ if (newNode.nodeType === NodeTypeEnum_1.default.elementNode) {
311
+ this._resetOptionSelectednes();
312
+ }
291
313
  return returnValue;
292
314
  }
293
315
  /**
@@ -302,17 +324,72 @@ class HTMLSelectElement extends HTMLElement_1.default {
302
324
  if (index !== -1) {
303
325
  this.options.splice(index, 1);
304
326
  }
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
- }
311
327
  }
312
328
  this._updateIndexProperties(previousLength, this.options.length);
329
+ this._resetOptionSelectednes();
313
330
  }
314
331
  return super.removeChild(node);
315
332
  }
333
+ /**
334
+ * Resets the option selectedness.
335
+ *
336
+ * Based on:
337
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/nodes/HTMLSelectElement-impl.js
338
+ *
339
+ * @param [newOption] Optional new option element to be selected.
340
+ * @see https://html.spec.whatwg.org/multipage/form-elements.html#selectedness-setting-algorithm
341
+ */
342
+ _resetOptionSelectednes(newOption) {
343
+ if (this.hasAttributeNS(null, 'multiple')) {
344
+ return;
345
+ }
346
+ const selected = [];
347
+ for (let i = 0, max = this.options.length; i < max; i++) {
348
+ if (newOption) {
349
+ this.options[i]._selectedness = this.options[i] === newOption;
350
+ }
351
+ if (this.options[i]._selectedness) {
352
+ selected.push(this.options[i]);
353
+ }
354
+ }
355
+ const size = this._getDisplaySize();
356
+ if (size === 1 && !selected.length) {
357
+ for (let i = 0, max = this.options.length; i < max; i++) {
358
+ const option = this.options[i];
359
+ let disabled = option.hasAttributeNS(null, 'disabled');
360
+ const parentNode = option.parentNode;
361
+ if (parentNode &&
362
+ parentNode.nodeType === NodeTypeEnum_1.default.elementNode &&
363
+ parentNode.tagName === 'OPTGROUP' &&
364
+ parentNode.hasAttributeNS(null, 'disabled')) {
365
+ disabled = true;
366
+ }
367
+ if (!disabled) {
368
+ option._selectedness = true;
369
+ break;
370
+ }
371
+ }
372
+ }
373
+ else if (selected.length >= 2) {
374
+ for (let i = 0, max = this.options.length; i < max; i++) {
375
+ this.options[i]._selectedness = i === selected.length - 1;
376
+ }
377
+ }
378
+ }
379
+ /**
380
+ * Returns display size.
381
+ *
382
+ * @returns Display size.
383
+ */
384
+ _getDisplaySize() {
385
+ if (this.hasAttributeNS(null, 'size')) {
386
+ const size = parseInt(this.getAttributeNS(null, 'size'));
387
+ if (!isNaN(size) && size >= 0) {
388
+ return size;
389
+ }
390
+ }
391
+ return this.hasAttributeNS(null, 'multiple') ? 4 : 1;
392
+ }
316
393
  /**
317
394
  * Updates index properties.
318
395
  *
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLSelectElement.js","sourceRoot":"","sources":["../../../src/nodes/html-select-element/HTMLSelectElement.ts"],"names":[],"mappings":";;;;;AAAA,8EAAsD;AAGtD,oFAA4D;AAE5D,iGAAyE;AACzE,yGAAiF;AAQjF,wEAAgD;AAEhD;;;;;GAKG;AACH,MAAqB,iBAAkB,SAAQ,qBAAW;IAA1D;;QAEiB,YAAO,GAA2B,IAAI,+BAAqB,CAAC,IAAI,CAAC,CAAC;QAElF,SAAS;QACF,aAAQ,GAAkC,IAAI,CAAC;QAC/C,YAAO,GAAkC,IAAI,CAAC;IAqXtD,CAAC;IAnXA;;;;OAIG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAY;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,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,SAAS;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,IAAW,SAAS,CAAC,SAAkB;QACtC,IAAI,CAAC,SAAS,EAAE;YACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SAC1C;aAAM;YACN,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;SAC3C;IACF,CAAC;IAED;;;;OAIG;IACH,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAW,MAAM,CAAC,MAAc;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9B,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,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC;IACjF,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,EAAE;YACtC,OAAO,EAAE,CAAC;SACV;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAExD,OAAO,MAAM,YAAY,2BAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,2BAAiB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAC1D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,IAAW,aAAa,CAAC,KAAa;QACrC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IACpC,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,uBAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,IAAW,YAAY;QACtB,OAAO,CACN,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,CAAC,IAAI,CAAC,QAAQ;YACd,CAAC,IAAI,CAAC,UAAU,CAAC,CACjB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,GAAG,CACT,OAAkD,EAClD,MAA2D;QAE3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACa,MAAM,CAAC,KAAc;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM;YACN,KAAK,CAAC,MAAM,EAAE,CAAC;SACf;IACF,CAAC;IAED;;OAEG;IACa,WAAW,CAAC,IAAW;QACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAY,CAAC,WAAW,EAAE;YAC/C,MAAM,OAAO,GAAiB,IAAI,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAE3C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;gBACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4C,OAAO,CAAC,CAAC;gBAEtE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;iBAC/B;aACD;YAED,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjE;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACa,YAAY,CAAC,OAAc,EAAE,aAA2B;QACvE,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE/D,IACC,OAAO,CAAC,QAAQ,KAAK,sBAAY,CAAC,WAAW;YAC7C,aAAa,EAAE,QAAQ,KAAK,sBAAY,CAAC,WAAW,EACnD;YACD,MAAM,UAAU,GAAiB,OAAO,CAAC;YACzC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAE3C,IAAI,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;gBACzE,MAAM,gBAAgB,GAAiB,aAAa,CAAC;gBAErD,IACC,gBAAgB;oBAChB,CAAC,gBAAgB,CAAC,OAAO,KAAK,QAAQ,IAAI,gBAAgB,CAAC,OAAO,KAAK,UAAU,CAAC,EACjF;oBACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACC,gBAAgB,CAC3D,CAAC;oBACF,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;wBAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAClB,cAAc,EACd,CAAC,EAC0C,UAAU,CACrD,CAAC;qBACF;iBACD;qBAAM;oBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4C,UAAU,CAAC,CAAC;iBACzE;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;iBAC/B;aACD;YAED,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjE;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;OAEG;IACa,WAAW,CAAC,IAAW;QACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAY,CAAC,WAAW,EAAE;YAC/C,MAAM,OAAO,GAAiB,IAAI,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAE3C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAA4C,IAAI,CAAC,CAAC;gBAEpF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACtD,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;iBACrD;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACzB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;iBAChC;aACD;YAED,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjE;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACO,sBAAsB,CAAC,cAAsB,EAAE,SAAiB;QACzE,IAAI,cAAc,GAAG,SAAS,EAAE;YAC/B,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBACnC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvB;aACD;SACD;aAAM,IAAI,cAAc,GAAG,SAAS,EAAE;YACtC,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAChD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;oBACtC,GAAG,EAAE,GAAG,EAAE;wBACT,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;oBACD,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBAClB,CAAC,CAAC;aACH;SACD;IACF,CAAC;CACD;AA3XD,oCA2XC"}
1
+ {"version":3,"file":"HTMLSelectElement.js","sourceRoot":"","sources":["../../../src/nodes/html-select-element/HTMLSelectElement.ts"],"names":[],"mappings":"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"}
@@ -45,18 +45,11 @@ export default class SVGElement extends Element implements ISVGElement {
45
45
  */
46
46
  get style(): CSSStyleDeclaration;
47
47
  /**
48
- * The setAttributeNode() method adds a new Attr node to the specified element.
49
- *
50
48
  * @override
51
- * @param attribute Attribute.
52
- * @returns Replaced attribute.
53
49
  */
54
50
  setAttributeNode(attribute: IAttr): IAttr;
55
51
  /**
56
- * Removes an Attr node.
57
- *
58
52
  * @override
59
- * @param attribute Attribute.
60
53
  */
61
- removeAttributeNode(attribute: IAttr): void;
54
+ removeAttributeNode(attribute: IAttr): IAttr;
62
55
  }
@@ -71,11 +71,7 @@ class SVGElement extends Element_1.default {
71
71
  return this._style;
72
72
  }
73
73
  /**
74
- * The setAttributeNode() method adds a new Attr node to the specified element.
75
- *
76
74
  * @override
77
- * @param attribute Attribute.
78
- * @returns Replaced attribute.
79
75
  */
80
76
  setAttributeNode(attribute) {
81
77
  const replacedAttribute = super.setAttributeNode(attribute);
@@ -85,16 +81,14 @@ class SVGElement extends Element_1.default {
85
81
  return replacedAttribute;
86
82
  }
87
83
  /**
88
- * Removes an Attr node.
89
- *
90
84
  * @override
91
- * @param attribute Attribute.
92
85
  */
93
86
  removeAttributeNode(attribute) {
94
87
  super.removeAttributeNode(attribute);
95
88
  if (attribute.name === 'style' && this._style) {
96
89
  this._style.cssText = '';
97
90
  }
91
+ return attribute;
98
92
  }
99
93
  }
100
94
  exports.default = SVGElement;
@@ -1 +1 @@
1
- {"version":3,"file":"SVGElement.js","sourceRoot":"","sources":["../../../src/nodes/svg-element/SVGElement.ts"],"names":[],"mappings":";;;;;AAAA,oGAA4E;AAC5E,iEAAyC;AAMzC;;;;;GAKG;AACH,MAAqB,UAAW,SAAQ,iBAAO;IAA/C;;QACC,SAAS;QACF,YAAO,GAAkC,IAAI,CAAC;QAC9C,YAAO,GAAkC,IAAI,CAAC;QAC9C,WAAM,GAAkC,IAAI,CAAC;QAC7C,aAAQ,GAAkC,IAAI,CAAC;QAC/C,aAAQ,GAAkC,IAAI,CAAC;QAC/C,aAAQ,GAAkC,IAAI,CAAC;QAE9C,WAAM,GAAwB,IAAI,CAAC;IAmF5C,CAAC;IAjFA;;;;OAIG;IACH,IAAW,eAAe;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAW,eAAe;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBAChC,OAAuB,MAAM,CAAC;aAC9B;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAW,OAAO;QACjB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACjD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;aAClE;SACD;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,6BAAmB,CAAC,IAAI,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,gBAAgB,CAAC,SAAgB;QACvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;SACtC;QAED,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,SAAgB;QAC1C,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;SACzB;IACF,CAAC;CACD;AA5FD,6BA4FC"}
1
+ {"version":3,"file":"SVGElement.js","sourceRoot":"","sources":["../../../src/nodes/svg-element/SVGElement.ts"],"names":[],"mappings":";;;;;AAAA,oGAA4E;AAC5E,iEAAyC;AAMzC;;;;;GAKG;AACH,MAAqB,UAAW,SAAQ,iBAAO;IAA/C;;QACC,SAAS;QACF,YAAO,GAAkC,IAAI,CAAC;QAC9C,YAAO,GAAkC,IAAI,CAAC;QAC9C,WAAM,GAAkC,IAAI,CAAC;QAC7C,aAAQ,GAAkC,IAAI,CAAC;QAC/C,aAAQ,GAAkC,IAAI,CAAC;QAC/C,aAAQ,GAAkC,IAAI,CAAC;QAE9C,WAAM,GAAwB,IAAI,CAAC;IA8E5C,CAAC;IA5EA;;;;OAIG;IACH,IAAW,eAAe;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAW,eAAe;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBAChC,OAAuB,MAAM,CAAC;aAC9B;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAW,OAAO;QACjB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACjD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;aAClE;SACD;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,6BAAmB,CAAC,IAAI,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,SAAgB;QACvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;SACtC;QAED,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,SAAgB;QAC1C,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;SACzB;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;CACD;AAvFD,6BAuFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "7.6.3",
3
+ "version": "7.6.5",
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": "32468a913ea021351a6489ce51d710ee70f53ce7"
78
+ "gitHead": "d58adfe2717c50e042bf7f9d3e4d2fc5ce83c6b3"
79
79
  }
@@ -77,21 +77,17 @@ export default abstract class AbstractCSSStyleDeclaration {
77
77
 
78
78
  if (this._ownerElement) {
79
79
  const style = new CSSStyleDeclarationPropertyManager({ cssText });
80
- if (!style.size()) {
81
- delete this._ownerElement['_attributes']['style'];
82
- } else {
83
- if (!this._ownerElement['_attributes']['style']) {
84
- Attr._ownerDocument = this._ownerElement.ownerDocument;
85
- this._ownerElement['_attributes']['style'] = new Attr();
86
- this._ownerElement['_attributes']['style'].name = 'style';
87
- }
88
-
89
- if (this._ownerElement.isConnected) {
90
- this._ownerElement.ownerDocument['_cacheID']++;
91
- }
80
+ if (!this._ownerElement['_attributes']['style']) {
81
+ Attr._ownerDocument = this._ownerElement.ownerDocument;
82
+ this._ownerElement['_attributes']['style'] = new Attr();
83
+ this._ownerElement['_attributes']['style'].name = 'style';
84
+ }
92
85
 
93
- this._ownerElement['_attributes']['style'].value = style.toString();
86
+ if (this._ownerElement.isConnected) {
87
+ this._ownerElement.ownerDocument['_cacheID']++;
94
88
  }
89
+
90
+ this._ownerElement['_attributes']['style'].value = style.toString();
95
91
  } else {
96
92
  this._style = new CSSStyleDeclarationPropertyManager({ cssText });
97
93
  }
@@ -919,8 +919,17 @@ export default class Element extends Node implements IElement {
919
919
  * Removes an Attr node.
920
920
  *
921
921
  * @param attribute Attribute.
922
+ * @returns Removed attribute.
922
923
  */
923
- public removeAttributeNode(attribute: IAttr): void {
924
+ public removeAttributeNode(attribute: IAttr): IAttr {
925
+ const removedAttribute = this._attributes[attribute.name];
926
+
927
+ if (removedAttribute !== attribute) {
928
+ throw new DOMException(
929
+ `Failed to execute 'removeAttributeNode' on 'Element': The node provided is owned by another element.`
930
+ );
931
+ }
932
+
924
933
  delete this._attributes[attribute.name];
925
934
 
926
935
  if (this.isConnected) {
@@ -954,15 +963,18 @@ export default class Element extends Node implements IElement {
954
963
  }
955
964
  }
956
965
  }
966
+
967
+ return attribute;
957
968
  }
958
969
 
959
970
  /**
960
971
  * Removes an Attr node.
961
972
  *
962
973
  * @param attribute Attribute.
974
+ * @returns Removed attribute.
963
975
  */
964
- public removeAttributeNodeNS(attribute: IAttr): void {
965
- this.removeAttributeNode(attribute);
976
+ public removeAttributeNodeNS(attribute: IAttr): IAttr {
977
+ return this.removeAttributeNode(attribute);
966
978
  }
967
979
 
968
980
  /**
@@ -260,15 +260,17 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
260
260
  * Removes an Attr node.
261
261
  *
262
262
  * @param attribute Attribute.
263
+ * @returns Removed attribute.
263
264
  */
264
- removeAttributeNode(attribute: IAttr): void;
265
+ removeAttributeNode(attribute: IAttr): IAttr;
265
266
 
266
267
  /**
267
268
  * Removes an Attr node.
268
269
  *
269
270
  * @param attribute Attribute.
271
+ * @returns Removed attribute.
270
272
  */
271
- removeAttributeNodeNS(attribute: IAttr): void;
273
+ removeAttributeNodeNS(attribute: IAttr): IAttr;
272
274
 
273
275
  /**
274
276
  * Clones a node.
@@ -200,6 +200,16 @@ export default class HTMLElement extends Element implements IHTMLElement {
200
200
  return this._style;
201
201
  }
202
202
 
203
+ /**
204
+ * Sets style.
205
+ *
206
+ * @param cssText Style as text.
207
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style#setting_styles
208
+ */
209
+ public set style(cssText: string | CSSStyleDeclaration) {
210
+ this.style.cssText = typeof cssText === 'string' ? <string>cssText : '';
211
+ }
212
+
203
213
  /**
204
214
  * Returns data set.
205
215
  *
@@ -411,11 +421,7 @@ export default class HTMLElement extends Element implements IHTMLElement {
411
421
  }
412
422
 
413
423
  /**
414
- * The setAttributeNode() method adds a new Attr node to the specified element.
415
- *
416
424
  * @override
417
- * @param attribute Attribute.
418
- * @returns Replaced attribute.
419
425
  */
420
426
  public setAttributeNode(attribute: IAttr): IAttr {
421
427
  const replacedAttribute = super.setAttributeNode(attribute);
@@ -428,25 +434,20 @@ export default class HTMLElement extends Element implements IHTMLElement {
428
434
  }
429
435
 
430
436
  /**
431
- * Removes an Attr node.
432
- *
433
437
  * @override
434
- * @param attribute Attribute.
435
438
  */
436
- public removeAttributeNode(attribute: IAttr): void {
439
+ public removeAttributeNode(attribute: IAttr): IAttr {
437
440
  super.removeAttributeNode(attribute);
438
441
 
439
442
  if (attribute.name === 'style' && this._style) {
440
443
  this._style.cssText = '';
441
444
  }
445
+
446
+ return attribute;
442
447
  }
443
448
 
444
449
  /**
445
- * Clones a node.
446
- *
447
450
  * @override
448
- * @param [deep=false] "true" to clone deep.
449
- * @returns Cloned node.
450
451
  */
451
452
  public cloneNode(deep = false): IHTMLElement {
452
453
  const clone = <HTMLElement>super.cloneNode(deep);
@@ -9,7 +9,6 @@ import IElement from '../element/IElement';
9
9
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.
10
10
  */
11
11
  export default interface IHTMLElement extends IElement {
12
- style: CSSStyleDeclaration;
13
12
  dataset: { [key: string]: string };
14
13
  tabIndex: number;
15
14
  offsetHeight: number;
@@ -48,6 +47,9 @@ export default interface IHTMLElement extends IElement {
48
47
  ontransitionrun: (event: Event) => void | null;
49
48
  ontransitionstart: (event: Event) => void | null;
50
49
 
50
+ get style(): CSSStyleDeclaration;
51
+ set style(cssText: CSSStyleDeclaration | string);
52
+
51
53
  /**
52
54
  * Triggers a click event.
53
55
  */
@@ -1,7 +1,8 @@
1
+ import IAttr from '../attr/IAttr';
1
2
  import HTMLElement from '../html-element/HTMLElement';
2
3
  import IHTMLElement from '../html-element/IHTMLElement';
3
4
  import IHTMLFormElement from '../html-form-element/IHTMLFormElement';
4
- import IHTMLSelectElement from '../html-select-element/IHTMLSelectElement';
5
+ import HTMLSelectElement from '../html-select-element/HTMLSelectElement';
5
6
  import IHTMLOptionElement from './IHTMLOptionElement';
6
7
 
7
8
  /**
@@ -12,6 +13,8 @@ import IHTMLOptionElement from './IHTMLOptionElement';
12
13
  */
13
14
  export default class HTMLOptionElement extends HTMLElement implements IHTMLOptionElement {
14
15
  public _index: number;
16
+ public _selectedness = false;
17
+ public _dirtyness = false;
15
18
 
16
19
  /**
17
20
  * Returns inner text, which is the rendered appearance of text.
@@ -59,20 +62,7 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
59
62
  * @returns Selected.
60
63
  */
61
64
  public get selected(): boolean {
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;
65
+ return this._selectedness;
76
66
  }
77
67
 
78
68
  /**
@@ -81,26 +71,13 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
81
71
  * @param selected Selected.
82
72
  */
83
73
  public set selected(selected: boolean) {
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
+ const selectElement = this._getSelectElement();
75
+
76
+ this._dirtyness = true;
77
+ this._selectedness = Boolean(selected);
78
+
79
+ if (selectElement) {
80
+ selectElement._resetOptionSelectednes(this._selectedness ? this : null);
104
81
  }
105
82
  }
106
83
 
@@ -143,4 +120,61 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
143
120
  public set value(value: string) {
144
121
  this.setAttributeNS(null, 'value', value);
145
122
  }
123
+
124
+ /**
125
+ * @override
126
+ */
127
+ public setAttributeNode(attribute: IAttr): IAttr {
128
+ const replacedAttribute = super.setAttributeNode(attribute);
129
+
130
+ if (
131
+ !this._dirtyness &&
132
+ attribute.name === 'selected' &&
133
+ replacedAttribute?.value !== attribute.value
134
+ ) {
135
+ const selectElement = this._getSelectElement();
136
+
137
+ this._selectedness = true;
138
+
139
+ if (selectElement) {
140
+ selectElement._resetOptionSelectednes(this);
141
+ }
142
+ }
143
+
144
+ return replacedAttribute;
145
+ }
146
+
147
+ /**
148
+ * @override
149
+ */
150
+ public removeAttributeNode(attribute: IAttr): IAttr {
151
+ super.removeAttributeNode(attribute);
152
+
153
+ if (!this._dirtyness && attribute.name === 'selected') {
154
+ const selectElement = this._getSelectElement();
155
+
156
+ this._selectedness = false;
157
+
158
+ if (selectElement) {
159
+ selectElement._resetOptionSelectednes();
160
+ }
161
+ }
162
+
163
+ return attribute;
164
+ }
165
+
166
+ /**
167
+ * Returns select element.
168
+ *
169
+ * @returns Select element.
170
+ */
171
+ private _getSelectElement(): HTMLSelectElement {
172
+ const parentNode = <HTMLSelectElement>this.parentNode;
173
+ if (parentNode?.tagName === 'SELECT') {
174
+ return <HTMLSelectElement>parentNode;
175
+ }
176
+ if ((<HTMLSelectElement>parentNode?.parentNode)?.tagName === 'SELECT') {
177
+ return <HTMLSelectElement>parentNode.parentNode;
178
+ }
179
+ }
146
180
  }
@@ -16,7 +16,6 @@ export default class HTMLOptionsCollection
16
16
  implements IHTMLOptionsCollection
17
17
  {
18
18
  private _selectElement: IHTMLSelectElement;
19
- private _selectedIndex = -1;
20
19
 
21
20
  /**
22
21
  *
@@ -34,7 +33,7 @@ export default class HTMLOptionsCollection
34
33
  * @returns SelectedIndex.
35
34
  */
36
35
  public get selectedIndex(): number {
37
- return this._selectedIndex;
36
+ return this._selectElement.selectedIndex;
38
37
  }
39
38
 
40
39
  /**
@@ -43,13 +42,7 @@ export default class HTMLOptionsCollection
43
42
  * @param selectedIndex SelectedIndex.
44
43
  */
45
44
  public set selectedIndex(selectedIndex: number) {
46
- if (typeof selectedIndex === 'number' && !isNaN(selectedIndex)) {
47
- if (selectedIndex >= 0 && selectedIndex < this.length) {
48
- this._selectedIndex = selectedIndex;
49
- } else {
50
- this._selectedIndex = -1;
51
- }
52
- }
45
+ this._selectElement.selectedIndex = selectedIndex;
53
46
  }
54
47
 
55
48
  /**