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.
- package/README.md +2 -2
- package/lib/cookie/CookieJar.js +1 -1
- package/lib/cookie/CookieJar.js.map +1 -1
- package/lib/dom-token-list/DOMTokenList.js +24 -20
- package/lib/dom-token-list/DOMTokenList.js.map +1 -1
- package/lib/event/EventTarget.js +6 -3
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
- package/lib/exception/DOMExceptionNameEnum.js +4 -0
- package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
- package/lib/fetch/AbortController.d.ts +19 -0
- package/lib/fetch/AbortController.js +30 -0
- package/lib/fetch/AbortController.js.map +1 -0
- package/lib/fetch/AbortSignal.d.ts +25 -0
- package/lib/fetch/AbortSignal.js +51 -0
- package/lib/fetch/AbortSignal.js.map +1 -0
- package/lib/fetch/Fetch.d.ts +117 -0
- package/lib/fetch/Fetch.js +530 -0
- package/lib/fetch/Fetch.js.map +1 -0
- package/lib/fetch/Headers.d.ts +81 -3
- package/lib/fetch/Headers.js +139 -24
- package/lib/fetch/Headers.js.map +1 -1
- package/lib/fetch/Request.d.ts +56 -32
- package/lib/fetch/Request.js +165 -110
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/{ResourceFetchHandler.d.ts → ResourceFetch.d.ts} +1 -1
- package/lib/fetch/{ResourceFetchHandler.js → ResourceFetch.js} +5 -5
- package/lib/fetch/ResourceFetch.js.map +1 -0
- package/lib/fetch/Response.d.ts +60 -26
- package/lib/fetch/Response.js +196 -104
- package/lib/fetch/Response.js.map +1 -1
- package/lib/fetch/data-uri/DataURIParser.d.ts +20 -0
- package/lib/fetch/data-uri/DataURIParser.js +60 -0
- package/lib/fetch/data-uri/DataURIParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartFormDataParser.d.ts +40 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js +81 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartReader.d.ts +49 -0
- package/lib/fetch/multipart/MultipartReader.js +178 -0
- package/lib/fetch/multipart/MultipartReader.js.map +1 -0
- package/lib/fetch/types/IHeaders.d.ts +71 -0
- package/lib/fetch/{IHeaders.js.map → types/IHeaders.js.map} +1 -1
- package/lib/fetch/types/IHeadersInit.js.map +1 -0
- package/lib/fetch/types/IRequest.d.ts +60 -0
- package/lib/fetch/{IRequest.js.map → types/IRequest.js.map} +1 -1
- package/lib/fetch/types/IRequestBody.d.ts +7 -0
- package/lib/fetch/{IBody.js → types/IRequestBody.js} +1 -1
- package/lib/fetch/types/IRequestBody.js.map +1 -0
- package/lib/fetch/types/IRequestCredentials.d.ts +2 -0
- package/lib/fetch/types/IRequestCredentials.js +3 -0
- package/lib/fetch/types/IRequestCredentials.js.map +1 -0
- package/lib/fetch/{RequestInfo.d.ts → types/IRequestInfo.d.ts} +2 -2
- package/lib/fetch/types/IRequestInfo.js +3 -0
- package/lib/fetch/types/IRequestInfo.js.map +1 -0
- package/lib/fetch/types/IRequestInit.d.ts +21 -0
- package/lib/fetch/types/IRequestInit.js.map +1 -0
- package/lib/fetch/types/IRequestRedirect.d.ts +2 -0
- package/lib/fetch/types/IRequestRedirect.js +3 -0
- package/lib/fetch/types/IRequestRedirect.js.map +1 -0
- package/lib/fetch/types/IRequestReferrerPolicy.d.ts +2 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js +3 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js.map +1 -0
- package/lib/fetch/types/IResponse.d.ts +27 -0
- package/lib/fetch/{IResponse.js.map → types/IResponse.js.map} +1 -1
- package/lib/fetch/types/IResponseBody.d.ts +7 -0
- package/lib/fetch/types/IResponseBody.js +3 -0
- package/lib/fetch/types/IResponseBody.js.map +1 -0
- package/lib/fetch/types/IResponseInit.d.ts +9 -0
- package/lib/fetch/types/IResponseInit.js.map +1 -0
- package/lib/fetch/utilities/FetchBodyUtility.d.ts +44 -0
- package/lib/fetch/utilities/FetchBodyUtility.js +156 -0
- package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchCORSUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchCORSUtility.js +20 -0
- package/lib/fetch/utilities/FetchCORSUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js +45 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.d.ts +55 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js +194 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.d.ts +38 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js +70 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js.map +1 -0
- package/lib/file/Blob.d.ts +2 -2
- package/lib/file/Blob.js +1 -1
- package/lib/file/Blob.js.map +1 -1
- package/lib/file/File.d.ts +2 -1
- package/lib/file/File.js.map +1 -1
- package/lib/form-data/FormData.d.ts +98 -0
- package/lib/form-data/FormData.js +212 -0
- package/lib/form-data/FormData.js.map +1 -0
- package/lib/index.d.ts +14 -1
- package/lib/index.js +20 -2
- package/lib/index.js.map +1 -1
- package/lib/nodes/document/Document.d.ts +5 -17
- package/lib/nodes/document/Document.js +11 -54
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +1 -1
- package/lib/nodes/document-fragment/DocumentFragment.d.ts +3 -14
- package/lib/nodes/document-fragment/DocumentFragment.js +7 -51
- package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
- package/lib/nodes/document-fragment/IDocumentFragment.d.ts +2 -1
- package/lib/nodes/element/Element.d.ts +8 -8
- package/lib/nodes/element/Element.js +28 -45
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementUtility.d.ts +32 -0
- package/lib/nodes/element/ElementUtility.js +105 -0
- package/lib/nodes/element/ElementUtility.js.map +1 -0
- package/lib/nodes/element/HTMLCollection.d.ts +26 -3
- package/lib/nodes/element/HTMLCollection.js +51 -0
- package/lib/nodes/element/HTMLCollection.js.map +1 -1
- package/lib/nodes/element/IHTMLCollection.d.ts +9 -2
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +24 -24
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-audio-element/Audio.d.ts +15 -0
- package/lib/nodes/html-audio-element/Audio.js +27 -0
- package/lib/nodes/html-audio-element/Audio.js.map +1 -0
- package/lib/nodes/html-base-element/HTMLBaseElement.js +4 -4
- package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +79 -3
- package/lib/nodes/html-button-element/HTMLButtonElement.js +158 -10
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +28 -2
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -3
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +12 -12
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.d.ts +32 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js +58 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/HTMLFormElement.d.ts +37 -17
- package/lib/nodes/html-form-element/HTMLFormElement.js +128 -37
- package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.d.ts +25 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js +3 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +16 -6
- package/lib/nodes/html-form-element/IRadioNodeList.d.ts +15 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js +3 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js.map +1 -0
- package/lib/nodes/html-form-element/RadioNodeList.d.ts +16 -0
- package/lib/nodes/html-form-element/RadioNodeList.js +28 -0
- package/lib/nodes/html-form-element/RadioNodeList.js.map +1 -0
- package/lib/nodes/html-image-element/HTMLImageElement.js +19 -19
- package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +43 -19
- package/lib/nodes/html-input-element/HTMLInputElement.js +206 -111
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +14 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +3 -7
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +21 -21
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.js +21 -21
- package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
- package/lib/nodes/html-meta-element/HTMLMetaElement.js +8 -8
- package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js +6 -6
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +3 -4
- package/lib/nodes/html-option-element/HTMLOptionElement.js +26 -29
- package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -16
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/ScriptUtility.js +5 -5
- package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.d.ts +5 -6
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +42 -41
- package/lib/nodes/html-select-element/HTMLSelectElement.js +134 -138
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.d.ts +4 -5
- package/lib/nodes/html-select-element/IHTMLOptionsCollection.js.map +1 -0
- package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +22 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js +2 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
- package/lib/nodes/html-style-element/HTMLStyleElement.js +7 -7
- package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +55 -2
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +150 -40
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +16 -0
- package/lib/nodes/node/Node.d.ts +12 -1
- package/lib/nodes/node/Node.js +50 -4
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeList.d.ts +2 -3
- package/lib/nodes/node/NodeList.js.map +1 -1
- package/lib/nodes/parent-node/IParentNode.d.ts +4 -4
- package/lib/nodes/parent-node/ParentNodeUtility.d.ts +3 -3
- package/lib/nodes/parent-node/ParentNodeUtility.js +13 -11
- package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
- package/lib/nodes/text/Text.d.ts +13 -0
- package/lib/nodes/text/Text.js +30 -0
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/query-selector/QuerySelector.js +2 -2
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/query-selector/SelectorItem.js +2 -0
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/validity-state/ValidityState.d.ts +87 -0
- package/lib/validity-state/ValidityState.js +171 -0
- package/lib/validity-state/ValidityState.js.map +1 -0
- package/lib/window/GlobalWindow.d.ts +0 -8
- package/lib/window/GlobalWindow.js +0 -2
- package/lib/window/GlobalWindow.js.map +1 -1
- package/lib/window/INodeJSGlobal.d.ts +71 -0
- package/lib/window/INodeJSGlobal.js +2 -0
- package/lib/window/INodeJSGlobal.js.map +1 -0
- package/lib/window/IWindow.d.ts +30 -10
- package/lib/window/Window.d.ts +37 -20
- package/lib/window/Window.js +22 -10
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-http-request/XMLHttpRequest.js +20 -12
- package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
- package/lib/xml-parser/XMLParser.js +1 -1
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/package.json +2 -3
- package/src/cookie/CookieJar.ts +1 -1
- package/src/dom-token-list/DOMTokenList.ts +24 -20
- package/src/event/EventTarget.ts +7 -3
- package/src/exception/DOMExceptionNameEnum.ts +5 -1
- package/src/fetch/AbortController.ts +26 -0
- package/src/fetch/AbortSignal.ts +44 -0
- package/src/fetch/Fetch.ts +666 -0
- package/src/fetch/Headers.ts +151 -3
- package/src/fetch/Request.ts +226 -94
- package/src/fetch/{ResourceFetchHandler.ts → ResourceFetch.ts} +3 -3
- package/src/fetch/Response.ts +252 -89
- package/src/fetch/data-uri/DataURIParser.ts +66 -0
- package/src/fetch/multipart/MultipartFormDataParser.ts +113 -0
- package/src/fetch/multipart/MultipartReader.ts +217 -0
- package/src/fetch/types/IHeaders.ts +80 -0
- package/src/fetch/types/IRequest.ts +65 -0
- package/src/fetch/types/IRequestBody.ts +15 -0
- package/src/fetch/types/IRequestCredentials.ts +2 -0
- package/src/fetch/types/IRequestInfo.ts +6 -0
- package/src/fetch/types/IRequestInit.ts +21 -0
- package/src/fetch/types/IRequestRedirect.ts +3 -0
- package/src/fetch/types/IRequestReferrerPolicy.ts +11 -0
- package/src/fetch/types/IResponse.ts +27 -0
- package/src/fetch/types/IResponseBody.ts +15 -0
- package/src/fetch/types/IResponseInit.ts +10 -0
- package/src/fetch/utilities/FetchBodyUtility.ts +175 -0
- package/src/fetch/utilities/FetchCORSUtility.ts +18 -0
- package/src/fetch/utilities/FetchRequestHeaderUtility.ts +47 -0
- package/src/fetch/utilities/FetchRequestReferrerUtility.ts +241 -0
- package/src/fetch/utilities/FetchRequestValidationUtility.ts +82 -0
- package/src/file/Blob.ts +2 -2
- package/src/file/File.ts +5 -1
- package/src/form-data/FormData.ts +237 -0
- package/src/index.ts +27 -1
- package/src/nodes/document/Document.ts +23 -64
- package/src/nodes/document/IDocument.ts +1 -1
- package/src/nodes/document-fragment/DocumentFragment.ts +9 -59
- package/src/nodes/document-fragment/IDocumentFragment.ts +2 -1
- package/src/nodes/element/Element.ts +43 -56
- package/src/nodes/element/ElementUtility.ts +137 -0
- package/src/nodes/element/HTMLCollection.ts +60 -3
- package/src/nodes/element/IHTMLCollection.ts +10 -2
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +24 -24
- package/src/nodes/html-audio-element/Audio.ts +22 -0
- package/src/nodes/html-base-element/HTMLBaseElement.ts +4 -4
- package/src/nodes/html-button-element/HTMLButtonElement.ts +184 -10
- package/src/nodes/html-button-element/IHTMLButtonElement.ts +31 -2
- package/src/nodes/html-dialog-element/HTMLDialogElement.ts +3 -3
- package/src/nodes/html-element/HTMLElement.ts +12 -12
- package/src/nodes/html-form-element/HTMLFormControlsCollection.ts +76 -0
- package/src/nodes/html-form-element/HTMLFormElement.ts +147 -41
- package/src/nodes/html-form-element/IHTMLFormControlsCollection.ts +45 -0
- package/src/nodes/html-form-element/IHTMLFormElement.ts +17 -6
- package/src/nodes/html-form-element/IRadioNodeList.ts +16 -0
- package/src/nodes/html-form-element/RadioNodeList.ts +24 -0
- package/src/nodes/html-image-element/HTMLImageElement.ts +19 -19
- package/src/nodes/html-input-element/HTMLInputElement.ts +232 -113
- package/src/nodes/html-input-element/IHTMLInputElement.ts +20 -1
- package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -7
- package/src/nodes/html-link-element/HTMLLinkElement.ts +21 -21
- package/src/nodes/html-media-element/HTMLMediaElement.ts +21 -21
- package/src/nodes/html-meta-element/HTMLMetaElement.ts +8 -8
- package/src/nodes/html-opt-group-element/HTMLOptGroupElement.ts +6 -6
- package/src/nodes/html-option-element/HTMLOptionElement.ts +29 -30
- package/src/nodes/html-script-element/HTMLScriptElement.ts +16 -16
- package/src/nodes/html-script-element/ScriptUtility.ts +5 -5
- package/src/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.ts +5 -9
- package/src/nodes/html-select-element/HTMLSelectElement.ts +159 -170
- package/src/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.ts +4 -8
- package/src/nodes/html-select-element/IHTMLSelectElement.ts +25 -2
- package/src/nodes/html-slot-element/HTMLSlotElement.ts +2 -2
- package/src/nodes/html-style-element/HTMLStyleElement.ts +7 -7
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +174 -41
- package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +18 -0
- package/src/nodes/node/Node.ts +61 -6
- package/src/nodes/node/NodeList.ts +2 -3
- package/src/nodes/parent-node/IParentNode.ts +7 -4
- package/src/nodes/parent-node/ParentNodeUtility.ts +25 -15
- package/src/nodes/text/Text.ts +38 -0
- package/src/query-selector/QuerySelector.ts +2 -2
- package/src/query-selector/SelectorItem.ts +3 -0
- package/src/validity-state/ValidityState.ts +211 -0
- package/src/window/GlobalWindow.ts +0 -2
- package/src/window/INodeJSGlobal.ts +70 -0
- package/src/window/IWindow.ts +32 -10
- package/src/window/Window.ts +43 -21
- package/src/xml-http-request/XMLHttpRequest.ts +27 -26
- package/src/xml-parser/XMLParser.ts +1 -1
- package/lib/fetch/FetchHandler.d.ts +0 -18
- package/lib/fetch/FetchHandler.js +0 -83
- package/lib/fetch/FetchHandler.js.map +0 -1
- package/lib/fetch/IAbortSignal.d.ts +0 -16
- package/lib/fetch/IAbortSignal.js +0 -4
- package/lib/fetch/IAbortSignal.js.map +0 -1
- package/lib/fetch/IBody.d.ts +0 -17
- package/lib/fetch/IBody.js.map +0 -1
- package/lib/fetch/IHeaders.d.ts +0 -18
- package/lib/fetch/IHeadersInit.js.map +0 -1
- package/lib/fetch/IRequest.d.ts +0 -18
- package/lib/fetch/IRequestInit.d.ts +0 -16
- package/lib/fetch/IRequestInit.js.map +0 -1
- package/lib/fetch/IResponse.d.ts +0 -20
- package/lib/fetch/IResponseInit.d.ts +0 -9
- package/lib/fetch/IResponseInit.js.map +0 -1
- package/lib/fetch/RequestInfo.js +0 -3
- package/lib/fetch/RequestInfo.js.map +0 -1
- package/lib/fetch/ResourceFetchHandler.js.map +0 -1
- package/lib/form-data/IFormData.d.ts +0 -32
- package/lib/form-data/IFormData.js +0 -3
- package/lib/form-data/IFormData.js.map +0 -1
- package/lib/location/RelativeURL.d.ts +0 -15
- package/lib/location/RelativeURL.js +0 -19
- package/lib/location/RelativeURL.js.map +0 -1
- package/lib/nodes/element/HTMLCollectionFactory.d.ts +0 -21
- package/lib/nodes/element/HTMLCollectionFactory.js +0 -31
- package/lib/nodes/element/HTMLCollectionFactory.js.map +0 -1
- package/lib/nodes/html-option-element/IHTMLOptionsCollection.js.map +0 -1
- package/lib/nodes/node/NodeListFactory.d.ts +0 -21
- package/lib/nodes/node/NodeListFactory.js +0 -31
- package/lib/nodes/node/NodeListFactory.js.map +0 -1
- package/lib/nodes/validity-state/ValidityState.d.ts +0 -52
- package/lib/nodes/validity-state/ValidityState.js +0 -81
- package/lib/nodes/validity-state/ValidityState.js.map +0 -1
- package/src/fetch/FetchHandler.ts +0 -90
- package/src/fetch/IAbortSignal.ts +0 -34
- package/src/fetch/IBody.ts +0 -18
- package/src/fetch/IHeaders.ts +0 -18
- package/src/fetch/IRequest.ts +0 -59
- package/src/fetch/IRequestInit.ts +0 -41
- package/src/fetch/IResponse.ts +0 -22
- package/src/fetch/IResponseInit.ts +0 -10
- package/src/fetch/RequestInfo.ts +0 -6
- package/src/form-data/IFormData.ts +0 -33
- package/src/location/RelativeURL.ts +0 -17
- package/src/nodes/element/HTMLCollectionFactory.ts +0 -31
- package/src/nodes/node/NodeListFactory.ts +0 -31
- package/src/nodes/validity-state/ValidityState.ts +0 -84
- /package/lib/fetch/{IHeaders.js → types/IHeaders.js} +0 -0
- /package/lib/fetch/{IHeadersInit.d.ts → types/IHeadersInit.d.ts} +0 -0
- /package/lib/fetch/{IHeadersInit.js → types/IHeadersInit.js} +0 -0
- /package/lib/fetch/{IRequest.js → types/IRequest.js} +0 -0
- /package/lib/fetch/{IRequestInit.js → types/IRequestInit.js} +0 -0
- /package/lib/fetch/{IResponse.js → types/IResponse.js} +0 -0
- /package/lib/fetch/{IResponseInit.js → types/IResponseInit.js} +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.js +0 -0
- /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():
|
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:
|
130
|
+
set noValidate(noValidate: boolean);
|
123
131
|
/**
|
124
|
-
*
|
132
|
+
* Submits form. No submit event is raised. In particular, the form's "submit" event handler is not run.
|
125
133
|
*
|
126
|
-
*
|
134
|
+
* In Happy DOM this means that nothing happens.
|
127
135
|
*/
|
128
|
-
|
136
|
+
submit(): void;
|
129
137
|
/**
|
130
|
-
*
|
138
|
+
* Submits form, reports validity and raises submit event.
|
131
139
|
*
|
132
|
-
* @
|
140
|
+
* @param [submitter] Submitter.
|
133
141
|
*/
|
134
|
-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
|
170
|
+
if (!noValidate) {
|
171
|
+
this.removeAttribute('novalidate');
|
172
|
+
}
|
173
|
+
else {
|
174
|
+
this.setAttribute('novalidate', '');
|
175
|
+
}
|
164
176
|
}
|
165
177
|
/**
|
166
|
-
*
|
178
|
+
* Submits form. No submit event is raised. In particular, the form's "submit" event handler is not run.
|
167
179
|
*
|
168
|
-
*
|
180
|
+
* In Happy DOM this means that nothing happens.
|
169
181
|
*/
|
170
|
-
|
171
|
-
return this.querySelectorAll('input,textarea');
|
172
|
-
}
|
182
|
+
submit() { }
|
173
183
|
/**
|
174
|
-
*
|
184
|
+
* Submits form, reports validity and raises submit event.
|
175
185
|
*
|
176
|
-
* @
|
186
|
+
* @param [submitter] Submitter.
|
177
187
|
*/
|
178
|
-
|
179
|
-
|
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
|
-
|
191
|
-
|
192
|
-
|
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
|
-
|
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":";;;;;AAAA,8EAAsD;
|
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 @@
|
|
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
|
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:
|
20
|
-
elements:
|
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():
|
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 @@
|
|
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
|