diff --git a/src/stdlib/WebSharper.JavaScript/Dom.fs b/src/stdlib/WebSharper.JavaScript/Dom.fs index 2583ea60..2152b01b 100644 --- a/src/stdlib/WebSharper.JavaScript/Dom.fs +++ b/src/stdlib/WebSharper.JavaScript/Dom.fs @@ -482,11 +482,21 @@ module Interfaces = ] |+> Instance [ "name" =@ T + + "assign" => !+Node ^-> T "assignedNodes" => !?AssignedNodesOptions?options ^-> !|Node "assignedElements" => !?AssignedNodesOptions?options ^-> !|Element "replaceWith" => !+(Element + Text) ^-> T + + "onslotchange" => Event ^-> T ] + let HTMLTemplateEvent = + Class "HTMLTemplateElement" + |=> Inherits Element + |+> Instance [ + "content" =? DocumentFragment + ] let SlottableMixin = Instance [ "assignedSlot" => HTMLSlotElement @@ -962,6 +972,7 @@ module Interfaces = "preventDefault" => Tunit> "stopImmediatePropagation" => Tunit> "stopPropagation" => Tunit> + "composedPath" => T ^-> !|EventTarget ] let CustomEvent = @@ -1596,8 +1607,6 @@ module Definition = I.HTMLCollection I.TreeWalker I.Range - I.AssignedNodesOptions - I.HTMLSlotElement I.FullscreenNavigationUI I.FullscreenOptions I.ScrollAnimateMode diff --git a/src/stdlib/WebSharper.JavaScript/Html5.fs b/src/stdlib/WebSharper.JavaScript/Html5.fs index 41846cce..fa03dd41 100644 --- a/src/stdlib/WebSharper.JavaScript/Html5.fs +++ b/src/stdlib/WebSharper.JavaScript/Html5.fs @@ -2071,10 +2071,6 @@ module Elements = Constructor T |> WithInline "new Audio($0)" ] - let HTMLSlotElement = - Class "HTMLSlotElement" - |=> Inherits HTMLElement - module Geolocation = let PositionOptions = @@ -2633,6 +2629,25 @@ module General = "fetch" => Fetch.Request ^-> EcmaPromise.[Fetch.Response] ] + let ElementDefinitionOptions = + Pattern.Config "ElementDefinitionOptions" { + Required = [ + "extends", T + ] + Optional = [] + } + + let CustomElementConstructor = T ^-> Dom.Interfaces.Element + + let CustomElementsRegistry = + Class "CustomElementsRegistry" + |+> Instance [ + "define" => T?name * CustomElementConstructor?constructor * ElementDefinitionOptions?options ^-> T + "get" => T?name ^-> (T + CustomElementConstructor) + "whenDefined" => T?name ^-> (EcmaPromise.[CustomElementConstructor]) + "upgrade" => Dom.Interfaces.Node ^-> T + ] + do let f = Dom.Interfaces.Event ^-> T Dom.Interfaces.Window @@ -2718,6 +2733,8 @@ module General = "postMessage" => T * T * Type.ArrayOf(MessagePort) ^-> T "postMessage" => T * T ^-> T + "customElements" =? CustomElementsRegistry + "onabort" =@ f "onauxclick" =@ f "onafterprint" =@ f @@ -3681,8 +3698,10 @@ module Definition = Elements.HTMLOutputElement Elements.HTMLProgressElement Elements.HTMLSelectElement - Elements.HTMLSlotElement Elements.HTMLTextAreaElement + Dom.Interfaces.AssignedNodesOptions + Dom.Interfaces.HTMLSlotElement + Dom.Interfaces.HTMLTemplateEvent Elements.SelectionMode EventSource.ReadyState EventSource.EventSourceOptions @@ -3729,6 +3748,8 @@ module Definition = Dom.Interfaces.Window General.CSSSD General.MQL + General.CustomElementsRegistry + General.ElementDefinitionOptions Media.MediaStream Media.MediaStreamTrack