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,194 @@
|
|
1
|
+
import NamespaceURI from '../../config/NamespaceURI.js';
|
2
|
+
import MutationRecord from '../../mutation-observer/MutationRecord.js';
|
3
|
+
import MutationTypeEnum from '../../mutation-observer/MutationTypeEnum.js';
|
4
|
+
import NamedNodeMap from '../../named-node-map/NamedNodeMap.js';
|
5
|
+
import IAttr from '../attr/IAttr.js';
|
6
|
+
import IDocument from '../document/IDocument.js';
|
7
|
+
import Element from './Element.js';
|
8
|
+
import HTMLCollection from './HTMLCollection.js';
|
9
|
+
import IElement from './IElement.js';
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Named Node Map.
|
13
|
+
*
|
14
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
15
|
+
*/
|
16
|
+
export default class ElementNamedNodeMap extends NamedNodeMap {
|
17
|
+
protected _ownerElement: Element;
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Constructor.
|
21
|
+
*
|
22
|
+
* @param ownerElement Owner element.
|
23
|
+
*/
|
24
|
+
constructor(ownerElement: Element) {
|
25
|
+
super();
|
26
|
+
this._ownerElement = ownerElement;
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* @override
|
31
|
+
*/
|
32
|
+
public override getNamedItem(name: string): IAttr | null {
|
33
|
+
return this._namedItems[this._getAttributeName(name)] || null;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* @override
|
38
|
+
*/
|
39
|
+
public override getNamedItemNS(namespace: string, localName: string): IAttr | null {
|
40
|
+
return super.getNamedItemNS(namespace, this._getAttributeName(localName));
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
* @override
|
45
|
+
*/
|
46
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
47
|
+
if (!item.name) {
|
48
|
+
return null;
|
49
|
+
}
|
50
|
+
|
51
|
+
item.name = this._getAttributeName(item.name);
|
52
|
+
(<IElement>item.ownerElement) = this._ownerElement;
|
53
|
+
(<IDocument>item.ownerDocument) = this._ownerElement.ownerDocument;
|
54
|
+
|
55
|
+
const replacedItem = super.setNamedItem(item);
|
56
|
+
const oldValue = replacedItem ? replacedItem.value : null;
|
57
|
+
|
58
|
+
if (this._ownerElement.isConnected) {
|
59
|
+
this._ownerElement.ownerDocument['_cacheID']++;
|
60
|
+
}
|
61
|
+
|
62
|
+
if (item.name === 'class' && this._ownerElement._classList) {
|
63
|
+
this._ownerElement._classList._updateIndices();
|
64
|
+
}
|
65
|
+
|
66
|
+
if (item.name === 'id' || item.name === 'name') {
|
67
|
+
if (
|
68
|
+
this._ownerElement.parentNode &&
|
69
|
+
(<IElement>this._ownerElement.parentNode).children &&
|
70
|
+
item.value !== oldValue
|
71
|
+
) {
|
72
|
+
if (oldValue) {
|
73
|
+
(<HTMLCollection<IElement>>(
|
74
|
+
(<IElement>this._ownerElement.parentNode).children
|
75
|
+
))._removeNamedItem(this._ownerElement, oldValue);
|
76
|
+
}
|
77
|
+
if (item.value) {
|
78
|
+
(<HTMLCollection<IElement>>(
|
79
|
+
(<IElement>this._ownerElement.parentNode).children
|
80
|
+
))._appendNamedItem(this._ownerElement, item.value);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
if (
|
86
|
+
this._ownerElement.attributeChangedCallback &&
|
87
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes &&
|
88
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes.includes(item.name)
|
89
|
+
) {
|
90
|
+
this._ownerElement.attributeChangedCallback(item.name, oldValue, item.value);
|
91
|
+
}
|
92
|
+
|
93
|
+
// MutationObserver
|
94
|
+
if (this._ownerElement._observers.length > 0) {
|
95
|
+
for (const observer of this._ownerElement._observers) {
|
96
|
+
if (
|
97
|
+
observer.options.attributes &&
|
98
|
+
(!observer.options.attributeFilter ||
|
99
|
+
observer.options.attributeFilter.includes(item.name))
|
100
|
+
) {
|
101
|
+
const record = new MutationRecord();
|
102
|
+
record.target = this._ownerElement;
|
103
|
+
record.type = MutationTypeEnum.attributes;
|
104
|
+
record.attributeName = item.name;
|
105
|
+
record.oldValue = observer.options.attributeOldValue ? oldValue : null;
|
106
|
+
observer.callback([record]);
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
return replacedItem || null;
|
112
|
+
}
|
113
|
+
|
114
|
+
/**
|
115
|
+
* @override
|
116
|
+
*/
|
117
|
+
public override removeNamedItem(name: string): IAttr | null {
|
118
|
+
const removedItem = super.removeNamedItem(this._getAttributeName(name));
|
119
|
+
|
120
|
+
if (!removedItem) {
|
121
|
+
return null;
|
122
|
+
}
|
123
|
+
|
124
|
+
if (this._ownerElement.isConnected) {
|
125
|
+
this._ownerElement.ownerDocument['_cacheID']++;
|
126
|
+
}
|
127
|
+
|
128
|
+
if (removedItem.name === 'class' && this._ownerElement._classList) {
|
129
|
+
this._ownerElement._classList._updateIndices();
|
130
|
+
}
|
131
|
+
|
132
|
+
if (removedItem.name === 'id' || removedItem.name === 'name') {
|
133
|
+
if (
|
134
|
+
this._ownerElement.parentNode &&
|
135
|
+
(<IElement>this._ownerElement.parentNode).children &&
|
136
|
+
removedItem.value
|
137
|
+
) {
|
138
|
+
(<HTMLCollection<IElement>>(
|
139
|
+
(<IElement>this._ownerElement.parentNode).children
|
140
|
+
))._removeNamedItem(this._ownerElement, removedItem.value);
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
if (
|
145
|
+
this._ownerElement.attributeChangedCallback &&
|
146
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes &&
|
147
|
+
(<typeof Element>this._ownerElement.constructor)._observedAttributes.includes(
|
148
|
+
removedItem.name
|
149
|
+
)
|
150
|
+
) {
|
151
|
+
this._ownerElement.attributeChangedCallback(removedItem.name, removedItem.value, null);
|
152
|
+
}
|
153
|
+
|
154
|
+
// MutationObserver
|
155
|
+
if (this._ownerElement._observers.length > 0) {
|
156
|
+
for (const observer of this._ownerElement._observers) {
|
157
|
+
if (
|
158
|
+
observer.options.attributes &&
|
159
|
+
(!observer.options.attributeFilter ||
|
160
|
+
observer.options.attributeFilter.includes(removedItem.name))
|
161
|
+
) {
|
162
|
+
const record = new MutationRecord();
|
163
|
+
record.target = this._ownerElement;
|
164
|
+
record.type = MutationTypeEnum.attributes;
|
165
|
+
record.attributeName = removedItem.name;
|
166
|
+
record.oldValue = observer.options.attributeOldValue ? removedItem.value : null;
|
167
|
+
observer.callback([record]);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
return removedItem;
|
173
|
+
}
|
174
|
+
|
175
|
+
/**
|
176
|
+
* @override
|
177
|
+
*/
|
178
|
+
public override removeNamedItemNS(namespace: string, localName: string): IAttr | null {
|
179
|
+
return super.removeNamedItemNS(namespace, this._getAttributeName(localName));
|
180
|
+
}
|
181
|
+
|
182
|
+
/**
|
183
|
+
* Returns attribute name.
|
184
|
+
*
|
185
|
+
* @param name Name.
|
186
|
+
* @returns Attribute name based on namespace.
|
187
|
+
*/
|
188
|
+
protected _getAttributeName(name): string {
|
189
|
+
if (this._ownerElement.namespaceURI === NamespaceURI.svg) {
|
190
|
+
return name;
|
191
|
+
}
|
192
|
+
return name.toLowerCase();
|
193
|
+
}
|
194
|
+
}
|
@@ -44,11 +44,12 @@ export default class ElementUtility {
|
|
44
44
|
if (node.parentNode && (<IHTMLElement>node.parentNode).children) {
|
45
45
|
const index = (<IHTMLElement>node.parentNode).children.indexOf(<IHTMLElement>node);
|
46
46
|
if (index !== -1) {
|
47
|
-
for (const
|
48
|
-
|
47
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
48
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
49
|
+
if (attribute) {
|
49
50
|
(<HTMLCollection<IHTMLElement>>(<IElement>node.parentNode).children)._removeNamedItem(
|
50
51
|
<IHTMLElement>node,
|
51
|
-
|
52
|
+
attribute.value
|
52
53
|
);
|
53
54
|
}
|
54
55
|
}
|
@@ -56,11 +57,12 @@ export default class ElementUtility {
|
|
56
57
|
}
|
57
58
|
}
|
58
59
|
|
59
|
-
for (const
|
60
|
-
|
60
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
61
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
62
|
+
if (attribute) {
|
61
63
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._appendNamedItem(
|
62
64
|
<IHTMLElement>node,
|
63
|
-
|
65
|
+
attribute.value
|
64
66
|
);
|
65
67
|
}
|
66
68
|
}
|
@@ -89,11 +91,12 @@ export default class ElementUtility {
|
|
89
91
|
if (node.nodeType === NodeTypeEnum.elementNode) {
|
90
92
|
const index = ancestorNode.children.indexOf(<IElement>node);
|
91
93
|
if (index !== -1) {
|
92
|
-
for (const
|
93
|
-
|
94
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
95
|
+
const attribute = (<Element>node).attributes.getNamedItem(attributeName);
|
96
|
+
if (attribute) {
|
94
97
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._removeNamedItem(
|
95
98
|
<IHTMLElement>node,
|
96
|
-
|
99
|
+
attribute.value
|
97
100
|
);
|
98
101
|
}
|
99
102
|
}
|
@@ -138,14 +141,12 @@ export default class ElementUtility {
|
|
138
141
|
if (newNode.parentNode && (<IHTMLElement>newNode.parentNode).children) {
|
139
142
|
const index = (<IHTMLElement>newNode.parentNode).children.indexOf(<IHTMLElement>newNode);
|
140
143
|
if (index !== -1) {
|
141
|
-
for (const
|
142
|
-
|
144
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
145
|
+
const attribute = (<Element>newNode).attributes.getNamedItem(attributeName);
|
146
|
+
if (attribute) {
|
143
147
|
(<HTMLCollection<IHTMLElement>>(
|
144
148
|
(<IElement>newNode.parentNode).children
|
145
|
-
))._removeNamedItem(
|
146
|
-
<IHTMLElement>newNode,
|
147
|
-
(<Element>newNode)._attributes[attribute].value
|
148
|
-
);
|
149
|
+
))._removeNamedItem(<IHTMLElement>newNode, attribute.value);
|
149
150
|
}
|
150
151
|
}
|
151
152
|
|
@@ -171,11 +172,12 @@ export default class ElementUtility {
|
|
171
172
|
}
|
172
173
|
}
|
173
174
|
|
174
|
-
for (const
|
175
|
-
|
175
|
+
for (const attributeName of NAMED_ITEM_ATTRIBUTES) {
|
176
|
+
const attribute = (<Element>newNode).attributes.getNamedItem(attributeName);
|
177
|
+
if (attribute) {
|
176
178
|
(<HTMLCollection<IHTMLElement>>ancestorNode.children)._appendNamedItem(
|
177
179
|
<IHTMLElement>newNode,
|
178
|
-
|
180
|
+
attribute.value
|
179
181
|
);
|
180
182
|
}
|
181
183
|
}
|
@@ -238,7 +238,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
238
238
|
* @param attribute Attribute.
|
239
239
|
* @returns Replaced attribute.
|
240
240
|
*/
|
241
|
-
setAttributeNode(attribute: IAttr): IAttr;
|
241
|
+
setAttributeNode(attribute: IAttr): IAttr | null;
|
242
242
|
|
243
243
|
/**
|
244
244
|
* The setAttributeNodeNS() method adds a new Attr node to the specified element.
|
@@ -246,7 +246,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
246
246
|
* @param attribute Attribute.
|
247
247
|
* @returns Replaced attribute.
|
248
248
|
*/
|
249
|
-
setAttributeNodeNS(attribute: IAttr): IAttr;
|
249
|
+
setAttributeNodeNS(attribute: IAttr): IAttr | null;
|
250
250
|
|
251
251
|
/**
|
252
252
|
* Returns an Attr node.
|
@@ -254,7 +254,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
254
254
|
* @param name Name.
|
255
255
|
* @returns Replaced attribute.
|
256
256
|
*/
|
257
|
-
getAttributeNode(name: string): IAttr;
|
257
|
+
getAttributeNode(name: string): IAttr | null;
|
258
258
|
|
259
259
|
/**
|
260
260
|
* Returns a namespaced Attr node.
|
@@ -263,7 +263,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
263
263
|
* @param nodeName Node name.
|
264
264
|
* @returns Replaced attribute.
|
265
265
|
*/
|
266
|
-
getAttributeNodeNS(namespace: string | null, nodeName: string): IAttr;
|
266
|
+
getAttributeNodeNS(namespace: string | null, nodeName: string): IAttr | null;
|
267
267
|
|
268
268
|
/**
|
269
269
|
* Removes an Attr node.
|
@@ -279,7 +279,7 @@ export default interface IElement extends IChildNode, INonDocumentTypeChildNode,
|
|
279
279
|
* @param attribute Attribute.
|
280
280
|
* @returns Removed attribute.
|
281
281
|
*/
|
282
|
-
removeAttributeNodeNS(attribute: IAttr): IAttr;
|
282
|
+
removeAttributeNodeNS(attribute: IAttr): IAttr | null;
|
283
283
|
|
284
284
|
/**
|
285
285
|
* Clones a node.
|
@@ -3,8 +3,9 @@ import DOMTokenList from '../../dom-token-list/DOMTokenList.js';
|
|
3
3
|
import IDOMTokenList from '../../dom-token-list/IDOMTokenList.js';
|
4
4
|
import IHTMLAnchorElement from './IHTMLAnchorElement.js';
|
5
5
|
import { URL } from 'url';
|
6
|
-
import IAttr from '../attr/IAttr.js';
|
7
6
|
import HTMLAnchorElementUtility from './HTMLAnchorElementUtility.js';
|
7
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
8
|
+
import HTMLAnchorElementNamedNodeMap from './HTMLAnchorElementNamedNodeMap.js';
|
8
9
|
|
9
10
|
/**
|
10
11
|
* HTML Anchor Element.
|
@@ -13,8 +14,9 @@ import HTMLAnchorElementUtility from './HTMLAnchorElementUtility.js';
|
|
13
14
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.
|
14
15
|
*/
|
15
16
|
export default class HTMLAnchorElement extends HTMLElement implements IHTMLAnchorElement {
|
16
|
-
|
17
|
-
|
17
|
+
public override readonly attributes: INamedNodeMap = new HTMLAnchorElementNamedNodeMap(this);
|
18
|
+
public _relList: DOMTokenList = null;
|
19
|
+
public _url: URL | null = null;
|
18
20
|
|
19
21
|
/**
|
20
22
|
* Returns download.
|
@@ -413,34 +415,4 @@ export default class HTMLAnchorElement extends HTMLElement implements IHTMLAncho
|
|
413
415
|
public override toString(): string {
|
414
416
|
return this.href;
|
415
417
|
}
|
416
|
-
|
417
|
-
/**
|
418
|
-
* @override
|
419
|
-
*/
|
420
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
421
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
422
|
-
|
423
|
-
if (attribute.name === 'rel' && this._relList) {
|
424
|
-
this._relList._updateIndices();
|
425
|
-
} else if (attribute.name === 'href') {
|
426
|
-
this._url = HTMLAnchorElementUtility.getUrl(this.ownerDocument, attribute.value);
|
427
|
-
}
|
428
|
-
|
429
|
-
return replacedAttribute;
|
430
|
-
}
|
431
|
-
|
432
|
-
/**
|
433
|
-
* @override
|
434
|
-
*/
|
435
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
436
|
-
super.removeAttributeNode(attribute);
|
437
|
-
|
438
|
-
if (attribute.name === 'rel' && this._relList) {
|
439
|
-
this._relList._updateIndices();
|
440
|
-
} else if (attribute.name === 'href') {
|
441
|
-
this._url = null;
|
442
|
-
}
|
443
|
-
|
444
|
-
return attribute;
|
445
|
-
}
|
446
418
|
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import HTMLElementNamedNodeMap from '../html-element/HTMLElementNamedNodeMap.js';
|
3
|
+
import HTMLAnchorElement from './HTMLAnchorElement.js';
|
4
|
+
import HTMLAnchorElementUtility from './HTMLAnchorElementUtility.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 HTMLAnchorElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLAnchorElement;
|
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
|
+
} else if (item.name === 'href') {
|
23
|
+
this._ownerElement._url = HTMLAnchorElementUtility.getUrl(
|
24
|
+
this._ownerElement.ownerDocument,
|
25
|
+
item.value
|
26
|
+
);
|
27
|
+
}
|
28
|
+
|
29
|
+
return replacedItem || null;
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @override
|
34
|
+
*/
|
35
|
+
public override removeNamedItem(name: string): IAttr | null {
|
36
|
+
const removedItem = super.removeNamedItem(name);
|
37
|
+
|
38
|
+
if (removedItem) {
|
39
|
+
if (removedItem.name === 'rel' && this._ownerElement._relList) {
|
40
|
+
this._ownerElement._relList._updateIndices();
|
41
|
+
} else if (removedItem.name === 'href') {
|
42
|
+
this._ownerElement._url = null;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
return removedItem;
|
47
|
+
}
|
48
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import Event from '../../event/Event.js';
|
2
2
|
import EventPhaseEnum from '../../event/EventPhaseEnum.js';
|
3
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
3
4
|
import ValidityState from '../../validity-state/ValidityState.js';
|
4
|
-
import IAttr from '../attr/IAttr.js';
|
5
5
|
import IDocument from '../document/IDocument.js';
|
6
6
|
import HTMLElement from '../html-element/HTMLElement.js';
|
7
7
|
import HTMLFormElement from '../html-form-element/HTMLFormElement.js';
|
@@ -11,6 +11,7 @@ import INode from '../node/INode.js';
|
|
11
11
|
import INodeList from '../node/INodeList.js';
|
12
12
|
import NodeList from '../node/NodeList.js';
|
13
13
|
import IShadowRoot from '../shadow-root/IShadowRoot.js';
|
14
|
+
import HTMLButtonElementNamedNodeMap from './HTMLButtonElementNamedNodeMap.js';
|
14
15
|
import IHTMLButtonElement from './IHTMLButtonElement.js';
|
15
16
|
|
16
17
|
const BUTTON_TYPES = ['submit', 'reset', 'button', 'menu'];
|
@@ -22,6 +23,7 @@ const BUTTON_TYPES = ['submit', 'reset', 'button', 'menu'];
|
|
22
23
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.
|
23
24
|
*/
|
24
25
|
export default class HTMLButtonElement extends HTMLElement implements IHTMLButtonElement {
|
26
|
+
public override readonly attributes: INamedNodeMap = new HTMLButtonElementNamedNodeMap(this);
|
25
27
|
public readonly validationMessage = '';
|
26
28
|
public readonly validity = new ValidityState(this);
|
27
29
|
|
@@ -238,38 +240,6 @@ export default class HTMLButtonElement extends HTMLElement implements IHTMLButto
|
|
238
240
|
return returnValue;
|
239
241
|
}
|
240
242
|
|
241
|
-
/**
|
242
|
-
* @override
|
243
|
-
*/
|
244
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
245
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
246
|
-
const oldValue = replacedAttribute ? replacedAttribute.value : null;
|
247
|
-
|
248
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
249
|
-
if (oldValue) {
|
250
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, oldValue);
|
251
|
-
}
|
252
|
-
if (attribute.value) {
|
253
|
-
(<HTMLFormElement>this._formNode)._appendFormControlItem(this, attribute.value);
|
254
|
-
}
|
255
|
-
}
|
256
|
-
|
257
|
-
return replacedAttribute;
|
258
|
-
}
|
259
|
-
|
260
|
-
/**
|
261
|
-
* @override
|
262
|
-
*/
|
263
|
-
public override removeAttributeNode(attribute: IAttr): IAttr {
|
264
|
-
super.removeAttributeNode(attribute);
|
265
|
-
|
266
|
-
if ((attribute.name === 'id' || attribute.name === 'name') && this._formNode) {
|
267
|
-
(<HTMLFormElement>this._formNode)._removeFormControlItem(this, attribute.value);
|
268
|
-
}
|
269
|
-
|
270
|
-
return attribute;
|
271
|
-
}
|
272
|
-
|
273
243
|
/**
|
274
244
|
* @override
|
275
245
|
*/
|
@@ -0,0 +1,56 @@
|
|
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 HTMLButtonElement from './HTMLButtonElement.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 HTMLButtonElementNamedNodeMap extends HTMLElementNamedNodeMap {
|
12
|
+
protected _ownerElement: HTMLButtonElement;
|
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?.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.name === 'id' || removedItem.name === 'name') &&
|
46
|
+
this._ownerElement._formNode
|
47
|
+
) {
|
48
|
+
(<HTMLFormElement>this._ownerElement._formNode)._removeFormControlItem(
|
49
|
+
this._ownerElement,
|
50
|
+
removedItem.value
|
51
|
+
);
|
52
|
+
}
|
53
|
+
|
54
|
+
return removedItem;
|
55
|
+
}
|
56
|
+
}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
import Element from '../element/Element.js';
|
2
2
|
import IHTMLElement from './IHTMLElement.js';
|
3
3
|
import CSSStyleDeclaration from '../../css/declaration/CSSStyleDeclaration.js';
|
4
|
-
import IAttr from '../attr/IAttr.js';
|
5
4
|
import PointerEvent from '../../event/events/PointerEvent.js';
|
6
5
|
import Dataset from '../element/Dataset.js';
|
7
6
|
import NodeTypeEnum from '../node/NodeTypeEnum.js';
|
8
7
|
import DOMException from '../../exception/DOMException.js';
|
9
8
|
import Event from '../../event/Event.js';
|
10
9
|
import HTMLElementUtility from './HTMLElementUtility.js';
|
10
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
11
|
+
import HTMLElementNamedNodeMap from './HTMLElementNamedNodeMap.js';
|
11
12
|
|
12
13
|
/**
|
13
14
|
* HTML Element.
|
@@ -16,6 +17,7 @@ import HTMLElementUtility from './HTMLElementUtility.js';
|
|
16
17
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.
|
17
18
|
*/
|
18
19
|
export default class HTMLElement extends Element implements IHTMLElement {
|
20
|
+
public override readonly attributes: INamedNodeMap = new HTMLElementNamedNodeMap(this);
|
19
21
|
public readonly accessKey = '';
|
20
22
|
public readonly accessKeyLabel = '';
|
21
23
|
public readonly contentEditable = 'inherit';
|
@@ -27,7 +29,7 @@ export default class HTMLElement extends Element implements IHTMLElement {
|
|
27
29
|
public readonly clientHeight = 0;
|
28
30
|
public readonly clientWidth = 0;
|
29
31
|
|
30
|
-
|
32
|
+
public _style: CSSStyleDeclaration = null;
|
31
33
|
private _dataset: Dataset = null;
|
32
34
|
|
33
35
|
// Events
|
@@ -322,32 +324,6 @@ export default class HTMLElement extends Element implements IHTMLElement {
|
|
322
324
|
HTMLElementUtility.focus(this);
|
323
325
|
}
|
324
326
|
|
325
|
-
/**
|
326
|
-
* @override
|
327
|
-
*/
|
328
|
-
public setAttributeNode(attribute: IAttr): IAttr | null {
|
329
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
330
|
-
|
331
|
-
if (attribute.name === 'style' && this._style) {
|
332
|
-
this._style.cssText = attribute.value;
|
333
|
-
}
|
334
|
-
|
335
|
-
return replacedAttribute;
|
336
|
-
}
|
337
|
-
|
338
|
-
/**
|
339
|
-
* @override
|
340
|
-
*/
|
341
|
-
public removeAttributeNode(attribute: IAttr): IAttr {
|
342
|
-
super.removeAttributeNode(attribute);
|
343
|
-
|
344
|
-
if (attribute.name === 'style' && this._style) {
|
345
|
-
this._style.cssText = '';
|
346
|
-
}
|
347
|
-
|
348
|
-
return attribute;
|
349
|
-
}
|
350
|
-
|
351
327
|
/**
|
352
328
|
* @override
|
353
329
|
*/
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import IAttr from '../attr/IAttr.js';
|
2
|
+
import ElementNamedNodeMap from '../element/ElementNamedNodeMap.js';
|
3
|
+
import HTMLElement from './HTMLElement.js';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Named Node Map.
|
7
|
+
*
|
8
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
|
9
|
+
*/
|
10
|
+
export default class HTMLElementNamedNodeMap extends ElementNamedNodeMap {
|
11
|
+
protected _ownerElement: HTMLElement;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @override
|
15
|
+
*/
|
16
|
+
public override setNamedItem(item: IAttr): IAttr | null {
|
17
|
+
const replacedItem = super.setNamedItem(item);
|
18
|
+
|
19
|
+
if (item.name === 'style' && this._ownerElement._style) {
|
20
|
+
this._ownerElement._style.cssText = item.value;
|
21
|
+
}
|
22
|
+
|
23
|
+
return replacedItem || null;
|
24
|
+
}
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @override
|
28
|
+
*/
|
29
|
+
public override removeNamedItem(name: string): IAttr | null {
|
30
|
+
const removedItem = super.removeNamedItem(name);
|
31
|
+
|
32
|
+
if (removedItem && removedItem.name === 'style' && this._ownerElement._style) {
|
33
|
+
this._ownerElement._style.cssText = '';
|
34
|
+
}
|
35
|
+
|
36
|
+
return removedItem;
|
37
|
+
}
|
38
|
+
}
|
@@ -6,7 +6,8 @@ import INode from '../node/INode.js';
|
|
6
6
|
import IFrameCrossOriginWindow from './IFrameCrossOriginWindow.js';
|
7
7
|
import IHTMLIFrameElement from './IHTMLIFrameElement.js';
|
8
8
|
import HTMLIFrameUtility from './HTMLIFrameUtility.js';
|
9
|
-
import
|
9
|
+
import INamedNodeMap from '../../named-node-map/INamedNodeMap.js';
|
10
|
+
import HTMLIFrameElementNamedNodeMap from './HTMLIFrameElementNamedNodeMap.js';
|
10
11
|
|
11
12
|
/**
|
12
13
|
* HTML Iframe Element.
|
@@ -15,6 +16,8 @@ import IAttr from '../attr/IAttr.js';
|
|
15
16
|
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.
|
16
17
|
*/
|
17
18
|
export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFrameElement {
|
19
|
+
public override readonly attributes: INamedNodeMap = new HTMLIFrameElementNamedNodeMap(this);
|
20
|
+
|
18
21
|
// Events
|
19
22
|
public onload: (event: Event) => void | null = null;
|
20
23
|
public onerror: (event: Event) => void | null = null;
|
@@ -180,23 +183,6 @@ export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFram
|
|
180
183
|
}
|
181
184
|
}
|
182
185
|
|
183
|
-
/**
|
184
|
-
* @override
|
185
|
-
*/
|
186
|
-
public override setAttributeNode(attribute: IAttr): IAttr | null {
|
187
|
-
const replacedAttribute = super.setAttributeNode(attribute);
|
188
|
-
|
189
|
-
if (
|
190
|
-
attribute.name === 'src' &&
|
191
|
-
attribute.value &&
|
192
|
-
attribute.value !== replacedAttribute?.value
|
193
|
-
) {
|
194
|
-
HTMLIFrameUtility.loadPage(this);
|
195
|
-
}
|
196
|
-
|
197
|
-
return replacedAttribute;
|
198
|
-
}
|
199
|
-
|
200
186
|
/**
|
201
187
|
* Clones a node.
|
202
188
|
*
|