diff --git a/src/Oxpecker.Solid.FablePlugin/Library.fs b/src/Oxpecker.Solid.FablePlugin/Library.fs index 9893d444..ac91451f 100644 --- a/src/Oxpecker.Solid.FablePlugin/Library.fs +++ b/src/Oxpecker.Solid.FablePlugin/Library.fs @@ -205,6 +205,7 @@ module internal rec AST = | "bool", EventHandler(eventName, handler) -> ("bool:" + eventName, handler) :: restResults | "data", EventHandler(eventName, handler) -> ("data-" + eventName, handler) :: restResults | "attr", EventHandler(eventName, handler) -> (eventName, handler) :: restResults + | "spread", { Args = [ _; identExpr ] } -> ("__SPREAD_PROPERTY__", identExpr) :: restResults | "ref", { Args = [ _; identExpr ] } -> ("ref", identExpr) :: restResults | "style'", { Args = [ _; identExpr ] } -> ("style", identExpr) :: restResults | "classList", { Args = [ _; identExpr ] } -> ("classList", identExpr) :: restResults diff --git a/src/Oxpecker.Solid/Tags.fs b/src/Oxpecker.Solid/Tags.fs index 3267e18d..8ae6532d 100644 --- a/src/Oxpecker.Solid/Tags.fs +++ b/src/Oxpecker.Solid/Tags.fs @@ -23,6 +23,11 @@ module Tags = [] static member attr(this: #HtmlTag, name: string, value: string) = this + /// Applies JS Object Spread to the given value within the given element. Care must be taken to provide valid + /// objects. Mostly used to pass on properties in bindings/imports to nested children. + [] + static member spread(this: #HtmlTag, value: 'T) = this + /// Add event handler to the element through the corresponding attribute [] static member on(this: #HtmlTag, eventName: string, eventHandler: Event -> unit) = this