diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 07b47aaac..a9d361ea7 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -4761,11 +4761,11 @@ interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShad * Returns a reference to the first object with the specified value of the ID attribute. * @param elementId String that specifies the ID value. */ - getElementById(elementId: string): HTMLElement | null; + getElementById(elementId: string): E | null; /** * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollectionOf; /** * Gets a collection of objects based on the value of the NAME or ID attribute. * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute. @@ -4961,7 +4961,7 @@ interface DocumentEvent { /** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */ interface DocumentFragment extends Node, NonElementParentNode, ParentNode { readonly ownerDocument: Document; - getElementById(elementId: string): HTMLElement | null; + getElementById(elementId: string): E | null; } declare var DocumentFragment: { @@ -5147,7 +5147,7 @@ interface Element extends Node, Animatable, ChildNode, InnerHTML, NonDocumentTyp /** * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollectionOf; getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: string): HTMLCollectionOf; @@ -6615,6 +6615,7 @@ interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementC readonly offsetParent: Element | null; readonly offsetTop: number; readonly offsetWidth: number; + readonly parentElement: HTMLElement | null; spellcheck: boolean; title: string; translate: boolean; @@ -10807,7 +10808,7 @@ interface Node extends EventTarget { /** * Returns the parent element. */ - readonly parentElement: HTMLElement | null; + readonly parentElement: Element | null; /** * Returns the parent. */ @@ -11065,7 +11066,7 @@ interface NonElementParentNode { /** * Returns the first element within node's descendants whose ID is elementId. */ - getElementById(elementId: string): Element | null; + getElementById(elementId: string): E | null; } interface NotificationEventMap { @@ -13001,7 +13002,9 @@ interface SVGElement extends Element, DocumentAndElementEventHandlers, DocumentA /** @deprecated */ readonly className: any; readonly ownerSVGElement: SVGSVGElement | null; + readonly parentElement: SVGElement | null; readonly viewportElement: SVGElement | null; + getElementsByClassName(classNames: string): HTMLCollectionOf; addEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -13589,6 +13592,7 @@ interface SVGForeignObjectElement extends SVGGraphicsElement { readonly width: SVGAnimatedLength; readonly x: SVGAnimatedLength; readonly y: SVGAnimatedLength; + getElementsByClassName(classNames: string): HTMLCollectionOf; addEventListener(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -14392,7 +14396,7 @@ interface SVGSVGElement extends SVGGraphicsElement, DocumentEvent, SVGFitToViewB forceRedraw(): void; getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration; getCurrentTime(): number; - getElementById(elementId: string): Element; + getElementById(elementId: string): E | null; getEnclosureList(rect: SVGRect, referenceElement: SVGElement | null): NodeListOf; getIntersectionList(rect: SVGRect, referenceElement: SVGElement | null): NodeListOf; pauseAnimations(): void; diff --git a/inputfiles/addedTypes.json b/inputfiles/addedTypes.json index e27acd704..dd1e42d11 100644 --- a/inputfiles/addedTypes.json +++ b/inputfiles/addedTypes.json @@ -596,7 +596,7 @@ "getElementsByClassName": { "name": "getElementsByClassName", "override-signatures": [ - "getElementsByClassName(classNames: string): HTMLCollectionOf" + "getElementsByClassName(classNames: string): HTMLCollectionOf" ] }, "closest": { @@ -958,7 +958,7 @@ "name": "getElementById", "exposed": "Window", "override-signatures": [ - "getElementById(elementId: string): HTMLElement | null" + "getElementById(elementId: string): E | null" ] } } diff --git a/inputfiles/overridingTypes.json b/inputfiles/overridingTypes.json index 4408392f0..0cb7e6e95 100644 --- a/inputfiles/overridingTypes.json +++ b/inputfiles/overridingTypes.json @@ -1,6 +1,32 @@ { "mixins": { "mixin": { + "NonElementParentNode": { + "name": "NonElementParentNode", + "methods": { + "method": { + "getElementById": { + "name": "getElementById", + "override-signatures": [ + "getElementById(elementId: string): E | null" + ] + } + } + } + }, + "GlobalFetch": { + "name": "GlobalFetch", + "methods": { + "method": { + "fetch": { + "name": "fetch", + "override-signatures": [ + "fetch(input: RequestInfo, init?: RequestInit): Promise" + ] + } + } + } + }, "Animatable": { "name": "Animatable", "methods": { @@ -484,6 +510,18 @@ }, "override-index-signatures": [] }, + "HTMLElement": { + "name": "HTMLElement", + "properties": { + "property": { + "parentElement": { + "name": "parentElement", + "read-only": 1, + "override-type": "HTMLElement | null" + } + } + } + }, "Document": { "name": "Document", "methods": { @@ -509,7 +547,7 @@ "getElementById": { "name": "getElementById", "override-signatures": [ - "getElementById(elementId: string): HTMLElement | null" + "getElementById(elementId: string): E | null" ] }, "getElementsByTagNameNS": { @@ -523,7 +561,7 @@ "getElementsByClassName": { "name": "getElementsByClassName", "override-signatures": [ - "getElementsByClassName(classNames: string): HTMLCollectionOf" + "getElementsByClassName(classNames: string): HTMLCollectionOf" ] }, "getElementsByName": { @@ -672,7 +710,7 @@ "override-type": "Node & ParentNode | null" }, "parentElement": { - "override-type": "HTMLElement | null" + "override-type": "Element | null" }, "childNodes": { "override-type": "NodeListOf" @@ -883,6 +921,21 @@ "deprecated": 1, "name": "className", "type": "any" + }, + "parentElement": { + "name": "parentElement", + "read-only": 1, + "override-type": "SVGElement | null" + } + } + }, + "methods": { + "method": { + "getElementsByClassName": { + "name": "getElementsByClassName", + "override-signatures": [ + "getElementsByClassName(classNames: string): HTMLCollectionOf" + ] } } } @@ -891,6 +944,12 @@ "name": "SVGSVGElement", "methods": { "method": { + "getElementById": { + "name": "getElementById", + "override-signatures": [ + "getElementById(elementId: string): E | null" + ] + }, "getEnclosureList": { "name": "getEnclosureList", "override-signatures": [ @@ -922,6 +981,19 @@ } } }, + "SVGForeignObjectElement": { + "name": "SVGForeignObjectElement", + "methods": { + "method": { + "getElementsByClassName": { + "name": "getElementsByClassName", + "override-signatures": [ + "getElementsByClassName(classNames: string): HTMLCollectionOf" + ] + } + } + } + }, "FormData": { "name": "FormData", "methods": {