happy-dom 17.1.7 → 17.1.9

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.
Files changed (231) hide show
  1. package/cjs/PropertySymbol.cjs +2 -1
  2. package/cjs/PropertySymbol.cjs.map +1 -1
  3. package/cjs/PropertySymbol.d.ts +1 -0
  4. package/cjs/PropertySymbol.d.ts.map +1 -1
  5. package/cjs/event/EventTarget.cjs +64 -64
  6. package/cjs/event/EventTarget.cjs.map +1 -1
  7. package/cjs/event/EventTarget.d.ts.map +1 -1
  8. package/cjs/nodes/document/Document.cjs +693 -109
  9. package/cjs/nodes/document/Document.cjs.map +1 -1
  10. package/cjs/nodes/document/Document.d.ts +231 -109
  11. package/cjs/nodes/document/Document.d.ts.map +1 -1
  12. package/cjs/nodes/element/Element.cjs +47 -69
  13. package/cjs/nodes/element/Element.cjs.map +1 -1
  14. package/cjs/nodes/element/Element.d.ts +15 -40
  15. package/cjs/nodes/element/Element.d.ts.map +1 -1
  16. package/cjs/nodes/element/ElementEventAttributeUtility.cjs +94 -0
  17. package/cjs/nodes/element/ElementEventAttributeUtility.cjs.map +1 -0
  18. package/cjs/nodes/element/ElementEventAttributeUtility.d.ts +16 -0
  19. package/cjs/nodes/element/ElementEventAttributeUtility.d.ts.map +1 -0
  20. package/cjs/nodes/html-body-element/HTMLBodyElement.cjs +134 -18
  21. package/cjs/nodes/html-body-element/HTMLBodyElement.cjs.map +1 -1
  22. package/cjs/nodes/html-body-element/HTMLBodyElement.d.ts +36 -18
  23. package/cjs/nodes/html-body-element/HTMLBodyElement.d.ts.map +1 -1
  24. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs +33 -5
  25. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs.map +1 -1
  26. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.d.ts +10 -5
  27. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  28. package/cjs/nodes/html-details-element/HTMLDetailsElement.cjs +9 -1
  29. package/cjs/nodes/html-details-element/HTMLDetailsElement.cjs.map +1 -1
  30. package/cjs/nodes/html-details-element/HTMLDetailsElement.d.ts +2 -1
  31. package/cjs/nodes/html-details-element/HTMLDetailsElement.d.ts.map +1 -1
  32. package/cjs/nodes/html-dialog-element/HTMLDialogElement.cjs +15 -2
  33. package/cjs/nodes/html-dialog-element/HTMLDialogElement.cjs.map +1 -1
  34. package/cjs/nodes/html-dialog-element/HTMLDialogElement.d.ts +4 -2
  35. package/cjs/nodes/html-dialog-element/HTMLDialogElement.d.ts.map +1 -1
  36. package/cjs/nodes/html-element/HTMLElement.cjs +328 -26
  37. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  38. package/cjs/nodes/html-element/HTMLElement.d.ts +108 -25
  39. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  40. package/cjs/nodes/html-form-element/HTMLFormElement.cjs +22 -4
  41. package/cjs/nodes/html-form-element/HTMLFormElement.cjs.map +1 -1
  42. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts +6 -3
  43. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  44. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +16 -3
  45. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  46. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +4 -2
  47. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  48. package/cjs/nodes/html-input-element/HTMLInputElement.cjs +22 -4
  49. package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
  50. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +6 -3
  51. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  52. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +2 -1
  53. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
  54. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  55. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +16 -3
  56. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  57. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +4 -3
  58. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  59. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +142 -24
  60. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
  61. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts +46 -23
  62. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  63. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +16 -3
  64. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  65. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +4 -3
  66. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  67. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +16 -3
  68. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
  69. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +4 -2
  70. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  71. package/cjs/nodes/html-slot-element/HTMLSlotElement.cjs +9 -1
  72. package/cjs/nodes/html-slot-element/HTMLSlotElement.cjs.map +1 -1
  73. package/cjs/nodes/html-slot-element/HTMLSlotElement.d.ts +2 -1
  74. package/cjs/nodes/html-slot-element/HTMLSlotElement.d.ts.map +1 -1
  75. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +16 -3
  76. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
  77. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +4 -2
  78. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  79. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs +9 -1
  80. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs.map +1 -1
  81. package/cjs/nodes/html-track-element/HTMLTrackElement.d.ts +3 -1
  82. package/cjs/nodes/html-track-element/HTMLTrackElement.d.ts.map +1 -1
  83. package/cjs/nodes/shadow-root/ShadowRoot.cjs +10 -2
  84. package/cjs/nodes/shadow-root/ShadowRoot.cjs.map +1 -1
  85. package/cjs/nodes/shadow-root/ShadowRoot.d.ts +3 -1
  86. package/cjs/nodes/shadow-root/ShadowRoot.d.ts.map +1 -1
  87. package/cjs/nodes/svg-animation-element/SVGAnimationElement.cjs +21 -3
  88. package/cjs/nodes/svg-animation-element/SVGAnimationElement.cjs.map +1 -1
  89. package/cjs/nodes/svg-animation-element/SVGAnimationElement.d.ts +6 -3
  90. package/cjs/nodes/svg-animation-element/SVGAnimationElement.d.ts.map +1 -1
  91. package/cjs/nodes/svg-element/SVGElement.cjs +538 -7
  92. package/cjs/nodes/svg-element/SVGElement.cjs.map +1 -1
  93. package/cjs/nodes/svg-element/SVGElement.d.ts +178 -6
  94. package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
  95. package/cjs/nodes/svg-graphics-element/SVGGraphicsElement.cjs +21 -3
  96. package/cjs/nodes/svg-graphics-element/SVGGraphicsElement.cjs.map +1 -1
  97. package/cjs/nodes/svg-graphics-element/SVGGraphicsElement.d.ts +6 -3
  98. package/cjs/nodes/svg-graphics-element/SVGGraphicsElement.d.ts.map +1 -1
  99. package/cjs/nodes/svg-svg-element/SVGSVGElement.cjs +111 -18
  100. package/cjs/nodes/svg-svg-element/SVGSVGElement.cjs.map +1 -1
  101. package/cjs/nodes/svg-svg-element/SVGSVGElement.d.ts +36 -18
  102. package/cjs/nodes/svg-svg-element/SVGSVGElement.d.ts.map +1 -1
  103. package/lib/PropertySymbol.d.ts +1 -0
  104. package/lib/PropertySymbol.d.ts.map +1 -1
  105. package/lib/PropertySymbol.js +1 -0
  106. package/lib/PropertySymbol.js.map +1 -1
  107. package/lib/event/EventTarget.d.ts.map +1 -1
  108. package/lib/event/EventTarget.js +64 -64
  109. package/lib/event/EventTarget.js.map +1 -1
  110. package/lib/nodes/document/Document.d.ts +231 -109
  111. package/lib/nodes/document/Document.d.ts.map +1 -1
  112. package/lib/nodes/document/Document.js +693 -109
  113. package/lib/nodes/document/Document.js.map +1 -1
  114. package/lib/nodes/element/Element.d.ts +15 -40
  115. package/lib/nodes/element/Element.d.ts.map +1 -1
  116. package/lib/nodes/element/Element.js +47 -69
  117. package/lib/nodes/element/Element.js.map +1 -1
  118. package/lib/nodes/element/ElementEventAttributeUtility.d.ts +16 -0
  119. package/lib/nodes/element/ElementEventAttributeUtility.d.ts.map +1 -0
  120. package/lib/nodes/element/ElementEventAttributeUtility.js +65 -0
  121. package/lib/nodes/element/ElementEventAttributeUtility.js.map +1 -0
  122. package/lib/nodes/html-body-element/HTMLBodyElement.d.ts +36 -18
  123. package/lib/nodes/html-body-element/HTMLBodyElement.d.ts.map +1 -1
  124. package/lib/nodes/html-body-element/HTMLBodyElement.js +111 -18
  125. package/lib/nodes/html-body-element/HTMLBodyElement.js.map +1 -1
  126. package/lib/nodes/html-canvas-element/HTMLCanvasElement.d.ts +10 -5
  127. package/lib/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  128. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js +33 -5
  129. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js.map +1 -1
  130. package/lib/nodes/html-details-element/HTMLDetailsElement.d.ts +2 -1
  131. package/lib/nodes/html-details-element/HTMLDetailsElement.d.ts.map +1 -1
  132. package/lib/nodes/html-details-element/HTMLDetailsElement.js +9 -1
  133. package/lib/nodes/html-details-element/HTMLDetailsElement.js.map +1 -1
  134. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +4 -2
  135. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts.map +1 -1
  136. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +15 -2
  137. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
  138. package/lib/nodes/html-element/HTMLElement.d.ts +108 -25
  139. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  140. package/lib/nodes/html-element/HTMLElement.js +328 -26
  141. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  142. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +6 -3
  143. package/lib/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  144. package/lib/nodes/html-form-element/HTMLFormElement.js +22 -4
  145. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  146. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +4 -2
  147. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  148. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +16 -3
  149. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  150. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +6 -3
  151. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  152. package/lib/nodes/html-input-element/HTMLInputElement.js +22 -4
  153. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  154. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  155. package/lib/nodes/html-label-element/HTMLLabelElement.js +2 -1
  156. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  157. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +4 -3
  158. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  159. package/lib/nodes/html-link-element/HTMLLinkElement.js +16 -3
  160. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  161. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +46 -23
  162. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  163. package/lib/nodes/html-media-element/HTMLMediaElement.js +142 -24
  164. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  165. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +4 -3
  166. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  167. package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -3
  168. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  169. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +4 -2
  170. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  171. package/lib/nodes/html-select-element/HTMLSelectElement.js +16 -3
  172. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  173. package/lib/nodes/html-slot-element/HTMLSlotElement.d.ts +2 -1
  174. package/lib/nodes/html-slot-element/HTMLSlotElement.d.ts.map +1 -1
  175. package/lib/nodes/html-slot-element/HTMLSlotElement.js +9 -1
  176. package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
  177. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +4 -2
  178. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  179. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +16 -3
  180. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  181. package/lib/nodes/html-track-element/HTMLTrackElement.d.ts +3 -1
  182. package/lib/nodes/html-track-element/HTMLTrackElement.d.ts.map +1 -1
  183. package/lib/nodes/html-track-element/HTMLTrackElement.js +9 -1
  184. package/lib/nodes/html-track-element/HTMLTrackElement.js.map +1 -1
  185. package/lib/nodes/shadow-root/ShadowRoot.d.ts +3 -1
  186. package/lib/nodes/shadow-root/ShadowRoot.d.ts.map +1 -1
  187. package/lib/nodes/shadow-root/ShadowRoot.js +10 -2
  188. package/lib/nodes/shadow-root/ShadowRoot.js.map +1 -1
  189. package/lib/nodes/svg-animation-element/SVGAnimationElement.d.ts +6 -3
  190. package/lib/nodes/svg-animation-element/SVGAnimationElement.d.ts.map +1 -1
  191. package/lib/nodes/svg-animation-element/SVGAnimationElement.js +21 -3
  192. package/lib/nodes/svg-animation-element/SVGAnimationElement.js.map +1 -1
  193. package/lib/nodes/svg-element/SVGElement.d.ts +178 -6
  194. package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
  195. package/lib/nodes/svg-element/SVGElement.js +538 -7
  196. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  197. package/lib/nodes/svg-graphics-element/SVGGraphicsElement.d.ts +6 -3
  198. package/lib/nodes/svg-graphics-element/SVGGraphicsElement.d.ts.map +1 -1
  199. package/lib/nodes/svg-graphics-element/SVGGraphicsElement.js +21 -3
  200. package/lib/nodes/svg-graphics-element/SVGGraphicsElement.js.map +1 -1
  201. package/lib/nodes/svg-svg-element/SVGSVGElement.d.ts +36 -18
  202. package/lib/nodes/svg-svg-element/SVGSVGElement.d.ts.map +1 -1
  203. package/lib/nodes/svg-svg-element/SVGSVGElement.js +111 -18
  204. package/lib/nodes/svg-svg-element/SVGSVGElement.js.map +1 -1
  205. package/package.json +1 -1
  206. package/src/PropertySymbol.ts +1 -0
  207. package/src/event/EventTarget.ts +69 -70
  208. package/src/nodes/document/Document.ts +927 -109
  209. package/src/nodes/element/Element.ts +67 -79
  210. package/src/nodes/element/ElementEventAttributeUtility.ts +89 -0
  211. package/src/nodes/html-body-element/HTMLBodyElement.ts +151 -18
  212. package/src/nodes/html-canvas-element/HTMLCanvasElement.ts +45 -5
  213. package/src/nodes/html-details-element/HTMLDetailsElement.ts +13 -1
  214. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +21 -2
  215. package/src/nodes/html-element/HTMLElement.ts +439 -27
  216. package/src/nodes/html-form-element/HTMLFormElement.ts +30 -4
  217. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +23 -4
  218. package/src/nodes/html-input-element/HTMLInputElement.ts +31 -5
  219. package/src/nodes/html-label-element/HTMLLabelElement.ts +2 -1
  220. package/src/nodes/html-link-element/HTMLLinkElement.ts +23 -5
  221. package/src/nodes/html-media-element/HTMLMediaElement.ts +191 -25
  222. package/src/nodes/html-script-element/HTMLScriptElement.ts +23 -5
  223. package/src/nodes/html-select-element/HTMLSelectElement.ts +23 -4
  224. package/src/nodes/html-slot-element/HTMLSlotElement.ts +13 -1
  225. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +23 -4
  226. package/src/nodes/html-track-element/HTMLTrackElement.ts +14 -1
  227. package/src/nodes/shadow-root/ShadowRoot.ts +15 -3
  228. package/src/nodes/svg-animation-element/SVGAnimationElement.ts +29 -3
  229. package/src/nodes/svg-element/SVGElement.ts +719 -8
  230. package/src/nodes/svg-graphics-element/SVGGraphicsElement.ts +29 -3
  231. package/src/nodes/svg-svg-element/SVGSVGElement.ts +149 -18
@@ -7,6 +7,7 @@ import Event from '../../event/Event.js';
7
7
  import HTMLElementUtility from './HTMLElementUtility.js';
8
8
  import DOMStringMap from '../../dom/DOMStringMap.js';
9
9
  import Attr from '../attr/Attr.js';
10
+ import ElementEventAttributeUtility from '../element/ElementEventAttributeUtility.js';
10
11
 
11
12
  /**
12
13
  * HTML Element.
@@ -19,33 +20,6 @@ export default class HTMLElement extends Element {
19
20
  public declare cloneNode: (deep?: boolean) => HTMLElement;
20
21
  public static observedAttributes?: string[];
21
22
 
22
- // Events
23
- public oncopy: ((event: Event) => void) | null = null;
24
- public oncut: ((event: Event) => void) | null = null;
25
- public onpaste: ((event: Event) => void) | null = null;
26
- public oninvalid: ((event: Event) => void) | null = null;
27
- public onanimationcancel: ((event: Event) => void) | null = null;
28
- public onanimationend: ((event: Event) => void) | null = null;
29
- public onanimationiteration: ((event: Event) => void) | null = null;
30
- public onanimationstart: ((event: Event) => void) | null = null;
31
- public onbeforeinput: ((event: Event) => void) | null = null;
32
- public oninput: ((event: Event) => void) | null = null;
33
- public onchange: ((event: Event) => void) | null = null;
34
- public ongotpointercapture: ((event: Event) => void) | null = null;
35
- public onlostpointercapture: ((event: Event) => void) | null = null;
36
- public onpointercancel: ((event: Event) => void) | null = null;
37
- public onpointerdown: ((event: Event) => void) | null = null;
38
- public onpointerenter: ((event: Event) => void) | null = null;
39
- public onpointerleave: ((event: Event) => void) | null = null;
40
- public onpointermove: ((event: Event) => void) | null = null;
41
- public onpointerout: ((event: Event) => void) | null = null;
42
- public onpointerover: ((event: Event) => void) | null = null;
43
- public onpointerup: ((event: Event) => void) | null = null;
44
- public ontransitioncancel: ((event: Event) => void) | null = null;
45
- public ontransitionend: ((event: Event) => void) | null = null;
46
- public ontransitionrun: ((event: Event) => void) | null = null;
47
- public ontransitionstart: ((event: Event) => void) | null = null;
48
-
49
23
  // Internal properties
50
24
  public [PropertySymbol.accessKey] = '';
51
25
  public [PropertySymbol.contentEditable] = 'inherit';
@@ -64,6 +38,444 @@ export default class HTMLElement extends Element {
64
38
  // Private properties
65
39
  #customElementDefineCallback: () => void = null;
66
40
 
41
+ // Events
42
+
43
+ /* eslint-disable jsdoc/require-jsdoc */
44
+
45
+ public get oncancel(): ((event: Event) => void) | null {
46
+ return ElementEventAttributeUtility.getEventListener(this, 'oncancel');
47
+ }
48
+
49
+ public set oncancel(value: ((event: Event) => void) | null) {
50
+ this[PropertySymbol.propertyEventListeners].set('oncancel', value);
51
+ }
52
+
53
+ public get onerror(): ((event: Event) => void) | null {
54
+ return ElementEventAttributeUtility.getEventListener(this, 'onerror');
55
+ }
56
+
57
+ public set onerror(value: ((event: Event) => void) | null) {
58
+ this[PropertySymbol.propertyEventListeners].set('onerror', value);
59
+ }
60
+
61
+ public get onscroll(): ((event: Event) => void) | null {
62
+ return ElementEventAttributeUtility.getEventListener(this, 'onscroll');
63
+ }
64
+
65
+ public set onscroll(value: ((event: Event) => void) | null) {
66
+ this[PropertySymbol.propertyEventListeners].set('onscroll', value);
67
+ }
68
+
69
+ public get onselect(): ((event: Event) => void) | null {
70
+ return ElementEventAttributeUtility.getEventListener(this, 'onselect');
71
+ }
72
+
73
+ public set onselect(value: ((event: Event) => void) | null) {
74
+ this[PropertySymbol.propertyEventListeners].set('onselect', value);
75
+ }
76
+
77
+ public get onwheel(): ((event: Event) => void) | null {
78
+ return ElementEventAttributeUtility.getEventListener(this, 'onwheel');
79
+ }
80
+
81
+ public set onwheel(value: ((event: Event) => void) | null) {
82
+ this[PropertySymbol.propertyEventListeners].set('onwheel', value);
83
+ }
84
+
85
+ public get oncopy(): ((event: Event) => void) | null {
86
+ return ElementEventAttributeUtility.getEventListener(this, 'oncopy');
87
+ }
88
+
89
+ public set oncopy(value: ((event: Event) => void) | null) {
90
+ this[PropertySymbol.propertyEventListeners].set('oncopy', value);
91
+ }
92
+
93
+ public get oncut(): ((event: Event) => void) | null {
94
+ return ElementEventAttributeUtility.getEventListener(this, 'oncut');
95
+ }
96
+
97
+ public set oncut(value: ((event: Event) => void) | null) {
98
+ this[PropertySymbol.propertyEventListeners].set('oncut', value);
99
+ }
100
+
101
+ public get onpaste(): ((event: Event) => void) | null {
102
+ return ElementEventAttributeUtility.getEventListener(this, 'onpaste');
103
+ }
104
+
105
+ public set onpaste(value: ((event: Event) => void) | null) {
106
+ this[PropertySymbol.propertyEventListeners].set('onpaste', value);
107
+ }
108
+
109
+ public get oncompositionend(): ((event: Event) => void) | null {
110
+ return ElementEventAttributeUtility.getEventListener(this, 'oncompositionend');
111
+ }
112
+
113
+ public set oncompositionend(value: ((event: Event) => void) | null) {
114
+ this[PropertySymbol.propertyEventListeners].set('oncompositionend', value);
115
+ }
116
+
117
+ public get oncompositionstart(): ((event: Event) => void) | null {
118
+ return ElementEventAttributeUtility.getEventListener(this, 'oncompositionstart');
119
+ }
120
+
121
+ public set oncompositionstart(value: ((event: Event) => void) | null) {
122
+ this[PropertySymbol.propertyEventListeners].set('oncompositionstart', value);
123
+ }
124
+
125
+ public get oncompositionupdate(): ((event: Event) => void) | null {
126
+ return ElementEventAttributeUtility.getEventListener(this, 'oncompositionupdate');
127
+ }
128
+
129
+ public set oncompositionupdate(value: ((event: Event) => void) | null) {
130
+ this[PropertySymbol.propertyEventListeners].set('oncompositionupdate', value);
131
+ }
132
+
133
+ public get onblur(): ((event: Event) => void) | null {
134
+ return ElementEventAttributeUtility.getEventListener(this, 'onblur');
135
+ }
136
+
137
+ public set onblur(value: ((event: Event) => void) | null) {
138
+ this[PropertySymbol.propertyEventListeners].set('onblur', value);
139
+ }
140
+
141
+ public get onfocus(): ((event: Event) => void) | null {
142
+ return ElementEventAttributeUtility.getEventListener(this, 'onfocus');
143
+ }
144
+
145
+ public set onfocus(value: ((event: Event) => void) | null) {
146
+ this[PropertySymbol.propertyEventListeners].set('onfocus', value);
147
+ }
148
+
149
+ public get onfocusin(): ((event: Event) => void) | null {
150
+ return ElementEventAttributeUtility.getEventListener(this, 'onfocusin');
151
+ }
152
+
153
+ public set onfocusin(value: ((event: Event) => void) | null) {
154
+ this[PropertySymbol.propertyEventListeners].set('onfocusin', value);
155
+ }
156
+
157
+ public get onfocusout(): ((event: Event) => void) | null {
158
+ return ElementEventAttributeUtility.getEventListener(this, 'onfocusout');
159
+ }
160
+
161
+ public set onfocusout(value: ((event: Event) => void) | null) {
162
+ this[PropertySymbol.propertyEventListeners].set('onfocusout', value);
163
+ }
164
+
165
+ public get onkeydown(): ((event: Event) => void) | null {
166
+ return ElementEventAttributeUtility.getEventListener(this, 'onkeydown');
167
+ }
168
+
169
+ public set onkeydown(value: ((event: Event) => void) | null) {
170
+ this[PropertySymbol.propertyEventListeners].set('onkeydown', value);
171
+ }
172
+
173
+ public get onkeyup(): ((event: Event) => void) | null {
174
+ return ElementEventAttributeUtility.getEventListener(this, 'onkeyup');
175
+ }
176
+
177
+ public set onkeyup(value: ((event: Event) => void) | null) {
178
+ this[PropertySymbol.propertyEventListeners].set('onkeyup', value);
179
+ }
180
+
181
+ public get onauxclick(): ((event: Event) => void) | null {
182
+ return ElementEventAttributeUtility.getEventListener(this, 'onauxclick');
183
+ }
184
+
185
+ public set onauxclick(value: ((event: Event) => void) | null) {
186
+ this[PropertySymbol.propertyEventListeners].set('onauxclick', value);
187
+ }
188
+
189
+ public get onclick(): ((event: Event) => void) | null {
190
+ return ElementEventAttributeUtility.getEventListener(this, 'onclick');
191
+ }
192
+
193
+ public set onclick(value: ((event: Event) => void) | null) {
194
+ this[PropertySymbol.propertyEventListeners].set('onclick', value);
195
+ }
196
+
197
+ public get oncontextmenu(): ((event: Event) => void) | null {
198
+ return ElementEventAttributeUtility.getEventListener(this, 'oncontextmenu');
199
+ }
200
+
201
+ public set oncontextmenu(value: ((event: Event) => void) | null) {
202
+ this[PropertySymbol.propertyEventListeners].set('oncontextmenu', value);
203
+ }
204
+
205
+ public get ondblclick(): ((event: Event) => void) | null {
206
+ return ElementEventAttributeUtility.getEventListener(this, 'ondblclick');
207
+ }
208
+
209
+ public set ondblclick(value: ((event: Event) => void) | null) {
210
+ this[PropertySymbol.propertyEventListeners].set('ondblclick', value);
211
+ }
212
+
213
+ public get onmousedown(): ((event: Event) => void) | null {
214
+ return ElementEventAttributeUtility.getEventListener(this, 'onmousedown');
215
+ }
216
+
217
+ public set onmousedown(value: ((event: Event) => void) | null) {
218
+ this[PropertySymbol.propertyEventListeners].set('onmousedown', value);
219
+ }
220
+
221
+ public get onmouseenter(): ((event: Event) => void) | null {
222
+ return ElementEventAttributeUtility.getEventListener(this, 'onmouseenter');
223
+ }
224
+
225
+ public set onmouseenter(value: ((event: Event) => void) | null) {
226
+ this[PropertySymbol.propertyEventListeners].set('onmouseenter', value);
227
+ }
228
+
229
+ public get onmouseleave(): ((event: Event) => void) | null {
230
+ return ElementEventAttributeUtility.getEventListener(this, 'onmouseleave');
231
+ }
232
+
233
+ public set onmouseleave(value: ((event: Event) => void) | null) {
234
+ this[PropertySymbol.propertyEventListeners].set('onmouseleave', value);
235
+ }
236
+
237
+ public get onmousemove(): ((event: Event) => void) | null {
238
+ return ElementEventAttributeUtility.getEventListener(this, 'onmousemove');
239
+ }
240
+
241
+ public set onmousemove(value: ((event: Event) => void) | null) {
242
+ this[PropertySymbol.propertyEventListeners].set('onmousemove', value);
243
+ }
244
+
245
+ public get onmouseout(): ((event: Event) => void) | null {
246
+ return ElementEventAttributeUtility.getEventListener(this, 'onmouseout');
247
+ }
248
+
249
+ public set onmouseout(value: ((event: Event) => void) | null) {
250
+ this[PropertySymbol.propertyEventListeners].set('onmouseout', value);
251
+ }
252
+
253
+ public get onmouseover(): ((event: Event) => void) | null {
254
+ return ElementEventAttributeUtility.getEventListener(this, 'onmouseover');
255
+ }
256
+
257
+ public set onmouseover(value: ((event: Event) => void) | null) {
258
+ this[PropertySymbol.propertyEventListeners].set('onmouseover', value);
259
+ }
260
+
261
+ public get onmouseup(): ((event: Event) => void) | null {
262
+ return ElementEventAttributeUtility.getEventListener(this, 'onmouseup');
263
+ }
264
+
265
+ public set onmouseup(value: ((event: Event) => void) | null) {
266
+ this[PropertySymbol.propertyEventListeners].set('onmouseup', value);
267
+ }
268
+
269
+ public get ontouchcancel(): ((event: Event) => void) | null {
270
+ return ElementEventAttributeUtility.getEventListener(this, 'ontouchcancel');
271
+ }
272
+
273
+ public set ontouchcancel(value: ((event: Event) => void) | null) {
274
+ this[PropertySymbol.propertyEventListeners].set('ontouchcancel', value);
275
+ }
276
+
277
+ public get ontouchend(): ((event: Event) => void) | null {
278
+ return ElementEventAttributeUtility.getEventListener(this, 'ontouchend');
279
+ }
280
+
281
+ public set ontouchend(value: ((event: Event) => void) | null) {
282
+ this[PropertySymbol.propertyEventListeners].set('ontouchend', value);
283
+ }
284
+
285
+ public get ontouchmove(): ((event: Event) => void) | null {
286
+ return ElementEventAttributeUtility.getEventListener(this, 'ontouchmove');
287
+ }
288
+
289
+ public set ontouchmove(value: ((event: Event) => void) | null) {
290
+ this[PropertySymbol.propertyEventListeners].set('ontouchmove', value);
291
+ }
292
+
293
+ public get ontouchstart(): ((event: Event) => void) | null {
294
+ return ElementEventAttributeUtility.getEventListener(this, 'ontouchstart');
295
+ }
296
+
297
+ public set ontouchstart(value: ((event: Event) => void) | null) {
298
+ this[PropertySymbol.propertyEventListeners].set('ontouchstart', value);
299
+ }
300
+
301
+ public get oninvalid(): ((event: Event) => void) | null {
302
+ return ElementEventAttributeUtility.getEventListener(this, 'oninvalid');
303
+ }
304
+
305
+ public set oninvalid(value: ((event: Event) => void) | null) {
306
+ this[PropertySymbol.propertyEventListeners].set('oninvalid', value);
307
+ }
308
+
309
+ public get onanimationcancel(): ((event: Event) => void) | null {
310
+ return ElementEventAttributeUtility.getEventListener(this, 'onanimationcancel');
311
+ }
312
+
313
+ public set onanimationcancel(value: ((event: Event) => void) | null) {
314
+ this[PropertySymbol.propertyEventListeners].set('onanimationcancel', value);
315
+ }
316
+
317
+ public get onanimationend(): ((event: Event) => void) | null {
318
+ return ElementEventAttributeUtility.getEventListener(this, 'onanimationend');
319
+ }
320
+
321
+ public set onanimationend(value: ((event: Event) => void) | null) {
322
+ this[PropertySymbol.propertyEventListeners].set('onanimationend', value);
323
+ }
324
+
325
+ public get onanimationiteration(): ((event: Event) => void) | null {
326
+ return ElementEventAttributeUtility.getEventListener(this, 'onanimationiteration');
327
+ }
328
+
329
+ public set onanimationiteration(value: ((event: Event) => void) | null) {
330
+ this[PropertySymbol.propertyEventListeners].set('onanimationiteration', value);
331
+ }
332
+
333
+ public get onanimationstart(): ((event: Event) => void) | null {
334
+ return ElementEventAttributeUtility.getEventListener(this, 'onanimationstart');
335
+ }
336
+
337
+ public set onanimationstart(value: ((event: Event) => void) | null) {
338
+ this[PropertySymbol.propertyEventListeners].set('onanimationstart', value);
339
+ }
340
+
341
+ public get onbeforeinput(): ((event: Event) => void) | null {
342
+ return ElementEventAttributeUtility.getEventListener(this, 'onbeforeinput');
343
+ }
344
+
345
+ public set onbeforeinput(value: ((event: Event) => void) | null) {
346
+ this[PropertySymbol.propertyEventListeners].set('onbeforeinput', value);
347
+ }
348
+
349
+ public get oninput(): ((event: Event) => void) | null {
350
+ return ElementEventAttributeUtility.getEventListener(this, 'oninput');
351
+ }
352
+
353
+ public set oninput(value: ((event: Event) => void) | null) {
354
+ this[PropertySymbol.propertyEventListeners].set('oninput', value);
355
+ }
356
+
357
+ public get onchange(): ((event: Event) => void) | null {
358
+ return ElementEventAttributeUtility.getEventListener(this, 'onchange');
359
+ }
360
+
361
+ public set onchange(value: ((event: Event) => void) | null) {
362
+ this[PropertySymbol.propertyEventListeners].set('onchange', value);
363
+ }
364
+
365
+ public get ongotpointercapture(): ((event: Event) => void) | null {
366
+ return ElementEventAttributeUtility.getEventListener(this, 'ongotpointercapture');
367
+ }
368
+
369
+ public set ongotpointercapture(value: ((event: Event) => void) | null) {
370
+ this[PropertySymbol.propertyEventListeners].set('ongotpointercapture', value);
371
+ }
372
+
373
+ public get onlostpointercapture(): ((event: Event) => void) | null {
374
+ return ElementEventAttributeUtility.getEventListener(this, 'onlostpointercapture');
375
+ }
376
+
377
+ public set onlostpointercapture(value: ((event: Event) => void) | null) {
378
+ this[PropertySymbol.propertyEventListeners].set('onlostpointercapture', value);
379
+ }
380
+
381
+ public get onpointercancel(): ((event: Event) => void) | null {
382
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointercancel');
383
+ }
384
+
385
+ public set onpointercancel(value: ((event: Event) => void) | null) {
386
+ this[PropertySymbol.propertyEventListeners].set('onpointercancel', value);
387
+ }
388
+
389
+ public get onpointerdown(): ((event: Event) => void) | null {
390
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerdown');
391
+ }
392
+
393
+ public set onpointerdown(value: ((event: Event) => void) | null) {
394
+ this[PropertySymbol.propertyEventListeners].set('onpointerdown', value);
395
+ }
396
+
397
+ public get onpointerenter(): ((event: Event) => void) | null {
398
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerenter');
399
+ }
400
+
401
+ public set onpointerenter(value: ((event: Event) => void) | null) {
402
+ this[PropertySymbol.propertyEventListeners].set('onpointerenter', value);
403
+ }
404
+
405
+ public get onpointerleave(): ((event: Event) => void) | null {
406
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerleave');
407
+ }
408
+
409
+ public set onpointerleave(value: ((event: Event) => void) | null) {
410
+ this[PropertySymbol.propertyEventListeners].set('onpointerleave', value);
411
+ }
412
+
413
+ public get onpointermove(): ((event: Event) => void) | null {
414
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointermove');
415
+ }
416
+
417
+ public set onpointermove(value: ((event: Event) => void) | null) {
418
+ this[PropertySymbol.propertyEventListeners].set('onpointermove', value);
419
+ }
420
+
421
+ public get onpointerout(): ((event: Event) => void) | null {
422
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerout');
423
+ }
424
+
425
+ public set onpointerout(value: ((event: Event) => void) | null) {
426
+ this[PropertySymbol.propertyEventListeners].set('onpointerout', value);
427
+ }
428
+
429
+ public get onpointerover(): ((event: Event) => void) | null {
430
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerover');
431
+ }
432
+
433
+ public set onpointerover(value: ((event: Event) => void) | null) {
434
+ this[PropertySymbol.propertyEventListeners].set('onpointerover', value);
435
+ }
436
+
437
+ public get onpointerup(): ((event: Event) => void) | null {
438
+ return ElementEventAttributeUtility.getEventListener(this, 'onpointerup');
439
+ }
440
+
441
+ public set onpointerup(value: ((event: Event) => void) | null) {
442
+ this[PropertySymbol.propertyEventListeners].set('onpointerup', value);
443
+ }
444
+
445
+ public get ontransitioncancel(): ((event: Event) => void) | null {
446
+ return ElementEventAttributeUtility.getEventListener(this, 'ontransitioncancel');
447
+ }
448
+
449
+ public set ontransitioncancel(value: ((event: Event) => void) | null) {
450
+ this[PropertySymbol.propertyEventListeners].set('ontransitioncancel', value);
451
+ }
452
+
453
+ public get ontransitionend(): ((event: Event) => void) | null {
454
+ return ElementEventAttributeUtility.getEventListener(this, 'ontransitionend');
455
+ }
456
+
457
+ public set ontransitionend(value: ((event: Event) => void) | null) {
458
+ this[PropertySymbol.propertyEventListeners].set('ontransitionend', value);
459
+ }
460
+
461
+ public get ontransitionrun(): ((event: Event) => void) | null {
462
+ return ElementEventAttributeUtility.getEventListener(this, 'ontransitionrun');
463
+ }
464
+
465
+ public set ontransitionrun(value: ((event: Event) => void) | null) {
466
+ this[PropertySymbol.propertyEventListeners].set('ontransitionrun', value);
467
+ }
468
+
469
+ public get ontransitionstart(): ((event: Event) => void) | null {
470
+ return ElementEventAttributeUtility.getEventListener(this, 'ontransitionstart');
471
+ }
472
+
473
+ public set ontransitionstart(value: ((event: Event) => void) | null) {
474
+ this[PropertySymbol.propertyEventListeners].set('ontransitionstart', value);
475
+ }
476
+
477
+ /* eslint-enable jsdoc/require-jsdoc */
478
+
67
479
  /**
68
480
  * Returns access key.
69
481
  *
@@ -17,6 +17,7 @@ import ClassMethodBinder from '../../utilities/ClassMethodBinder.js';
17
17
  import Node from '../node/Node.js';
18
18
  import Element from '../element/Element.js';
19
19
  import EventTarget from '../../event/EventTarget.js';
20
+ import ElementEventAttributeUtility from '../element/ElementEventAttributeUtility.js';
20
21
 
21
22
  /**
22
23
  * HTML Form Element.
@@ -32,10 +33,7 @@ export default class HTMLFormElement extends HTMLElement {
32
33
  public [PropertySymbol.elements]: HTMLFormControlsCollection | null = null;
33
34
  public [PropertySymbol.proxy]: HTMLFormElement;
34
35
 
35
- // Events
36
- public onformdata: ((event: Event) => void) | null = null;
37
- public onreset: ((event: Event) => void) | null = null;
38
- public onsubmit: ((event: Event) => void) | null = null;
36
+ /* eslint-enable jsdoc/require-jsdoc */
39
37
 
40
38
  /**
41
39
  * Constructor.
@@ -174,6 +172,34 @@ export default class HTMLFormElement extends HTMLElement {
174
172
  return proxy;
175
173
  }
176
174
 
175
+ // Events
176
+
177
+ /* eslint-disable jsdoc/require-jsdoc */
178
+
179
+ public get onformdata(): ((event: Event) => void) | null {
180
+ return ElementEventAttributeUtility.getEventListener(this, 'onformdata');
181
+ }
182
+
183
+ public set onformdata(value: ((event: Event) => void) | null) {
184
+ this[PropertySymbol.propertyEventListeners].set('onformdata', value);
185
+ }
186
+
187
+ public get onreset(): ((event: Event) => void) | null {
188
+ return ElementEventAttributeUtility.getEventListener(this, 'onreset');
189
+ }
190
+
191
+ public set onreset(value: ((event: Event) => void) | null) {
192
+ this[PropertySymbol.propertyEventListeners].set('onreset', value);
193
+ }
194
+
195
+ public get onsubmit(): ((event: Event) => void) | null {
196
+ return ElementEventAttributeUtility.getEventListener(this, 'onsubmit');
197
+ }
198
+
199
+ public set onsubmit(value: ((event: Event) => void) | null) {
200
+ this[PropertySymbol.propertyEventListeners].set('onsubmit', value);
201
+ }
202
+
177
203
  /**
178
204
  * Returns elements.
179
205
  *
@@ -12,6 +12,7 @@ import BrowserFrameURL from '../../browser/utilities/BrowserFrameURL.js';
12
12
  import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
13
13
  import IRequestReferrerPolicy from '../../fetch/types/IRequestReferrerPolicy.js';
14
14
  import WindowBrowserContext from '../../window/WindowBrowserContext.js';
15
+ import ElementEventAttributeUtility from '../element/ElementEventAttributeUtility.js';
15
16
 
16
17
  const SANDBOX_FLAGS = [
17
18
  'allow-downloads',
@@ -39,10 +40,6 @@ export default class HTMLIFrameElement extends HTMLElement {
39
40
  // Public properties
40
41
  public declare cloneNode: (deep?: boolean) => HTMLIFrameElement;
41
42
 
42
- // Events
43
- public onload: ((event: Event) => void) | null = null;
44
- public onerror: ((event: Event) => void) | null = null;
45
-
46
43
  // Internal properties
47
44
  public [PropertySymbol.sandbox]: DOMTokenList | null = null;
48
45
 
@@ -53,6 +50,28 @@ export default class HTMLIFrameElement extends HTMLElement {
53
50
  #iframe: IBrowserFrame;
54
51
  #loadedSrcdoc: string | null = null;
55
52
 
53
+ // Events
54
+
55
+ /* eslint-disable jsdoc/require-jsdoc */
56
+
57
+ public get onload(): ((event: Event) => void) | null {
58
+ return ElementEventAttributeUtility.getEventListener(this, 'onload');
59
+ }
60
+
61
+ public set onload(value: ((event: Event) => void) | null) {
62
+ this[PropertySymbol.propertyEventListeners].set('onload', value);
63
+ }
64
+
65
+ public get onerror(): ((event: Event) => void) | null {
66
+ return ElementEventAttributeUtility.getEventListener(this, 'onerror');
67
+ }
68
+
69
+ public set onerror(value: ((event: Event) => void) | null) {
70
+ this[PropertySymbol.propertyEventListeners].set('onerror', value);
71
+ }
72
+
73
+ /* eslint-enable jsdoc/require-jsdoc */
74
+
56
75
  /**
57
76
  * Returns source.
58
77
  *
@@ -19,6 +19,7 @@ import ShadowRoot from '../shadow-root/ShadowRoot.js';
19
19
  import { URL } from 'url';
20
20
  import MouseEvent from '../../event/events/MouseEvent.js';
21
21
  import NodeList from '../node/NodeList.js';
22
+ import ElementEventAttributeUtility from '../element/ElementEventAttributeUtility.js';
22
23
 
23
24
  /**
24
25
  * HTML Input Element.
@@ -33,11 +34,6 @@ export default class HTMLInputElement extends HTMLElement {
33
34
  // Public properties
34
35
  public declare cloneNode: (deep?: boolean) => HTMLInputElement;
35
36
 
36
- // Events
37
- public oninput: ((event: Event) => void) | null = null;
38
- public oninvalid: ((event: Event) => void) | null = null;
39
- public onselectionchange: ((event: Event) => void) | null = null;
40
-
41
37
  public [PropertySymbol.value] = null;
42
38
  public [PropertySymbol.height] = 0;
43
39
  public [PropertySymbol.width] = 0;
@@ -55,6 +51,36 @@ export default class HTMLInputElement extends HTMLElement {
55
51
  #selectionDirection: HTMLInputElementSelectionDirectionEnum =
56
52
  HTMLInputElementSelectionDirectionEnum.none;
57
53
 
54
+ // Events
55
+
56
+ /* eslint-disable jsdoc/require-jsdoc */
57
+
58
+ public get oninput(): ((event: Event) => void) | null {
59
+ return ElementEventAttributeUtility.getEventListener(this, 'oninput');
60
+ }
61
+
62
+ public set oninput(value: ((event: Event) => void) | null) {
63
+ this[PropertySymbol.propertyEventListeners].set('oninput', value);
64
+ }
65
+
66
+ public get oninvalid(): ((event: Event) => void) | null {
67
+ return ElementEventAttributeUtility.getEventListener(this, 'oninvalid');
68
+ }
69
+
70
+ public set oninvalid(value: ((event: Event) => void) | null) {
71
+ this[PropertySymbol.propertyEventListeners].set('oninvalid', value);
72
+ }
73
+
74
+ public get onselectionchange(): ((event: Event) => void) | null {
75
+ return ElementEventAttributeUtility.getEventListener(this, 'onselectionchange');
76
+ }
77
+
78
+ public set onselectionchange(value: ((event: Event) => void) | null) {
79
+ this[PropertySymbol.propertyEventListeners].set('onselectionchange', value);
80
+ }
81
+
82
+ /* eslint-enable jsdoc/require-jsdoc */
83
+
58
84
  /**
59
85
  * Returns default checked.
60
86
  *
@@ -113,7 +113,8 @@ export default class HTMLLabelElement extends HTMLElement {
113
113
  if (
114
114
  !event[PropertySymbol.defaultPrevented] &&
115
115
  event.type === 'click' &&
116
- event.eventPhase === EventPhaseEnum.none &&
116
+ (event.eventPhase === EventPhaseEnum.atTarget ||
117
+ event.eventPhase === EventPhaseEnum.bubbling) &&
117
118
  event instanceof MouseEvent
118
119
  ) {
119
120
  const control = this.control;