From fd0d72362f8a960845b262f8e9970e181945f6f2 Mon Sep 17 00:00:00 2001 From: maddalax Date: Sun, 29 Sep 2024 09:45:17 -0500 Subject: [PATCH] some fixes for childlist --- framework/h/renderables.go | 10 ++++++++-- framework/h/renderer.go | 10 ++++++---- htmgo-site/pages/form.go | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/framework/h/renderables.go b/framework/h/renderables.go index fd09ea4..b34ec91 100644 --- a/framework/h/renderables.go +++ b/framework/h/renderables.go @@ -37,7 +37,13 @@ func NewTextContent(content string) *TextContent { } func NewChildList(children ...Ren) *ChildList { - return &ChildList{ - Children: children, + cl := &ChildList{ + Children: Filter(children, func(item Ren) bool { + return item != nil + }), } + if len(children) == 0 || children == nil { + cl.Children = make([]Ren, 0) + } + return cl } diff --git a/framework/h/renderer.go b/framework/h/renderer.go index 426c6cc..2459a34 100644 --- a/framework/h/renderer.go +++ b/framework/h/renderer.go @@ -90,15 +90,17 @@ func (node *Element) Render(context *RenderContext) { if shouldFlatten { // first pass, flatten the children flatChildren := make([]Ren, totalChildren) - for i, child := range node.children { + index := 0 + for _, child := range node.children { switch c := child.(type) { case *ChildList: for _, ren := range c.Children { - flatChildren[i] = ren - i++ + flatChildren[index] = ren + index++ } default: - flatChildren[i] = child + flatChildren[index] = child + index++ } } diff --git a/htmgo-site/pages/form.go b/htmgo-site/pages/form.go index d782cf7..9415075 100644 --- a/htmgo-site/pages/form.go +++ b/htmgo-site/pages/form.go @@ -57,8 +57,9 @@ func SubmitButton() *h.Element { ) } -func Spinner() *h.Element { +func Spinner(children ...h.Ren) *h.Element { return h.Div( + h.Children(children...), h.Class("absolute left-1 spinner spinner-border animate-spin inline-block w-6 h-6 border-4 rounded-full border-slate-200 border-t-transparent"), h.Attribute("role", "status"), )