happy-dom 8.8.0 → 9.0.0

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 (364) hide show
  1. package/README.md +2 -2
  2. package/lib/cookie/CookieJar.js +1 -1
  3. package/lib/cookie/CookieJar.js.map +1 -1
  4. package/lib/dom-token-list/DOMTokenList.js +24 -20
  5. package/lib/dom-token-list/DOMTokenList.js.map +1 -1
  6. package/lib/event/EventTarget.js +6 -3
  7. package/lib/event/EventTarget.js.map +1 -1
  8. package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
  9. package/lib/exception/DOMExceptionNameEnum.js +4 -0
  10. package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
  11. package/lib/fetch/AbortController.d.ts +19 -0
  12. package/lib/fetch/AbortController.js +30 -0
  13. package/lib/fetch/AbortController.js.map +1 -0
  14. package/lib/fetch/AbortSignal.d.ts +25 -0
  15. package/lib/fetch/AbortSignal.js +51 -0
  16. package/lib/fetch/AbortSignal.js.map +1 -0
  17. package/lib/fetch/Fetch.d.ts +117 -0
  18. package/lib/fetch/Fetch.js +530 -0
  19. package/lib/fetch/Fetch.js.map +1 -0
  20. package/lib/fetch/Headers.d.ts +81 -3
  21. package/lib/fetch/Headers.js +139 -24
  22. package/lib/fetch/Headers.js.map +1 -1
  23. package/lib/fetch/Request.d.ts +56 -32
  24. package/lib/fetch/Request.js +165 -110
  25. package/lib/fetch/Request.js.map +1 -1
  26. package/lib/fetch/{ResourceFetchHandler.d.ts → ResourceFetch.d.ts} +1 -1
  27. package/lib/fetch/{ResourceFetchHandler.js → ResourceFetch.js} +5 -5
  28. package/lib/fetch/ResourceFetch.js.map +1 -0
  29. package/lib/fetch/Response.d.ts +60 -26
  30. package/lib/fetch/Response.js +196 -104
  31. package/lib/fetch/Response.js.map +1 -1
  32. package/lib/fetch/data-uri/DataURIParser.d.ts +20 -0
  33. package/lib/fetch/data-uri/DataURIParser.js +60 -0
  34. package/lib/fetch/data-uri/DataURIParser.js.map +1 -0
  35. package/lib/fetch/multipart/MultipartFormDataParser.d.ts +40 -0
  36. package/lib/fetch/multipart/MultipartFormDataParser.js +81 -0
  37. package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -0
  38. package/lib/fetch/multipart/MultipartReader.d.ts +49 -0
  39. package/lib/fetch/multipart/MultipartReader.js +178 -0
  40. package/lib/fetch/multipart/MultipartReader.js.map +1 -0
  41. package/lib/fetch/types/IHeaders.d.ts +71 -0
  42. package/lib/fetch/{IHeaders.js.map → types/IHeaders.js.map} +1 -1
  43. package/lib/fetch/types/IHeadersInit.js.map +1 -0
  44. package/lib/fetch/types/IRequest.d.ts +60 -0
  45. package/lib/fetch/{IRequest.js.map → types/IRequest.js.map} +1 -1
  46. package/lib/fetch/types/IRequestBody.d.ts +7 -0
  47. package/lib/fetch/{IBody.js → types/IRequestBody.js} +1 -1
  48. package/lib/fetch/types/IRequestBody.js.map +1 -0
  49. package/lib/fetch/types/IRequestCredentials.d.ts +2 -0
  50. package/lib/fetch/types/IRequestCredentials.js +3 -0
  51. package/lib/fetch/types/IRequestCredentials.js.map +1 -0
  52. package/lib/fetch/{RequestInfo.d.ts → types/IRequestInfo.d.ts} +2 -2
  53. package/lib/fetch/types/IRequestInfo.js +3 -0
  54. package/lib/fetch/types/IRequestInfo.js.map +1 -0
  55. package/lib/fetch/types/IRequestInit.d.ts +21 -0
  56. package/lib/fetch/types/IRequestInit.js.map +1 -0
  57. package/lib/fetch/types/IRequestRedirect.d.ts +2 -0
  58. package/lib/fetch/types/IRequestRedirect.js +3 -0
  59. package/lib/fetch/types/IRequestRedirect.js.map +1 -0
  60. package/lib/fetch/types/IRequestReferrerPolicy.d.ts +2 -0
  61. package/lib/fetch/types/IRequestReferrerPolicy.js +3 -0
  62. package/lib/fetch/types/IRequestReferrerPolicy.js.map +1 -0
  63. package/lib/fetch/types/IResponse.d.ts +27 -0
  64. package/lib/fetch/{IResponse.js.map → types/IResponse.js.map} +1 -1
  65. package/lib/fetch/types/IResponseBody.d.ts +7 -0
  66. package/lib/fetch/types/IResponseBody.js +3 -0
  67. package/lib/fetch/types/IResponseBody.js.map +1 -0
  68. package/lib/fetch/types/IResponseInit.d.ts +9 -0
  69. package/lib/fetch/types/IResponseInit.js.map +1 -0
  70. package/lib/fetch/utilities/FetchBodyUtility.d.ts +44 -0
  71. package/lib/fetch/utilities/FetchBodyUtility.js +156 -0
  72. package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -0
  73. package/lib/fetch/utilities/FetchCORSUtility.d.ts +12 -0
  74. package/lib/fetch/utilities/FetchCORSUtility.js +20 -0
  75. package/lib/fetch/utilities/FetchCORSUtility.js.map +1 -0
  76. package/lib/fetch/utilities/FetchRequestHeaderUtility.d.ts +12 -0
  77. package/lib/fetch/utilities/FetchRequestHeaderUtility.js +45 -0
  78. package/lib/fetch/utilities/FetchRequestHeaderUtility.js.map +1 -0
  79. package/lib/fetch/utilities/FetchRequestReferrerUtility.d.ts +55 -0
  80. package/lib/fetch/utilities/FetchRequestReferrerUtility.js +194 -0
  81. package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -0
  82. package/lib/fetch/utilities/FetchRequestValidationUtility.d.ts +38 -0
  83. package/lib/fetch/utilities/FetchRequestValidationUtility.js +70 -0
  84. package/lib/fetch/utilities/FetchRequestValidationUtility.js.map +1 -0
  85. package/lib/file/Blob.d.ts +2 -2
  86. package/lib/file/Blob.js +1 -1
  87. package/lib/file/Blob.js.map +1 -1
  88. package/lib/file/File.d.ts +2 -1
  89. package/lib/file/File.js.map +1 -1
  90. package/lib/form-data/FormData.d.ts +98 -0
  91. package/lib/form-data/FormData.js +212 -0
  92. package/lib/form-data/FormData.js.map +1 -0
  93. package/lib/index.d.ts +14 -1
  94. package/lib/index.js +20 -2
  95. package/lib/index.js.map +1 -1
  96. package/lib/nodes/document/Document.d.ts +5 -17
  97. package/lib/nodes/document/Document.js +11 -54
  98. package/lib/nodes/document/Document.js.map +1 -1
  99. package/lib/nodes/document/IDocument.d.ts +1 -1
  100. package/lib/nodes/document-fragment/DocumentFragment.d.ts +3 -14
  101. package/lib/nodes/document-fragment/DocumentFragment.js +7 -51
  102. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  103. package/lib/nodes/document-fragment/IDocumentFragment.d.ts +2 -1
  104. package/lib/nodes/element/Element.d.ts +8 -8
  105. package/lib/nodes/element/Element.js +28 -45
  106. package/lib/nodes/element/Element.js.map +1 -1
  107. package/lib/nodes/element/ElementUtility.d.ts +32 -0
  108. package/lib/nodes/element/ElementUtility.js +105 -0
  109. package/lib/nodes/element/ElementUtility.js.map +1 -0
  110. package/lib/nodes/element/HTMLCollection.d.ts +26 -3
  111. package/lib/nodes/element/HTMLCollection.js +51 -0
  112. package/lib/nodes/element/HTMLCollection.js.map +1 -1
  113. package/lib/nodes/element/IHTMLCollection.d.ts +9 -2
  114. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +24 -24
  115. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  116. package/lib/nodes/html-audio-element/Audio.d.ts +15 -0
  117. package/lib/nodes/html-audio-element/Audio.js +27 -0
  118. package/lib/nodes/html-audio-element/Audio.js.map +1 -0
  119. package/lib/nodes/html-base-element/HTMLBaseElement.js +4 -4
  120. package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
  121. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +79 -3
  122. package/lib/nodes/html-button-element/HTMLButtonElement.js +158 -10
  123. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  124. package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +28 -2
  125. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -3
  126. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
  127. package/lib/nodes/html-element/HTMLElement.js +12 -12
  128. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  129. package/lib/nodes/html-form-element/HTMLFormControlsCollection.d.ts +32 -0
  130. package/lib/nodes/html-form-element/HTMLFormControlsCollection.js +58 -0
  131. package/lib/nodes/html-form-element/HTMLFormControlsCollection.js.map +1 -0
  132. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +37 -17
  133. package/lib/nodes/html-form-element/HTMLFormElement.js +128 -37
  134. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  135. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.d.ts +25 -0
  136. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js +3 -0
  137. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js.map +1 -0
  138. package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +16 -6
  139. package/lib/nodes/html-form-element/IRadioNodeList.d.ts +15 -0
  140. package/lib/nodes/html-form-element/IRadioNodeList.js +3 -0
  141. package/lib/nodes/html-form-element/IRadioNodeList.js.map +1 -0
  142. package/lib/nodes/html-form-element/RadioNodeList.d.ts +16 -0
  143. package/lib/nodes/html-form-element/RadioNodeList.js +28 -0
  144. package/lib/nodes/html-form-element/RadioNodeList.js.map +1 -0
  145. package/lib/nodes/html-image-element/HTMLImageElement.js +19 -19
  146. package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
  147. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +43 -19
  148. package/lib/nodes/html-input-element/HTMLInputElement.js +206 -111
  149. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  150. package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +14 -1
  151. package/lib/nodes/html-label-element/HTMLLabelElement.js +3 -7
  152. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  153. package/lib/nodes/html-link-element/HTMLLinkElement.js +21 -21
  154. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  155. package/lib/nodes/html-media-element/HTMLMediaElement.js +21 -21
  156. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  157. package/lib/nodes/html-meta-element/HTMLMetaElement.js +8 -8
  158. package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
  159. package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js +6 -6
  160. package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js.map +1 -1
  161. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +3 -4
  162. package/lib/nodes/html-option-element/HTMLOptionElement.js +26 -29
  163. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  164. package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -16
  165. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  166. package/lib/nodes/html-script-element/ScriptUtility.js +5 -5
  167. package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
  168. package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.d.ts +5 -6
  169. package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js.map +1 -1
  170. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +42 -41
  171. package/lib/nodes/html-select-element/HTMLSelectElement.js +134 -138
  172. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  173. package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.d.ts +4 -5
  174. package/lib/nodes/html-select-element/IHTMLOptionsCollection.js.map +1 -0
  175. package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +22 -2
  176. package/lib/nodes/html-slot-element/HTMLSlotElement.js +2 -2
  177. package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
  178. package/lib/nodes/html-style-element/HTMLStyleElement.js +7 -7
  179. package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
  180. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +55 -2
  181. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +150 -40
  182. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  183. package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +16 -0
  184. package/lib/nodes/node/Node.d.ts +12 -1
  185. package/lib/nodes/node/Node.js +50 -4
  186. package/lib/nodes/node/Node.js.map +1 -1
  187. package/lib/nodes/node/NodeList.d.ts +2 -3
  188. package/lib/nodes/node/NodeList.js.map +1 -1
  189. package/lib/nodes/parent-node/IParentNode.d.ts +4 -4
  190. package/lib/nodes/parent-node/ParentNodeUtility.d.ts +3 -3
  191. package/lib/nodes/parent-node/ParentNodeUtility.js +13 -11
  192. package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
  193. package/lib/nodes/text/Text.d.ts +13 -0
  194. package/lib/nodes/text/Text.js +30 -0
  195. package/lib/nodes/text/Text.js.map +1 -1
  196. package/lib/query-selector/QuerySelector.js +2 -2
  197. package/lib/query-selector/QuerySelector.js.map +1 -1
  198. package/lib/query-selector/SelectorItem.js +2 -0
  199. package/lib/query-selector/SelectorItem.js.map +1 -1
  200. package/lib/validity-state/ValidityState.d.ts +87 -0
  201. package/lib/validity-state/ValidityState.js +171 -0
  202. package/lib/validity-state/ValidityState.js.map +1 -0
  203. package/lib/window/GlobalWindow.d.ts +0 -8
  204. package/lib/window/GlobalWindow.js +0 -2
  205. package/lib/window/GlobalWindow.js.map +1 -1
  206. package/lib/window/INodeJSGlobal.d.ts +71 -0
  207. package/lib/window/INodeJSGlobal.js +2 -0
  208. package/lib/window/INodeJSGlobal.js.map +1 -0
  209. package/lib/window/IWindow.d.ts +30 -10
  210. package/lib/window/Window.d.ts +37 -20
  211. package/lib/window/Window.js +22 -10
  212. package/lib/window/Window.js.map +1 -1
  213. package/lib/xml-http-request/XMLHttpRequest.js +20 -12
  214. package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
  215. package/lib/xml-parser/XMLParser.js +1 -1
  216. package/lib/xml-parser/XMLParser.js.map +1 -1
  217. package/package.json +2 -3
  218. package/src/cookie/CookieJar.ts +1 -1
  219. package/src/dom-token-list/DOMTokenList.ts +24 -20
  220. package/src/event/EventTarget.ts +7 -3
  221. package/src/exception/DOMExceptionNameEnum.ts +5 -1
  222. package/src/fetch/AbortController.ts +26 -0
  223. package/src/fetch/AbortSignal.ts +44 -0
  224. package/src/fetch/Fetch.ts +666 -0
  225. package/src/fetch/Headers.ts +151 -3
  226. package/src/fetch/Request.ts +226 -94
  227. package/src/fetch/{ResourceFetchHandler.ts → ResourceFetch.ts} +3 -3
  228. package/src/fetch/Response.ts +252 -89
  229. package/src/fetch/data-uri/DataURIParser.ts +66 -0
  230. package/src/fetch/multipart/MultipartFormDataParser.ts +113 -0
  231. package/src/fetch/multipart/MultipartReader.ts +217 -0
  232. package/src/fetch/types/IHeaders.ts +80 -0
  233. package/src/fetch/types/IRequest.ts +65 -0
  234. package/src/fetch/types/IRequestBody.ts +15 -0
  235. package/src/fetch/types/IRequestCredentials.ts +2 -0
  236. package/src/fetch/types/IRequestInfo.ts +6 -0
  237. package/src/fetch/types/IRequestInit.ts +21 -0
  238. package/src/fetch/types/IRequestRedirect.ts +3 -0
  239. package/src/fetch/types/IRequestReferrerPolicy.ts +11 -0
  240. package/src/fetch/types/IResponse.ts +27 -0
  241. package/src/fetch/types/IResponseBody.ts +15 -0
  242. package/src/fetch/types/IResponseInit.ts +10 -0
  243. package/src/fetch/utilities/FetchBodyUtility.ts +175 -0
  244. package/src/fetch/utilities/FetchCORSUtility.ts +18 -0
  245. package/src/fetch/utilities/FetchRequestHeaderUtility.ts +47 -0
  246. package/src/fetch/utilities/FetchRequestReferrerUtility.ts +241 -0
  247. package/src/fetch/utilities/FetchRequestValidationUtility.ts +82 -0
  248. package/src/file/Blob.ts +2 -2
  249. package/src/file/File.ts +5 -1
  250. package/src/form-data/FormData.ts +237 -0
  251. package/src/index.ts +27 -1
  252. package/src/nodes/document/Document.ts +23 -64
  253. package/src/nodes/document/IDocument.ts +1 -1
  254. package/src/nodes/document-fragment/DocumentFragment.ts +9 -59
  255. package/src/nodes/document-fragment/IDocumentFragment.ts +2 -1
  256. package/src/nodes/element/Element.ts +43 -56
  257. package/src/nodes/element/ElementUtility.ts +137 -0
  258. package/src/nodes/element/HTMLCollection.ts +60 -3
  259. package/src/nodes/element/IHTMLCollection.ts +10 -2
  260. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +24 -24
  261. package/src/nodes/html-audio-element/Audio.ts +22 -0
  262. package/src/nodes/html-base-element/HTMLBaseElement.ts +4 -4
  263. package/src/nodes/html-button-element/HTMLButtonElement.ts +184 -10
  264. package/src/nodes/html-button-element/IHTMLButtonElement.ts +31 -2
  265. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +3 -3
  266. package/src/nodes/html-element/HTMLElement.ts +12 -12
  267. package/src/nodes/html-form-element/HTMLFormControlsCollection.ts +76 -0
  268. package/src/nodes/html-form-element/HTMLFormElement.ts +147 -41
  269. package/src/nodes/html-form-element/IHTMLFormControlsCollection.ts +45 -0
  270. package/src/nodes/html-form-element/IHTMLFormElement.ts +17 -6
  271. package/src/nodes/html-form-element/IRadioNodeList.ts +16 -0
  272. package/src/nodes/html-form-element/RadioNodeList.ts +24 -0
  273. package/src/nodes/html-image-element/HTMLImageElement.ts +19 -19
  274. package/src/nodes/html-input-element/HTMLInputElement.ts +232 -113
  275. package/src/nodes/html-input-element/IHTMLInputElement.ts +20 -1
  276. package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -7
  277. package/src/nodes/html-link-element/HTMLLinkElement.ts +21 -21
  278. package/src/nodes/html-media-element/HTMLMediaElement.ts +21 -21
  279. package/src/nodes/html-meta-element/HTMLMetaElement.ts +8 -8
  280. package/src/nodes/html-opt-group-element/HTMLOptGroupElement.ts +6 -6
  281. package/src/nodes/html-option-element/HTMLOptionElement.ts +29 -30
  282. package/src/nodes/html-script-element/HTMLScriptElement.ts +16 -16
  283. package/src/nodes/html-script-element/ScriptUtility.ts +5 -5
  284. package/src/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.ts +5 -9
  285. package/src/nodes/html-select-element/HTMLSelectElement.ts +159 -170
  286. package/src/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.ts +4 -8
  287. package/src/nodes/html-select-element/IHTMLSelectElement.ts +25 -2
  288. package/src/nodes/html-slot-element/HTMLSlotElement.ts +2 -2
  289. package/src/nodes/html-style-element/HTMLStyleElement.ts +7 -7
  290. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +174 -41
  291. package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +18 -0
  292. package/src/nodes/node/Node.ts +61 -6
  293. package/src/nodes/node/NodeList.ts +2 -3
  294. package/src/nodes/parent-node/IParentNode.ts +7 -4
  295. package/src/nodes/parent-node/ParentNodeUtility.ts +25 -15
  296. package/src/nodes/text/Text.ts +38 -0
  297. package/src/query-selector/QuerySelector.ts +2 -2
  298. package/src/query-selector/SelectorItem.ts +3 -0
  299. package/src/validity-state/ValidityState.ts +211 -0
  300. package/src/window/GlobalWindow.ts +0 -2
  301. package/src/window/INodeJSGlobal.ts +70 -0
  302. package/src/window/IWindow.ts +32 -10
  303. package/src/window/Window.ts +43 -21
  304. package/src/xml-http-request/XMLHttpRequest.ts +27 -26
  305. package/src/xml-parser/XMLParser.ts +1 -1
  306. package/lib/fetch/FetchHandler.d.ts +0 -18
  307. package/lib/fetch/FetchHandler.js +0 -83
  308. package/lib/fetch/FetchHandler.js.map +0 -1
  309. package/lib/fetch/IAbortSignal.d.ts +0 -16
  310. package/lib/fetch/IAbortSignal.js +0 -4
  311. package/lib/fetch/IAbortSignal.js.map +0 -1
  312. package/lib/fetch/IBody.d.ts +0 -17
  313. package/lib/fetch/IBody.js.map +0 -1
  314. package/lib/fetch/IHeaders.d.ts +0 -18
  315. package/lib/fetch/IHeadersInit.js.map +0 -1
  316. package/lib/fetch/IRequest.d.ts +0 -18
  317. package/lib/fetch/IRequestInit.d.ts +0 -16
  318. package/lib/fetch/IRequestInit.js.map +0 -1
  319. package/lib/fetch/IResponse.d.ts +0 -20
  320. package/lib/fetch/IResponseInit.d.ts +0 -9
  321. package/lib/fetch/IResponseInit.js.map +0 -1
  322. package/lib/fetch/RequestInfo.js +0 -3
  323. package/lib/fetch/RequestInfo.js.map +0 -1
  324. package/lib/fetch/ResourceFetchHandler.js.map +0 -1
  325. package/lib/form-data/IFormData.d.ts +0 -32
  326. package/lib/form-data/IFormData.js +0 -3
  327. package/lib/form-data/IFormData.js.map +0 -1
  328. package/lib/location/RelativeURL.d.ts +0 -15
  329. package/lib/location/RelativeURL.js +0 -19
  330. package/lib/location/RelativeURL.js.map +0 -1
  331. package/lib/nodes/element/HTMLCollectionFactory.d.ts +0 -21
  332. package/lib/nodes/element/HTMLCollectionFactory.js +0 -31
  333. package/lib/nodes/element/HTMLCollectionFactory.js.map +0 -1
  334. package/lib/nodes/html-option-element/IHTMLOptionsCollection.js.map +0 -1
  335. package/lib/nodes/node/NodeListFactory.d.ts +0 -21
  336. package/lib/nodes/node/NodeListFactory.js +0 -31
  337. package/lib/nodes/node/NodeListFactory.js.map +0 -1
  338. package/lib/nodes/validity-state/ValidityState.d.ts +0 -52
  339. package/lib/nodes/validity-state/ValidityState.js +0 -81
  340. package/lib/nodes/validity-state/ValidityState.js.map +0 -1
  341. package/src/fetch/FetchHandler.ts +0 -90
  342. package/src/fetch/IAbortSignal.ts +0 -34
  343. package/src/fetch/IBody.ts +0 -18
  344. package/src/fetch/IHeaders.ts +0 -18
  345. package/src/fetch/IRequest.ts +0 -59
  346. package/src/fetch/IRequestInit.ts +0 -41
  347. package/src/fetch/IResponse.ts +0 -22
  348. package/src/fetch/IResponseInit.ts +0 -10
  349. package/src/fetch/RequestInfo.ts +0 -6
  350. package/src/form-data/IFormData.ts +0 -33
  351. package/src/location/RelativeURL.ts +0 -17
  352. package/src/nodes/element/HTMLCollectionFactory.ts +0 -31
  353. package/src/nodes/node/NodeListFactory.ts +0 -31
  354. package/src/nodes/validity-state/ValidityState.ts +0 -84
  355. /package/lib/fetch/{IHeaders.js → types/IHeaders.js} +0 -0
  356. /package/lib/fetch/{IHeadersInit.d.ts → types/IHeadersInit.d.ts} +0 -0
  357. /package/lib/fetch/{IHeadersInit.js → types/IHeadersInit.js} +0 -0
  358. /package/lib/fetch/{IRequest.js → types/IRequest.js} +0 -0
  359. /package/lib/fetch/{IRequestInit.js → types/IRequestInit.js} +0 -0
  360. /package/lib/fetch/{IResponse.js → types/IResponse.js} +0 -0
  361. /package/lib/fetch/{IResponseInit.js → types/IResponseInit.js} +0 -0
  362. /package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js +0 -0
  363. /package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.js +0 -0
  364. /package/src/fetch/{IHeadersInit.ts → types/IHeadersInit.ts} +0 -0
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const HTMLCollection_1 = __importDefault(require("../element/HTMLCollection"));
7
+ const RadioNodeList_1 = __importDefault(require("./RadioNodeList"));
8
+ /**
9
+ * HTMLFormControlsCollection.
10
+ *
11
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection
12
+ */
13
+ class HTMLFormControlsCollection extends HTMLCollection_1.default {
14
+ constructor() {
15
+ super(...arguments);
16
+ this._namedItems = {};
17
+ }
18
+ /**
19
+ * Appends named item.
20
+ *
21
+ * @param node Node.
22
+ * @param name Name.
23
+ */
24
+ _appendNamedItem(node, name) {
25
+ if (name) {
26
+ this._namedItems[name] = this._namedItems[name] || new RadioNodeList_1.default();
27
+ if (!this._namedItems[name].includes(node)) {
28
+ this._namedItems[name].push(node);
29
+ }
30
+ this[name] =
31
+ this._namedItems[name].length > 1 ? this._namedItems[name] : this._namedItems[name][0];
32
+ }
33
+ }
34
+ /**
35
+ * Appends named item.
36
+ *
37
+ * @param node Node.
38
+ * @param name Name.
39
+ */
40
+ _removeNamedItem(node, name) {
41
+ if (name && this._namedItems[name]) {
42
+ const index = this._namedItems[name].indexOf(node);
43
+ if (index > -1) {
44
+ this._namedItems[name].splice(index, 1);
45
+ if (this._namedItems[name].length === 0) {
46
+ delete this._namedItems[name];
47
+ delete this[name];
48
+ }
49
+ else {
50
+ this[name] =
51
+ this._namedItems[name].length > 1 ? this._namedItems[name] : this._namedItems[name][0];
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ exports.default = HTMLFormControlsCollection;
58
+ //# sourceMappingURL=HTMLFormControlsCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLFormControlsCollection.js","sourceRoot":"","sources":["../../../src/nodes/html-form-element/HTMLFormControlsCollection.ts"],"names":[],"mappings":";;;;;AAIA,+EAAuD;AACvD,oEAA4C;AAI5C;;;;GAIG;AACH,MAAqB,0BACpB,SAAQ,wBAOP;IARF;;QAWQ,gBAAW,GAAmC,EAAE,CAAC;IAkDzD,CAAC;IAhDA;;;;;OAKG;IACI,gBAAgB,CACtB,IAAwF,EACxF,IAAY;QAEZ,IAAI,IAAI,EAAE;YACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,uBAAa,EAAE,CAAC;YAEvE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC;YAED,IAAI,CAAC,IAAI,CAAC;gBACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACxF;IACF,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CACtB,IAAwF,EACxF,IAAY;QAEZ,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAExC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;qBAAM;oBACN,IAAI,CAAC,IAAI,CAAC;wBACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxF;aACD;SACD;IACF,CAAC;CACD;AA7DD,6CA6DC"}
@@ -1,7 +1,12 @@
1
1
  import HTMLElement from '../html-element/HTMLElement';
2
- import IElement from '../element/IElement';
3
2
  import IHTMLFormElement from './IHTMLFormElement';
4
3
  import Event from '../../event/Event';
4
+ import IHTMLFormControlsCollection from './IHTMLFormControlsCollection';
5
+ import INode from '../node/INode';
6
+ import IHTMLInputElement from '../html-input-element/IHTMLInputElement';
7
+ import IHTMLTextAreaElement from '../html-text-area-element/IHTMLTextAreaElement';
8
+ import IHTMLSelectElement from '../html-select-element/IHTMLSelectElement';
9
+ import IHTMLButtonElement from '../html-button-element/IHTMLButtonElement';
5
10
  /**
6
11
  * HTML Form Element.
7
12
  *
@@ -9,9 +14,12 @@ import Event from '../../event/Event';
9
14
  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.
10
15
  */
11
16
  export default class HTMLFormElement extends HTMLElement implements IHTMLFormElement {
17
+ readonly elements: IHTMLFormControlsCollection;
18
+ readonly length = 0;
12
19
  onformdata: (event: Event) => void | null;
13
20
  onreset: (event: Event) => void | null;
14
21
  onsubmit: (event: Event) => void | null;
22
+ _formNode: INode;
15
23
  /**
16
24
  * Returns name.
17
25
  *
@@ -113,43 +121,41 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
113
121
  *
114
122
  * @returns No validate.
115
123
  */
116
- get noValidate(): string;
124
+ get noValidate(): boolean;
117
125
  /**
118
126
  * Sets no validate.
119
127
  *
120
128
  * @param noValidate No validate.
121
129
  */
122
- set noValidate(noValidate: string);
130
+ set noValidate(noValidate: boolean);
123
131
  /**
124
- * Returns input elements.
132
+ * Submits form. No submit event is raised. In particular, the form's "submit" event handler is not run.
125
133
  *
126
- * @returns Elements.
134
+ * In Happy DOM this means that nothing happens.
127
135
  */
128
- get elements(): IElement[];
136
+ submit(): void;
129
137
  /**
130
- * Returns number of input elements.
138
+ * Submits form, reports validity and raises submit event.
131
139
  *
132
- * @returns Length.
140
+ * @param [submitter] Submitter.
133
141
  */
134
- get length(): number;
135
- /**
136
- * Submits form.
137
- */
138
- submit(): void;
142
+ requestSubmit(submitter?: IHTMLInputElement | IHTMLButtonElement): void;
139
143
  /**
140
144
  * Resets form.
141
145
  */
142
146
  reset(): void;
143
- /**
144
- * Reports validity.
145
- */
146
- reportValidity(): void;
147
147
  /**
148
148
  * Checks validity.
149
149
  *
150
150
  * @returns "true" if validation does'nt fail.
151
151
  */
152
152
  checkValidity(): boolean;
153
+ /**
154
+ * Reports validity.
155
+ *
156
+ * @returns "true" if validation does'nt fail.
157
+ */
158
+ reportValidity(): boolean;
153
159
  /**
154
160
  * Clones a node.
155
161
  *
@@ -158,4 +164,18 @@ export default class HTMLFormElement extends HTMLElement implements IHTMLFormEle
158
164
  * @returns Cloned node.
159
165
  */
160
166
  cloneNode(deep?: boolean): IHTMLFormElement;
167
+ /**
168
+ * Appends a form control item.
169
+ *
170
+ * @param node Node.
171
+ * @param name Name
172
+ */
173
+ _appendFormControlItem(node: IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement, name: string): void;
174
+ /**
175
+ * Remove a form control item.
176
+ *
177
+ * @param node Node.
178
+ * @param name Name.
179
+ */
180
+ _removeFormControlItem(node: IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement, name: string): void;
161
181
  }
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
7
+ const Event_1 = __importDefault(require("../../event/Event"));
8
+ const HTMLFormControlsCollection_1 = __importDefault(require("./HTMLFormControlsCollection"));
7
9
  /**
8
10
  * HTML Form Element.
9
11
  *
@@ -13,10 +15,15 @@ const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
13
15
  class HTMLFormElement extends HTMLElement_1.default {
14
16
  constructor() {
15
17
  super(...arguments);
18
+ // Public properties.
19
+ this.elements = new HTMLFormControlsCollection_1.default();
20
+ this.length = 0;
16
21
  // Events
17
22
  this.onformdata = null;
18
23
  this.onreset = null;
19
24
  this.onsubmit = null;
25
+ // Private properties
26
+ this._formNode = this;
20
27
  }
21
28
  /**
22
29
  * Returns name.
@@ -24,7 +31,7 @@ class HTMLFormElement extends HTMLElement_1.default {
24
31
  * @returns Name.
25
32
  */
26
33
  get name() {
27
- return this.getAttributeNS(null, 'name') || '';
34
+ return this.getAttribute('name') || '';
28
35
  }
29
36
  /**
30
37
  * Sets name.
@@ -32,7 +39,7 @@ class HTMLFormElement extends HTMLElement_1.default {
32
39
  * @param name Name.
33
40
  */
34
41
  set name(name) {
35
- this.setAttributeNS(null, 'name', name);
42
+ this.setAttribute('name', name);
36
43
  }
37
44
  /**
38
45
  * Returns method.
@@ -40,7 +47,7 @@ class HTMLFormElement extends HTMLElement_1.default {
40
47
  * @returns Method.
41
48
  */
42
49
  get method() {
43
- return this.getAttributeNS(null, 'method') || 'get';
50
+ return this.getAttribute('method') || 'get';
44
51
  }
45
52
  /**
46
53
  * Sets method.
@@ -48,7 +55,7 @@ class HTMLFormElement extends HTMLElement_1.default {
48
55
  * @param method Method.
49
56
  */
50
57
  set method(method) {
51
- this.setAttributeNS(null, 'method', method);
58
+ this.setAttribute('method', method);
52
59
  }
53
60
  /**
54
61
  * Returns target.
@@ -56,7 +63,7 @@ class HTMLFormElement extends HTMLElement_1.default {
56
63
  * @returns Target.
57
64
  */
58
65
  get target() {
59
- return this.getAttributeNS(null, 'target') || '';
66
+ return this.getAttribute('target') || '';
60
67
  }
61
68
  /**
62
69
  * Sets target.
@@ -64,7 +71,7 @@ class HTMLFormElement extends HTMLElement_1.default {
64
71
  * @param target Target.
65
72
  */
66
73
  set target(target) {
67
- this.setAttributeNS(null, 'target', target);
74
+ this.setAttribute('target', target);
68
75
  }
69
76
  /**
70
77
  * Returns action.
@@ -72,7 +79,7 @@ class HTMLFormElement extends HTMLElement_1.default {
72
79
  * @returns Action.
73
80
  */
74
81
  get action() {
75
- return this.getAttributeNS(null, 'action') || '';
82
+ return this.getAttribute('action') || '';
76
83
  }
77
84
  /**
78
85
  * Sets action.
@@ -80,7 +87,7 @@ class HTMLFormElement extends HTMLElement_1.default {
80
87
  * @param action Action.
81
88
  */
82
89
  set action(action) {
83
- this.setAttributeNS(null, 'action', action);
90
+ this.setAttribute('action', action);
84
91
  }
85
92
  /**
86
93
  * Returns encoding.
@@ -88,7 +95,7 @@ class HTMLFormElement extends HTMLElement_1.default {
88
95
  * @returns Encoding.
89
96
  */
90
97
  get encoding() {
91
- return this.getAttributeNS(null, 'encoding') || '';
98
+ return this.getAttribute('encoding') || '';
92
99
  }
93
100
  /**
94
101
  * Sets encoding.
@@ -96,7 +103,7 @@ class HTMLFormElement extends HTMLElement_1.default {
96
103
  * @param encoding Encoding.
97
104
  */
98
105
  set encoding(encoding) {
99
- this.setAttributeNS(null, 'encoding', encoding);
106
+ this.setAttribute('encoding', encoding);
100
107
  }
101
108
  /**
102
109
  * Returns enctype.
@@ -104,7 +111,7 @@ class HTMLFormElement extends HTMLElement_1.default {
104
111
  * @returns Enctype.
105
112
  */
106
113
  get enctype() {
107
- return this.getAttributeNS(null, 'enctype') || '';
114
+ return this.getAttribute('enctype') || '';
108
115
  }
109
116
  /**
110
117
  * Sets enctype.
@@ -112,7 +119,7 @@ class HTMLFormElement extends HTMLElement_1.default {
112
119
  * @param enctype Enctype.
113
120
  */
114
121
  set enctype(enctype) {
115
- this.setAttributeNS(null, 'enctype', enctype);
122
+ this.setAttribute('enctype', enctype);
116
123
  }
117
124
  /**
118
125
  * Returns autocomplete.
@@ -120,7 +127,7 @@ class HTMLFormElement extends HTMLElement_1.default {
120
127
  * @returns Autocomplete.
121
128
  */
122
129
  get autocomplete() {
123
- return this.getAttributeNS(null, 'autocomplete') || '';
130
+ return this.getAttribute('autocomplete') || '';
124
131
  }
125
132
  /**
126
133
  * Sets autocomplete.
@@ -128,7 +135,7 @@ class HTMLFormElement extends HTMLElement_1.default {
128
135
  * @param autocomplete Autocomplete.
129
136
  */
130
137
  set autocomplete(autocomplete) {
131
- this.setAttributeNS(null, 'autocomplete', autocomplete);
138
+ this.setAttribute('autocomplete', autocomplete);
132
139
  }
133
140
  /**
134
141
  * Returns accept charset.
@@ -136,7 +143,7 @@ class HTMLFormElement extends HTMLElement_1.default {
136
143
  * @returns Accept charset.
137
144
  */
138
145
  get acceptCharset() {
139
- return this.getAttributeNS(null, 'acceptcharset') || '';
146
+ return this.getAttribute('acceptcharset') || '';
140
147
  }
141
148
  /**
142
149
  * Sets accept charset.
@@ -144,7 +151,7 @@ class HTMLFormElement extends HTMLElement_1.default {
144
151
  * @param acceptCharset Accept charset.
145
152
  */
146
153
  set acceptCharset(acceptCharset) {
147
- this.setAttributeNS(null, 'acceptcharset', acceptCharset);
154
+ this.setAttribute('acceptcharset', acceptCharset);
148
155
  }
149
156
  /**
150
157
  * Returns no validate.
@@ -152,7 +159,7 @@ class HTMLFormElement extends HTMLElement_1.default {
152
159
  * @returns No validate.
153
160
  */
154
161
  get noValidate() {
155
- return this.getAttributeNS(null, 'novalidate') || '';
162
+ return this.getAttribute('novalidate') !== null;
156
163
  }
157
164
  /**
158
165
  * Sets no validate.
@@ -160,43 +167,88 @@ class HTMLFormElement extends HTMLElement_1.default {
160
167
  * @param noValidate No validate.
161
168
  */
162
169
  set noValidate(noValidate) {
163
- this.setAttributeNS(null, 'novalidate', noValidate);
170
+ if (!noValidate) {
171
+ this.removeAttribute('novalidate');
172
+ }
173
+ else {
174
+ this.setAttribute('novalidate', '');
175
+ }
164
176
  }
165
177
  /**
166
- * Returns input elements.
178
+ * Submits form. No submit event is raised. In particular, the form's "submit" event handler is not run.
167
179
  *
168
- * @returns Elements.
180
+ * In Happy DOM this means that nothing happens.
169
181
  */
170
- get elements() {
171
- return this.querySelectorAll('input,textarea');
172
- }
182
+ submit() { }
173
183
  /**
174
- * Returns number of input elements.
184
+ * Submits form, reports validity and raises submit event.
175
185
  *
176
- * @returns Length.
186
+ * @param [submitter] Submitter.
177
187
  */
178
- get length() {
179
- return this.elements.length;
188
+ requestSubmit(submitter) {
189
+ const noValidate = submitter?.formNoValidate || this.noValidate;
190
+ if (noValidate || this.checkValidity()) {
191
+ this.dispatchEvent(new Event_1.default('submit', { bubbles: true, cancelable: true }));
192
+ }
180
193
  }
181
- /**
182
- * Submits form.
183
- */
184
- submit() { }
185
194
  /**
186
195
  * Resets form.
187
196
  */
188
- reset() { }
189
- /**
190
- * Reports validity.
191
- */
192
- reportValidity() { }
197
+ reset() {
198
+ for (const element of this.elements) {
199
+ if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') {
200
+ element['_value'] = null;
201
+ element['_checked'] = null;
202
+ }
203
+ else if (element.tagName === 'TEXTAREA') {
204
+ element['_value'] = null;
205
+ }
206
+ else if (element.tagName === 'SELECT') {
207
+ let hasSelectedAttribute = false;
208
+ for (const option of element.options) {
209
+ if (option.hasAttribute('selected')) {
210
+ hasSelectedAttribute = true;
211
+ option.selected = true;
212
+ break;
213
+ }
214
+ }
215
+ if (!hasSelectedAttribute && element.options.length > 0) {
216
+ element.options[0].selected = true;
217
+ }
218
+ }
219
+ }
220
+ this.dispatchEvent(new Event_1.default('reset', { bubbles: true, cancelable: true }));
221
+ }
193
222
  /**
194
223
  * Checks validity.
195
224
  *
196
225
  * @returns "true" if validation does'nt fail.
197
226
  */
198
227
  checkValidity() {
199
- return true;
228
+ const radioValidationState = {};
229
+ let isFormValid = true;
230
+ for (const element of this.elements) {
231
+ if (element.tagName === 'INPUT' && element.type === 'radio' && element.name) {
232
+ if (!radioValidationState[element.name]) {
233
+ radioValidationState[element.name] = true;
234
+ if (!element.checkValidity()) {
235
+ isFormValid = false;
236
+ }
237
+ }
238
+ }
239
+ else if (!element.checkValidity()) {
240
+ isFormValid = false;
241
+ }
242
+ }
243
+ return isFormValid;
244
+ }
245
+ /**
246
+ * Reports validity.
247
+ *
248
+ * @returns "true" if validation does'nt fail.
249
+ */
250
+ reportValidity() {
251
+ return this.checkValidity();
200
252
  }
201
253
  /**
202
254
  * Clones a node.
@@ -208,6 +260,45 @@ class HTMLFormElement extends HTMLElement_1.default {
208
260
  cloneNode(deep = false) {
209
261
  return super.cloneNode(deep);
210
262
  }
263
+ /**
264
+ * Appends a form control item.
265
+ *
266
+ * @param node Node.
267
+ * @param name Name
268
+ */
269
+ _appendFormControlItem(node, name) {
270
+ if (!this.elements.includes(node)) {
271
+ this[this.elements.length] = node;
272
+ this.elements.push(node);
273
+ this.length = this.elements.length;
274
+ }
275
+ this.elements._appendNamedItem(node, name);
276
+ this[name] = this.elements[name];
277
+ }
278
+ /**
279
+ * Remove a form control item.
280
+ *
281
+ * @param node Node.
282
+ * @param name Name.
283
+ */
284
+ _removeFormControlItem(node, name) {
285
+ const index = this.elements.indexOf(node);
286
+ if (index !== -1) {
287
+ this.elements.splice(index, 1);
288
+ for (let i = index; i < this.length; i++) {
289
+ this[i] = this[i + 1];
290
+ }
291
+ delete this[this.length - 1];
292
+ this.length--;
293
+ }
294
+ this.elements._removeNamedItem(node, name);
295
+ if (this.elements[name]) {
296
+ this[name] = this.elements[name];
297
+ }
298
+ else {
299
+ delete this[name];
300
+ }
301
+ }
211
302
  }
212
303
  exports.default = HTMLFormElement;
213
304
  //# sourceMappingURL=HTMLFormElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLFormElement.js","sourceRoot":"","sources":["../../../src/nodes/html-form-element/HTMLFormElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HTMLFormElement.js","sourceRoot":"","sources":["../../../src/nodes/html-form-element/HTMLFormElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import IHTMLCollection from '../element/IHTMLCollection';
2
+ import IHTMLButtonElement from '../html-button-element/IHTMLButtonElement';
3
+ import IHTMLInputElement from '../html-input-element/IHTMLInputElement';
4
+ import IHTMLSelectElement from '../html-select-element/IHTMLSelectElement';
5
+ import IHTMLTextAreaElement from '../html-text-area-element/IHTMLTextAreaElement';
6
+ import IRadioNodeList from './IRadioNodeList';
7
+ /**
8
+ * HTMLFormControlsCollection.
9
+ *
10
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection
11
+ */
12
+ export default interface IHTMLFormControlsCollection extends IHTMLCollection<IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement, IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement | IRadioNodeList> {
13
+ /**
14
+ * Returns item by index.
15
+ *
16
+ * @param index Index.
17
+ */
18
+ item(index: number): IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement | null;
19
+ /**
20
+ * Returns named item.
21
+ *
22
+ * @param name Name.
23
+ */
24
+ namedItem(name: string): IHTMLInputElement | IHTMLTextAreaElement | IHTMLSelectElement | IHTMLButtonElement | IRadioNodeList | null;
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IHTMLFormControlsCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHTMLFormControlsCollection.js","sourceRoot":"","sources":["../../../src/nodes/html-form-element/IHTMLFormControlsCollection.ts"],"names":[],"mappings":""}
@@ -1,6 +1,8 @@
1
1
  import Event from '../../event/Event';
2
- import IElement from '../element/IElement';
2
+ import IHTMLButtonElement from '../html-button-element/IHTMLButtonElement';
3
3
  import IHTMLElement from '../html-element/IHTMLElement';
4
+ import IHTMLInputElement from '../html-input-element/IHTMLInputElement';
5
+ import IHTMLFormControlsCollection from './IHTMLFormControlsCollection';
4
6
  /**
5
7
  * HTML Form Element.
6
8
  *
@@ -16,16 +18,24 @@ export default interface IHTMLFormElement extends IHTMLElement {
16
18
  enctype: string;
17
19
  autocomplete: string;
18
20
  acceptCharset: string;
19
- noValidate: string;
20
- elements: IElement[];
21
- length: number;
21
+ noValidate: boolean;
22
+ readonly elements: IHTMLFormControlsCollection;
23
+ readonly length: number;
22
24
  onformdata: (event: Event) => void | null;
23
25
  onreset: (event: Event) => void | null;
24
26
  onsubmit: (event: Event) => void | null;
25
27
  /**
26
- * Submits form.
28
+ * Submits form. No submit event is raised. In particular, the form's "submit" event handler is not run.
29
+ *
30
+ * In Happy DOM this means that nothing happens.
27
31
  */
28
32
  submit(): void;
33
+ /**
34
+ * Submits form, reports validity and raises submit event.
35
+ *
36
+ * @param [submitter] Submitter.
37
+ */
38
+ requestSubmit(submitter?: IHTMLInputElement | IHTMLButtonElement): void;
29
39
  /**
30
40
  * Resets form.
31
41
  */
@@ -33,7 +43,7 @@ export default interface IHTMLFormElement extends IHTMLElement {
33
43
  /**
34
44
  * Reports validity.
35
45
  */
36
- reportValidity(): void;
46
+ reportValidity(): boolean;
37
47
  /**
38
48
  * Checks validity.
39
49
  *
@@ -0,0 +1,15 @@
1
+ import IElement from '../element/IElement';
2
+ import INodeList from '../node/INodeList';
3
+ /**
4
+ * RadioNodeList.
5
+ *
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList
7
+ */
8
+ export default interface IRadioNodeList extends INodeList<IElement> {
9
+ /**
10
+ * Returns value.
11
+ *
12
+ * @returns Value.
13
+ */
14
+ readonly value: string;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IRadioNodeList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IRadioNodeList.js","sourceRoot":"","sources":["../../../src/nodes/html-form-element/IRadioNodeList.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import IElement from '../element/IElement';
2
+ import NodeList from '../node/NodeList';
3
+ import IRadioNodeList from './IRadioNodeList';
4
+ /**
5
+ * RadioNodeList
6
+ *
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList
8
+ */
9
+ export default class RadioNodeList extends NodeList<IElement> implements IRadioNodeList {
10
+ /**
11
+ * Returns value.
12
+ *
13
+ * @returns Value.
14
+ */
15
+ get value(): string;
16
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const NodeList_1 = __importDefault(require("../node/NodeList"));
7
+ /**
8
+ * RadioNodeList
9
+ *
10
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList
11
+ */
12
+ class RadioNodeList extends NodeList_1.default {
13
+ /**
14
+ * Returns value.
15
+ *
16
+ * @returns Value.
17
+ */
18
+ get value() {
19
+ for (const node of this) {
20
+ if (node.checked) {
21
+ return node.value;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ }
27
+ exports.default = RadioNodeList;
28
+ //# sourceMappingURL=RadioNodeList.js.map