happy-dom 7.6.4 → 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 (27) hide show
  1. package/lib/nodes/element/Element.d.ts +4 -2
  2. package/lib/nodes/element/Element.js +8 -1
  3. package/lib/nodes/element/Element.js.map +1 -1
  4. package/lib/nodes/element/IElement.d.ts +4 -2
  5. package/lib/nodes/html-element/HTMLElement.d.ts +1 -12
  6. package/lib/nodes/html-element/HTMLElement.js +1 -11
  7. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  8. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +17 -0
  9. package/lib/nodes/html-option-element/HTMLOptionElement.js +55 -32
  10. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  11. package/lib/nodes/html-option-element/HTMLOptionsCollection.d.ts +0 -1
  12. package/lib/nodes/html-option-element/HTMLOptionsCollection.js +2 -10
  13. package/lib/nodes/html-option-element/HTMLOptionsCollection.js.map +1 -1
  14. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +18 -2
  15. package/lib/nodes/html-select-element/HTMLSelectElement.js +99 -22
  16. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  17. package/lib/nodes/svg-element/SVGElement.d.ts +1 -8
  18. package/lib/nodes/svg-element/SVGElement.js +1 -7
  19. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/nodes/element/Element.ts +15 -3
  22. package/src/nodes/element/IElement.ts +4 -2
  23. package/src/nodes/html-element/HTMLElement.ts +3 -12
  24. package/src/nodes/html-option-element/HTMLOptionElement.ts +69 -35
  25. package/src/nodes/html-option-element/HTMLOptionsCollection.ts +2 -9
  26. package/src/nodes/html-select-element/HTMLSelectElement.ts +109 -27
  27. 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":"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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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"}
@@ -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.4",
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": "61c41d2f47066eff3f3cc52e38cd496fe1570b3f"
78
+ "gitHead": "d58adfe2717c50e042bf7f9d3e4d2fc5ce83c6b3"
79
79
  }
@@ -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.
@@ -421,11 +421,7 @@ export default class HTMLElement extends Element implements IHTMLElement {
421
421
  }
422
422
 
423
423
  /**
424
- * The setAttributeNode() method adds a new Attr node to the specified element.
425
- *
426
424
  * @override
427
- * @param attribute Attribute.
428
- * @returns Replaced attribute.
429
425
  */
430
426
  public setAttributeNode(attribute: IAttr): IAttr {
431
427
  const replacedAttribute = super.setAttributeNode(attribute);
@@ -438,25 +434,20 @@ export default class HTMLElement extends Element implements IHTMLElement {
438
434
  }
439
435
 
440
436
  /**
441
- * Removes an Attr node.
442
- *
443
437
  * @override
444
- * @param attribute Attribute.
445
438
  */
446
- public removeAttributeNode(attribute: IAttr): void {
439
+ public removeAttributeNode(attribute: IAttr): IAttr {
447
440
  super.removeAttributeNode(attribute);
448
441
 
449
442
  if (attribute.name === 'style' && this._style) {
450
443
  this._style.cssText = '';
451
444
  }
445
+
446
+ return attribute;
452
447
  }
453
448
 
454
449
  /**
455
- * Clones a node.
456
- *
457
450
  * @override
458
- * @param [deep=false] "true" to clone deep.
459
- * @returns Cloned node.
460
451
  */
461
452
  public cloneNode(deep = false): IHTMLElement {
462
453
  const clone = <HTMLElement>super.cloneNode(deep);
@@ -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
  /**