diff options
Diffstat (limited to 'attr/attributes.go')
-rw-r--r-- | attr/attributes.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/attr/attributes.go b/attr/attributes.go new file mode 100644 index 0000000..7ab27e4 --- /dev/null +++ b/attr/attributes.go @@ -0,0 +1,33 @@ +// Package attr provides shortcuts and helpers to common HTML attributes. +// See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes for a list of attributes. +package attr + +import ( + "sort" + "strings" + + g "github.com/maragudk/gomponents" +) + +// ID returns an attribute with name "id" and the given value. +func ID(v string) g.Node { + return g.Attr("id", v) +} + +// Class returns an attribute with name "class" and the given value. +func Class(v string) g.Node { + return g.Attr("class", v) +} + +// Classes returns an attribute with name "class" and the value being a sorted, space-separated string of all the keys, +// for which the corresponding value is true. +func Classes(cs map[string]bool) g.Node { + var included []string + for c, include := range cs { + if include { + included = append(included, c) + } + } + sort.Strings(included) + return g.Attr("class", strings.Join(included, " ")) +} |