diff options
author | Markus Wüstenberg | 2020-09-24 13:19:52 +0200 |
---|---|---|
committer | GitHub | 2020-09-24 13:19:52 +0200 |
commit | 4c109f9f1d4db4733d267ece171a533521029bdb (patch) | |
tree | 555c4ef5ad7281e8e36431d31968ade85c61aa72 /attr | |
parent | f27cb0c05f23785189979e57c831eb798e1da1f1 (diff) | |
download | gomponents-4c109f9f1d4db4733d267ece171a533521029bdb.tar.lz gomponents-4c109f9f1d4db4733d267ece171a533521029bdb.tar.zst gomponents-4c109f9f1d4db4733d267ece171a533521029bdb.zip |
Introduce Placer interface (#18)
When implemented, the `Place` method of the `Placer` interface tells `Render` in `El` where to put a Node. This is relevant for helpers that want to be rendered like attributes, inside the parent element. Fixes the bug where `attr.Classes` was rendered outside the element.
Diffstat (limited to 'attr')
-rw-r--r-- | attr/attributes.go | 4 | ||||
-rw-r--r-- | attr/attributes_test.go | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/attr/attributes.go b/attr/attributes.go index 56fcd74..415e6f1 100644 --- a/attr/attributes.go +++ b/attr/attributes.go @@ -35,6 +35,10 @@ func (c Classes) Render() string { return g.Attr("class", strings.Join(included, " ")).Render() } +func (c Classes) Place() g.Placement { + return g.Inside +} + // String satisfies fmt.Stringer. func (c Classes) String() string { return c.Render() diff --git a/attr/attributes_test.go b/attr/attributes_test.go index 9c7ece7..4da28e3 100644 --- a/attr/attributes_test.go +++ b/attr/attributes_test.go @@ -3,6 +3,7 @@ package attr_test import ( "testing" + g "github.com/maragudk/gomponents" "github.com/maragudk/gomponents/assert" "github.com/maragudk/gomponents/attr" ) @@ -29,6 +30,11 @@ func TestClasses(t *testing.T) { }) }) + t.Run("renders as attribute in an element", func(t *testing.T) { + e := g.El("div", attr.Classes{"hat": true}) + assert.Equal(t, `<div class="hat"/>`, e) + }) + t.Run("also works with fmt", func(t *testing.T) { a := attr.Classes{"hat": true} if a.String() != ` class="hat"` { |