happy-dom 10.5.2 → 10.6.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/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +20 -18
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +4 -3
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/cjs/named-node-map/INamedNodeMap.d.ts +26 -26
- package/cjs/named-node-map/INamedNodeMap.d.ts.map +1 -1
- package/cjs/named-node-map/NamedNodeMap.cjs +121 -81
- package/cjs/named-node-map/NamedNodeMap.cjs.map +1 -1
- package/cjs/named-node-map/NamedNodeMap.d.ts +57 -40
- package/cjs/named-node-map/NamedNodeMap.d.ts.map +1 -1
- package/cjs/nodes/element/Dataset.cjs +16 -17
- package/cjs/nodes/element/Dataset.cjs.map +1 -1
- package/cjs/nodes/element/Dataset.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +22 -133
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts +9 -16
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/element/ElementNamedNodeMap.cjs +152 -0
- package/cjs/nodes/element/ElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/element/ElementNamedNodeMap.d.ts +45 -0
- package/cjs/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/element/ElementUtility.cjs +20 -15
- package/cjs/nodes/element/ElementUtility.cjs.map +1 -1
- package/cjs/nodes/element/ElementUtility.d.ts.map +1 -1
- package/cjs/nodes/element/IElement.d.ts +5 -5
- package/cjs/nodes/element/IElement.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +2 -26
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs +44 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +2 -26
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs +41 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-element/HTMLElement.cjs +2 -20
- package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts +3 -10
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs +35 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +2 -12
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs +26 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs +2 -26
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +1 -6
- package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
- package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +2 -23
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs +39 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-option-element/HTMLOptionElement.cjs +2 -30
- package/cjs/nodes/html-option-element/HTMLOptionElement.cjs.map +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs +45 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +2 -14
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs +26 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
- package/cjs/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +2 -26
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +2 -26
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs +42 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs +5 -2
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.cjs.map +1 -1
- package/cjs/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
- package/cjs/nodes/node/NodeUtility.cjs +4 -15
- package/cjs/nodes/node/NodeUtility.cjs.map +1 -1
- package/cjs/nodes/node/NodeUtility.d.ts.map +1 -1
- package/cjs/nodes/svg-element/SVGElement.cjs +2 -20
- package/cjs/nodes/svg-element/SVGElement.cjs.map +1 -1
- package/cjs/nodes/svg-element/SVGElement.d.ts +3 -10
- package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs +35 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.cjs.map +1 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
- package/cjs/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
- package/cjs/query-selector/SelectorItem.cjs +1 -1
- package/cjs/query-selector/SelectorItem.cjs.map +1 -1
- package/cjs/xml-serializer/XMLSerializer.cjs +3 -2
- package/cjs/xml-serializer/XMLSerializer.cjs.map +1 -1
- package/cjs/xml-serializer/XMLSerializer.d.ts.map +1 -1
- package/lib/css/declaration/AbstractCSSStyleDeclaration.d.ts.map +1 -1
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js +20 -18
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +4 -3
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
- package/lib/named-node-map/INamedNodeMap.d.ts +26 -26
- package/lib/named-node-map/INamedNodeMap.d.ts.map +1 -1
- package/lib/named-node-map/NamedNodeMap.d.ts +57 -40
- package/lib/named-node-map/NamedNodeMap.d.ts.map +1 -1
- package/lib/named-node-map/NamedNodeMap.js +121 -81
- package/lib/named-node-map/NamedNodeMap.js.map +1 -1
- package/lib/nodes/element/Dataset.d.ts.map +1 -1
- package/lib/nodes/element/Dataset.js +16 -17
- package/lib/nodes/element/Dataset.js.map +1 -1
- package/lib/nodes/element/Element.d.ts +9 -16
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +22 -133
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementNamedNodeMap.d.ts +45 -0
- package/lib/nodes/element/ElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/element/ElementNamedNodeMap.js +146 -0
- package/lib/nodes/element/ElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/element/ElementUtility.d.ts.map +1 -1
- package/lib/nodes/element/ElementUtility.js +20 -15
- package/lib/nodes/element/ElementUtility.js.map +1 -1
- package/lib/nodes/element/IElement.d.ts +5 -5
- package/lib/nodes/element/IElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +7 -11
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +2 -26
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js +38 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +2 -9
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.js +2 -26
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js +35 -0
- package/lib/nodes/html-button-element/HTMLButtonElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-element/HTMLElement.d.ts +3 -10
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +2 -20
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.js +29 -0
- package/lib/nodes/html-element/HTMLElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +2 -5
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +2 -12
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts +16 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js +20 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +2 -9
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.js +2 -26
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-input-element/HTMLInputElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +1 -6
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +4 -10
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +2 -23
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js +33 -0
- package/lib/nodes/html-link-element/HTMLLinkElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +2 -9
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.js +2 -30
- package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js +39 -0
- package/lib/nodes/html-option-element/HTMLOptionElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +2 -9
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +2 -14
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts +16 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js +20 -0
- package/lib/nodes/html-script-element/HTMLScriptElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +2 -9
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.js +2 -26
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-select-element/HTMLSelectElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +2 -9
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +2 -26
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js +36 -0
- package/lib/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.js.map +1 -0
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.d.ts.map +1 -1
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +5 -2
- package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
- package/lib/nodes/node/NodeUtility.d.ts.map +1 -1
- package/lib/nodes/node/NodeUtility.js +4 -15
- package/lib/nodes/node/NodeUtility.js.map +1 -1
- package/lib/nodes/svg-element/SVGElement.d.ts +3 -10
- package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/lib/nodes/svg-element/SVGElement.js +2 -20
- package/lib/nodes/svg-element/SVGElement.js.map +1 -1
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts +20 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.d.ts.map +1 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.js +29 -0
- package/lib/nodes/svg-element/SVGElementNamedNodeMap.js.map +1 -0
- package/lib/query-selector/SelectorItem.js +1 -1
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/xml-serializer/XMLSerializer.d.ts.map +1 -1
- package/lib/xml-serializer/XMLSerializer.js +3 -2
- package/lib/xml-serializer/XMLSerializer.js.map +1 -1
- package/package.json +1 -1
- package/src/css/declaration/AbstractCSSStyleDeclaration.ts +32 -20
- package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +4 -3
- package/src/named-node-map/INamedNodeMap.ts +26 -26
- package/src/named-node-map/NamedNodeMap.ts +135 -73
- package/src/nodes/element/Dataset.ts +19 -17
- package/src/nodes/element/Element.ts +27 -176
- package/src/nodes/element/ElementNamedNodeMap.ts +194 -0
- package/src/nodes/element/ElementUtility.ts +20 -18
- package/src/nodes/element/IElement.ts +5 -5
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +5 -33
- package/src/nodes/html-anchor-element/HTMLAnchorElementNamedNodeMap.ts +48 -0
- package/src/nodes/html-button-element/HTMLButtonElement.ts +3 -33
- package/src/nodes/html-button-element/HTMLButtonElementNamedNodeMap.ts +56 -0
- package/src/nodes/html-element/HTMLElement.ts +4 -28
- package/src/nodes/html-element/HTMLElementNamedNodeMap.ts +38 -0
- package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +4 -18
- package/src/nodes/html-iframe-element/HTMLIFrameElementNamedNodeMap.ts +26 -0
- package/src/nodes/html-input-element/HTMLInputElement.ts +4 -33
- package/src/nodes/html-input-element/HTMLInputElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -6
- package/src/nodes/html-link-element/HTMLLinkElement.ts +4 -32
- package/src/nodes/html-link-element/HTMLLinkElementNamedNodeMap.ts +43 -0
- package/src/nodes/html-option-element/HTMLOptionElement.ts +3 -43
- package/src/nodes/html-option-element/HTMLOptionElementNamedNodeMap.ts +55 -0
- package/src/nodes/html-script-element/HTMLScriptElement.ts +3 -18
- package/src/nodes/html-script-element/HTMLScriptElementNamedNodeMap.ts +26 -0
- package/src/nodes/html-select-element/HTMLSelectElement.ts +4 -33
- package/src/nodes/html-select-element/HTMLSelectElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +3 -33
- package/src/nodes/html-text-area-element/HTMLTextAreaElementNamedNodeMap.ts +57 -0
- package/src/nodes/html-unknown-element/HTMLUnknownElement.ts +6 -2
- package/src/nodes/node/NodeUtility.ts +7 -24
- package/src/nodes/svg-element/SVGElement.ts +5 -28
- package/src/nodes/svg-element/SVGElementNamedNodeMap.ts +38 -0
- package/src/query-selector/SelectorItem.ts +1 -1
- package/src/xml-serializer/XMLSerializer.ts +4 -2
@@ -0,0 +1,26 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLIFrameElement from './HTMLIFrameElement.js';
|
4
|
+
import HTMLIFrameUtility from './HTMLIFrameUtility.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLIFrameElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLIFrameElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedAttribute = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (item.name === 'src' && item.value && item.value !== replacedAttribute?.value) {
|
21
|
+
HTMLIFrameUtility.loadPage(this._ownerElement);
|
22
|
+
}
|
23
|
+
|
24
|
+
return replacedAttribute || null;
|
25
|
+
}
|
26
|
+
}
|
@@ -13,7 +13,6 @@ import HTMLInputElementValueStepping from './HTMLInputElementValueStepping.js';
|
|
13
13
|
import FileList from './FileList.js';
|
14
14
|
import File from '../../file/File.js';
|
15
15
|
import IFileList from './IFileList.js';
|
16
|
-
import IAttr from '../attr/IAttr.js';
|
17
16
|
import INode from '../node/INode.js';
|
18
17
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
19
18
|
import INodeList from '../node/INodeList.js';
|
@@ -23,6 +22,8 @@ import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
|
23
22
|
import NodeList from '../node/NodeList.js';
|
24
23
|
import EventPhaseEnum from '../../event/EventPhaseEnum.js';
|
25
24
|
import { dateIsoWeek, isoWeekDate } from './HTMLInputDateUtility.js';
|
25
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
26
|
+
import HTMLInputElementNamedNodeMap from './HTMLInputElementNamedNodeMap.js';
|
26
27
|
|
27
28
|
/**
|
28
29
|
* HTML Input Element.
|
@@ -34,6 +35,8 @@ import { dateIsoWeek, isoWeekDate } from './HTMLInputDateUtility.js';
|
|
34
35
|
* https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/nodes/nodes/HTMLInputElement-impl.js (MIT licensed).
|
35
36
|
*/
|
36
37
|
export default class HTMLInputElement extends HTMLElement implements IHTMLInputElement {
|
38
|
+
public override readonly attributes: INamedNodeMap = new HTMLInputElementNamedNodeMap(this);
|
39
|
+
|
37
40
|
// Related to parent form.
|
38
41
|
public formAction = '';
|
39
42
|
public formMethod = '';
|
@@ -1224,38 +1227,6 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE
|
|
1224
1227
|
return returnValue;
|
1225
1228
|
}
|
1226
1229
|
|
1227
|
-
/**
|
1228
|
-
* @override
|
1229
|
-
*/
|
1230
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
1231
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
1232
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
1233
|
-
|
1234
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
1235
|
-
if (oldValue) {
|
1236
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
1237
|
-
}
|
1238
|
-
if (attribute.value) {
|
1239
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
1240
|
-
}
|
1241
|
-
}
|
1242
|
-
|
1243
|
-
return replacedAttribute;
|
1244
|
-
}
|
1245
|
-
|
1246
|
-
/**
|
1247
|
-
* @override
|
1248
|
-
*/
|
1249
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
1250
|
-
super.removeAttributeNode(attribute);
|
1251
|
-
|
1252
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
1253
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
1254
|
-
}
|
1255
|
-
|
1256
|
-
return attribute;
|
1257
|
-
}
|
1258
|
-
|
1259
1230
|
/**
|
1260
1231
|
* @override
|
1261
1232
|
*/
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
4
|
+
import HTMLInputElement from './HTMLInputElement.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLInputElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLInputElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if ((item.name === 'id' || item.name === 'name') && this._ownerElement._formNode) {
|
21
|
+
if (replacedItem && replacedItem.value) {
|
22
|
+
(<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
|
23
|
+
this._ownerElement,
|
24
|
+
replacedItem.value
|
25
|
+
);
|
26
|
+
}
|
27
|
+
if (item.value) {
|
28
|
+
(<HTMLFormElement>this._ownerElement._formNode)._appendFormControlItem(
|
29
|
+
this._ownerElement,
|
30
|
+
item.value
|
31
|
+
);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
return replacedItem || null;
|
36
|
+
}
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @override
|
40
|
+
*/
|
41
|
+
public override removeNamedItem(name: string): IAttr | null {
|
42
|
+
const removedItem = super.removeNamedItem(name);
|
43
|
+
|
44
|
+
if (
|
45
|
+
removedItem &&
|
46
|
+
(removedItem.name === 'id' || removedItem.name === 'name') &&
|
47
|
+
this._ownerElement._formNode
|
48
|
+
) {
|
49
|
+
(<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
|
50
|
+
this._ownerElement,
|
51
|
+
removedItem.value
|
52
|
+
);
|
53
|
+
}
|
54
|
+
|
55
|
+
return removedItem;
|
56
|
+
}
|
57
|
+
}
|
@@ -42,12 +42,9 @@ export default class HTMLLabelElement extends HTMLElement implements IHTMLLabelE
|
|
42
42
|
if (htmlFor) {
|
43
43
|
return <IHTMLElement>this.ownerDocument.getElementById(htmlFor);
|
44
44
|
}
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
}
|
49
|
-
}
|
50
|
-
return null;
|
45
|
+
return <IHTMLElement>(
|
46
|
+
this.querySelector('button,input:not([type="hidden"]),meter,output,progress,select,textarea')
|
47
|
+
);
|
51
48
|
}
|
52
49
|
|
53
50
|
/**
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import IAttr from '../attr/IAttr.js';
|
2
1
|
import CSSStyleSheet from '../../css/CSSStyleSheet.js';
|
3
2
|
import HTMLElement from '../html-element/HTMLElement.js';
|
4
3
|
import IHTMLLinkElement from './IHTMLLinkElement.js';
|
@@ -8,6 +7,8 @@ import INode from '../../nodes/node/INode.js';
|
|
8
7
|
import DOMTokenList from '../../dom-token-list/DOMTokenList.js';
|
9
8
|
import IDOMTokenList from '../../dom-token-list/IDOMTokenList.js';
|
10
9
|
import HTMLLinkElementUtility from './HTMLLinkElementUtility.js';
|
10
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
11
|
+
import HTMLLinkElementNamedNodeMap from './HTMLLinkElementNamedNodeMap.js';
|
11
12
|
|
12
13
|
/**
|
13
14
|
* HTML Link Element.
|
@@ -16,11 +17,12 @@ import HTMLLinkElementUtility from './HTMLLinkElementUtility.js';
|
|
16
17
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.
|
17
18
|
*/
|
18
19
|
export default class HTMLLinkElement extends HTMLElement implements IHTMLLinkElement {
|
20
|
+
public override readonly attributes: INamedNodeMap = new HTMLLinkElementNamedNodeMap(this);
|
19
21
|
public onerror: (event: ErrorEvent) => void = null;
|
20
22
|
public onload: (event: Event) => void = null;
|
21
23
|
public readonly sheet: CSSStyleSheet = null;
|
22
24
|
public _evaluateCSS = true;
|
23
|
-
|
25
|
+
public _relList: DOMTokenList = null;
|
24
26
|
|
25
27
|
/**
|
26
28
|
* Returns rel list.
|
@@ -178,36 +180,6 @@ export default class HTMLLinkElement extends HTMLElement implements IHTMLLinkEle
|
|
178
180
|
this.setAttribute('type', type);
|
179
181
|
}
|
180
182
|
|
181
|
-
/**
|
182
|
-
* @override
|
183
|
-
*/
|
184
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
185
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
186
|
-
|
187
|
-
if (attribute.name === 'rel' && this._relList) {
|
188
|
-
this._relList._updateIndices();
|
189
|
-
}
|
190
|
-
|
191
|
-
if (attribute.name === 'rel' || attribute.name === 'href') {
|
192
|
-
HTMLLinkElementUtility.loadExternalStylesheet(this);
|
193
|
-
}
|
194
|
-
|
195
|
-
return replacedAttribute;
|
196
|
-
}
|
197
|
-
|
198
|
-
/**
|
199
|
-
* @override
|
200
|
-
*/
|
201
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
202
|
-
super.removeAttributeNode(attribute);
|
203
|
-
|
204
|
-
if (attribute.name === 'rel' && this._relList) {
|
205
|
-
this._relList._updateIndices();
|
206
|
-
}
|
207
|
-
|
208
|
-
return attribute;
|
209
|
-
}
|
210
|
-
|
211
183
|
/**
|
212
184
|
* @override
|
213
185
|
*/
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLLinkElement from './HTMLLinkElement.js';
|
4
|
+
import HTMLLinkElementUtility from './HTMLLinkElementUtility.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLLinkElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLLinkElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (item.name === 'rel' && this._ownerElement._relList) {
|
21
|
+
this._ownerElement._relList._updateIndices();
|
22
|
+
}
|
23
|
+
|
24
|
+
if (item.name === 'rel' || item.name === 'href') {
|
25
|
+
HTMLLinkElementUtility.loadExternalStylesheet(this._ownerElement);
|
26
|
+
}
|
27
|
+
|
28
|
+
return replacedItem || null;
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @override
|
33
|
+
*/
|
34
|
+
public override removeNamedItem(name: string): IAttr | null {
|
35
|
+
const removedItem = super.removeNamedItem(name);
|
36
|
+
|
37
|
+
if (removedItem && removedItem.name === 'rel' && this._ownerElement._relList) {
|
38
|
+
this._ownerElement._relList._updateIndices();
|
39
|
+
}
|
40
|
+
|
41
|
+
return removedItem;
|
42
|
+
}
|
43
|
+
}
|
@@ -1,8 +1,9 @@
|
|
1
|
-
import
|
1
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
2
2
|
import HTMLElement from '../html-element/HTMLElement.js';
|
3
3
|
import IHTMLFormElement from '../html-form-element/IHTMLFormElement.js';
|
4
4
|
import HTMLSelectElement from '../html-select-element/HTMLSelectElement.js';
|
5
5
|
import INode from '../node/INode.js';
|
6
|
+
import HTMLOptionElementNamedNodeMap from './HTMLOptionElementNamedNodeMap.js';
|
6
7
|
import IHTMLOptionElement from './IHTMLOptionElement.js';
|
7
8
|
|
8
9
|
/**
|
@@ -12,6 +13,7 @@ import IHTMLOptionElement from './IHTMLOptionElement.js';
|
|
12
13
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.
|
13
14
|
*/
|
14
15
|
export default class HTMLOptionElement extends HTMLElement implements IHTMLOptionElement {
|
16
|
+
public override readonly attributes: INamedNodeMap = new HTMLOptionElementNamedNodeMap(this);
|
15
17
|
public _index: number;
|
16
18
|
public _selectedness = false;
|
17
19
|
public _dirtyness = false;
|
@@ -117,48 +119,6 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio
|
|
117
119
|
this.setAttribute('value', value);
|
118
120
|
}
|
119
121
|
|
120
|
-
/**
|
121
|
-
* @override
|
122
|
-
*/
|
123
|
-
public setAttributeNode(attribute: IAttr): IAttr | null {
|
124
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
125
|
-
|
126
|
-
if (
|
127
|
-
!this._dirtyness &&
|
128
|
-
attribute.name === 'selected' &&
|
129
|
-
replacedAttribute?.value !== attribute.value
|
130
|
-
) {
|
131
|
-
const selectNode = <HTMLSelectElement>this._selectNode;
|
132
|
-
|
133
|
-
this._selectedness = true;
|
134
|
-
|
135
|
-
if (selectNode) {
|
136
|
-
selectNode._updateOptionItems(this);
|
137
|
-
}
|
138
|
-
}
|
139
|
-
|
140
|
-
return replacedAttribute;
|
141
|
-
}
|
142
|
-
|
143
|
-
/**
|
144
|
-
* @override
|
145
|
-
*/
|
146
|
-
public removeAttributeNode(attribute: IAttr): IAttr {
|
147
|
-
super.removeAttributeNode(attribute);
|
148
|
-
|
149
|
-
if (!this._dirtyness && attribute.name === 'selected') {
|
150
|
-
const selectNode = <HTMLSelectElement>this._selectNode;
|
151
|
-
|
152
|
-
this._selectedness = false;
|
153
|
-
|
154
|
-
if (selectNode) {
|
155
|
-
selectNode._updateOptionItems();
|
156
|
-
}
|
157
|
-
}
|
158
|
-
|
159
|
-
return attribute;
|
160
|
-
}
|
161
|
-
|
162
122
|
/**
|
163
123
|
* @override
|
164
124
|
*/
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLSelectElement from '../html-select-element/HTMLSelectElement.js';
|
4
|
+
import HTMLOptionElement from './HTMLOptionElement.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLOptionElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLOptionElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (
|
21
|
+
!this._ownerElement._dirtyness &&
|
22
|
+
item.name === 'selected' &&
|
23
|
+
replacedItem?.value !== item.value
|
24
|
+
) {
|
25
|
+
const selectNode = <HTMLSelectElement>this._ownerElement._selectNode;
|
26
|
+
|
27
|
+
this._ownerElement._selectedness = true;
|
28
|
+
|
29
|
+
if (selectNode) {
|
30
|
+
selectNode._updateOptionItems(this._ownerElement);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
return replacedItem || null;
|
35
|
+
}
|
36
|
+
|
37
|
+
/**
|
38
|
+
* @override
|
39
|
+
*/
|
40
|
+
public override removeNamedItem(name: string): IAttr | null {
|
41
|
+
const removedItem = super.removeNamedItem(name);
|
42
|
+
|
43
|
+
if (removedItem && !this._ownerElement._dirtyness && removedItem.name === 'selected') {
|
44
|
+
const selectNode = <HTMLSelectElement>this._ownerElement._selectNode;
|
45
|
+
|
46
|
+
this._ownerElement._selectedness = false;
|
47
|
+
|
48
|
+
if (selectNode) {
|
49
|
+
selectNode._updateOptionItems();
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
return removedItem;
|
54
|
+
}
|
55
|
+
}
|
@@ -1,10 +1,11 @@
|
|
1
|
-
import IAttr from '../attr/IAttr.js';
|
2
1
|
import HTMLElement from '../html-element/HTMLElement.js';
|
3
2
|
import IHTMLScriptElement from './IHTMLScriptElement.js';
|
4
3
|
import HTMLScriptElementUtility from './HTMLScriptElementUtility.js';
|
5
4
|
import Event from '../../event/Event.js';
|
6
5
|
import ErrorEvent from '../../event/events/ErrorEvent.js';
|
7
6
|
import INode from '../../nodes/node/INode.js';
|
7
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
8
|
+
import HTMLScriptElementNamedNodeMap from './HTMLScriptElementNamedNodeMap.js';
|
8
9
|
|
9
10
|
/**
|
10
11
|
* HTML Script Element.
|
@@ -13,6 +14,7 @@ import INode from '../../nodes/node/INode.js';
|
|
13
14
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.
|
14
15
|
*/
|
15
16
|
export default class HTMLScriptElement extends HTMLElement implements IHTMLScriptElement {
|
17
|
+
public override readonly attributes: INamedNodeMap = new HTMLScriptElementNamedNodeMap(this);
|
16
18
|
public onerror: (event: ErrorEvent) => void = null;
|
17
19
|
public onload: (event: Event) => void = null;
|
18
20
|
public _evaluateScript = true;
|
@@ -151,23 +153,6 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
151
153
|
this.textContent = text;
|
152
154
|
}
|
153
155
|
|
154
|
-
/**
|
155
|
-
* The setAttributeNode() method adds a new Attr node to the specified element.
|
156
|
-
*
|
157
|
-
* @override
|
158
|
-
* @param attribute Attribute.
|
159
|
-
* @returns Replaced attribute.
|
160
|
-
*/
|
161
|
-
public setAttributeNode(attribute: IAttr): IAttr | null {
|
162
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
163
|
-
|
164
|
-
if (attribute.name === 'src' && attribute.value !== null && this.isConnected) {
|
165
|
-
HTMLScriptElementUtility.loadExternalScript(this);
|
166
|
-
}
|
167
|
-
|
168
|
-
return replacedAttribute;
|
169
|
-
}
|
170
|
-
|
171
156
|
/**
|
172
157
|
* Clones a node.
|
173
158
|
*
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLScriptElement from './HTMLScriptElement.js';
|
4
|
+
import HTMLScriptElementUtility from './HTMLScriptElementUtility.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLScriptElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLScriptElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if (item.name === 'src' && item.value !== null && this._ownerElement.isConnected) {
|
21
|
+
HTMLScriptElementUtility.loadExternalScript(this._ownerElement);
|
22
|
+
}
|
23
|
+
|
24
|
+
return replacedItem || null;
|
25
|
+
}
|
26
|
+
}
|
@@ -13,11 +13,12 @@ import IHTMLOptionsCollection from './IHTMLOptionsCollection.js';
|
|
13
13
|
import INode from '../node/INode.js';
|
14
14
|
import NodeTypeEnum from '../node/NodeTypeEnum.js';
|
15
15
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
16
|
-
import IAttr from '../attr/IAttr.js';
|
17
16
|
import IHTMLCollection from '../element/IHTMLCollection.js';
|
18
17
|
import NodeList from '../node/NodeList.js';
|
19
18
|
import IDocument from '../document/IDocument.js';
|
20
19
|
import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
20
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
21
|
+
import HTMLSelectElementNamedNodeMap from './HTMLSelectElementNamedNodeMap.js';
|
21
22
|
|
22
23
|
/**
|
23
24
|
* HTML Select Element.
|
@@ -26,6 +27,8 @@ import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
|
26
27
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.
|
27
28
|
*/
|
28
29
|
export default class HTMLSelectElement extends HTMLElement implements IHTMLSelectElement {
|
30
|
+
public override readonly attributes: INamedNodeMap = new HTMLSelectElementNamedNodeMap(this);
|
31
|
+
|
29
32
|
// Public properties.
|
30
33
|
public readonly length = 0;
|
31
34
|
public readonly options: IHTMLOptionsCollection = new HTMLOptionsCollection(this);
|
@@ -402,38 +405,6 @@ export default class HTMLSelectElement extends HTMLElement implements IHTMLSelec
|
|
402
405
|
}
|
403
406
|
}
|
404
407
|
|
405
|
-
/**
|
406
|
-
* @override
|
407
|
-
*/
|
408
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
409
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
410
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
411
|
-
|
412
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
413
|
-
if (oldValue) {
|
414
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
415
|
-
}
|
416
|
-
if (attribute.value) {
|
417
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
418
|
-
}
|
419
|
-
}
|
420
|
-
|
421
|
-
return replacedAttribute;
|
422
|
-
}
|
423
|
-
|
424
|
-
/**
|
425
|
-
* @override
|
426
|
-
*/
|
427
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
428
|
-
super.removeAttributeNode(attribute);
|
429
|
-
|
430
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
431
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
432
|
-
}
|
433
|
-
|
434
|
-
return attribute;
|
435
|
-
}
|
436
|
-
|
437
408
|
/**
|
438
409
|
* @override
|
439
410
|
*/
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
4
|
+
import HTMLSelectElement from './HTMLSelectElement.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Named Node Map.
|
8
|
+
*
|
9
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
10
|
+
*/
|
11
|
+
export default class HTMLSelectElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLSelectElement;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @override
|
16
|
+
*/
|
17
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
18
|
+
const replacedItem = super.setNamedItem(item);
|
19
|
+
|
20
|
+
if ((item.name === 'id' || item.name === 'name') && this._ownerElement._formNode) {
|
21
|
+
if (replacedItem && replacedItem.value) {
|
22
|
+
(<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
|
23
|
+
this._ownerElement,
|
24
|
+
replacedItem.value
|
25
|
+
);
|
26
|
+
}
|
27
|
+
if (item.value) {
|
28
|
+
(<HTMLFormElement>this._ownerElement._formNode)._appendFormControlItem(
|
29
|
+
this._ownerElement,
|
30
|
+
item.value
|
31
|
+
);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
return replacedItem || null;
|
36
|
+
}
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @override
|
40
|
+
*/
|
41
|
+
public override removeNamedItem(name: string): IAttr | null {
|
42
|
+
const removedItem = super.removeNamedItem(name);
|
43
|
+
|
44
|
+
if (
|
45
|
+
removedItem &&
|
46
|
+
(removedItem.name === 'id' || removedItem.name === 'name') &&
|
47
|
+
this._ownerElement._formNode
|
48
|
+
) {
|
49
|
+
(<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
|
50
|
+
this._ownerElement,
|
51
|
+
removedItem.value
|
52
|
+
);
|
53
|
+
}
|
54
|
+
|
55
|
+
return removedItem;
|
56
|
+
}
|
57
|
+
}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import Event from '../../event/Event.js';
|
2
2
|
import DOMException from '../../exception/DOMException.js';
|
3
3
|
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
|
4
|
-
import IAttr from '../attr/IAttr.js';
|
5
4
|
import HTMLElement from '../html-element/HTMLElement.js';
|
6
5
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
7
6
|
import IHTMLFormElement from '../html-form-element/IHTMLFormElement.js';
|
@@ -15,6 +14,8 @@ import IHTMLLabelElement from '../html-label-element/IHTMLLabelElement.js';
|
|
15
14
|
import IDocument from '../document/IDocument.js';
|
16
15
|
import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
17
16
|
import NodeList from '../node/NodeList.js';
|
17
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
18
|
+
import HTMLTextAreaElementNamedNodeMap from './HTMLTextAreaElementNamedNodeMap.js';
|
18
19
|
|
19
20
|
/**
|
20
21
|
* HTML Text Area Element.
|
@@ -23,6 +24,7 @@ import NodeList from '../node/NodeList.js';
|
|
23
24
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.
|
24
25
|
*/
|
25
26
|
export default class HTMLTextAreaElement extends HTMLElement implements IHTMLTextAreaElement {
|
27
|
+
public override readonly attributes: INamedNodeMap = new HTMLTextAreaElementNamedNodeMap(this);
|
26
28
|
public readonly type = 'textarea';
|
27
29
|
public readonly validationMessage = '';
|
28
30
|
public readonly validity = new ValidityState(this);
|
@@ -588,38 +590,6 @@ export default class HTMLTextAreaElement extends HTMLElement implements IHTMLTex
|
|
588
590
|
}
|
589
591
|
}
|
590
592
|
|
591
|
-
/**
|
592
|
-
* @override
|
593
|
-
*/
|
594
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
595
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
596
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
597
|
-
|
598
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
599
|
-
if (oldValue) {
|
600
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
601
|
-
}
|
602
|
-
if (attribute.value) {
|
603
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
604
|
-
}
|
605
|
-
}
|
606
|
-
|
607
|
-
return replacedAttribute;
|
608
|
-
}
|
609
|
-
|
610
|
-
/**
|
611
|
-
* @override
|
612
|
-
*/
|
613
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
614
|
-
super.removeAttributeNode(attribute);
|
615
|
-
|
616
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
617
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
618
|
-
}
|
619
|
-
|
620
|
-
return attribute;
|
621
|
-
}
|
622
|
-
|
623
593
|
/**
|
624
594
|
* @override
|
625
595
|
*/
|